Перейти к содержимому
Калькуляторы

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?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

 

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

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

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

 

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

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

Изменено пользователем Lynx10

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

С помощью 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ом повлиять сможете.

Изменено пользователем Jugernault

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Jugernault

>default via 192.168.3.7 dev eth0.7 src 192.168.3.3

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

 

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

 

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

 

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

Изменено пользователем s.lobanov

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Изменено пользователем s.lobanov

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.