Linux не поддерживает статические рекурсивные маршруты?

697
Neil McGill

Я пытаюсь добавить несколько рекурсивных маршрутов. Следующая идея отлично работает, скажем, на маршрутизаторе cisco, но Linux (Ubuntu 14.04.5 LTS) не устраивает

# ip -4 route add 1.1.1.1/32 dev eth4 # ip -4 route add 2.2.2.2/32 via 1.1.1.1 # ip -4 route add 3.3.3.3/32 via 2.2.2.2 RTNETLINK answers: Network is unreachable  # ip route default via 10.122.197.1 dev eth4 metric 100 1.1.1.1 dev eth4 scope link 2.2.2.2 via 1.1.1.1 dev eth4 
0
Просто разрешите рекурсию вручную и введите последний шлюз? Linux отправляет маршрутизированные пакеты напрямую и не рассматривает их как возможные входящие пакеты и снова маршрутизирует их. Почему вы думаете, что вам нужны рекурсивные маршруты? dirkt 6 лет назад 0
Да, это можно сделать вручную, но мой вопрос - почему это не может быть сделано в Linux. Извините, я не могу разгласить почему проекта. Neil McGill 6 лет назад 0
Это не может быть сделано в Linux, потому что именно так работает сетевой стек Linux - и это делает обработку пакетов более эффективной, избегая дополнительной проверки после принятия решения о маршрутизации. И если бы я реализовывал сетевой стек, я бы тоже этого не включил, так как не понимаю, почему это когда-либо понадобится (и вы не хотите объяснять). Достаточно ли этого в качестве ответа? dirkt 6 лет назад 0
@dirkt Эту же проверку можно выполнить один раз при добавлении маршрута. Вот как в Bird реализованы рекурсивные маршруты. grawity 6 лет назад 1
Многоуровневая рекурсия маршрутов - довольно стандартная вещь в мире маршрутизаторов, но Linux, похоже, останавливается на 1 уровне рекурсии и 2 уровнях и выше. Я не особенно покупаю ответ, что это сделано для эффективности, как, например, @grawity говорит, что это можно сделать один раз во время установки маршрута в выдумку. Ребро все еще может отслеживать многоуровневую рекурсию. По крайней мере, так работает маршрутизаторы. Так что это кажется либо намеренным выбором дизайна, чтобы не поддерживать это, либо ошибкой в ​​linux ... Bird для меня новость - спасибо за эту информацию. Neil McGill 6 лет назад 0
Поэтому отправьте патч, который выполняет проверку при вставке маршрута, либо в `ip`, либо в ядре. Я уверен, что вы услышите от разработчиков ядра, если они по какой-то причине возражают против этого ... dirkt 6 лет назад 0

0 ответов на вопрос