Isso é normal e não tem nada a ver com o NAT. O Linux, por padrão, trata os endereços IP como pertencentes à máquina , não a uma interface específica. Então, ele vai responder aos pacotes para 192.168.2.1 em qualquer interface, não apenas na interface da LAN.
Dito isto, o NAT não implica um firewall, ou vice-versa. Você pode, por exemplo, mapear hosts internos 192.168.0.2–254 para IPs públicos X.Y.Z.2–254 e fazer com que todo o tráfego para X.Y.Z.253 seja encaminhado para 192.168.0.253. Ainda é NAT.
Com o mapeamento de uma sub-rede inteira para um endereço IP externo, como efeito colateral, você obtém um comportamento semelhante ao de um firewall, tornando as conexões basicamente apenas de saída. Mas mesmo assim, suas regras de firewall ainda devem bloquear esses pacotes - o código NAT provavelmente pode ser enganado para mapear uma porta que você não quer, o firewall não. E é mais flexível também. (E, se o seu ISP for comprometido, ele poderá enviar tráfego para seus endereços de LAN privados e sua máquina ficará feliz em encaminhá-lo).
PS: para ver as regras NAT, você deseja iptables -t nat -L
. Para ver o que é permitido encaminhar através do seu roteador / firewall, você precisa examinar a cadeia FORWARD
, não a cadeia INPUT
.
Notas de rodapé
¹ Ou, mais precisamente, um determinado namespace de rede na máquina - provavelmente apenas um, a menos que você esteja usando determinadas técnicas de servidor virtual. Os arquivos arp_ignore
e arp_announce
em /proc/net/ipv4/conf/*/
configuram esse comportamento.