Назад | Перейти на главную страницу

правило ip и маршрут не соблюдаются

Я пытаюсь проложить маршрут packets на основе их source address, и добавили следующее:

# ip rule add from 10.10.10.0/16 dev eth0 table foobar
# ip route add default via 100.100.100.1 dev eth0 table foobar

Однако проверка маршрутизации дает мне ошибку via адрес:

# ip route get 4.3.2.1 from 10.10.10.1
4.3.2.1 from 10.10.10.1 via 100.0.0.1 dev eth0

Почему это не соблюдается?

Это мой обычный routes

# ip route list
default via 100.0.0.1 dev eth0

и

# ip route show table foobar
default via 100.100.100.1 dev eth0

и

# ip rule list
0:  from all lookup local
32765:  from 10.10.10.0/16 iif eth0 lookup foobar
32766:  from all lookup main
32767:  from all lookup default

Ваша проблема не в этом. В правиле используется не только исходный адрес, но и соответствие входного интерфейса. Итак, есть два способа решить вашу «проблему»:

  1. Не используйте dev eth0 в правиле
  2. Добавить iif eth0 в ip route get... команда. В iif опция позволяет использовать нелокальные адреса в ip route get команда, поэтому вы можете использовать что-то вроде: ip route get 4.3.2.1 from 10.10.20.253 iif eth0