Загрузка

Таблица маршрутизации — подробное практическое руководство

Разберёмся досконально, что хранит таблица маршрутизации, как роутер выбирает маршрут, какие бывают типы записей, что означают колонки в выводе (Network / Mask / Gateway / Interface / Metric), и как это применять при диагностике. Будет много практики, примеров и команд (Linux/Windows/MikroTik).


1. Зачем нужна таблица маршрутизации

Таблица маршрутизации отвечает на вопрос: «куда отправить IP-пакет, если его целевой адрес X».
Каждая запись — это правило вида «для адресов сети A/B пиши в интерфейс I и отправляй на шлюз G с приоритетом M».

Когда пакет приходит на роутер, роутер:

  1. Смотрит таблицу маршрутов.
  2. Находит самый точный (longest-prefix / наиболее длинный префикс) маршрут, который покрывает адрес назначения.
  3. Если есть несколько одинаково точных — выбирает по метрике/административной дистанции/политике.
  4. Отправляет пакет на соответствующий интерфейс/следующий хоп.

2. Структура записи маршрута — основные поля и что они значат

Типичная строка таблицы маршрутизации (упрощённо):

Destination (Network/Prefix) | Netmask | Gateway (Next hop) | Interface | Metric (Distance)
  • 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. Типы маршрутов — что и когда появляется

  1. Connected (подключённые)
      • Автоматически добавляются, когда интерфейсу присвоен IP в сети.
      • Самые «первичные» маршруты — роутер знает, что подсеть локальная.
  2. Host routes (/32)
      • Запись до конкретного хоста (в IPv4 — /32).
      • Может появляться как local (IP, назначенный интерфейсу), или как статический хост-маршрут.
      • Используется для точной доставки (например, маршрутизация к конкретному узлу или маршрут, добавленный динамической системой).
  3. Static
      • Добавлены вручную админом (ip route add ... / route add ...).
      • Полезны для фиксации путей или для резервных маршрутов.
  4. Dynamic (OSPF/BGP/RIP/…)
      • Маршруты, полученные от протоколов динамической маршрутизации.
      • Могут менять путь автоматически при изменениях топологии.
  5. Blackhole / Reject / Prohibit
      • Преднамеренные «правила отбрасывания» — полезно для защиты/черных дыр.
  6. Multicast и Broadcast записи
      • В таблице могут видеться строки для диапазона мульткаста (224.0.0.0/4) — это не «подписка», а правило доставки мульткаста через интерфейс.

4. Правило выбора маршрута (Lookup algorithm)

Когда роутер получает пакет к IP D:

  1. Longest Prefix Match — выбирается запись с наибольшим числом битов в префиксе, которая покрывает D.
    • Пример: если есть 10.127.0.0/16 и 10.127.127.11/32, для 10.127.127.11 будет выбран /32.
  2. Если несколько записей с одинаковым префиксом — смотрят:
      • Административную дистанцию (AD) — чем меньше, тем предпочтительнее (например, подключённые/connected обычно AD=0, статические AD=1, OSPF AD≈110 и т.д.).
      • Метрику (metric) — значение, зависящее от протокола (стоимость, задержка, и т.п.).
      • Если есть ECMP (Equal Cost Multi-Path) — пакеты могут балансироваться по нескольким next-hop.
  3. 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

  • Показать таблицу:

ip route show
# или для подробностей
ip route show table main
  • Добавить маршрут:

sudo ip route add 192.0.2.0/24 via 10.0.0.1 dev eth0
  • Удалить:

sudo ip route del 192.0.2.0/24
  • Узнать, какой маршрут выберется:

ip route get 8.8.8.8

Windows

  • Показать:

route print
  • Добавить:

route add 10.0.0.0 mask 255.255.255.0 192.168.1.1 metric 1
  • Статический маршрут, сохраняемый:

route add ... -p

MikroTik (RouterOS)

  • Показать:

/ip route print
  • Добавить:

/ip route add dst-address=192.0.2.0/24 gateway=10.127.127.1 distance=1 comment="to office"
  • Удалить:

/ip route remove numbers=5

11. Диагностика проблем с маршрутами — чеклист

  1. ip route get / route print / /ip route print — посмотреть, какой маршрут выбирается.
  2. Проверь connected routes — есть ли интерфейс с нужной подсетью (connected)?
  3. Проверь ARP — если next-hop on-link, проверь ARP/MAC: arp -a / /ip arp print.
  4. Проверь, разрешается ли next-hop (recursive lookup)ip route get <next-hop>; если next-hop недостижим — нет передачи.
  5. Traceroute — увидеть промежуточные хопы и где обрывается путь.
  6. Проверь метрики и AD — иногда статический маршрут «перекрывается» динамическим с лучшей AD.
  7. Проверь firewall / policy routing — может быть, трафик перехватывается SCTP / mangle / src-nat и уходит по другому пути.
  8. Проверь, нет ли дублирующих статических записей — удаляй старые статические маршруты после включения динамики (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 было видно:

0.0.0.0 0.0.0.0 192.168.19.1 192.168.19.100 35 # default
10.66.66.20 255.255.255.255 On-link 10.127.127.11 5 # host route
10.127.0.0 255.255.0.0 On-link 10.127.127.11 5
10.127.127.11 255.255.255.255 On-link 10.127.127.11 261
224.0.0.0 240.0.0.0 On-link 192.168.19.100 291 # multicast via interface
...
  • Для назначения 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=...