Есть сервак с Ubuntu-Server 9.04. На нем два аплинка (eth1, eth2) с двумя внешними IP. Один из них (eth1) дефолт гейтвей. В таблице маршрутизации прописано через ip route, что ответ на пакеты, пришедшие на eth2, должны идти через eth2, а не через дефолт гейтвей на eth1. Таким образом, из инета доступны оба внешних IP. Все работает, оба внешника доступны.
Далее имеем в iptables port mapping в локалку, разрешенный для обоих аплинк интерфейсов. Но работает это только на eth1. Если прописать ручками через route add, что для IP, с которого мы обращаемся к серваку, шлюзом является eth2, то мапинг будет работать на нем, а на eth1 - не работает. Если назначить дефолт гейтвей на eth2, то на нем все мапится, а на eth1 - нет. То есть для обоих внешников доступны только порты, открытые процессами, выполняющимися на самом серваке, а те порты, что мапятся в локалку - только на интерфейсе с дефолт гейтвей или же для тех IP, что прописаны в route для второго аплинка.
Как настроен мапинг в iptables:
-A INPUT -p tcp -m tcp --dport 3389 -j ACCEPT
-A FORWARD -d 192.168.0.2 -i eth1 -p tcp -m tcp --dport 3389 -j ACCEPT
-A FORWARD -d 192.168.0.2 -i eth2 -p tcp -m tcp --dport 3389 -j ACCEPT
-A PREROUTING -d x.x.x.x -i eth1 -p tcp -m tcp --dport 3389 -j DNAT --to-destination 192.168.0.2:3389
-A PREROUTING -d y.y.y.y -i eth2 -p tcp -m tcp --dport 3389 -j DNAT --to-destination 192.168.0.2:3389
-A POSTROUTING -d 192.168.0.2 -p tcp -m tcp --dport 3389 -j SNAT --to-source 192.168.0.1
Здесь eth1, eth2 - аплинки, x.x.x.x, y.y.y.y - внешние IP, 192.168.0.1 - локальный IP сервака, 192.168.0.2 - хост, куда мапится порт.
Подскажите, где тут грабли?