Если у меня есть два маршрута с одним и тем же пунктом назначения, разве система не должна выбирать маршрут, который соответствует ее исходному адресу? Я пытаюсь использовать ключевое слово from
для добавления маршрутов с ограничением адреса источника в таблицу маршрутизации.
Например, у меня есть хост с адресом 2001:db9:1::2
в интерфейсе e1
. Если я добавлю нормальный маршрут к 2001:db9:1::3
как показано ниже, ping6
работает нормально:
root@pc:/# ip -6 route add 2001:db9:1::3 dev e1
root@pc:/# ip -6 route
2001:db9:1::3 dev e1 metric 1024
Затем я добавляю исходный маршрут с ключевым словом from
, используя некоторый исходный адрес, не назначенный ни одному из моих интерфейсов:
root@pc:/# ip -6 route add 2001:db9:1::3 from 2001:db9:a::2 dev e1
root@pc:/# ip -6 route
2001:db9:1::3 from 2001:db9:a::2 dev e1 metric 1024
2001:db9:1::3 dev e1 metric 1024
Если я пытаюсь пинговать сейчас, я получаю сообщение о недоступности сети. Когда система видит, что первая ограниченная исходная запись не работает, не должна ли она попробовать вторую запись и успешно?
Интересно, что если я добавлю маршрут с указателем from
но с правильным адресом источника, будет выбран правильный маршрут и проверка связи будет успешной.
root@pc:/# ip -6 route add 2001:db9:1::3 from 2001:db9:1::2 dev e1
root@pc:/# ip -6 route
2001:db9:1::3 from 2001:db9:1::2 dev e1 metric 1024
2001:db9:1::3 from 2001:db9:a::2 dev e1 metric 1024
2001:db9:1::3 dev e1 metric 1024
(Я также попытался использовать 2001:db9:1::1
качестве источника, и результат все еще успешен, поэтому лексикографический порядок не имеет значения). Таким образом, кажется, что маршруты без ограничений источника игнорируются, если для пункта назначения существует маршрут с ограничением источника.
Я уже проверил конфигурацию ядра (версия 4.9.13) и IPV6_SUBTREES
включены. Есть идеи?