Como posso fazer iptables NAT para todos os pacotes, exceto aqueles, que possuem um endereço de destino da sub-rede 192.168.254.0/24?
Responder1
Se bem entendi, isso deve ser bastante fácil usando a opção -d
com negação. Por exemplo, uma regra como esta:
$ iptables -A POSTROUTING ! -d 192.168.254.0/24 -j SNAT --to-source new_source_ip
Claro, você pode alterar a regra de acordo com suas necessidades. Isto altera o IP de origem de todos os pacotes destinados a qualquer destino, exceto a sub-rede indicada.
Responder2
Na minha opinião, seguir a ordem dos comandos do iptables funcionaria:
1. iptables -t nat -A POSTROUTING -s 192.168.254.0/24 -o eth0 -j RETURN
2. iptables -t nat -A POSTROUTING -s 0.0.0.0/0 -o eth0 -j MASQUERADE
a regra 1 corresponderá à sua rede e não será MASQUERADA; a regra 2 irá mascarar tudo, mas geralmente não é uma boa ideia fornecer o curinga 0.0.0.0 (nem tenho certeza se funcionará). Você deve adicionar seletivamente todas as redes que deseja mascarar e o resto simplesmente não será mascarado.