> у меня получилось примерно так же:
> на машине firewall (шлюз 2х dmz сетей) всё достаточно просто - mark1
> для входа и mark2 для выхода. никаких conntrack не надо, просто если
> пришло на eth2 отдать через eth3 и наоборот - всё просто.
> а вот на конечной машине не всё так просто оказалось...
>
> настройки роутинга:
> ip route add $GATE dev eth1 table ytk
> ip route add default via $GATE dev eth1 table ytk
> /sbin/ip rule add fwmark 1 table ytk
>
> GATE - гейт для второго подключения, не default на машине
>
> настройки огненной стенки:
> EXT - удаленная машина, TEST1 - конечная, на которой всё и делается...
> iptables -t mangle --append PREROUTING --protocol tcp --syn --source
> $EXT --dst $TEST1 --in-interface eth1 --jump CONNMARK --set-mark 1
> iptables -t mangle --append PREROUTING -m connmark --mark 1 --source
> $EXT --dst $TEST1 --in-interface eth1 --jump CONNMARK --restore-mark
> iptables --append INPUT -m connmark --mark 1 --source $EXT --dst
> $TEST1 --in-interface eth1 --jump ACCEPT
> до сюда отрабатывает хорошо, всё mark как надо...
>
> iptables -t mangle --append OUTPUT -m connmark --mark 1 --source
> $TEST1 --dst $EXT --jump CONNMARK --restore-mark
> iptables --append OUTPUT --source $TEST1 --dst $EXT --jump LOG
> --log-prefix " output eth1 finded "
> тут mark тоже ставиться как надо, но при этом на ip rule оно не уходит
> и пакет хочет выйти через eth0, хотя в ip rule указано, что надо через
> eth1 выходить.. Думал, что роутинг срабатывает раньше, чем mangle
> output работает, но по докам с картинками routing decision вроде как
> стоит позже.
>
> Вот на этом и застрял. Гугл ничего про эту ситуацию рассказать мне не
> смог.
> Может чего подскажете? Где я в 5 строчках мог накосячить?
> Спасибо!
Смотри, в INPUT попадают пакеты адресованные самому роутеру, в OUTPUT