Jump to content
Калькуляторы

linux и выбор source ip несколько таблиц маршрутизации

С помощью 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?

Share this post


Link to post
Share on other sites

Во Фре фаерволом

 

ipfw add XX fwd бла бла бла

читайте документацию по фаерволу

Выглядит не так громоздко чем в линуксе

 

может так попробовать ?

ip route add default via 192.168.3.7 table test10 src IP_на_машине_в_ту_сторону ?

Edited by Lynx10

Share this post


Link to post
Share on other sites
С помощью 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 by Jugernault

Share this post


Link to post
Share on other sites

Jugernault

>default via 192.168.3.7 dev eth0.7 src 192.168.3.3

 

Не помогает, source ip всё равно выбирается на основе главной таблицы. Трафик только локальный(генерится кронами на этом сервере от различных локальных пользователей).

Share this post


Link to post
Share on other sites

s.lobanov, ip route flush cache после изменения настроек сделали?

 

Share this post


Link to post
Share on other sites
Трафик только локальный(генерится кронами на этом сервере от различных локальных пользователей).
а если простой SNAT в 192.168.3.3 ?

 

Share this post


Link to post
Share on other sites

s.lobanov, ip route flush cache после изменения настроек сделали?

Очень похоже что нет...

Share this post


Link to post
Share on other sites

>ip route flush cache после изменения настроек сделали?

 

Попробовал, не помогает. Всё равно source ip берётся на основе главной таблицы роутинга

 

>а если простой SNAT в 192.168.3.3 ?

 

Не очень понятна мысль. Если заменить все правила на <критерии> -j SNAT --to 192.168.3.3, то откуда будет известно что надо слать пакетики на шлюз 192.168.3.7?

Edited by s.lobanov

Share this post


Link to post
Share on other sites
Если заменить все правила на <критерии> -j SNAT --to 192.168.3.3, то откуда будет известно что надо слать пакетики на шлюз 192.168.3.7?
правила не заменять а добавить, ну и выше сделанный policy routing не убирать.

 

Share this post


Link to post
Share on other sites

На текущий момент и я делаю SNAT для того, чтобы пакеты отправлялись с нужным мне source адресом. Вроде как об этом написал в первом посте

Edited by s.lobanov

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this