Zanim ludzie z większym doświadczeniem się wypowiedzą to odpowiem.
Żaden NAT nie zabezpiecza, ponieważ wykonuje tylko translację adresów/portów. Jeśli ‘routing’ działa, to nadal jest możliwe przesłanie pakietów pod podany adres. Blokowanie pakietów realizuje ‘firewall’.
Z moich doświadczeń z “iptables” w Linuksie… Po ustawieniu “masquarade” (czyli NAT dla pakietów wychodzących) nie ma żadnej blokady pakietów przychodzących, które nie podpadają pod tablicę wcześniej zarejestrowanych pakietów wychodzących. Trzeba ustawić blokowanie. Ponadto jest problem z tym, że jeśli ktoś z zewnątrz przechwyci ruch i wyśle pakiet powrotny, to zostanie on przepuszczony. W OpenBSD jest na przykład “synproxy” (w “pf”), który — o ile dobrze pamiętam — sprawdza poprawność transmisji TCP (poprawność kolejnych stanów w przechodzących pakietach).
Następny problem polega na tym, że jeśli ‘firewall’ jest na tej samej maszynie PC, którą ma chronić ·oprócz innych·, to wtedy zwykle niczego nie chroni, ponieważ jest ten sam adres ‘interfejsu’ zewnętrznego oraz tego, na którym są wystawione otwarte porty. Mimo to w Linuksie przy pomocy “iptables” i zaawansowanych opcji da się ustawić blokadę przesyłania pakietów pod adresy lokalne. Natomiast w OpenBSD — o ile dobrze pamiętam — “synproxy” nie działa względem “localhost”.