Подробный гайд: Разбираем причины и способы устранения ошибки «No route to host»

Разбираем причины и способы устранения ошибки «No route to host»: диагностика маршрутов, ARP, брандмауэра. Пошаговые команды и решения.

2026.08.31                


Подробный гайд: Разбираем причины и способы устранения ошибки «No route to host»Подробный гайд: Разбираем причины и способы устранения ошибки «No route to host»

1. Что такое «No route to host»

Ошибка «No route to host» (в Linux/Unix системах часто обозначается как EHOSTUNREACH) возникает, когда операционная система не может определить маршрут для доставки пакета к удалённому хосту. Это означает, что на каком-то этапе сетевого взаимодействия (обычно на уровне IP-маршрутизации или ARP-разрешения) произошёл сбой: либо локальная таблица маршрутизации не содержит подходящего маршрута, либо промежуточный маршрутизатор (или сам удалённый хост) вернул ICMP-сообщение «Host Unreachable».



Важно отличать эту ошибку от «Network is unreachable» (сеть недоступна). Вторая обычно указывает на отсутствие маршрута до целой сети, а первая — на то, что маршрут до сети существует, но конкретный хост в этой сети недоступен (например, из-за проблем на канальном уровне или из-за блокировки межсетевым экраном).


2. Типичные причины возникновения

2.1. Отсутствие маршрута в таблице маршрутизации

  • Нет маршрута по умолчанию (default gateway) или маршрута до конкретной сети.
  • Неправильно указан шлюз или интерфейс в маршруте.
  • Ошибка в конфигурации сетевого интерфейса (нет IP-адреса, некорректная маска подсети).

2.2. Проблемы на канальном уровне (ARP)

  • Хост находится в той же локальной сети, но не отвечает на ARP-запросы (выключен, отключён кабель, неисправен сетевой адаптер).
  • Коммутатор или точка доступа блокируют трафик (VLAN, изоляция клиентов, фильтрация MAC-адресов).

2.3. Межсетевые экраны и фильтры

  • Локальный брандмауэр (iptables, nftables, firewalld, ufw) блокирует исходящие пакеты и возвращает ICMP-сообщение «Host prohibited».
  • Промежуточный маршрутизатор или брандмауэр отбрасывает пакеты и отправляет ICMP «Host Unreachable».

2.4. Удалённый хост или сеть недоступны

  • Удалённый сервер выключен, но маршрутизатор сети отвечает ICMP «Host Unreachable».
  • В удалённой сети нет маршрута обратно к отправителю (асимметричная маршрутизация).

2.5. Проблемы с Policy routing

  • Правила policy routing (ip rule) направляют трафик не в ту таблицу маршрутизации.

2.6. Использование разных версий IP

  • Попытка подключиться к IPv6-адресу, когда IPv6 не настроен или маршрут отсутствует (и наоборот).

2.7. Неправильная настройка сетевых параметров

  • Некорректная маска подсети приводит к тому, что хост считается находящимся в другой сети, и трафик уходит на шлюз, который не может его доставить.
  • Отсутствие IP-адреса на интерфейсе.

3. Диагностика ошибки

Для выявления причины используйте следующие команды (выполняйте с правами root, где необходимо).

3.1. Проверка таблицы маршрутизации

ip route show
# или
route -n

Обратите внимание:

  • Есть ли маршрут по умолчанию (default via <шлюз> dev <интерфейс>).
  • Есть ли маршрут до сети, в которой находится целевой хост.
  • Правильно ли указан интерфейс и шлюз.

3.2. Проверка IP-адресов интерфейсов

ip addr show
# или
ifconfig -a

Убедитесь, что интерфейс поднят (state UP), имеет корректный IP-адрес и маску.


3.3. Проверка доступности шлюза

ping <IP-шлюза>

Если шлюз не пингуется, проблема может быть на локальном уровне (кабель, коммутатор, настройки интерфейса).


3.4. Трассировка маршрута

traceroute <IP-цели>
# или
tracepath <IP-цели>

Покажет, до какого узла доходят пакеты. Если трассировка обрывается на определённом маршрутизаторе, проблема вероятнее всего на нём или за ним.


3.5. Проверка ARP-таблицы

ip neigh show

Если целевой хост в локальной сети, проверьте, есть ли для него запись в ARP-таблице и в каком состоянии она находится (REACHABLE, STALE, FAILED). Если состояние FAILED или запись отсутствует — хост не отвечает на ARP.


3.6. Анализ брандмауэра

# iptables
iptables -L -n -v
# nftables
nft list ruleset
# firewalld
firewall-cmd --list-all
# ufw
ufw status verbose

Ищите правила, которые могут блокировать исходящий трафик или ICMP.


3.7. Захват пакетов

tcpdump -i <интерфейс> host <IP-цели> and icmp

Позволяет увидеть, отправляются ли пакеты и приходят ли ICMP-ответы (например, «Host unreachable»).




3.8. Проверка правил policy routing

ip rule show

