правило ip не должно преобладать над маршрутом ip

правило ip не должно преобладать над маршрутом ip

Я работаю на CentOS и использую ip routeи ip ruleдля маршрутизации.

В настоящее время у меня естьip rule

from 10.8.23.0/28 table 1234

иip route

default via 10.8.23.254 eth1
10.10.10.10 via 10.10.10.1 eth1
10.0.0.0/14 dev test-interface table 1234

Кажется, моя ip ruleвторая строка в . Таким образом, даже если IP- адрес ip routeназначения 10.10.10.10, мои пакеты все равно отправляются через .test-interface10.8.23.0/28

Как я могу быть уверен, что это 10.10.10.10 via 10.10.10.1 eth1перекрывает правило ìp`, даже если исходный IP соответствует правилу? Надеюсь, это имеет смысл :)

Тестирование ip route get 10.10.10.10дало мне:

10.10.10.10 via 10.10.10.1 dev eth1  src 10.8.23.1

но ip route get 10.10.10.10 src 10.0.0.13дает мне:

10.10.10.10 via 10.10.10.254 dev test-interface  src 10.8.23.1

Поэтому src IPимеет приоритет над IP-адресом назначения.

решение1

Вы можете просто думать, ip ruleчто это способ создать/иметь больше таблиц маршрутизации IP (а не только таблицу по умолчанию).

Чтобы решить вашу проблему, вам нужно добавить еще одну ip ruleзапись для обработки вашего конкретного случая маршрута. Например, вы можете использовать следующую команду:

$ sudo ip rule add to 10.10.10.10/32 lookup 123 priority 10

Здесь я предполагаю, 10что достаточно мал, чтобы быть первым ip rule. Это зависит от вывода ip rule ls. Он покажет вам все правила в соответствии с приоритетом (меньшее значение означает более высокий приоритет и отображается первым).

Если вам необходимо объединить проверки источника и назначения в вашем файле ip rule, вы можете использовать:

$ sudo ip rule add from 10.8.23.0/28 to 10.10.10.10/32 lookup 123 priority 10

Таблица 123должна содержать правильный маршрут, например:

$ sudo ip route add 10.10.10.10/32 via 10.10.10.1 table 123

Связанный контент