Linux kan DNS niet oplossen: oorzaken en oplossingen

Als Linux lijkt te beschikken over een werkende internetverbinding, maar websites niet openen, of als toegang via een IP-adres wel werkt maar via een domeinnaam niet, dan ligt het probleem vaak bij DNS-resolutie. DNS heeft als taak domeinnamen zoals example.com om te zetten naar echte IP-adressen. Als dit proces faalt, kan het netwerk nog actief lijken, maar normaal internetgebruik wordt dan sterk beperkt.

Veelvoorkomende symptomen

  • De browser meldt dat de server niet kan worden gevonden
  • ping 8.8.8.8 werkt, maar ping google.com mislukt
  • Pakketbeheerders zoals apt, dnf, yum en pacman werken niet goed
  • De foutmelding Temporary failure in name resolution verschijnt

Wat moet je als eerste controleren?

Bepaal eerst of het probleem het hele netwerk treft of alleen DNS.

ping -c 4 8.8.8.8
ping -c 4 google.com
ip addr
ip route

Als 8.8.8.8 wel antwoord geeft maar google.com niet, wijst dat sterk op een DNS-probleem. Als zelfs IP-adressen niet bereikbaar zijn, ligt de oorzaak waarschijnlijk bij Wi-Fi, de netwerkinterface, de gateway of routing.

Belangrijkste oorzaken

1. Verkeerde configuratie in /etc/resolv.conf

Op veel Linux-systemen worden DNS-servergegevens opgeslagen in /etc/resolv.conf. Als daar geen geldige nameserver staat, kunnen domeinnamen niet worden opgelost.

cat /etc/resolv.conf

Voorbeeld:

nameserver 8.8.8.8
nameserver 1.1.1.1

Als het bestand leeg is of naar een verkeerde lokale DNS verwijst, ontstaat het probleem. Op moderne Linux-systemen wordt dit bestand echter vaak automatisch aangemaakt door NetworkManager of systemd-resolved, waardoor handmatige wijzigingen kunnen worden overschreven.

2. Probleem met systemd-resolved

Op systemen zoals Ubuntu beheert systemd-resolved vaak de DNS-resolutie en gebruikt het 127.0.0.53 als lokale resolver. Als deze dienst stopt, kan DNS ophouden te werken.

systemctl status systemd-resolved
resolvectl status

Bij problemen kun je de dienst opnieuw starten:

sudo systemctl restart systemd-resolved

3. NetworkManager past DNS niet correct toe

Op Linux-desktops haalt NetworkManager vaak DNS-informatie op via DHCP. Als het netwerkprofiel beschadigd is of een herverbinding mislukt, worden de juiste DNS-servers mogelijk niet toegepast.

nmcli dev show | grep DNS
nmcli connection show

Start het indien nodig opnieuw:

sudo systemctl restart NetworkManager

4. Invloed van VPN, proxy of firewall

Een VPN kan DNS-verzoeken via een verkeerde route sturen, en een firewall kan poort 53 blokkeren. In zulke gevallen lijkt het netwerk te werken, maar domeinnamen worden niet opgelost.

5. Beschadigde of verouderde DNS-cache

Als de lokale cache beschadigd of verouderd is, kunnen sommige domeinen niet meer werken. Op systemen met systemd-resolved of nscd kan het helpen om de cache te legen.

sudo resolvectl flush-caches

Praktische stappen voor probleemoplossing

Stap 1: Test rechtstreeks tegen een publieke DNS

nslookup google.com 8.8.8.8
dig google.com @8.8.8.8

Als dit werkt, is de externe DNS waarschijnlijk in orde en zit het probleem lokaal.

Stap 2: Stel tijdelijk een publieke DNS in

sudo sh -c 'printf "nameserver 8.8.8.8\nnameserver 1.1.1.1\n" > /etc/resolv.conf'

Dit is slechts een tijdelijke oplossing. Na een herstart of opnieuw verbinden kan het bestand weer veranderen. Voor een permanente oplossing moet de configuratie van NetworkManager, netplan of systemd-resolved worden aangepast.

Stap 3: Controleer netplan op Ubuntu

sudo nano /etc/netplan/*.yaml

Voorbeeld:

nameservers:
  addresses: [8.8.8.8,1.1.1.1]

Pas daarna de wijziging toe:

sudo netplan apply

Stap 4: Vraag DHCP-gegevens opnieuw op

sudo dhclient -r
sudo dhclient

Als de DHCP-server onjuiste DNS-gegevens heeft verstrekt, kan dit helpen.

Nuttige opdrachten voor controle

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

Zo voorkom je dat het probleem terugkomt

  • Beperk je niet tot alleen handmatig bewerken van /etc/resolv.conf
  • Begrijp of DNS wordt beheerd door DHCP, NetworkManager of systemd-resolved
  • Controleer DNS-instellingen na het instellen van een VPN
  • Op servers is het beter om vaste DNS-servers duidelijk in te stellen

Conclusie

Wanneer Linux DNS-namen niet kan oplossen, is de belangrijkste eerste stap om te controleren of communicatie via een IP-adres nog werkt. Daarmee kun je snel bepalen of het probleem alleen bij DNS ligt of bij het hele netwerk. Controleer daarna systematisch /etc/resolv.conf, systemd-resolved, NetworkManager, DHCP en VPN-instellingen. Het doel is niet alleen een tijdelijke oplossing, maar ook begrijpen welk onderdeel op het systeem DNS daadwerkelijk beheert.

Geef een reactie

Je e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *