Linux nedokáže přeložit DNS: příčiny a řešení

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.8 funguje, ale ping google.com selže
  • Správci balíčků jako apt, dnf, yum nebo pacman př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.

Leave a Reply

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *