Что означает ошибка "Network is unreachable"
Ошибка Network is unreachable (код ENETUNREACH) возникает, когда ядро Linux не может найти маршрут к указанному IP-адресу или сети. Система сообщает, что сеть, к которой вы пытаетесь подключиться, недоступна с точки зрения таблицы маршрутизации.
Вы увидите это сообщение при выполнении команд, таких как:
ping 8.8.8.8
ping: connect: Network is unreachable
Или в traceroute:
traceroute 8.8.8.8
connect: Network is unreachable
Ошибка возникает до попытки отправить пакет — система даже не может определить, куда его направить.
Причины возникновения
- Отсутствует маршрут по умолчанию (шлюз). Самая частая причина. В таблице маршрутизации нет записи
default via <шлюз>для выхода в интернет. - Неверный шлюз (gateway). Шлюз указан, но его IP-адрес не belongs к локальной сети или интерфейс неактивен.
- Сетевой интерфейс не настроен. Интерфейс (
eth0,wlan0) либо выключен, либо не получил IP-адрес (через DHCP или статически). - Неправильная маска подсети. Настройки IP-адреса и маски не соответствуют реальной сети, поэтому шлюз считается недостижимым.
- Физические проблемы. Кабель не подключён, Wi-Fi отключён или роутер/коммутатор не работает.
- Ограничения firewall. Хотя обычно это вызывает
No route to host, некоторые правила iptables/nftables могут блокировать отправку пакетов на уровне маршрутизации.
Способы решения
Способ 1: Проверка и восстановление интерфейса
Убедитесь, что ваш сетевой интерфейс активен и имеет IP-адрес.
- Просмотрите список интерфейсов:
ip addr show
Найдите основной интерфейс (например,eth0илиwlan0). Убедитесь, что он имеет состояниеUPи назначен IP-адрес в форматеinet xxx.xxx.xxx.xxx/.... - Если интерфейс
DOWN, включите его:sudo ip link set dev eth0 up
Заменитеeth0на имя вашего интерфейса. - Если IP-адрес отсутствует, запросите его у DHCP-сервера (если используется динамическая настройка):
sudo dhclient -v eth0
Или настройте статический IP вручную (см. Способ 3).
Способ 2: Диагностика и исправление таблицы маршрутизации
Проверьте, есть ли маршрут по умолчанию.
- Посмотрите текущие маршруты:
ip route
Ищите строку, начинающуюся сdefault via. Если её нет — это причина ошибки. - Определите ваш шлюз. Часто это адрес вида
192.168.1.1,10.0.0.1или172.16.0.1. Посмотрите настройки роутера или выполните:ip route | grep default
Если команда ничего не вывела, шлюз не настроен. - Временно добавьте маршрут по умолчанию (действует до перезагрузки):
sudo ip route add default via 192.168.1.1 dev eth0
Замените192.168.1.1на IP вашего шлюза, аeth0— на интерфейс. - Проверьте, появился ли маршрут:
ip route show default
И попробуйте пинг:ping -c 4 8.8.8.8
Способ 3: Настройка статического IP (если DHCP не работает)
Если DHCP-сервер недоступен или конфигурация сбита, назначьте адрес вручную.
- Определите свободный IP в вашей сети (например,
192.168.1.100), маску (/24или255.255.255.0) и шлюз (192.168.1.1). - Настройте интерфейс через
ip(временно):sudo ip addr add 192.168.1.100/24 dev eth0 sudo ip route add default via 192.168.1.1 - Для постоянной настройки отредактируйте конфигурационный файл сети:
- Ubuntu/Debian (Netplan):
/etc/netplan/01-netcfg.yaml
Примените:network: version: 2 ethernets: eth0: addresses: - 192.168.1.100/24 routes: - to: default via: 192.168.1.1 nameservers: addresses: [8.8.8.8, 1.1.1.1]sudo netplan apply. - CentOS/RHEL/Fedora (NetworkManager):
/etc/sysconfig/network-scripts/ifcfg-eth0
Перезапустите:BOOTPROTO=static IPADDR=192.168.1.100 NETMASK=255.255.255.0 GATEWAY=192.168.1.1 DNS1=8.8.8.8sudo systemctl restart NetworkManager.
- Ubuntu/Debian (Netplan):
Способ 4: Проверка физического подключения и Wi-Fi
- Убедитесь, что кабель плотно вставлен в порт компьютера и роутер/коммутатор. Для Wi-Fi проверьте, что вы подключены к правильной сети и индикатор показывает соединение.
- Перезагрузите роутер/модем.
- Проверьте, видит ли система интерфейс:
Если интерфейс отсутствует, возможно, проблема с драйвером. Обновите систему или установите драйвер.ip link
Способ 5: Анализ с помощью traceroute и tracepath
Уточните, на каком этапе теряется связь.
- Установите
tracerouteилиtracepath(если нет):sudo apt install traceroute # Debian/Ubuntu sudo yum install traceroute # CentOS/RHEL - Запустите:
tracepath 8.8.8.8
Если сразу выводитNetwork is unreachable— проблема локальная (нет маршрута). Если идёт несколько прыжков и падает — возможно, блокировка на промежуточном узле.
Профилактика
- Регулярно обновляйте систему (
sudo apt update && sudo apt upgrade), чтобы получать исправления для сетевых драйверов и утилит. - Не удаляйте маршрут по умолчанию вручную без понимания последствий. Проверяйте
ip routeпосле изменений. - Используйте статические IP только при необходимости. В домашних/офисных сетях предпочтитель DHCP.
- Правильно настраивайте шлюз. Убедитесь, что IP шлюза находится в той же подсети, что и IP вашего интерфейса.
- Резервное копирование конфигурационных файлов сети перед редактированием:
sudo cp /etc/netplan/01-netcfg.yaml /etc/netplan/01-netcfg.yaml.bak - Мониторинг: Добавьте в cron задачу на проверку доступности шлюза и перезапуск службы при сбое.