Если в Linux сеть вроде бы работает, но сайты не открываются, а доступ по IP-адресу есть, но по доменному имени нет, то очень вероятна проблема с DNS-разрешением. DNS отвечает за преобразование доменного имени, например example.com, в реальный IP-адрес. Если этот механизм ломается, интернет как будто есть, но пользоваться им нормально уже нельзя.
Типичные симптомы
- Браузер сообщает, что сервер не найден
ping 8.8.8.8проходит, аping google.com— нет- Не работают
apt,dnf,yum,pacmanи другие менеджеры пакетов - Появляется сообщение
Temporary failure in name resolution
С чего начать проверку
Сначала нужно понять, сломана ли вся сеть или проблема только в DNS.
ping -c 4 8.8.8.8
ping -c 4 google.com
ip addr
ip route
Если до 8.8.8.8 пинг идет, а до google.com нет, это почти всегда указывает на проблему DNS. Если недоступен даже IP-адрес, нужно проверять Wi-Fi, сетевой интерфейс, шлюз и маршрутизацию.
Основные причины
1. Ошибка в /etc/resolv.conf
Во многих дистрибутивах Linux информация о DNS-серверах хранится в /etc/resolv.conf. Если там нет корректного nameserver, разрешение имен работать не будет.
cat /etc/resolv.conf
Пример содержимого:
nameserver 8.8.8.8
nameserver 1.1.1.1
Если файл пустой или указывает на неверный локальный резолвер, возникнут проблемы. Но на современных системах этот файл часто автоматически создается NetworkManager или systemd-resolved, поэтому ручные изменения могут быть перезаписаны.
2. Сбой systemd-resolved
На Ubuntu и ряде других систем systemd-resolved управляет DNS и использует 127.0.0.53 как локальный адрес-резолвер. Если служба остановлена, DNS-поиск перестанет работать.
systemctl status systemd-resolved
resolvectl status
При необходимости перезапустите службу:
sudo systemctl restart systemd-resolved
3. Ошибка получения DNS через NetworkManager
На настольных системах Linux NetworkManager часто получает DNS через DHCP. Если профиль сети поврежден или соединение настроено неправильно, DNS-серверы могут не примениться.
nmcli dev show | grep DNS
nmcli connection show
Иногда помогает перезапуск:
sudo systemctl restart NetworkManager
4. Влияние VPN, прокси или файрвола
VPN может перенаправлять DNS-запросы по неправильному пути, а файрвол — блокировать порт 53. В итоге сеть частично работает, но доменные имена не разрешаются.
5. Поврежденный или устаревший DNS-кэш
Если локальный кэш DNS поврежден или устарел, некоторые домены могут перестать открываться. В системах с systemd-resolved или nscd полезно очистить кэш.
sudo resolvectl flush-caches
Практические шаги по устранению
Шаг 1: Проверить внешний DNS напрямую
nslookup google.com 8.8.8.8
dig google.com @8.8.8.8
Если так ответ приходит, значит внешний DNS работает, а причина, скорее всего, в локальной конфигурации.
Шаг 2: Временно указать публичные DNS-серверы
sudo sh -c 'printf "nameserver 8.8.8.8\nnameserver 1.1.1.1\n" > /etc/resolv.conf'
Это временное решение. После перезагрузки или переподключения файл может быть снова изменен системой. Для постоянного решения нужно исправить настройки NetworkManager, netplan или systemd-resolved.
Шаг 3: Проверить netplan в Ubuntu
sudo nano /etc/netplan/*.yaml
Пример:
nameservers:
addresses: [8.8.8.8,1.1.1.1]
После изменения примените:
sudo netplan apply
Шаг 4: Повторно получить настройки DHCP
sudo dhclient -r
sudo dhclient
Если DHCP-сервер выдал неверные DNS-параметры, это может помочь.
Полезные команды для проверки
ping -c 4 8.8.8.8
ping -c 4 google.com
cat /etc/resolv.conf
systemctl status systemd-resolved
resolvectl status
nmcli dev show | grep DNS
nslookup google.com
dig google.com
journalctl -u systemd-resolved --no-pager | tail -n 50
Как предотвратить повторение проблемы
- Не ограничивайтесь только ручным редактированием
/etc/resolv.conf - Понимайте, кто именно управляет DNS: DHCP, NetworkManager или systemd-resolved
- После настройки VPN проверяйте, не изменились ли DNS-параметры
- На серверах лучше явно задавать постоянные DNS-серверы
Итог
Если Linux не может разрешать DNS-имена, сначала нужно проверить, доступен ли обмен по IP-адресу. Это позволяет быстро понять, проблема ли именно в DNS. Затем по порядку проверьте /etc/resolv.conf, systemd-resolved, NetworkManager, DHCP и настройки VPN. Важно не только временно восстановить работу, но и понять, какой компонент системы реально управляет DNS, чтобы устранить проблему надолго.