Linux предоставляет ряд инструментов для гибкого выбора маршрутизации.
Таблица маршрутизации
В простейшем случае есть только одна таблица маршрутизации ядра и нет маршрутов с атрибутом SRC. Эта таблица содержит ряд маршрутов, которые были размещены там вручную ( ip route add
), демоном DHCP или демонами маршрутизации. В этом случае ядро выбирает:
- самый конкретный маршрут;
- если есть несколько одинаково определенных маршрутов, то тот, у которого наименьшая метрика ядра.
Обратите внимание, что метрика ядра (отображаемая ip route show
) выбирается демоном маршрутизации и не обязательно связана с метрикой какого-либо конкретного протокола маршрутизации. Например, Quagga использует одну и ту же метрику для всех маршрутов, которые она устанавливает в ядре, независимо от метрики протокола.
Маршрутные источники
Linux также поддерживает маршруты с атрибутом SRC, которые соответствуют только пакетам с заданным адресом источника. SRC работает только для IPv6 и глючил до самого последнего времени (3.11, если память служит); Я не рекомендую использовать его, если вы не знаете, что делаете.
Несколько таблиц маршрутизации
Если вам требуется больше гибкости, чем предусмотрено выше, вам нужно поиграть с несколькими таблицами маршрутизации и написать правила для выбора одной конкретной таблицы маршрутизации для каждого пакета. Обычный метод - отправка по адресу источника для моделирования маршрутов, специфичных для источника. Другой метод - запустить каждый демон маршрутизации в своей собственной таблице маршрутизации и смоделировать «административное расстояние» Cisco. Все это подробно описано в главе 4 LARTC .