Статическая маршрутизация в Windows: как добавить постоянный маршрут через route add -p | AdminWiki

Статическая маршрутизация в Windows: как добавить постоянный маршрут через route add -p

20 сентября 2026 13 мин. чтения

Статический маршрут в Windows добавляют командой route add -p <сеть> mask <маска> <шлюз> из командной строки или PowerShell, запущенных от имени администратора. Флаг -p записывает маршрут в реестр, и запись продолжает работать после перезагрузки. Без -p маршрут живёт до перезагрузки или до ручного удаления.

Утилита route.exe встроена в систему, доустанавливать ничего не нужно. Одна строка решает типовые задачи администратора: доступ к удалённой подсети за вторым маршрутизатором, путь к конкретному серверу через резервный канал, раздельное туннелирование VPN.

Пример, к которому будем возвращаться: подсеть 192.168.100.0/24 доступна через шлюз 10.0.0.1, а нужный сетевой адаптер имеет номер 12.

route -p add 192.168.100.0 mask 255.255.255.0 10.0.0.1 if 12 metric 10

Ниже разберём назначение каждого параметра, порядок действий, проверку через route print и диагностику, если связи не появилось.

Что такое статическая маршрутизация и зачем нужен route add

Статический маршрут - это вручную созданная запись в таблице маршрутизации, которая задаёт шлюз и интерфейс для трафика к конкретной сети. Windows выбирает путь по самому длинному совпадающему префиксу, а при равных префиксах - по меньшей метрике. Динамические протоколы RIP и OSPF в Windows настраивают редко, поэтому путь к сети, о которой машина ничего не знает, прописывают вручную.

Типовые сценарии:

  • Удалённая подсеть за вторым маршрутизатором: основной шлюз ведёт в интернет, а сеть 192.168.100.0/24 живёт за другим устройством.
  • Резервный или выделенный канал к одному серверу: маршрут с маской 255.255.255.255 направляет трафик к конкретному адресу через другой интерфейс.
  • Раздельное туннелирование VPN: через туннель идут только рабочие подсети, интернет остаётся на локальном шлюзе.
  • Сети, которые не анонсирует DHCP и не добавляет VPN-клиент.

Команда требует прав администратора. В обычной сессии Windows отвечает «The requested operation requires elevation» и маршрут не добавляет. route add меняет только таблицу маршрутизации текущей машины: чтобы Windows пересылала пакеты между интерфейсами и работала как маршрутизатор, нужен включённый IP forwarding и роль RRAS, одна команда route этого не делает.

Отдельно про источник маршрутов. Записи, полученные по DHCP или от VPN-клиента, живут в активной таблице и исчезают вместе с соединением. Постоянными их делают настройки самого клиента, а не флаг -p. Например, DHCPv4-сервер может передать клиенту статические маршруты в опции 249 (Microsoft Classless Static Route Option): она отправляется в сообщениях DHCPOFFER или DHCPACK, а каждая запись состоит из дескриптора назначения и IP-адреса маршрутизатора. Формат данных этой опции совпадает с форматом Classless Static Route, отличие только в коде опции. Windows XP и Windows Server 2003 работают только с опцией 249, остальные версии Windows используют и опцию 121, и опцию 249, причём при наличии обеих предпочитают маршруты из опции 121. Такие маршруты приходят от сервера и не являются постоянными в смысле флага -p.

Синтаксис команды route add: разбор параметров mask, gateway и -p

Общий вид команды по документации:

route [-f] [-p] [command [destination] [mask netmask] [gateway] [metric metric]] [if interface]

Для добавления маршрута:

route -p add <сеть> mask <маска> <шлюз> [metric <метрика>] [if <интерфейс>]

Флаг -p можно указывать и после команды: route add -p 192.168.100.0 mask 255.255.255.0 10.0.0.1. Такая форма встречается в большинстве инструкций и даёт тот же результат.

