В Срд, 21/05/2008 в 15:58 +0400, Sapytsky Ilya пишет: > 19 мая 2008 г. 18:50 пользователь Покотиленко Костик > <[EMAIL PROTECTED]> написал: > В Пнд, 19/05/2008 в 11:20 +0400, Sapytsky Ilya пишет: > > > 19 мая 2008 г. 10:37 пользователь Покотиленко Костик > > <[EMAIL PROTECTED]> написал: > > В Пнд, 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. С помощью альтернативных таблиц маршрутизации делаешь так, > чтобы > пакеты с соответствующей маркой шли куда тебе надо. > > Повторить для каждого интерфейса где нада такая фишка. > > у меня получилось примерно так же: > на машине 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 и роутер это разные машины, если это так то тут и косяк. Честно говоря, я не въехал в схему подключения, можешь нарисовать? -- Покотиленко Костик <[EMAIL PROTECTED]> -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

