Калі ў 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, узнікнуць праблемы. Але на сучасных сістэмах гэты файл часта аўтаматычна ствараецца 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-кэш
Калі лакальны 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.