Если есть нестандартные правила, проверьте соответствующие таблицы маршрутизации:

ip route show table <номер_или_имя>

3.9. Проверка доступности порта (если приложение сообщает об ошибке)

Иногда ошибка «No route to host» появляется при попытке подключения к конкретному порту, но на самом деле проблема в другом.

Используйте telnet, nc или nmap для проверки:

nc -zv <IP> <порт>

Если соединение не устанавливается и выводится «No route to host», значит проблема на сетевом уровне.


4. Способы устранения

4.1. Добавление недостающего маршрута

Если отсутствует маршрут по умолчанию:

ip route add default via <IP-шлюза> dev <интерфейс>

Для конкретной сети:

ip route add <сеть>/<маска> via <IP-шлюза> dev <интерфейс>

Чтобы изменения сохранились после перезагрузки, отредактируйте конфигурационные файлы (например, /etc/network/interfaces, /etc/sysconfig/network-scripts/ifcfg-*, Netplan, systemd-networkd).


4.2. Исправление конфигурации интерфейса

  • Убедитесь, что интерфейс поднят: ip link set <интерфейс> up.
  • Назначьте корректный IP-адрес и маску: ip addr add <IP>/<маска> dev <интерфейс>.
  • Проверьте, что в конфигурации нет опечаток.

4.3. Настройка брандмауэра

- Временно отключите брандмауэр для проверки:

systemctl stop firewalld   # для firewalld
ufw disable                # для ufw
iptables -F                # очистить правила iptables (осторожно!)

- Если после этого ошибка исчезает, добавьте разрешающие правила для нужного трафика.


4.4. Проверка удалённого хоста

  • Убедитесь, что удалённый сервер включён и подключён к сети.
  • Проверьте, отвечает ли он на ping (если ICMP разрешён).
  • Проверьте, не блокирует ли его собственный брандмауэр.

4.5. Решение проблем на канальном уровне

  • Проверьте физическое подключение (кабели, порты, индикаторы).
  • Проверьте настройки VLAN на коммутаторе.
  • Если используется Wi-Fi, убедитесь, что клиенты не изолированы друг от друга (AP isolation).

4.6. Policy routing

  • Проверьте, не перекрывают ли правила ip rule стандартную маршрутизацию. При необходимости удалите лишние правила или измените приоритеты.

4.7. Проверка IPv6

- Если используется IPv6, проверьте таблицу маршрутизации IPv6:

ip -6 route show

- При необходимости добавьте маршрут:

ip -6 route add default via <IPv6-шлюза> dev <интерфейс>

4.8. Перезапуск сетевых служб

Иногда помогает перезапуск сетевого стека:

systemctl restart networking    # Debian/Ubuntu
systemctl restart network       # CentOS/RHEL (или systemctl restart NetworkManager)

5. Типичные сценарии и их решение

Сценарий 1: Хост в локальной сети не отвечает

Симптом: ping 192.168.1.10 выдаёт «Destination Host Unreachable» или приложение получает «No route to host».
Причина: Хост выключен, или не отвечает на ARP.
Диагностика: ip neigh show показывает FAILED для IP.
Решение: Включить хост, проверить кабель, сетевые настройки хоста, убедиться, что он в той же VLAN.


Сценарий 2: Нет маршрута по умолчанию

Симптом: При обращении к адресу вне локальной сети получаем «No route to host».
Диагностика: ip route show не содержит строки default via ....
Решение: Добавить маршрут по умолчанию и прописать его в конфигурации.


Сценарий 3: Брандмауэр блокирует трафик

Симптом: Подключение к определённому порту на удалённом сервере даёт «No route to host», хотя ping проходит.
Причина: Локальный или промежуточный брандмауэр отправляет ICMP «Host prohibited».
Диагностика: В tcpdump видны ICMP-сообщения типа 3, код 10/13 (administratively prohibited).
Решение: Настроить брандмауэр, разрешив нужный трафик.




6. Важно

Ошибка «No route to host» — это индикатор проблемы на сетевом уровне, связанной с маршрутизацией, канальным уровнем или фильтрацией трафика. Систематическая диагностика (проверка маршрутов, ARP, брандмауэра, трассировка) позволяет быстро локализовать причину. В большинстве случаев достаточно добавить недостающий маршрут, исправить настройки интерфейса или скорректировать правила межсетевого экрана.

Если после выполнения всех шагов ошибка сохраняется, обратите внимание на более редкие причины: асимметричную маршрутизацию, проблемы с аппаратным обеспечением (сетевые карты, коммутаторы) или ошибки в конфигурации вышестоящих маршрутизаторов.


Мы делимся этой технической информацией, чтобы помочь вам в решении задач — используйте её с пониманием. Статья носит рекомендательный характер, поэтому, пожалуйста, применяйте описанные методы осмотрительно.


Статью подготовил: Аверко Денис Сергеевич @Nymexis г. Омск (специалист по ЗИ)

Комментарии

Загрузка...
Если комментарии не загружаются, можете попробовать отключить блокировщик рекламы для этого сайта