Pokud v Linuxu vypadá síťové připojení jako funkční, ale webové stránky se neotevírají, nebo pokud funguje přístup přes IP adresu, ale ne přes doménové jméno, bývá problém často v překladu DNS. DNS převádí doménová jména, jako je example.com, na skutečné IP adresy. Když tento mechanismus selže, síť může působit jako aktivní, ale běžné používání internetu je výrazně omezené.
Běžné příznaky
- Prohlížeč hlásí, že server nelze najít
ping 8.8.8.8funguje, aleping google.comselže- Správci balíčků jako
apt,dnf,yumnebopacmanpřestanou fungovat - Objeví se chyba
Temporary failure in name resolution
Co zkontrolovat jako první
Nejprve je potřeba zjistit, zda je problém v celé síti, nebo pouze v DNS.
ping -c 4 8.8.8.8
ping -c 4 google.com
ip addr
ip route
Pokud 8.8.8.8 odpovídá, ale google.com ne, jde velmi pravděpodobně o problém s DNS. Pokud nefunguje ani přístup na IP adresu, je příčina spíše ve Wi-Fi, síťovém rozhraní, bráně nebo routování.
Hlavní příčiny
1. Chybná konfigurace /etc/resolv.conf
Na mnoha systémech Linux jsou informace o DNS serverech uloženy v souboru /etc/resolv.conf. Pokud v něm není správný nameserver, překlad doménových jmen nebude fungovat.
cat /etc/resolv.conf
Příklad:
nameserver 8.8.8.8
nameserver 1.1.1.1
Pokud je soubor prázdný nebo ukazuje na nesprávný lokální DNS server, vznikne problém. Je ale třeba počítat s tím, že v moderních Linux systémech bývá tento soubor často generován automaticky pomocí NetworkManager nebo systemd-resolved, takže ruční změny mohou být přepsány.
2. Problém se systemd-resolved
Na systémech jako Ubuntu spravuje DNS často systemd-resolved a používá 127.0.0.53 jako lokální resolver. Pokud se tato služba zastaví, DNS přestane fungovat.
systemctl status systemd-resolved
resolvectl status
V případě potřeby službu restartujte:
sudo systemctl restart systemd-resolved
3. NetworkManager nepoužije DNS správně
Na desktopových instalacích Linuxu získává NetworkManager často DNS přes DHCP. Pokud je síťový profil poškozený nebo dojde k chybě při znovupřipojení, nemusí být správné DNS servery použity.
nmcli dev show | grep DNS
nmcli connection show
V případě potřeby jej restartujte:
sudo systemctl restart NetworkManager
4. Vliv VPN, proxy nebo firewallu
VPN může posílat DNS dotazy špatnou trasou a firewall může blokovat port 53. Výsledkem je situace, kdy síť vypadá funkčně, ale doménová jména se nepřekládají.
5. Poškozená nebo zastaralá DNS cache
Pokud je lokální cache poškozená nebo zastaralá, některé domény mohou přestat fungovat. V systémech se systemd-resolved nebo nscd může pomoci vymazání cache.
sudo resolvectl flush-caches
Praktické kroky k nápravě
Krok 1: Otestujte veřejný DNS přímo
nslookup google.com 8.8.8.8
dig google.com @8.8.8.8
Pokud to funguje, externí DNS je pravděpodobně v pořádku a problém je spíše v místní konfiguraci.
Krok 2: Dočasně nastavte veřejný DNS
sudo sh -c 'printf "nameserver 8.8.8.8\nnameserver 1.1.1.1\n" > /etc/resolv.conf'
Jde jen o dočasné řešení. Po restartu nebo znovupřipojení sítě může být soubor opět změněn. Pro trvalé řešení je potřeba opravit nastavení NetworkManageru, netplanu nebo systemd-resolved.
Krok 3: Zkontrolujte netplan na Ubuntu
sudo nano /etc/netplan/*.yaml
Příklad:
nameservers:
addresses: [8.8.8.8,1.1.1.1]
Poté použijte změny:
sudo netplan apply
Krok 4: Znovu načtěte DHCP konfiguraci
sudo dhclient -r
sudo dhclient
Pokud DHCP server poskytl chybné DNS údaje, může to pomoci problém odstranit.
Užitečné příkazy pro kontrolu
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
Jak zabránit opakování problému
- Nespokojte se pouze s ruční úpravou
/etc/resolv.conf - Zjistěte, zda DNS spravuje DHCP, NetworkManager nebo systemd-resolved
- Po aktivaci VPN zkontrolujte nastavení DNS
- Na serverech je vhodné jasně nastavit statické DNS servery
Závěr
Když Linux nedokáže přeložit DNS jména, nejdůležitějším prvním krokem je ověřit, zda funguje komunikace přes IP adresu. Díky tomu lze rychle určit, zda je problém pouze v DNS, nebo v celé síti. Následně je vhodné systematicky zkontrolovat /etc/resolv.conf, systemd-resolved, NetworkManager, DHCP a nastavení VPN. Důležité není jen dočasně obnovit funkčnost, ale také pochopit, která část systému DNS skutečně spravuje.