Проблемы с маршрутизацией чаще всего возникают из-за пяти причин: неверно заданного шлюза, конфликтующих маршрутов, неправильной метрики, отключенного IP forwarding и ошибки в сетевой маске. Быстрая диагностика начинается с проверки интерфейса и IP-адресации, затем нужно изучить таблицу маршрутизации, доступность шлюза, выбранный путь до адресата, пересылку пакетов и правила брандмауэра.
Логика проверки одинакова для Linux, Windows и сетевых устройств, но команды отличаются. Сначала зафиксируйте текущую конфигурацию, затем проверяйте маршрут до конкретного IP-адреса, а после изменения повторите тесты в локальной и удаленной сети. Такой порядок помогает отделить ошибку маршрута от сбоя VPN, фильтрации трафика, DNS или провайдера.
Для рабочей диагностики сохраните вывод таблицы маршрутизации, настройки интерфейсов и результаты проверки связности. На удаленном сервере заранее подготовьте консольный доступ или окно изменений: неправильная маска и шлюз могут сразу оборвать SSH или RDP-подключение.
Что проверить в первую очередь при проблемах с маршрутизацией в сети
Начните с локального состояния узла. Проверьте, поднят ли нужный сетевой интерфейс, назначен ли ему правильный IP-адрес и совпадает ли маска с топологией сети. Затем найдите маршрут к целевой подсети и проверьте, через какой шлюз и интерфейс система отправляет пакеты.
- Проверьте состояние интерфейса и его IP-адрес.
- Найдите маршрут к нужной сети и маршрут по умолчанию.
- Проверьте доступность шлюза через правильный интерфейс.
- Определите выбранный путь до конкретного адреса назначения.
- Если узел передает трафик между сетями, проверьте IP forwarding.
- Проверьте брандмауэр, NAT, VPN и обратный маршрут.
Не начинайте с DNS. Сначала проверьте связность по IP-адресу, затем доступность TCP или UDP-порта, и только после этого анализируйте разрешение имени.
Как проверить таблицу маршрутизации
В Linux используйте просмотр таблицы командой ip route show. Для конкретного адреса полезна команда ip route get 10.20.30.40. Она показывает, какой маршрут выбран, через какой шлюз и какой интерфейс будет использован.
ip addr show
ip route show
ip route get 10.20.30.40
В выводе найдите маршрут к целевой сети, запись default, адрес следующего узла и интерфейс выхода. Например, запись 10.20.30.0/24 via 192.168.1.1 dev eth0 означает, что трафик в сеть 10.20.30.0/24 должен идти через шлюз 192.168.1.1 по интерфейсу eth0.
В Windows используйте route print или командлет Get-NetRoute. Для выбора пути к конкретному адресу подойдет Test-NetConnection с параметром -TraceRoute, а для просмотра параметров интерфейса, включая метрику, можно применить Get-NetIPConfiguration и Get-NetIPInterface.
route print
Get-NetRoute -AddressFamily IPv4
Get-NetIPConfiguration
Test-NetConnection 10.20.30.40 -TraceRoute
Проверяйте не порядок строк, а назначение, префикс, шлюз, интерфейс и метрику. Система выбирает маршрут по правилам конкретной платформы, поэтому визуально верхняя запись не обязательно получает приоритет.
Диагностика проблем маршрутизации по симптомам
| Симптом | Вероятная причина | Первая проверка |
|---|---|---|
| Недоступны все внешние сети | Неверный шлюз по умолчанию, отключенный интерфейс или проблема канала | IP-адрес, маска, маршрут default, доступность шлюза |
| Недоступна одна подсеть | Нет маршрута назначения, ошибочен префикс или отсутствует обратный маршрут | Маршрут до конкретного IP и таблица маршрутизации на обеих сторонах |
| Работает только локальный сегмент | Шлюз недостижим, маска задана неправильно или фильтруется межсетевой трафик | Проверка соседнего узла, ARP, маски и правил брандмауэра |
| Трафик уходит через VPN | VPN добавил более специфичный маршрут или изменил метрику | Сравнение таблицы до и после подключения VPN |
| Сервер видит обе сети, но клиенты не проходят через него | Отключен IP forwarding, блокируется пересылка или нет обратного маршрута | Состояние forwarding, правила фильтрации и путь ответа |
Перед изменениями сохраните исходное состояние командами ip addr и ip route show в Linux либо route print и Get-NetIPConfiguration в Windows. Это ускорит откат и позволит точно увидеть эффект каждой правки.
Расширенный алгоритм проверки интерфейсов, ARP, маршрутов и трассировки приведен в чек-листе диагностики проблем маршрутизации.
Неверно заданный шлюз: проверка шлюза по умолчанию
Шлюз по умолчанию принимает пакеты для сетей, которых нет в более специфичных записях таблицы. Он должен находиться в подсети, доступной через выбранный интерфейс. Если на сервере задан адрес шлюза из другой сети, система может отклонить маршрут, не выполнить ARP или отправить трафик через неправильный сегмент.
Типичные ошибки связаны с опечаткой в последнем октете, старым адресом маршрутизатора, неверным интерфейсом и несогласованной маской. На сервере с двумя сетевыми картами отдельный риск создает указание шлюза через интерфейс, который физически подключен к другой сети.
Как проверить доступность шлюза
Сверьте четыре значения: IP-адрес интерфейса, сетевая маска, адрес шлюза и интерфейс выхода. Затем проверьте соседнее устройство в локальном сегменте. В Linux применяйте ip neigh show, а в Windows команду arp -a. Запись о шлюзе должна соответствовать ожидаемому интерфейсу и MAC-адресу.
ip route show default
ip neigh show
ping -c 3 192.168.1.1
В Windows таблицу соседей можно посмотреть командой arp -a, а доступность шлюза проверить так:
ping 192.168.1.1
Test-NetConnection 192.168.1.1
Отсутствие ответа на ping не доказывает неисправность маршрута: шлюз может фильтровать ICMP. В этом случае проверьте ARP, состояние интерфейса и доступность конкретного TCP-сервиса. Если ARP-запись не появляется, ищите проблему в маске, VLAN, кабеле, виртуальном коммутаторе или подключении к неправильному сегменту.
Как исправить маршрут с неправильным gateway
Сначала сохраните конфигурацию и убедитесь, что знаете корректный адрес шлюза. В Linux временный маршрут можно заменить командами ip route replace, а в Windows для временной записи используют route change или удаление и добавление маршрута через route delete и route add.
sudo ip route replace default via 192.168.1.1 dev eth0
ip route get 1.1.1.1
Пример для Windows:
route delete 0.0.0.0
route add 0.0.0.0 mask 0.0.0.0 192.168.1.1
Команды меняют активное состояние, но способ постоянного хранения зависит от сетевого менеджера, версии Windows, DHCP и настроек конкретного сетевого устройства. После изменения проверьте локальный адрес, шлюз, маршрут к внешнему IP и удаленное подключение. Затем перезапустите сетевую службу в согласованное окно и убедитесь, что запись не исчезла.
Если маршрут меняется на удаленном сервере, держите открытой вторую сессию и подготовьте консольный доступ. Исправление шлюза без плана отката часто приводит к потере управления узлом.
Конфликтующие маршруты: почему трафик уходит не туда
Конфликт появляется, когда несколько записей подходят для одного адреса назначения. Конкурировать могут статический маршрут, маршрут по умолчанию, запись, добавленная VPN-клиентом, и маршрут виртуальной сети контейнерной платформы.
Сначала система учитывает наиболее специфичный префикс. Маршрут 10.20.30.0/24 подходит точнее, чем 10.0.0.0/8 или default. Если несколько записей имеют одинаковое назначение, в выборе участвуют метрика, политика маршрутизации и параметры платформы.
Как найти дублирующие и пересекающиеся записи
Определите проблемный IP-адрес, затем соберите все маршруты, которые могут его покрывать. Сравните сеть, CIDR-префикс, шлюз, интерфейс и метрику. В Linux начните с ip route get ADDRESS, после чего изучите полную таблицу. В Windows используйте Get-NetRoute и route print.
ip route get 10.20.30.40
ip route show table main
Проведите тест трижды: без VPN, после подключения VPN и после отключения VPN. Если маршрут меняется только при активном туннеле, проверьте split tunneling, full tunneling и автоматически добавленные префиксы.
Отдельно проверьте контейнеры, виртуальные машины и второй физический интерфейс. Docker, Kubernetes, гипервизор и VPN могут создавать собственные подсети. Ошибка возникает, когда виртуальная сеть пересекается с корпоративной или домашней сетью, например обе используют 172.16.0.0/16.
Как устранить конфликт маршрутов
Сначала определите требуемый путь и ожидаемый интерфейс. Затем удалите устаревшую запись, исправьте ее префикс или измените метрику. Не удаляйте маршрут по умолчанию, пока не подтвержден альтернативный способ управления сервером.
После изменения выполните проверку выбранного пути и фактического прохождения трафика. Если конфликт возвращается после подключения VPN или перезапуска контейнеров, исправлять нужно источник записи: профиль VPN, конфигурацию виртуальной сети или настройки сетевого менеджера.
При двух независимых каналах задайте понятную схему: основной маршрут с меньшей метрикой, резервный маршрут с большей. Для сложных сценариев с двумя uplink и stateful-файрволом понадобится анализ асимметричной маршрутизации. Практические варианты с PBR и session persistence собраны в руководстве по асимметричной маршрутизации.
Некорректная метрика: как изменить приоритет маршрута
Метрика помогает выбрать маршрут среди нескольких записей с одинаковым назначением и сопоставимой специфичностью. Ошибка в метрике может сделать резервный канал основным или направить трафик через менее надежный интерфейс.
На практике нельзя сравнивать значения метрики между разными операционными системами без проверки их правил. Число 10 в одной платформе не означает универсальный приоритет перед числом 20 в другой. Сравнивайте маршруты внутри конкретной таблицы и проверяйте фактически выбранный путь.
Как понять, какой маршрут выбран
Найдите все записи к одному назначению и сопоставьте их параметры. В Linux выполните:
ip route show
ip route get 10.20.30.40
В Windows используйте:
Get-NetRoute -DestinationPrefix 10.20.30.0/24
Get-NetIPInterface -AddressFamily IPv4
Результат проверки маршрута до конкретного IP важнее расположения строки в таблице. Зафиксируйте выбранный gateway и интерфейс, затем сравните их с ожидаемой схемой. Если путь ведет в VPN, проверьте, нет ли у туннеля более специфичного префикса.
Как изменить метрику маршрута без потери связности
Зафиксируйте текущие значения и определите, какой канал должен быть основным. Уменьшите метрику основного маршрута или увеличьте метрику резервного, затем немедленно проверьте маршрут до контрольного IP.
В Linux параметр можно задать при добавлении или замене записи:
sudo ip route replace 10.20.30.0/24 via 192.168.1.1 dev eth0 metric 50
ip route get 10.20.30.40
В Windows метрику можно проверить и изменить на уровне интерфейса через PowerShell. Конкретный результат зависит от статических маршрутов, автоматических маршрутов и политики сетевого профиля:
Get-NetIPInterface -AddressFamily IPv4
Set-NetIPInterface -InterfaceAlias "Ethernet" -InterfaceMetric 50
После корректировки протестируйте основной канал, отключение основного канала и возврат к нему. Проверьте не один ping, а доступность нужного сервиса. Убедитесь, что обратный трафик использует допустимый путь и stateful-файрвол не видит соединение как новую несвязанную сессию.
Отключенный IP forwarding: узел не пересылает пакеты между сетями
IP forwarding разрешает маршрутизирующему узлу передавать пакеты между сетевыми интерфейсами. Сервер может иметь адреса в двух сетях и маршруты к обеим подсетям, но клиенты все равно не пройдут через него, если пересылка отключена.
Проверка IP forwarding на маршрутизирующем узле
В Linux состояние IPv4 forwarding проверяют через параметр ядра:
sysctl net.ipv4.ip_forward
cat /proc/sys/net/ipv4/ip_forward
Значение 1 означает, что IPv4-пересылка включена, а 0 отключает ее. Если в схеме используется IPv6, проверяйте его отдельно:
sysctl net.ipv6.conf.all.forwarding
В Windows проверьте роль маршрутизации и параметры служб, которые должны пересылать трафик. На серверных системах настройки могут зависеть от RRAS, служб удаленного доступа и политики безопасности. Не ограничивайтесь проверкой наличия двух интерфейсов: физическое присутствие сетевых карт не включает маршрутизацию автоматически.
Что проверить после включения пересылки
Включение forwarding решает только одну часть задачи. Проверьте маршрут на входящем интерфейсе, маршрут на исходящем интерфейсе и обратный путь у конечного получателя.
- На маршрутизаторе должны существовать маршруты к обеим сетям.
- Брандмауэр должен разрешать межсетевой трафик в обоих направлениях.
- NAT нужен только в сценариях, где обратный маршрут нельзя настроить или он не предусмотрен архитектурой.
- Конечный узел должен знать, через какой шлюз отправлять ответ.
- Проверка должна выполняться от клиента через маршрутизирующий узел к сервису.
Если клиент отправляет пакет на маршрутизатор, но ответ не возвращается, ищите асимметрию и отсутствие обратного маршрута. Если пакет не выходит с маршрутизатора, проверяйте правила FORWARD, Windows Firewall или фильтрацию на сетевом устройстве.
Ошибка в сетевой маске: неправильное определение сети назначения
Сетевая маска определяет границы локальной подсети. Ошибка меняет решение системы: адрес может ошибочно считаться локальным, пакет уйдет на ARP вместо шлюза или соседняя сеть окажется недоступной.
Слишком широкая маска включает лишние адреса в локальную сеть. Например, при использовании 192.168.1.10/16 система считает локальными адреса из большого диапазона 192.168.0.0/16, хотя фактический сегмент может быть 192.168.1.0/24. Слишком узкая маска, наоборот, исключает часть соседних адресов и заставляет использовать шлюз там, где нужен прямой обмен.
Как проверить сетевую маску и CIDR-префикс
Сопоставьте IP-адрес, маску, адрес сети, диапазон хостов и broadcast. Для единообразной диагностики используйте CIDR-запись, например 192.168.1.10/24. Проверьте конфигурацию на сервере, шлюзе и соседних устройствах.
В Linux выполните:
ip -4 addr show dev eth0
ip route show
ip route get 192.168.2.20
В Windows примените:
Get-NetIPAddress -AddressFamily IPv4
Get-NetIPConfiguration
route print
Для адреса 192.168.1.10/24 сетью будет 192.168.1.0/24, диапазоном хостов обычно считаются адреса 192.168.1.1-192.168.1.254, а broadcast имеет адрес 192.168.1.255. Если фактическая схема использует другой префикс, эти границы изменятся.
Как исправить маску без создания нового конфликта
Сначала подтвердите целевую топологию и допустимый диапазон адресов. Затем измените маску на интерфейсе, проверьте шлюз и пересмотрите статические маршруты. Маску нельзя исправлять изолированно, если она влияет на несколько узлов.
На удаленной системе заранее подготовьте консольный доступ. После изменения проверьте связь с адресом в локальной подсети, шлюзом и узлом в удаленной сети. Если маршрут к шлюзу исчез, исправьте адресацию через консоль и не продолжайте удаленные эксперименты.
Особенно внимательно проверяйте пересечение подсетей с VPN, Docker, Kubernetes и виртуальными машинами. Совпадающие или частично пересекающиеся диапазоны нельзя надежно исправить одной записью маршрута, если система не может однозначно определить требуемый интерфейс.
Проверка результата: как подтвердить исправление маршрутизации
Исправление считается подтвержденным, когда совпадают запись в таблице, выбранный интерфейс, фактический путь пакета и доступность нужного сервиса. Наличие маршрута само по себе не подтверждает рабочую связность.
Какие тесты выполнить после изменения маршрута
- Проверьте IP-адрес и состояние интерфейса.
- Проверьте доступность шлюза.
- Проверьте маршрут до IP-адреса в целевой подсети.
- Выполните трассировку до узла назначения.
- Проверьте нужный TCP или UDP-порт.
- Проверьте обратное направление и журналы брандмауэра.
В Linux для базовой проверки используйте ping, traceroute или mtr. В Windows подходят ping, tracert, Test-NetConnection и pathping.
ping -c 3 10.20.30.40
traceroute 10.20.30.40
mtr -r -c 20 10.20.30.40
ping 10.20.30.40
tracert 10.20.30.40
Test-NetConnection 10.20.30.40 -Port 443
Трассировка показывает направление движения пакетов, но промежуточные узлы могут фильтровать ответы. Сопоставляйте ее с таблицей маршрутизации и тестом нужного порта. Для UDP используйте профильный тест приложения или сетевой захват, если это разрешено политикой безопасности.
DNS проверяйте после IP-связности. Если по IP сервис доступен, а по имени нет, проблема находится в разрешении имен, поисковом домене или конфигурации DNS, а не в базовом маршруте.
Как сохранить рабочую конфигурацию
Разделите временные и постоянные изменения. Команды ip route в Linux обычно меняют активную таблицу и могут потеряться после перезапуска. В Windows временная запись через route add тоже требует проверки постоянства. Итоговую настройку храните в конфигурации сетевого менеджера или нужной системной службе.
После перезапуска сетевой службы и системы повторите проверку таблицы. Отдельно убедитесь, что маршрут не переопределяется DHCP, VPN-клиентом, облачной инициализацией, контейнерной платформой или политикой управления устройствами.
Зафиксируйте рабочую схему: IP-адреса, CIDR, шлюзы, интерфейсы, метрики, статические маршруты, правила NAT и команды отката. Для серверов в облаке проверьте настройки виртуальной сети и таблицы маршрутов. При размещении тестовых узлов в облачной инфраструктуре можно использовать Timeweb Cloud, но маршруты гостевой ОС и правила облачной сети нужно проверять отдельно.
Когда причина не в маршруте: VPN, брандмауэр и провайдер
Изменение таблицы не поможет, если пакет доходит до шлюза, но блокируется дальше. Отдельные причины требуют разных проверок: VPN меняет путь, брандмауэр фильтрует трафик, провайдер нарушает внешнюю связность, а DNS возвращает неправильный адрес.
Как проверить влияние VPN и дополнительных интерфейсов
Сравните таблицу маршрутизации до подключения VPN и после него. Найдите новые интерфейсы, маршруты к корпоративным подсетям и изменения маршрута по умолчанию.
- При split tunneling через VPN должны идти только заданные корпоративные сети.
- При full tunneling маршрут по умолчанию может перейти в туннель.
- Пересечение VPN-подсети с локальной сетью приводит к неоднозначному выбору пути.
- После отключения VPN временные маршруты должны исчезнуть.
Если проблема появилась сразу после запуска VPN-клиента, сохраните две версии таблицы и сравните их по префиксам, метрикам, шлюзам и интерфейсам. Для Windows дополнительные команды и сценарии проверки собраны в руководстве по маршрутизации в Windows.
Как отличить сбой маршрутизации от блокировки трафика
Сопоставьте четыре результата: выбранный маршрут, трассировку, тест порта и журналы брандмауэра. Если маршрут указывает на правильный интерфейс и шлюз, но TCP-порт не отвечает, проверяйте фильтрацию на клиенте, маршрутизаторе и сервере.
Если шлюз недоступен, ищите ошибку в локальной адресации, VLAN, ARP, интерфейсе или канальном соединении. Если шлюз доступен, но не отвечает весь внешний сегмент, проверьте uplink и провайдера. Если по IP соединение работает, а по имени нет, проверяйте DNS.
Для сложных случаев с потерей пакетов, MTU и асимметричным путем используйте практическое руководство с traceroute, mtr и ip route. Оно помогает отделить локальную ошибку маршрута от проблем туннеля, BGP и облачной сети.
Короткий алгоритм восстановления выглядит так: подтвердите состояние интерфейса, проверьте IP и маску, найдите маршрут до адресата, проверьте шлюз, сравните конфликтующие записи, оцените метрику, включите forwarding для маршрутизирующего узла и проверьте фильтрацию. После исправления протестируйте реальный сервис, обратный путь и сохранение конфигурации после перезапуска.