[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: хитрый policy routing




22 мая 2008 г. 12:11 пользователь Покотиленко Костик <casper@meteor.dp.ua> написал:
В Срд, 21/05/2008 в 15:58 +0400, Sapytsky Ilya пишет:
> у меня получилось примерно так же:
> на машине 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
попадают пакеты посылаемые самим роутером. На сколько я понял TEST1 и
роутер это разные машины, если это так то тут и косяк.

Честно говоря, я не въехал в схему подключения, можешь нарисовать?
уже постил сюда, еще раз повторю:
структура моих внешних сетей


                                               / mail 1.0.1.2
пров1 20.0.0.1 \           /  1.0.1.1 - ftp  1.0.1.3
                        firewall
пров2 30.0.0.2 /           \ 2.0.2.2
                                               \ vpn 2.0.2.3

и мне надо прикрутить к машине mail еще одну сетевуху и сделать на ней второй mx


чтобы было так
                                               / mail 1.0.1.2 --\
пров1 20.0.0.1 \           /  1.0.1.1 - ftp  1.0.1.3    \
                        firewall                                    |
пров2 30.0.0.2 /           \ 2.0.2.2 -------2.0.2.4-----/                   
                                               \ vpn 2.0.2.3

нарисовал вроде как более-менее понятно...
на машинке firewall всё правильно сделал, policy routing работает как надо, шлет пакеты через нужную сетевуху. Там всё просто, ибо там используется только prerouting. Только вот при traceroute неправльный ip отправляется, но через нужную сетевуху :D Это я думаю побороть можно....
А на конечной машинке mail, у которой 2 сетевухи - не получается именно так как я написал в предыдущем письме.
Еще у меня возникла идея собрать ядро с поддержкой -j route, но ядро пока только собирается...
я уже проверил - все соединения маркируются как надо, пакеты в mangle output тоже промаркированы как надо, а пакеты на роутинг не идут...
Проверял на стандартном linux-2.6.18-6-486

Reply to: