Что показывает route print и как её запустить
Таблица маршрутизации отвечает на вопрос «куда отправить пакет для данного адреса». В Windows её выводит команда route print, она работает в обычной командной строке без прав администратора, а вот изменение таблицы такие права требует. Ключ -4 ограничивает вывод протоколом IPv4, а ключ -6 протоколом IPv6. Можно фильтровать по шаблону адреса: route print 192.* покажет только строки, начинающиеся с 192.
Вывод состоит из нескольких блоков. Сначала список интерфейсов: номер, MAC-адрес и описание. Затем таблица маршрутов IPv4 с активными записями и блок постоянных маршрутов. Для IPv6 блоки повторяются. Номера интерфейсов из первого блока используются в столбце «Интерфейс» и в командах изменения таблицы.
Команду route print полезно запускать перед изменениями, чтобы сохранить исходное состояние: route print > C:\Temp\routes-before.txt. Так вы всегда сможете сравнить и вернуть настройки.
Столбцы таблицы IPv4
Основная таблица состоит из пяти столбцов. Названия даны в русской и английской версиях.
| Столбец | Значение |
|---|---|
| Сетевой адрес (Network Destination) | Сеть или узел назначения |
| Маска сети (Netmask) | Определяет размер сети назначения |
| Адрес шлюза (Gateway) | Следующий шаг или On-link для прямого доступа |
| Интерфейс (Interface) | Адрес интерфейса, через который отправляется пакет |
| Метрика (Metric) | Вес маршрута, меньшее значение предпочтительнее |
Значение «On-link» (в русской версии «На канале») в столбце шлюза означает, что получатель находится в той же сети, и пакет отправляется напрямую без шлюза. Метрика в Windows складывается из метрики маршрута и метрики интерфейса, поэтому у записей одного адаптера значения близки друг к другу. Метрика интерфейса зависит от скорости адаптера, если система выбирает её автоматически: быстрый проводной интерфейс получает меньшее значение, чем медленное беспроводное соединение.
Пример вывода и разбор записей
Пример сокращённой таблицы (пример, адреса из блока документации):
Сетевой адрес Маска сети Адрес шлюза Интерфейс Метрика 0.0.0.0 0.0.0.0 192.0.2.1 192.0.2.10 25 127.0.0.0 255.0.0.0 On-link 127.0.0.1 331 192.0.2.0 255.255.255.0 On-link 192.0.2.10 281 192.0.2.10 255.255.255.255 On-link 192.0.2.10 281 192.0.2.255 255.255.255.255 On-link 192.0.2.10 281 224.0.0.0 240.0.0.0 On-link 192.0.2.10 281 255.255.255.255 255.255.255.255 On-link 192.0.2.10 281
Разберём записи по порядку.
- 0.0.0.0/0 — маршрут по умолчанию: всё, что не подошло под другие строки, уходит на шлюз 192.0.2.1.
- 127.0.0.0/8 — петля, трафик остаётся на этом компьютере.
- 192.0.2.0/24 — локальная сеть, доступна напрямую.
- 192.0.2.10/32 — сам компьютер. 192.0.2.255/32 — широковещательный адрес локальной сети.
- 224.0.0.0/4 — многоадресная рассылка (multicast).
- 255.255.255.255/32 — ограниченное широковещание.
Большинство записей стандартные и не требуют внимания. Интересны первая строка (шлюз) и строки, которые вы или программы добавили вручную.
Как система выбирает маршрут
Правило выбора состоит из двух шагов. Сначала система отбирает все записи, под которые попадает адрес назначения. Из них выбирается запись с наиболее длинной маской, то есть самая конкретная. Только если таких записей несколько, сравниваются метрики, и побеждает запись с меньшим значением.
Поэтому маршрут по умолчанию с маской 0.0.0.0 срабатывает последним: он подходит для любого адреса, но при этом менее конкретен, чем остальные. Например, пакет для 192.0.2.77 уйдёт напрямую по записи 192.0.2.0/24, а не на шлюз, пакет для 203.0.113.50 попадёт под запись по умолчанию.
Если в системе два адаптера (кабель и Wi-Fi) и у обоих есть маршрут по умолчанию, выбирает система по метрике. Поэтому трафик может неожиданно идти по медленному каналу, если у него по каким-то причинам меньшая метрика. Проверить, какой интерфейс победил, можно, сравнив строки с 0.0.0.0 в таблице. Подробнее об аналогичной проверке в Linux рассказывает страница про ip route.
Постоянные маршруты и типичные проблемы
Внизу таблицы IPv4 есть блок «Постоянные маршруты» (Persistent Routes). В нём находятся записи, добавленные с ключом -p: они переживают перезагрузку. Если блок пуст, значит, постоянных записей нет. Как их создать, объясняет страница про route add -p.
Типичные проблемы, которые видны в таблице:
- Отсутствует строка 0.0.0.0: выхода наружу нет, проверьте шлюз в настройках адаптера.
- Шлюз не принадлежит подсети интерфейса: записи недостижимы, трафик не пройдёт.
- Лишний постоянный маршрут, который направляет часть трафика на неработающий шлюз, например после смены роутера. Тогда доступ к отдельной сети пропадает, а остальной интернет работает.
- Несколько маршрутов по умолчанию с близкими метриками. Поведение нестабильно.
Чтобы удалить проблемную запись, используют route delete с адресом назначения, из-под администратора. Перед этим убедитесь, что понимаете, откуда запись взялась: часть маршрутов создаётся системными службами и программами и без них перестанет работать сетевая функция.
Аналоги в PowerShell и других системах
В PowerShell есть команда Get-NetRoute, которая выводит ту же информацию в виде объектов: их можно фильтровать по интерфейсу, префиксу и другим полям. Пример: Get-NetRoute -DestinationPrefix 0.0.0.0/0 покажет маршруты по умолчанию.
Для сравнения: в Linux аналог это ip route show, в macOS netstat -rn. Названия столбцов и формат записи отличаются, но принцип один и тот же: адрес назначения, шлюз, интерфейс, метрика. Если вы работаете с несколькими системами, приведённая логика чтения переносится без изменений.
Сохраняйте выводы route print при обращении в поддержку, но помните, что они содержат адреса вашей внутренней сети. При публикации в открытых источниках замените их на условные. Не изменяйте таблицу маршрутов на чужих компьютерах.