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

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: