Linux надає ряд інструментів для гнучкого вибору маршрутизації.
Єдина таблиця маршрутизації
У найпростішому випадку є лише одна таблиця маршрутизації ядра та відсутні маршрути з атрибутом SRC. Ця таблиця містить ряд маршрутів, які були розміщені там вручну ( ip route add
), демоном DHCP або маршрутизацією демон. У цьому випадку ядро вибирає:
- найбільш конкретний маршрут;
- якщо є кілька однаково конкретних маршрутів, той, що має найменший показник ядра.
Зауважте, що метрику ядра (відображається ip route show
) вибирає демон маршрутизації і не обов'язково пов'язаний з метрикою будь-якого конкретного протоколу маршрутизації. Наприклад, Quagga використовує однаковий показник для всіх маршрутів, які він встановлює в ядрі, незалежно від метрики протоколу.
Маршрути, орієнтовані на джерело
Linux також підтримує маршрути з атрибутом SRC, які відповідають лише пакетам із заданою адресою джерела. SRC працює тільки для IPv6, і був помилковим до недавнього часу (3.11, якщо пам'ять служить); Я не рекомендую використовувати його, якщо ви не знаєте, що робите.
Кілька таблиць маршрутизації
Якщо вам потрібна більша гнучкість, ніж передбачено вище, вам потрібно буде грати з декількома таблицями маршрутизації та писати правила, щоб вибрати одну конкретну таблицю маршрутизації для кожного пакету. Поширена техніка - диспетчеризація по адресі джерела з метою імітації маршрутів, характерних для джерела. Інша методика - запускати кожен демон маршрутизації у власній таблиці маршрутів та імітувати "адміністративну відстань" Cisco. Все це докладно описано в главі 4 LARTC .