Уже мозг сломал.
Есть машина А (192.168.1.46, 192.168.10.220, 10.0.0.1) - шлюз,
и есть машиа Б (10.0.0.2, 10.0.0.3) (у нее в качестве основного шлюза стоит А - 10.0.0.1)
все что приходит на 192.168.1.46 (А) --> отправляем на машину Б
iptables -v -t nat -A PREROUTING -d 192.168.1.46 -j DNAT --to 10.0.0.2
iptables -v -t nat -A POSTROUTING -s 10.0.0.2 -j SNAT --to 192.168.1.46
iptables -v -t nat -A POSTROUTING -s 10.0.0.2 -o eth0 -j MASQUERADE
Так же на машину А (шлюз) приходит трафик GRE
tun0 Link encap:UNSPEC HWaddr C0-A8-01-2E-30-30-3A-30-00-00-00-00-00-00-00-00
inet addr:192.168.10.220 P-t-P:192.168.4.1 Mask:255.255.255.255
далее tcpdump c машины А когда ее пингуешь по GRE
root@gw:~# tcpdump -p -i tun0
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on tun0, link-type LINUX_SLL (Linux cooked), capture size 65535 bytes
12:26:50.306674 IP 192.168.1.100 > 192.168.10.220: ICMP echo request, id 1, seq 2222, length 40
12:26:50.306709 IP 192.168.10.220 > 192.168.1.100: ICMP echo reply, id 1, seq 2222, length 40
Но мне надо этот трафик тоже завернуть на машину Б:
iptables -v -t nat -A PREROUTING -d 192.168.10.220 -j DNAT --to 10.0.0.3
iptables -v -t nat -A POSTROUTING -s 10.0.0.3 -j SNAT --to 192.168.10.220
192.168.10.220 на пинг уже не отвечает, а пакеты словно в черную дыру ушли.