ПараметрНазначениеПример
destinationЦелевая сеть или адрес, для которых задаётся путь192.168.100.0
maskМаска целевой сети, определяет, какая часть адреса относится к сети255.255.255.0
gatewayIP-адрес шлюза, через который идёт трафик10.0.0.1
metricМетрика маршрута: чем меньше значение, тем выше приоритет10
ifНомер интерфейса, через который доступен шлюз12
-pДелает маршрут постоянным, запись сохраняется в реестреroute -p add
-fОчищает таблицу маршрутизации перед выполнением команды, опасен для удалённой работыroute -f add

Если mask не указать, Windows подставит 255.255.255.255, то есть маршрут к одному узлу. Для подсети маску задают всегда.

Флаг -p: как сделать маршрут постоянным

Без -p запись попадает только в активную таблицу. Перезагрузка, переподключение адаптера или перезапуск службы DHCP её убирают. С -p Windows дополнительно сохраняет маршрут в реестре и восстанавливает его при старте системы: по документации Microsoft, при использовании с командой add указанный маршрут добавляется в реестр и применяется для инициализации таблицы IP-маршрутизации при каждом запуске протокола TCP/IP. По умолчанию добавленные маршруты при запуске TCP/IP не сохраняются, а постоянные маршруты хранятся именно в реестре.

Проверить постоянство просто: в выводе route print есть отдельный раздел Persistent Routes, куда попадают только записи, созданные с -p. Кстати, при использовании с командой print флаг -p как раз и выводит список постоянных маршрутов, а для всех остальных команд он игнорируется.

Пример добавления постоянного маршрута из документации Microsoft: route /p add 10.41.0.0 mask 255.255.0.0 10.27.0.1.

Три практических момента:

  • При добавлении с -p и без mask маска по умолчанию равна 255.255.255.255.
  • Постоянный маршрут остаётся в реестре, даже если шлюз временно недоступен. Запись не удаляется, но трафик по ней не пойдёт, пока интерфейс и шлюз не станут доступны.
  • Удаление через route delete убирает запись и из активной таблицы, и из сохранённого списка постоянных маршрутов, отдельно чистить реестр не нужно.

Ещё один нюанс: маршрут, сохранённый с -p, может не заработать после перезагрузки, если номер интерфейса if изменился или адаптер получил другой адрес. Номера интерфейсов не закреплены навсегда: при смене оборудования или переустановке драйвера они пересчитываются. После изменений в железе таблицу маршрутов стоит перепроверить.

Параметры mask и gateway: типичные ошибки

Маска задаёт размер сети. 255.255.255.0 (/24) покрывает 254 адреса, 255.255.0.0 (/16) покрывает 65534. Ошибка в маске меняет охват маршрута, и часть трафика уходит не туда.

Windows проверяет согласованность адреса и маски. Если в destination выставлены биты за пределами маски, команда завершается ошибкой:

C:\>route add 10.0.1.5 mask 255.0.0.0 192.168.1.1
The route addition failed: The specified mask parameter is invalid. (Destination & Mask) != Destination.

Для сети 10.0.0.0/8 корректная запись выглядит так: route add 10.0.0.0 mask 255.0.0.0 192.168.1.1.

Вторая частая ошибка - слишком узкая маска там, где нужна широкая. Если прописать 192.168.0.0 mask 255.255.255.0, а реальная сеть занимает 192.168.0.0/16, то адреса вида 192.168.5.20 уйдут по другому маршруту, скорее всего в интернет через шлюз по умолчанию.

Шлюз должен быть доступен напрямую через один из интерфейсов машины. Если указать адрес из чужой подсети, Windows вернёт ошибку вида «The route addition failed» с пояснением, что шлюз недостижим через интерфейс. Проверяйте шлюз до добавления маршрута:

ping 10.0.0.1
tracert 10.0.0.1

Если целевая сеть подключена к машине напрямую, в поле gateway указывают 0.0.0.0, и маршрут создаётся как on-link. В выводе route print такая запись отмечена словом On-link в колонке Gateway. Текст ошибок зависит от версии и языка системы, структура команды при этом не меняется.

Как добавить постоянный маршрут: пошаговая инструкция

Последовательность одинакова для Windows 10, Windows 11 и серверных выпусков: утилита route.exe входит в состав всех поддерживаемых версий.

  1. Откройте терминал от имени администратора: правый клик по «Командная строка» или «Windows PowerShell» и запуск от администратора.

  2. Соберите сведения о сети: ipconfig /all покажет адреса адаптеров, route print - номера интерфейсов и текущие маршруты.

  3. Проверьте доступность шлюза: ping <адрес шлюза>. Ответ должен прийти с того интерфейса, который собираетесь использовать.

  4. Найдите номер интерфейса. В route print это раздел Interface List, в PowerShell - Get-NetAdapter с колонкой ifIndex.

  5. Добавьте маршрут:

    route -p add 192.168.100.0 mask 255.255.255.0 10.0.0.1 if 12 metric 10

    Ответ «OK!» означает успех. Маршрут начинает работать сразу, перезагрузка для этого не нужна.

  6. Проверьте результат: route print 192.168.100.* покажет запись в активной таблице, а раздел Persistent Routes подтвердит, что она сохранится после перезагрузки.

  7. Проверьте связь с удалённой сетью: ping до известного адреса в целевой подсети и tracert до него. Первый хоп должен совпасть со шлюзом из маршрута.

В PowerShell есть нативная альтернатива, которая делает то же самое и сразу пишет маршрут в постоянное хранилище. Cmdlet New-NetRoute создаёт IP-маршрут в таблице IP-маршрутизации, а параметр -PolicyStore PersistentStore применяется в документации Microsoft именно для постоянных маршрутов:

New-NetRoute -DestinationPrefix "192.168.100.0/24" -InterfaceIndex 12 -NextHop 10.0.0.1 -RouteMetric 10 -PolicyStore PersistentStore

Проверка выполняется командой Get-NetRoute -DestinationPrefix "192.168.100.0/24".

Безопаснее действовать в два шага: сначала добавить маршрут без -p, проверить связь, а после успеха повторить команду с -p. Если меняете таблицу на удалённом сервере через RDP, держите страховку: запланированная перезагрузка командой shutdown /r /t 300 сбросит временные маршруты и вернёт связь, а отменить её можно командой shutdown /a.

Просмотр таблицы маршрутизации: route print

route print выводит три блока: Interface List с номерами интерфейсов, IPv4 Route Table с активными маршрутами и Persistent Routes с постоянными записями. Пример фрагмента:

Interface List
 12...00 15 5d 8a 11 02 ......Intel(R) Ethernet Connection
 23...........................PPP adapter VPN

IPv4 Route Table
===========================================================================
Active Routes:
Network Destination        Netmask          Gateway       Interface  Metric
          0.0.0.0          0.0.0.0       192.168.1.1    192.168.1.50      25
      192.168.1.0    255.255.255.0         On-link     192.168.1.50     281
    192.168.100.0    255.255.255.0          10.0.0.1       10.0.0.50      10
===========================================================================
Persistent Routes:
  Network Address          Netmask  Gateway Address  Metric
    192.168.100.0    255.255.255.0          10.0.0.1  Default
===========================================================================

Что означает каждая колонка:

КолонкаЗначение
Network DestinationАдрес сети назначения; 0.0.0.0 означает маршрут по умолчанию
NetmaskМаска сети назначения
GatewayШлюз для этой сети; On-link значит, что сеть подключена напрямую
InterfaceIP-адрес интерфейса, через который уходит трафик
MetricПриоритет: чем меньше значение, тем выше приоритет

Значения метрик зависят от конфигурации адаптеров, поэтому ориентируйтесь на собственный вывод, а не на числа из примеров. В колонке Interface у маршрута через 10.0.0.1 стоит адрес того адаптера, который смотрит в эту подсеть.

Фильтр по адресу ускоряет поиск: route print 192.168.* покажет только записи, начинающиеся с 192.168. В PowerShell то же самое делает Get-NetRoute -AddressFamily IPv4.

Подробный разбор колонок и разницу между активными и постоянными маршрутами смотрите в материале о таблице маршрутизации Windows.

Настройка маршрута через VPN-интерфейс

При подключении VPN Windows создаёт виртуальный адаптер: PPP для встроенного клиента, TAP или WireGuard-адаптер для сторонних реализаций. Внутри туннеля есть свой шлюз, обычно это первый адрес туннельной сети. Чтобы направить в туннель только конкретную подсеть, добавляют маршрут с этим шлюзом и номером VPN-интерфейса:

route -p add 172.16.0.0 mask 255.255.0.0 10.8.0.1 if 23 metric 5

Такой приём называют раздельным туннелированием: рабочие подсети идут через VPN, остальной трафик остаётся на локальном канале и не нагружает туннель. Практические схемы для корпоративных сетей собраны в руководстве по IP-маршрутизации 2026.

Как узнать номер VPN-интерфейса

Номер интерфейса виден в route print, в разделе Interface List. Ищите строку с названием адаптера, например «PPP adapter VPN» или «WireGuard Tunnel». Номер стоит в начале строки перед многоточием: 23... означает интерфейс с индексом 23. Тот же список с колонкой Idx выдаёт команда:

netsh interface ipv4 show interfaces

В PowerShell список даёт Get-NetAdapter -IncludeHidden, нужное значение в колонке ifIndex.

Что важно помнить при работе с VPN:

  • Номер интерфейса VPN существует, пока туннель подключён. После отключения адаптер исчезает из списка, поэтому постоянный маршрут, привязанный к if, до подключения VPN неактивен.
  • Опция «Use default gateway on remote network» в свойствах VPN отправляет в туннель весь трафик, включая интернет. Для раздельного туннелирования её снимают, а нужные подсети добавляют маршрутами.
  • Метрика решает, какой маршрут победит при перекрытии. Если у VPN-маршрута метрика ниже, чем у локального, трафик уйдёт в туннель даже при доступном локальном шлюзе.
  • VPN-клиент может добавлять собственные маршруты при подключении и перекрывать ваши. Сверяйте таблицу после установки соединения, а не до него.

Удаление и изменение статических маршрутов

Удаление выполняется командой route delete, которая удаляет маршрут или маршруты:

route delete 192.168.100.0

Если к одной сети ведут несколько маршрутов через разные шлюзы, укажите маску и шлюз, чтобы удалить только нужную запись:

route delete 192.168.100.0 mask 255.255.255.0 10.0.0.1

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

Команда route change меняет шлюз или метрику уже существующего маршрута:

route change 192.168.100.0 mask 255.255.255.0 10.0.0.254 metric 20

Ограничение: route change работает с активной записью и не создаёт постоянного маршрута. Существующую запись нельзя изменить напрямую - её нужно удалить и добавить новую. Поэтому если запись добавляли с -p, надёжнее удалить её и добавить заново с нужными параметрами, иначе после перезагрузки вернутся старые значения. В PowerShell тем же задачам соответствуют Remove-NetRoute и Set-NetRoute.

Флаг -f очищает таблицу от шлюзовых записей перед выполнением команды. На удалённом сервере он обрывает связь, поэтому применяйте его только на локальной консоли и с готовым планом восстановления.

Полный набор команд для добавления, удаления и изменения маршрутов, включая netsh, собран в шпаргалке по route и netsh.

Диагностика конфликтов и типичные ошибки

Порядок выбора маршрута в Windows предсказуем: сначала сравнивается длина префикса, побеждает более точная запись, затем при равных префиксах сравнивается метрика, меньшее значение выигрывает. Отсюда два источника конфликтов: перекрывающиеся маршруты разной длины и одинаковые префиксы с разными метриками.

