Таблица маршрутизации — подробное практическое руководство
Разберёмся досконально, что хранит таблица маршрутизации, как роутер выбирает маршрут, какие бывают типы записей, что означают колонки в выводе (Network / Mask / Gateway / Interface / Metric
), и как это применять при диагностике. Будет много практики, примеров и команд (Linux/Windows/MikroTik).
1. Зачем нужна таблица маршрутизации
Таблица маршрутизации отвечает на вопрос: «куда отправить IP-пакет, если его целевой адрес X».
Каждая запись — это правило вида «для адресов сети A/B пиши в интерфейс I и отправляй на шлюз G с приоритетом M».
Когда пакет приходит на роутер, роутер:
- Смотрит таблицу маршрутов.
- Находит самый точный (longest-prefix / наиболее длинный префикс) маршрут, который покрывает адрес назначения.
- Если есть несколько одинаково точных — выбирает по метрике/административной дистанции/политике.
- Отправляет пакет на соответствующий интерфейс/следующий хоп.
2. Структура записи маршрута — основные поля и что они значат
Типичная строка таблицы маршрутизации (упрощённо):
-
Destination / Prefix — сеть или хост (
10.127.0.0/16
,192.168.19.100/32
). -
Netmask — маска сети (альтернативный вид записи).
-
Gateway / Next hop — IP следующего шага, на который надо отправить пакет. Может быть пустым /
On-link
(означает: пакет отправляется прямо через интерфейс, без промежуточного шлюза). -
Interface — физический или виртуальный интерфейс, через который пойдёт пакет.
-
Metric / Distance — числовой приоритет маршрута (меньше = лучше). На некоторых платформах есть два поля:
distance
(административная дистанция) иmetric
(метрика протокола).
Дополнительно в таблицах бывают флаги:
-
C
/Connected
— сеть привязана к интерфейсу (directly connected). -
S
/Static
— статически добавленный маршрут. -
D
/Dynamic
— получен от протокола маршрутизации. -
On-link
— означает: адрес следующего хопа расположен в этой же связности, или вообще шлюз не нужен.
3. Типы маршрутов — что и когда появляется
- Connected (подключённые)
-
- Автоматически добавляются, когда интерфейсу присвоен IP в сети.
- Самые «первичные» маршруты — роутер знает, что подсеть локальная.
-
- Host routes (/32)
-
- Запись до конкретного хоста (в IPv4 —
/32
). - Может появляться как
local
(IP, назначенный интерфейсу), или как статический хост-маршрут. - Используется для точной доставки (например, маршрутизация к конкретному узлу или маршрут, добавленный динамической системой).
- Запись до конкретного хоста (в IPv4 —
-
- Static
-
- Добавлены вручную админом (
ip route add ...
/route add ...
). - Полезны для фиксации путей или для резервных маршрутов.
- Добавлены вручную админом (
-
- Dynamic (OSPF/BGP/RIP/…)
-
- Маршруты, полученные от протоколов динамической маршрутизации.
- Могут менять путь автоматически при изменениях топологии.
-
- Blackhole / Reject / Prohibit
-
- Преднамеренные «правила отбрасывания» — полезно для защиты/черных дыр.
-
- Multicast и Broadcast записи
-
- В таблице могут видеться строки для диапазона мульткаста (
224.0.0.0/4
) — это не «подписка», а правило доставки мульткаста через интерфейс.
- В таблице могут видеться строки для диапазона мульткаста (
-
4. Правило выбора маршрута (Lookup algorithm)
Когда роутер получает пакет к IP D
:
- Longest Prefix Match — выбирается запись с наибольшим числом битов в префиксе, которая покрывает D.
- Пример: если есть
10.127.0.0/16
и10.127.127.11/32
, для10.127.127.11
будет выбран/32
.
- Пример: если есть
- Если несколько записей с одинаковым префиксом — смотрят:
-
- Административную дистанцию (AD) — чем меньше, тем предпочтительнее (например, подключённые/connected обычно AD=0, статические AD=1, OSPF AD≈110 и т.д.).
- Метрику (metric) — значение, зависящее от протокола (стоимость, задержка, и т.п.).
- Если есть ECMP (Equal Cost Multi-Path) — пакеты могут балансироваться по нескольким next-hop.
-
- Recursive lookup — если next-hop указан как IP, роутер должен разрешить, как доставить до этого next-hop: он ищет маршрут до next-hop. Если маршрут до next-hop отсутствует — маршрут не реализуется.
5. Административная дистанция — что это такое (AD)
AD — это «доверие» к источнику маршрута. Разные протоколы/типы маршрутов имеют свои стандартные AD (примерно, в большинстве реализаций Cisco и похожих систем):
-
Connected (directly connected) — 0
-
Static (ручной) — 1
-
eBGP — 20
-
EIGRP internal — 90
-
OSPF — 110
-
RIP — 120
-
iBGP — 200
Эти числа — общепринятые значения, у разных ОС/вендоров они могут отличаться, но смысл тот же: роутер сначала смотрит AD, потом метрику.
6. On-link, gateway, host route — что это значит
-
On-link (или “On-link / On-link” как в Windows): маршрут говорит, что сеть доступна непосредственно через интерфейс, никакого промежуточного шлюза не требуется. Например
192.168.19.0/24 On-link 192.168.19.100
— интерфейс с адресом 192.168.19.100 подключён к этой сети. -
Gateway / Next hop: если маршрут указывает
Gateway = 192.168.19.1
, то пакет сначала направляется в ARP для 192.168.19.1 (или к MAC), затем передаётся. -
Host route (
/32
) — самый специфичный маршрут. Роутер отдаст приоритет ему. Windows и Linux часто создают локальные/32
для адресов интерфейсов (чтобы знать, что этот IP именно у него).
7. Примеры: как работает выбор маршрута (на практике)
Пример 1 — выбор по специфичности
Таблица:
-
10.127.0.0/16 On-link via 10.127.127.11
-
10.127.127.11/32 On-link via 10.127.127.11
Запрос к 10.127.127.11
→ выбирается /32
(host route) потому что оно точнее, чем /16
.
Пример 2 — recursive next-hop
Запись: 0.0.0.0/0 gateway=203.0.113.1 dev=ether1
Перед отправкой роутер проверит, что до 203.0.113.1
есть маршрут (обычно он — on-link в той же сети). Если нет — default route не действует.
8. Особые записи в таблице — почему они там и для чего
-
Broadcast и Multicast записи (
224.0.0.0/4
) — показывают интерфейс(ы), через которые роутер готов принимать/обрабатывать мульткаст; это не означает, что устройство «подписано» на все группы. -
127.0.0.0/8 (loopback) / ::1 — локальные маршруты для пакетов, адресованных самому устройству.
-
255.255.255.255 /32 записи — иногда отображаются как broadcast или local records.
-
On-link / On-link host entries — Windows часто показывает
On-link
для адресов интерфейса и broadcast.
9. ECMP — мультипут (Equal Cost Multi-Path)
Если несколько маршрутов имеют одинаковую точность и одинаковую метрику, роутер может использовать ECMP — распределять трафик по нескольким next-hop (hash по 5-tuple). Это используется для балансировки и отказоустойчивости.
10. Управление маршрутами — команды и примеры
Linux
-
Показать таблицу:
-
Добавить маршрут:
-
Удалить:
-
Узнать, какой маршрут выберется:
Windows
-
Показать:
-
Добавить:
-
Статический маршрут, сохраняемый:
MikroTik (RouterOS)
-
Показать:
-
Добавить:
-
Удалить:
11. Диагностика проблем с маршрутами — чеклист
- ip route get / route print / /ip route print — посмотреть, какой маршрут выбирается.
- Проверь connected routes — есть ли интерфейс с нужной подсетью (connected)?
- Проверь ARP — если next-hop on-link, проверь ARP/MAC:
arp -a
//ip arp print
. - Проверь, разрешается ли next-hop (recursive lookup) —
ip route get <next-hop>
; если next-hop недостижим — нет передачи. - Traceroute — увидеть промежуточные хопы и где обрывается путь.
- Проверь метрики и AD — иногда статический маршрут «перекрывается» динамическим с лучшей AD.
- Проверь firewall / policy routing — может быть, трафик перехватывается SCTP / mangle / src-nat и уходит по другому пути.
- Проверь, нет ли дублирующих статических записей — удаляй старые статические маршруты после включения динамики (OSPF).
12. Частые вопросы и «ловушки»
-
«Зачем в таблице есть /32 к самому себе?» — это локальная запись для адреса интерфейса; ОС использует её, чтобы знать, что этот адрес «наш».
-
«Если удалить маршрут к самому себе, что будет?» — обычно ОС всё ещё держит локальные интерфейсы и может повести себя непредсказуемо: сервисы перестанут правильно принимать пакеты, маршруты могут быть реконструированы автоматически. В целом удалять connected/host записи вручную — плохая идея.
-
«Почему OSPF маршрут не заменяет статический?» — потому что статический с меньшей AD/Distance предпочтительнее; можно изменить distance или удалить статический маршрут.
-
«On-link vs Gateway: если указаnо On-link, куда ответ?» — роутер отправляет фрейм прямо через интерфейс; если нужен next-hop (другой роутер), он должен быть в той же L2 сети (тогда On-link with ARP resolution).
13. Практический пример (разбор твоей таблицы)
В твоём фрагменте таблицы Windows было видно:
-
Для назначения
10.66.66.20
у тебя есть /32. Значит все пакеты к этому конкретному IP пойдут локально через интерфейс10.127.127.11
(чат нулевой — on-link). -
10.127.0.0/16
покрывает весь туннельный диапазон — если нет более точного/32
, он обеспечит маршрут. -
224.0.0.0/4
— multicast, интерфейс показывает, что этот интерфейс способен получать multicast.
Если удалить /32
к 10.127.127.11
(host route), то пакеты к этому хосту будут матчиться 10.127.0.0/16
— это нормально (менее специфичный маршрут). Если же удалишь host route к самому интерфейсу (локальной записи), ОС может перестать считать этот адрес «местным».
14. Рекомендации и лучшие практики
-
Всегда используй longest-prefix сознательно: для специфичных целей добавляй host-маршруты (
/32
). -
После включения динамики (OSPF/BGP) — убирай дублирующие статические маршруты, если они не нужны.
-
Для WAN-выхода ставь default route (
0.0.0.0/0
) с правильной дистанцией. -
Используй route summarization (агрегацию) чтобы уменьшить размер таблиц (особенно в BGP/OSPF).
-
Контролируй доступ к добавлению маршрутов (чтобы никто не вбил злонамеренный статический маршрут).
15. Короткая шпаргалка команд (повторение)
-
Linux:
ip route show
,ip route add
,ip route get <addr>
-
Windows:
route print
,route add ...
,route delete ...
-
MikroTik:
/ip route print
,/ip route add dst-address=... gateway=... distance=...