Доброго времени суток!
Есть сервер с 3-мя сетевыми интерфейсами: один в локальную сеть и два смотрят в строну 2-х провайдеров, скажем с ип-адресами 1.2.3.4.5 и 1.2.3.4.6. Дефолтным гв сделан ип 1.2.3.4.5. С помощью iproute2 сделана возможность ухода пакетов именно с того интерфейса, с которого пришел запрос:
ip route add default via 1.2.3.4.5 table TAB1
ip route add default via 1.2.3.4.6 table TAB2
ip route add default via 1.2.3.4.5
ip rule add from 1.2.3.4.5 table TAB1
ip rule add from 1.2.3.4.6 table TAB2
С помощью меток:
ip rule add fwmark 0x1 table TAB2 и
iptables -t mangle -A OUTPUT -p tcp -m multiport --dport 25,110,443 -j MARK --set-mark 0x1
Сделана возможность маршрутизации маркированных пакетов на порты 25,110,443 через интерфейс 1.2.3.4.6. Но столкнулся с проблемой: напр. выполняем команду telnet pop.yandex.ru 110 видим, что пакеты идут через нужный интерфейс 1.2.3.4.6. Но имеют ип 1.2.3.4.5 и соответственно соединения не происходит.
Если добавить проебразование iptables -t nat -A POSTROUTING -p tcp -m multiport --dport 25,110,443 -j SNAT --to-source 1.2.3.4.6
то все нормально, адреса подменяются, но соединение все равно не происходит. Видно пакеты уходят к цели и на них отвечают, тем не менее результата нет. Очевидно пакеты своими не признаются.
Есть ли возможность заставить систему правильно маршрутизировать пакеты?
На самом сервере должна стоять почтовая программа (postfix) и сборщик почты (fetchmail)
Спасибо