Re: хитрый policy routing
19 мая 2008 г. 18:50 пользователь Покотиленко Костик
<casper@meteor.dp.ua> написал:
> В Пнд, 19/05/2008 в 11:20 +0400, Sapytsky Ilya пишет:
>> 19 мая 2008 г. 10:37 пользователь Покотиленко Костик
>> <casper@meteor.dp.ua> написал:
>> В Пнд, 19/05/2008 в 09:38 +0400, Sapytsky Ilya пишет:
>> > вья Добрый день!
>> > пару дней тут изучал доку по policy routing.
>> > после прочтения так и не понял можно ли сделать вот такую
>> штуку:
>> > чтобы маршрут ставился в зависимости от интерфейса, по
>> которому пакет
>> > пришел?
>> > типа если пришло через eth0 - обратно все пакеты этого
>> соединения
>> > через этот интерфейс и отправлять.
>> > Если через eth1 - отправлять все пакеты этого соединения
>> через eth1.
>> > И есть default gw, через который отправлять все исходящие
>> соединения.
>>
>>
>> Шаршрутизируй по FWMARK, FWMARK выставляй в iptables. Как
>> известно в
>> iptables критериев мноооого. По входящему интерфейсу совсем не
>> проблема.
>>
>> хм... не понял как это сделать?
>> пока не понятна технология.
>> Почему не понятна - если пришел пакет через eth0, а default gw стоит
>> eth1 то будет следующее - пакет будет пытаться пролезть через eth0, но
>> при этом ip отправителя будет стоять от интерфейса eth1. Или я не
>> прав?
>> можно ли примерчик?
>
> Примерчика нет. Скажу сразу, я такое пытался делать давно, но у меня не
> получилось. В рассылке netfilter'а проскакивают такие темы, я был на
> правильном пути, но видать где-то не доглядел... Если в кратце, то
> принцип такой:
>
> 1. На интересующее входящее с внешней стороны соединение, на пакет
> начинающий соединение (SYN) ставишь CONNMARK в какое-нибудь значение.
>
> 2. На обратном пути (пакеты-ответы) будут иметь такое же значение
> CONNMARK. Поскольку iproute2 не умеет работать с CONNMARK, а работает с
> MARK, тут тебе нужно сделать --restore-mark чтобы скопировать значение
> CONNMARK в MARK.
>
> 3. С помощью альтернативных таблиц маршрутизации делаешь так, чтобы
> пакеты с соответствующей маркой шли куда тебе надо.
>
> Повторить для каждого интерфейса где нада такая фишка.
получилось сделать тупо, но при этом работает:
ip rule add from my_ip_isp2 table outtest
ip route add default src my_ip_isp2 dev eth1 via gw_ip_isp2 table outtest
conntrack у меня при этом работает хорошо, но меченные пакеты в
альтернативную таблицу маршрутизации не попадают :(
примерно такая же проблема встретилась мне тут
http://marc.info/?l=netfilter&m=110893893101924&w=2
сайта по ссылке нет, но зеркало тут:
http://archives.mandrivalinux.com/cooker/2005-07/msg02543.php
Может и у нас такие же проблемы есть до сих пор? кто-нибудь может это
проверить? У меня с С программингом очень плохо...
Если кто возьмется - СПАСИБО!
Reply to: