Re: хитрый policy routing
В Пнд, 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. С помощью альтернативных таблиц маршрутизации делаешь так, чтобы
пакеты с соответствующей маркой шли куда тебе надо.
Повторить для каждого интерфейса где нада такая фишка.
--
Покотиленко Костик <casper@meteor.dp.ua>
Reply to: