Когда нужен статический маршрут
Обычно компьютеру хватает маршрута по умолчанию: всё, что не в локальной сети, уходит на роутер. Но бывает, что часть сетей находится за другим устройством. Типичный пример: в офисе или дома работают два роутера, основной с выходом в интернет и второй, за которым находится дополнительная подсеть. Компьютеру нужно знать, что к этой подсети идти надо через второй роутер, иначе пакеты уйдут на основной шлюз и не найдут адресата.
Именно для таких случаев служит статический маршрут. Он говорит системе: для сети такой-то с такой-то маской отправляй пакеты на такой-то шлюз. Ключ -p делает запись постоянной, то есть сохраняет её при перезагрузке. Без него запись действует до перезапуска компьютера, что удобно для проверки.
Если вы просто хотите изменить общий выход в интернет, маршруты добавлять не нужно: правится шлюз по умолчанию в настройках адаптера.
Статические маршруты хороши для небольших сетей. Если подсетей много или маршруты часто меняются, разумнее настроить маршрутизацию на самом роутере или вынести её на отдельное устройство, а компьютеры оставить с одним шлюзом по умолчанию. Тогда правки делаются в одном месте, а не на каждой машине.
Синтаксис и параметры
Команду выполняют в командной строке, запущенной от имени администратора. Общий вид (пример, адреса из блока документации):
route -p add 198.51.100.0 mask 255.255.255.0 192.0.2.254 metric 10 if 12
| Часть команды | Назначение |
|---|---|
| -p | Сохранять маршрут после перезагрузки |
| add | Добавить запись |
| 198.51.100.0 | Адрес сети назначения |
| mask 255.255.255.0 | Маска сети назначения |
| 192.0.2.254 | Шлюз, следующий шаг |
| metric 10 | Метрика (необязательно) |
| if 12 | Номер интерфейса из вывода route print (необязательно) |
Параметры metric и if можно не указывать: система выберет интерфейс, через который достижим шлюз, а метрику назначит сама. Указывать if стоит, когда у компьютера несколько адаптеров в схожих сетях и система может выбрать не тот. Для маршрута к отдельному узлу используйте маску 255.255.255.255.
Другие действия выполняются командами route delete для удаления, route change для изменения существующей записи и route print для просмотра.
Пошаговая процедура с проверкой
Работайте последовательно, чтобы иметь возможность откатиться.
- Выполните route print и сохраните вывод: он понадобится для сравнения. Запомните номер нужного интерфейса.
- Проверьте, что шлюз доступен: ping на адрес 192.0.2.254 должен проходить.
- Добавьте маршрут: route -p add 198.51.100.0 mask 255.255.255.0 192.0.2.254.
- Убедитесь, что запись появилась в блоке активных и в блоке постоянных маршрутов: route print.
- Проверьте прохождение: ping на адрес в целевой подсети и tracert для просмотра пути.
- Если результат не тот, удалите запись: route delete 198.51.100.0.
Перед постоянным добавлением полезно сначала выполнить команду без ключа -p. Если всё работает, добавьте уже с ключом. Так вы исключите ситуацию, когда ошибочная запись остаётся в системе на долгий срок и мешает после перезагрузки.
Сообщение «Операция завершена успешно» означает лишь то, что запись создана, но не то, что она правильная. Итоговую проверку всегда выполняйте по пингу и трассировке.
Обратите внимание и на обратный путь. Даже правильный маршрут на вашем компьютере не поможет, если устройство в целевой подсети не знает, как ответить: оно должно иметь путь к вашей сети через тот же второй роутер. Поэтому при недоступности целевой подсети проверяйте маршруты с обеих сторон.
Альтернатива в PowerShell
В PowerShell маршруты создаются командой New-NetRoute (нужны права администратора). Пример (пример): New-NetRoute -DestinationPrefix "198.51.100.0/24" -InterfaceIndex 12 -NextHop 192.0.2.254. Здесь сеть задана префиксом, а не маской, и интерфейс указывается индексом. Просмотр записей делает Get-NetRoute, удаление выполняет Remove-NetRoute.
Преимущество PowerShell в удобстве скриптов и фильтрации: можно легко найти все маршруты интерфейса и удалить нужный. Преимущество route в том, что команда знакома администраторам и работает в любой версии Windows.
Выбирайте один инструмент и придерживайтесь его в рамках одного задания. Смешивание способов не запрещено, но затрудняет понимание, где именно живёт запись. Проверить итог можно любым вариантом просмотра.
Типичные ошибки и как их исправить
Большинство неудач связано с несколькими причинами. Ниже перечислены основные.
- Сообщение «Запрошенная операция требует повышения»: командная строка запущена без прав администратора.
- Ошибка «Неверная маска» или отказ добавить запись: адрес назначения не согласован с маской, в ней остались единицы за границей сети. Например, адрес 198.51.100.5 с маской /24 некорректен, нужен 198.51.100.0.
- Шлюз недостижим: он не находится в сети интерфейса. Сначала настройте доступ до шлюза.
- Запись есть, но связи нет: следующий шлюз не знает обратного маршрута или фильтрует трафик. Проверьте настройки второго устройства.
- Запись осталась после смены сети и мешает: удалите её командой route delete.
Не добавляйте маршрут по умолчанию (0.0.0.0) вторым шлюзом без понимания последствий, иначе трафик может пойти по неверному пути. Статические маршруты стоит документировать: запишите, зачем добавлен каждый, иначе через год никто не вспомнит причину.
Если вы добавляли маршрут давно и забыли, зачем, посмотрите блок постоянных маршрутов в route print и сверьтесь с документацией сети. Удалять записи без понимания их назначения не стоит: сначала выясните, какая подсеть за ними скрывается и используется ли она сейчас.