Linux kan ikke løse DNS: årsaker og løsninger

Hvis Linux ser ut til å ha en aktiv internettforbindelse, men nettsteder ikke åpnes, eller hvis tilgang via IP-adresse fungerer mens tilgang via domenenavn ikke gjør det, skyldes problemet ofte DNS-oppløsning. DNS har som oppgave å oversette domenenavn som example.com til faktiske IP-adresser. Når denne prosessen feiler, kan nettverket fortsatt se aktivt ut, men normal bruk av internett blir sterkt begrenset.

Vanlige symptomer

  • Nettleseren viser at serveren ikke kan finnes
  • ping 8.8.8.8 fungerer, men ping google.com feiler
  • Pakkebehandlere som apt, dnf, yum og pacman fungerer ikke som de skal
  • Feilmeldingen Temporary failure in name resolution vises

Hva bør du sjekke først

Først må du finne ut om problemet gjelder hele nettverket eller bare DNS.

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

Hvis 8.8.8.8 svarer, men google.com ikke gjør det, tyder det sterkt på et DNS-problem. Hvis selv IP-adresser ikke er tilgjengelige, ligger årsaken sannsynligvis i Wi-Fi, nettverkskortet, gatewayen eller rutingen.

Viktigste årsaker

1. Feil konfigurasjon i /etc/resolv.conf

På mange Linux-systemer lagres informasjon om DNS-servere i /etc/resolv.conf. Hvis det ikke finnes en gyldig nameserver der, vil domenenavn ikke kunne løses.

cat /etc/resolv.conf

Eksempel:

nameserver 8.8.8.8
nameserver 1.1.1.1

Hvis filen er tom eller peker til feil lokal DNS, oppstår problemet. På moderne Linux-systemer blir denne filen imidlertid ofte generert automatisk av NetworkManager eller systemd-resolved, så manuelle endringer kan bli overskrevet.

2. Problem med systemd-resolved

På systemer som Ubuntu håndterer systemd-resolved ofte DNS-oppløsning og bruker 127.0.0.53 som lokal resolver. Hvis denne tjenesten stopper, kan DNS slutte å fungere.

systemctl status systemd-resolved
resolvectl status

Hvis det er et problem, kan du starte tjenesten på nytt:

sudo systemctl restart systemd-resolved

3. NetworkManager bruker ikke DNS riktig

På Linux-skrivebord henter NetworkManager ofte DNS-informasjon via DHCP. Hvis nettverksprofilen er skadet, eller hvis en gjenoppkobling mislykkes, kan riktige DNS-servere bli utelatt.

nmcli dev show | grep DNS
nmcli connection show

Start det på nytt ved behov:

sudo systemctl restart NetworkManager

4. Påvirkning fra VPN, proxy eller brannmur

En VPN kan sende DNS-forespørsler via feil rute, og en brannmur kan blokkere port 53. I slike tilfeller ser nettverket ut til å fungere, men domenenavn kan ikke løses.

5. Skadet eller utdatert DNS-cache

Hvis den lokale cachen er skadet eller gammel, kan enkelte domener slutte å fungere. På systemer med systemd-resolved eller nscd kan det hjelpe å tømme cachen.

sudo resolvectl flush-caches

Praktiske trinn for feilsøking

Trinn 1: Test direkte mot en offentlig DNS

nslookup google.com 8.8.8.8
dig google.com @8.8.8.8

Hvis dette fungerer, er ekstern DNS sannsynligvis i orden, og problemet ligger lokalt.

Trinn 2: Sett midlertidig en offentlig DNS

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

Dette er bare en midlertidig løsning. Etter omstart eller ny tilkobling kan filen bli endret igjen. For en permanent løsning må konfigurasjonen i NetworkManager, netplan eller systemd-resolved rettes.

Trinn 3: Kontroller netplan på Ubuntu

sudo nano /etc/netplan/*.yaml

Eksempel:

nameservers:
  addresses: [8.8.8.8,1.1.1.1]

Bruk deretter endringen:

sudo netplan apply

Trinn 4: Hent DHCP-informasjon på nytt

sudo dhclient -r
sudo dhclient

Hvis DHCP-serveren leverte feil DNS-informasjon, kan dette hjelpe.

Nyttige kommandoer for kontroll

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

Slik unngår du at problemet kommer tilbake

  • Ikke stopp ved å bare redigere /etc/resolv.conf manuelt
  • Forstå om DNS styres av DHCP, NetworkManager eller systemd-resolved
  • Kontroller DNS-innstillinger etter oppsett av VPN
  • På servere er det best å angi faste DNS-servere tydelig

Konklusjon

Når Linux ikke kan løse DNS-navn, er det viktigste første steget å kontrollere om forbindelsen via IP-adresse fortsatt fungerer. Det gjør det enklere å avgjøre om problemet bare gjelder DNS eller hele nettverket. Deretter bør /etc/resolv.conf, systemd-resolved, NetworkManager, DHCP og VPN-innstillinger kontrolleres systematisk. Målet er ikke bare en midlertidig løsning, men også å forstå hvilken komponent som faktisk styrer DNS på systemet.

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *