Você define a política da FORWARD
chain como ALLOW
, por isso, mesmo que nada na cadeia corresponda, o tráfego será permitido.
Você provavelmente deve configurá-lo para DROP
.
Eu tenho uma máquina de gateway conectada a várias redes internas nas quais gostaria de configurar o NAT. O problema, no entanto, é que essas redes precisam ser isoladas umas das outras, o que eu não consegui descobrir. Aqui está minha configuração:
eth0: 192.168.1.0/28 (upstream), o gateway é atribuído 192.168.1.1
eth1: 192.168.1.16/28 (downstream 1), o gateway é atribuído 192.168.1.16
eth2: 192.168.1.32/28 (downstream 2), o gateway é atribuído 192.168.1.32
Até agora, configurei o iptables para permitir cadeias padrão:
iptables -P INPUT ALLOW
iptables -P OUTPUT ALLOW
iptables -P FORWARD ALLOW
Então, eu habilitei o encaminhamento de IP no kernel e configurei o iptables:
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 192.168.1.1
iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT
iptables -A FORWARD -i eth2 -o eth0 -j ACCEPT
No entanto, esta configuração permite que uma máquina na eth1 acesse outra máquina na eth2, mesmo que eu não tenha explicitamente especificado uma regra para permitir isso. Como isolar essas redes ou, no máximo, apenas permitir acesso a determinados hosts / portas?
Como observado na resposta a M. Hampton, você deve manter o recurso de encaminhamento para o NAT funcionar.
Como um hack rápido, eu tentaria bloquear o encaminhamento entre as sub-redes internas, por exemplo. adicione esses comandos ao seu:
iptables -A FORWARD -i eth1 -o eth2 -j DENY
iptables -A FORWARD -i eth2 -o eth1 -j DENY
Isso será confuso com 3 sub-redes internas, pois você terá 6 regras de bloqueio e bastante assustador para 4:).