Linux Labs

Сеть / Ступень 2 из 14

Как Linux выбирает маршрут

Не запущена Запускается обычно ~20 с
Выйти из урока

Шаг 5 из 7 · теория · 5 мин

Самый точный маршрут

Обычно в таблице есть маршрут для всех адресов сразу, и всё же ядро выбирает самый точный.

Маршрут по умолчанию подходит любому адресу: это префикс /0, в таблице он пишется словом default. Через него машина выходит во все сети, для которых нет своей строки.

Если адресу подходят несколько строк, ядро берёт ту, у которой префикс длиннее: /32 точнее /24, а /24 точнее /0. Поэтому default срабатывает, только когда другие строки не подошли.

Метрика — число metric N в конце строки. Она решает между маршрутами с одинаковым префиксом: меньшее число побеждает. Префикс длиннее выигрывает при любой метрике. Порядок строк в выводе ip route на выбор не влияет.

Строка Для 203.0.113.5
default via 192.0.2.254 metric 100 подходит, префикс /0
203.0.113.0/24 via 192.0.2.1 подходит, префикс /24 — выбрана
Проверь себя 1 вопрос

Таблица клиента такая. Через какой шлюз уйдёт пакет для 198.51.100.20?

default via 192.0.2.254 dev lab0 metric 10
198.51.100.20 via 192.0.2.1 dev lab0 metric 500
  • Порядок строк в выводе на выбор не влияет. Решение ядра покажет ip route get 198.51.100.20.

  • Метрика решает только между строками с одинаковым префиксом. Здесь /32 против /0, и выигрывает более длинный префикс.

  • Ядро выбирает одну строку: подходящую с самым длинным префиксом. ip route get 198.51.100.20 каждый раз напечатает один и тот же шлюз.

Обеим строкам адрес подходит, но /32 длиннее /0, поэтому выбрана строка через 192.0.2.1. Метрика сравнивается, только когда префиксы равны.

Главное в шаге

  • default — префикс /0, он подходит любому адресу.
  • Из подходящих строк ядро выбирает самый длинный префикс.
  • Метрика решает только между маршрутами с одинаковым префиксом.
Ubuntu 24.04
Загрузка…