У меня проблемы с перенаправлением входящего трафика на 2 внешних интерфейса на моем сервере Ubuntu 12.10 на 2 отдельных внутренних хоста. Я в состоянии перенаправить входящий трафик на моем eth0 просто отлично на внутренний хост, но входящий трафик на мой интерфейс eth1 никогда никуда не уходит.
Есть предложения?
Вот настройки iptables и интерфейсов, которые я использую.
/etc/iptables.rules
-A PREROUTING -i eth0 -p tcp -m tcp --dport 8000 -j DNAT --to-destination 10.101.0.20:3389
-A PREROUTING -i eth1 -p tcp -m tcp --dport 3389 -j DNAT --to-destination 10.101.0.79:3389
-A POSTROUTING -o eth0 -j SNAT --to-source 63.22.130.186
-A POSTROUTING -o eth1 -j SNAT --to-source 63.22.130.187
/etc/network/interfaces
# eth0
auto eth0
allow-hotplug eth0
iface eth0 inet static
address 63.22.130.186
netmask 255.255.255.248
gateway 63.22.130.185
dns-nameservers 8.8.8.8
pre-up iptables-restore < /etc/iptables.rules
# eth1
auto eth1
allow-hotplug eth1
iface eth1 inet static
address 63.22.130.187
netmask 255.255.255.248
dns-nameservers 8.8.8.8
# eth2
auto eth2
allow-hotplug eth2
iface eth2 inet static
address 10.101.0.1
netmask 255.255.0.0
dns-nameservers 8.8.8.8
Похоже, это проблема маршрутизации.
Возвращаемый трафик использует исходящий интерфейс по умолчанию среди двух интерфейсов, которые есть у вас на внешнем компьютере.
И его интерфейс явно не тот же, что и трафик, используемый для входящего трафика. Вы можете проверить, так ли это, запустив tcpdump -v -i ethX на вашем компьютере для каждого из интерфейсов. Где X - номер интерфейса