Настройка Source Based Routing. (RTNETLINK answers: No such process)

Обсуждение настройки и работы сервисов, резервирования, сетевых настроек и вопросов безопасности ОС.

Модераторы: SLEDopit, Модераторы разделов

BigBrother
Сообщения: 436
Статус: ¯\_(ツ)_/¯
ОС: linux based

Настройка Source Based Routing.

Сообщение BigBrother »

Привет.
Есть сервер, с двумя сетевыми картами. Раньше работала только eth0, в режиме bridge, чтобы у виртуальных машин были статические !Р. Провайдер выделил новую (другую) подсеть (/29) для второй сетевой карты eth1 на этом сервере, соответственно необходимо настроить Source Based Routing, чтобы на этом же родителе запускать вм с !Р из другой подсети. Сделал для eth1 тоже bridge.
Для настройки Source Based Routing, руководствуюсь этим http://www.colobridge.net/wiki/%D1%81%D0%B...e_based_routing но появился затык

Код: Выделить всё

[root@kvm-srv ~]# cat /etc/iproute2/rt_tables
...
186     net29
[root@kvm-srv ~]# ip route add хх.хх.хх.168/29 dev bridge1 table net29
[root@kvm-srv ~]# ip route add default via хх.хх.хх.169 dev bridge1 table net29
RTNETLINK answers: No such process
[root@kvm-srv ~]# ip rule add from хх.хх.хх.168/29  table net29
[root@kvm-srv ~]# ip r l t net29
хх.хх.хх.168/29 dev bridge1  scope link

При добавлении второго шлюза по умолчанию, вылетает RTNETLINK answers: No such process
В чем проблема? Сервер я ещё не перезагружал, после редактирования rt_tables, как сказано в мануале.
Спасибо сказали:
Аватара пользователя
McSim
Сообщения: 419
Статус: Экспериментатор
ОС: заGNU/Linux Debian

Re: Настройка Source Based Routing.

Сообщение McSim »

Не совсем понятно, бридж из чего собран-то? из eth1 с чем и eth0 с чем?
А где же тут

Код: Выделить всё

[root@kvm-srv ~]# ip route add хх.хх.хх.168/29 dev bridge1 table net29

via бла-бла..?
Спасибо сказали:
BigBrother
Сообщения: 436
Статус: ¯\_(ツ)_/¯
ОС: linux based

Re: Настройка Source Based Routing.

Сообщение BigBrother »

McSim писал(а):
13.03.2014 16:47
Не совсем понятно, бридж из чего собран-то? из eth1 с чем и eth0 с чем?

eth0 работает бриджом (bridge0) - 77.72.134.0/25 и является шлюзом для виртуалок: в настройках вм, сказано использовать имя общего сетевого устройства bridge0 и соответственно в сетевых настройках вм (внутри ОС) указаны !Р из подсети eth0.
Теперь появилась ещё одна подсеть для второй сетевой карты eth1. По аналогии c eth0, я сделал eth1 бриджом (bridge1).
McSim писал(а):
13.03.2014 16:47
А где же тут

Код: Выделить всё

[root@kvm-srv ~]# ip route add хх.хх.хх.168/29 dev bridge1 table net29

via бла-бла..?

Что должно быть для "via" и в каком место его вставить? В документации 'via' для этой команды нет. К тому же, команда отработала и появилась в таблице net29.
Спасибо сказали:
BigBrother
Сообщения: 436
Статус: ¯\_(ツ)_/¯
ОС: linux based

Re: Настройка Source Based Routing.

Сообщение BigBrother »

Сделал без "via"

Код: Выделить всё

ip route add default dev bridge1 table net29

ошибка исчезла.

Удалил всю маршрутную информацию, которая относится к новой подсети,

Код: Выделить всё

ip route del xx.xx.xx.168/29 dev bridge1 table net29
ip route del default dev bridge1 table net29
ip rule del from xx.xx.xx.168/29 table net29

VM все равно видит интернет, странно.
Спасибо сказали:
Аватара пользователя
McSim
Сообщения: 419
Статус: Экспериментатор
ОС: заGNU/Linux Debian

Re: Настройка Source Based Routing.

Сообщение McSim »

Если я правильно понял исходные данные, то выглядит все так:
Есть интерфейс eth0 (bridge0), на котором подсеть 77.72.134.0/25 со шлюзом, например 77.72.134.1
Есть интерфейс eth1 (bridge1), на котором подсеть 1.2.3.168/29 со шлюзом, например 1.2.3.169
При этом, необходимо, чтобы хосты из разных подсетей ходили через шлюзы соответствующих подсетей, правильно?
Или какая конечная задача?
Спасибо сказали:
BigBrother
Сообщения: 436
Статус: ¯\_(ツ)_/¯
ОС: linux based

Re: Настройка Source Based Routing.

Сообщение BigBrother »

да, правильно, это и есть конечная задача.

Только странно как-то. ВМ работают с новыми !Р (из новой подести) нормально, даже без настройки source based routing. Достаточно поднять интерфейс eth1, сделать для него bridge1 и указать для виртуалки имя общего сетевого устройства - bridge1. Только при запуске eth1, переписывается default gw и пропадает доступ к серверу, надо вручную возвращать старый default gw. Такое ощущение, что правила в дополнительной таблице маршрутизации (по документации) вообще не влияют на работу, т.к. если их удалить, все равно виртуалка видит интернет из новой подсети. Может я что-то не так понимаю?
Спасибо сказали:
Аватара пользователя
McSim
Сообщения: 419
Статус: Экспериментатор
ОС: заGNU/Linux Debian

Re: Настройка Source Based Routing.

Сообщение McSim »

Все верно. Когда у нас поднят интерфейс eth1 (bridge1), на котором подсеть 1.2.3.168/29 со шлюзом, например 1.2.3.169, все пакеты хоста которые в адресе назначения не принадлежат подсети 1.2.3.168/29, будут направлены на шлюз 1.2.3.169. Если мы поднимаем интерфейс eth0 (bridge0), на котором подсеть 77.72.134.0/25 со шлюзом, например 77.72.134.1. У нас поднимается второй шлюз. и он по идее будет выше маршрута к шлюзу 1.2.3.169, поэтому и пакеты будут отправлены в него. При этом, когда у нас активным становится маршрут через 77.72.134.1 все пакеты с сетевого интерфейса eth1 (bridge1), на котором подсеть 1.2.3.168/29 будут должны дропаться на шлюзе, т.к. имеют в адресе отправителя НЕ 77.72.134.0/25 подсеть.
Чтобы все корректно работало в данном случае, необходимо
1. один из интерфейсов поднимать с default gateway, который принадлежит "традиционной" таблице маршрутизации по-умолчанию (main)
2. Второй из интерфейсов поднимать без default gateway в "традиционном" понимании. НО...
3. Создавать отдельную траблицу маршрутизации (например, как Ваша 186 net29 в /etc/iproute2/rt_tables)
4. Добавить правило, которое будет проверять адрес отправителя пакета и направлять в соответствующую тарблицу. (например ip rule add from подсеть/битовая_маска table 5)
5. Добавить default gateway в новую таблицу маршрутизации (например ip route add default via адрес_шлюза dev eth1 table 186)
6. Если не заработает, выполнить ip route flush cache чтобы ядро увидело новую таблицу маршрутизации...

Теория Routing Policy DataBase
Спасибо сказали: