Я пытаюсь проложить маршрут 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
Ваша проблема не в этом. В правиле используется не только исходный адрес, но и соответствие входного интерфейса. Итак, есть два способа решить вашу «проблему»:
dev eth0
в правилеiif eth0
в ip route get...
команда. В iif
опция позволяет использовать нелокальные адреса в ip route get
команда, поэтому вы можете использовать что-то вроде: ip route get 4.3.2.1 from 10.10.20.253 iif eth0