Hi!
Существует локальная сеть с двумя серверами, имеющими выход в инет. Внутренние адреса 192.168.101.10 и 11. Сервер с .10 является шлюзом по умолчанию для этой локалки. Оба этот сервера пробрасывают почтовые протоколы через PREROUTING - DNAT на машину в локальной сети 192.168.101.100. Естественно, все пакеты с этой машины обратно в инет убегают через дефолтный шлюз, даже если пришли от 192.168.101.11. Для разделения трафика на машине 192.168.101.100 нельзя поднять интерфейс с алиасом. Пришел к выводу, что проще всего на сервере 192.168.101.11 исходящие пакеты к 192.168.101.100 метить через TOS.
iptables -t mangle -A POSTROUTING -o eth0 -d 192.168.101.100/32 -j TOS --set-tos 0x10
На сервере 192.168.101.100 тспдумп реально видит приходящие пакеты с выставленным тос-ом. Далее мечу те пакеты, которые имеют нужный тос. В оутпут-е перемаркирую эти пакеты снова. Далее, отправляю пакеты имеющие метку 0х1 на 192.168.100.11 в отдельной таблице маршрутов.
iptables -t mangle -A PREROUTING -i eth0 -m tos --tos 0x10 -j MARK --set-mark 0x1
iptables -t mangle -A PREROUTING -i eth0 -j CONNMARK --restore-mark
iptables -t mangle -A POSTROUTING -o eth0 -m conntrack --ctstate NEW -j CONNMARK --save-mark
iptables -t mangle -A OUTPUT -o eth0 -m mark --mark 0x1 -j MARK --set-mark 0x1
ip route add default via 192.168.100.11 dev eth0 table route6
ip rule add tos 0x10 table route6
ip rule add fwmark 0x1 lookup route6
Тем не менее пакеты чешут на дефолтный шлюз. Прошу совета. Может есть более эффективный способ раскидать трафик по шлюзам?