s.lobanov Posted April 16, 2010 · Report post С помощью iptables и ip rule заруливаю трафик на не дефолтную таблицу маршрутизации: iptables -t mangle -A OUTPUT <критерии> -j MARK --set-mark 0xa ip rule fwmark 0xa table test10 В таблице test10 всего один(но может быть и не один) маршрут - default, но отличный от того, что в главной таблице # ip route list table test10 default via 192.168.3.7 dev eth0.7 В главной таблице шлюз другой default via 192.168.2.2 Смотрю tcpdump'ом что получается - правила обрабатываются, но source ip в исходящих пакетах берётся 192.168.2.3(на основе дефолтной таблицы роутинга) и приходится делать SNAT чтобы его заменить на 192.168.3.3(который навешан на сабе eth0.7) Поэтому у меня есть вопрос - можно ли заставить linux делать выбор source ip не на основе главной таблицы маршрутизации(для трафика от определённого пользователя или определённого приложения(-m owner)), а на основе нужной мне таблицы или вообще как-то его задать? Просто мне кажется что цепочка действий, которую я делаю слишком громоздка и слишком геморно всё это будет траблшутить. И ещё вопрос, насколько громоздко эта задача(заруливать трафик от приложения или пользователя через отдельную таблицу маршрутизации) будет выглядеть на freebsd? Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Lynx10 Posted April 16, 2010 (edited) · Report post Во Фре фаерволом ipfw add XX fwd бла бла бла читайте документацию по фаерволу Выглядит не так громоздко чем в линуксе может так попробовать ? ip route add default via 192.168.3.7 table test10 src IP_на_машине_в_ту_сторону ? Edited April 16, 2010 by Lynx10 Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Jugernault Posted April 17, 2010 (edited) · Report post С помощью iptables и ip rule заруливаю трафик на не дефолтную таблицу маршрутизации:iptables -t mangle -A OUTPUT <критерии> -j MARK --set-mark 0xa ip rule fwmark 0xa table test10 В таблице test10 всего один(но может быть и не один) маршрут - default, но отличный от того, что в главной таблице # ip route list table test10 default via 192.168.3.7 dev eth0.7 Заменить наdefault via 192.168.3.7 dev eth0.7 src 192.168.3.3 При этом локальный (локальносгенеренный трафик маршрутизируемый через эту таблицу) будет иметь этот "сырец". Смотрю tcpdump'ом что получается - правила обрабатываются, но source ip в исходящих пакетах берётся 192.168.2.3(на основе дефолтной таблицы роутинга) и приходится делать SNAT чтобы его заменить на 192.168.3.3(который навешан на сабе eth0.7) Поэтому у меня есть вопрос - можно ли заставить linux делать выбор source ip не на основе главной таблицы маршрутизации(для трафика от определённого пользователя или определённого приложения(-m owner)), а на основе нужной мне таблицы или вообще как-то его задать? Просто мне кажется что цепочка действий, которую я делаю слишком громоздка и слишком геморно всё это будет траблшутить. И ещё вопрос, насколько громоздко эта задача(заруливать трафик от приложения или пользователя через отдельную таблицу маршрутизации) будет выглядеть на freebsd? Нууу маркировка IPTABLES для того что бы раскрасить трафик и в последствии выбрать таблицу маршрутизации это наверное слишком изящно - можно было бы этот этап и пропустить (сделать все при помощи iproute2).А вот касаемо "сырцов", нужно четко разделять понятия - трафик от приложений (локальный трафик) и трафики от пользователей (транзитный трафик других хостов) - на "сырцы" в транзитном трафике Вы только NATом повлиять сможете. Edited April 17, 2010 by Jugernault Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
s.lobanov Posted April 18, 2010 · Report post Jugernault >default via 192.168.3.7 dev eth0.7 src 192.168.3.3 Не помогает, source ip всё равно выбирается на основе главной таблицы. Трафик только локальный(генерится кронами на этом сервере от различных локальных пользователей). Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Умник Posted April 18, 2010 · Report post s.lobanov, ip route flush cache после изменения настроек сделали? Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
voron Posted April 18, 2010 · Report post Трафик только локальный(генерится кронами на этом сервере от различных локальных пользователей).а если простой SNAT в 192.168.3.3 ? Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Jugernault Posted April 18, 2010 · Report post s.lobanov, ip route flush cache после изменения настроек сделали? Очень похоже что нет... Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
s.lobanov Posted April 18, 2010 (edited) · Report post >ip route flush cache после изменения настроек сделали? Попробовал, не помогает. Всё равно source ip берётся на основе главной таблицы роутинга >а если простой SNAT в 192.168.3.3 ? Не очень понятна мысль. Если заменить все правила на <критерии> -j SNAT --to 192.168.3.3, то откуда будет известно что надо слать пакетики на шлюз 192.168.3.7? Edited April 18, 2010 by s.lobanov Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
voron Posted April 18, 2010 · Report post Если заменить все правила на <критерии> -j SNAT --to 192.168.3.3, то откуда будет известно что надо слать пакетики на шлюз 192.168.3.7?правила не заменять а добавить, ну и выше сделанный policy routing не убирать. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
s.lobanov Posted April 18, 2010 (edited) · Report post На текущий момент и я делаю SNAT для того, чтобы пакеты отправлялись с нужным мне source адресом. Вроде как об этом написал в первом посте Edited April 18, 2010 by s.lobanov Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...