Сети

Маршрутизация: как пакет выбирает следующий узел

Таблица маршрутизации, default gateway, longest prefix match и практическая диагностика.

IP-маршрутизация отвечает на простой вопрос: куда отправить пакет дальше. Каждый маршрутизирующий узел сравнивает адрес назначения со своей таблицей маршрутов и выбирает наиболее специфичное совпадение.

Directly connected сети

Если интерфейс имеет адрес 192.168.10.1/24, ядро автоматически знает, что сеть 192.168.10.0/24 доступна напрямую через этот интерфейс. Для отправки кадра конкретному соседу в IPv4 затем используется ARP.

Default route

Маршрут 0.0.0.0/0 подходит для любого IPv4-адреса, поэтому используется, когда более специфичного маршрута нет.

Longest prefix match

Если таблица содержит сети /8, /16 и /24, а адрес подходит под все три, будет выбран /24, потому что это наиболее длинный и специфичный префикс.

Почему ping в одну сторону работает, а обратно нет

Маршрутизация нужна в обоих направлениях. Даже если запрос дошёл до назначения, ответ должен найти обратный маршрут. Асимметрия допустима, но stateful firewall и некоторые политики могут реагировать на неё неожиданно.

Практическая диагностика

На Linux полезно спрашивать ядро напрямую: ip route get <адрес>. Команда показывает выбранный маршрут, интерфейс и source address. Затем стоит проверить neighbor table, firewall и прохождение пакетов с помощью tcpdump.

Практический вывод

Сетевую проблему удобно раскладывать по этапам: выбор маршрута, разрешение L2-соседа, отправка пакета, обратный маршрут и фильтрация.

Материал предназначен для общего технического понимания. Конкретная конфигурация зависит от платформы, версии ПО и требований среды.