Якщо в 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
Якщо файл порожній або вказує на неправильний локальний DNS, виникне проблема. Але слід пам’ятати, що в сучасних системах Linux цей файл часто автоматично генерується 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. NetworkManager неправильно застосовує DNS
У настільних системах Linux NetworkManager часто отримує DNS через DHCP. Якщо мережевий профіль пошкоджений або повторне підключення пройшло з помилкою, правильні DNS-сервери можуть не застосуватися.
nmcli dev show | grep DNS
nmcli connection show
За потреби перезапустіть його:
sudo systemctl restart NetworkManager
4. Вплив VPN, проксі або брандмауера
VPN може спрямовувати DNS-запити неправильним шляхом, а брандмауер може блокувати порт 53. У такій ситуації мережа виглядає працездатною, але доменні імена не розпізнаються.
5. Пошкоджений або застарілий 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.