
Eu uso o iptables snat no meu gateway para alterar os endereços IP de origem local para externos. O problema é que depois de alterar as regras (ou mesmo se eu liberar a tabela nat do iptables), o gateway continua usando a regra antiga até que eu reinicie o gateway. Eu uso o Ubuntu 14.04 Server como um sistema operacional em execução. Então, por exemplo, depois que eu entro
iptables -t nat -A POSTROUTING -s 10.0.0.129 -j SNAT --to-source 1.2.3.4
O endereço externo para 10.0.0.129 é 1.2.3.4 e na interface do gateway externo pude ver algo assim
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
09:48:07.920936 IP 1.2.3.4 > 8.8.8.8: ICMP echo request, id 2425, seq 1, length 64
09:48:08.920066 IP 1.2.3.4 > 8.8.8.8: ICMP echo request, id 2425, seq 2, length 64
09:48:09.920422 IP 1.2.3.4 > 8.8.8.8: ICMP echo request, id 2425, seq 3, length 64
e mesmo depois
iptables -F
iptables -t nat -F
iptables -t nat -A POSTROUTING -s 10.0.0.129 -j SNAT --to-source 4.3.2.1
O resultado será o mesmo
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
09:54:20.674671 IP 1.2.3.4 > 8.8.8.8: ICMP echo request, id 2666, seq 1, length 64
09:54:21.674997 IP 1.2.3.4 > 8.8.8.8: ICMP echo request, id 2666, seq 2, length 64
09:54:22.676283 IP 1.2.3.4 > 8.8.8.8: ICMP echo request, id 2666, seq 3, length 64
as novas regras entram em vigor somente depois que eu reinicializo o sistema. Isso costumava acontecer ocasionalmente, mas recentemente descobri que não consigo alterar essas regras sem reinicializar.