Пример: в таблице есть 192.168.100.0/24 через локальный шлюз 10.0.0.1 с метрикой 25 и 192.168.100.0/24 через VPN с метрикой 5. Трафик уйдёт в туннель, даже если оба пути рабочие. Если нужен обратный результат, поднимите метрику VPN-маршрута или удалите его.

СимптомПричинаЧто делать
The route addition failed: The specified mask parameter is invalidВ destination есть биты за пределами маскиИсправить адрес сети или маску
Ошибка добавления или неактивный маршрутАдрес шлюза не входит в подсеть ни одного интерфейсаПроверить ipconfig и взять шлюз из своей подсети
Маршрут пропал после перезагрузкиКоманда выполнена без -pДобавить заново с -p
Трафик идёт не через тот шлюзПерекрытие с более точным или менее метричным маршрутомСравнить route print до и после, скорректировать метрику
Маршрут есть, связи нетИнтерфейс неактивен, неверный номер if, блокировка брандмауэром или NACПроверить интерфейс, ping шлюза, правила фильтрации

Что делать, если маршрут не работает

  1. Проверьте, что запись есть в таблице: route print 192.168.100.*
  2. Проверьте шлюз: ping <адрес шлюза>. Нет ответа - проблема не в маршруте, а в доступности шлюза.
  3. Проверьте номер интерфейса: несовпадение с if приводит к тому, что шлюз ищется на чужом адаптере.
  4. Сравните метрики: при равных префиксах побеждает маршрут с меньшей метрикой, а не тот, который добавлен позже.
  5. Проверьте путь: tracert до адреса в удалённой подсети. Первый хоп покажет фактический шлюз, pathping добавит статистику потерь по хопам.
  6. Проверьте фильтрацию: брандмауэр Windows, антивирус с сетевым экраном или NAC в корпоративной сети блокируют трафик при живом маршруте.
  7. Сверьте состояние до и после: route print > before.txt, снятый заранее, экономит время при разборе инцидента.

Если разбираться нужно с общим шлюзом и типовыми сбоями маршрута по умолчанию, посмотрите материал про default gateway.

Часто задаваемые вопросы

Сохранится ли маршрут после перезагрузки?

Да, если команда выполнена с флагом -p: запись попадает в реестр и восстанавливается при старте системы. Без -p маршрут действует до перезагрузки, переподключения адаптера или ручного удаления.

Как удалить постоянный маршрут?

Командой route delete <сеть>, при необходимости с маской и шлюзом. Запись удаляется и из активной таблицы, и из сохранённого списка постоянных маршрутов.

Можно ли использовать route add в PowerShell?

Да, route.exe вызывается из PowerShell так же, как из cmd. Для нативной работы подойдёт New-NetRoute с параметром -PolicyStore PersistentStore, он играет ту же роль, что флаг -p.

Влияет ли route add на другие интерфейсы?

Команда меняет только таблицу маршрутизации, настройки адаптеров остаются прежними. Параметр if ограничивает интерфейс, через который ищется шлюз для этой записи, а трафик к указанной сети пойдёт по новому маршруту независимо от того, какой адаптер его породил.

Как сбросить таблицу маршрутизации?

Простейший способ - перезагрузка или отключение и включение сетевого адаптера: временные маршруты исчезнут сами, постоянные вернутся из реестра. Команда netsh interface ip reset приводит стек TCP/IP к исходному состоянию, после неё статические адреса, DNS и постоянные маршруты придётся настраивать заново. Флаг route -f очищает шлюзовые записи немедленно, что на удалённом подключении обрывает связь.

Применима ли инструкция к Windows 10, Windows 11 и Windows Server?

Утилита route.exe входит в состав всех поддерживаемых клиентских и серверных версий Windows, синтаксис одинаковый. Cmdlet New-NetRoute доступен в поддерживаемых версиях Windows и Windows Server. Формулировки сообщений об ошибках зависят от локализации системы, параметры команды при этом не меняются.

Источники

Поделиться:
Сохранить гайд? В закладки браузера