Linux kan inte lösa DNS: orsaker och lösningar

Om Linux verkar ha en fungerande internetanslutning men webbplatser inte öppnas, eller om åtkomst via IP-adress fungerar medan åtkomst via domännamn inte gör det, beror problemet ofta på DNS-upplösning. DNS har till uppgift att översätta domännamn som example.com till verkliga IP-adresser. När den processen misslyckas kan nätverket fortfarande se aktivt ut, men normal användning av internet blir starkt begränsad.

Vanliga symptom

  • Webbläsaren visar att servern inte kan hittas
  • ping 8.8.8.8 fungerar, men ping google.com misslyckas
  • Pakethanterare som apt, dnf, yum och pacman fungerar inte som de ska
  • Felmeddelandet Temporary failure in name resolution visas

Vad du bör kontrollera först

Först måste du avgöra om problemet påverkar hela nätverket eller bara DNS.

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

Om 8.8.8.8 svarar men google.com inte gör det, tyder det starkt på ett DNS-problem. Om inte ens IP-adresser går att nå ligger orsaken troligen i Wi-Fi, nätverksgränssnittet, gatewayen eller routingen.

Viktigaste orsakerna

1. Felaktig konfiguration i /etc/resolv.conf

På många Linux-system lagras information om DNS-servrar i /etc/resolv.conf. Om det inte finns en giltig nameserver där kommer domännamn inte att kunna lösas.

cat /etc/resolv.conf

Exempel:

nameserver 8.8.8.8
nameserver 1.1.1.1

Om filen är tom eller pekar på en felaktig lokal DNS uppstår problemet. På moderna Linux-system skapas dock den här filen ofta automatiskt av NetworkManager eller systemd-resolved, så manuella ändringar kan skrivas över.

2. Problem med systemd-resolved

På system som Ubuntu hanterar systemd-resolved ofta DNS-upplösning och använder 127.0.0.53 som lokal resolver. Om den tjänsten stoppar kan DNS sluta fungera.

systemctl status systemd-resolved
resolvectl status

Om det finns ett problem kan du starta om tjänsten:

sudo systemctl restart systemd-resolved

3. NetworkManager tillämpar inte DNS korrekt

På Linux-skrivbord hämtar NetworkManager ofta DNS-information via DHCP. Om nätverksprofilen är skadad eller återanslutningen misslyckas kanske rätt DNS-servrar inte används.

nmcli dev show | grep DNS
nmcli connection show

Starta om det vid behov:

sudo systemctl restart NetworkManager

4. Påverkan från VPN, proxy eller brandvägg

Ett VPN kan skicka DNS-förfrågningar via fel väg, och en brandvägg kan blockera port 53. I sådana fall ser nätverket ut att fungera, men domännamn kan inte lösas.

5. Skadad eller föråldrad DNS-cache

Om den lokala cachen är skadad eller gammal kan vissa domäner sluta fungera. På system med systemd-resolved eller nscd kan det hjälpa att tömma cachen.

sudo resolvectl flush-caches

Praktiska steg för felsökning

Steg 1: Testa direkt mot en offentlig DNS

nslookup google.com 8.8.8.8
dig google.com @8.8.8.8

Om detta fungerar är extern DNS troligen i ordning och problemet ligger lokalt.

Steg 2: Ange tillfälligt en offentlig DNS

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

Detta är bara en tillfällig lösning. Efter omstart eller återanslutning kan filen ändras igen. För en permanent lösning måste konfigurationen i NetworkManager, netplan eller systemd-resolved rättas.

Steg 3: Kontrollera netplan på Ubuntu

sudo nano /etc/netplan/*.yaml

Exempel:

nameservers:
  addresses: [8.8.8.8,1.1.1.1]

Tillämpa sedan ändringen:

sudo netplan apply

Steg 4: Hämta DHCP-information igen

sudo dhclient -r
sudo dhclient

Om DHCP-servern gav fel DNS-information kan detta hjälpa.

Användbara kommandon för 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

Så undviker du att problemet återkommer

  • Nöj dig inte med att bara redigera /etc/resolv.conf manuellt
  • Förstå om DNS hanteras av DHCP, NetworkManager eller systemd-resolved
  • Kontrollera DNS-inställningar efter att du har satt upp VPN
  • På servrar är det bäst att tydligt ange fasta DNS-servrar

Slutsats

När Linux inte kan lösa DNS-namn är det viktigaste första steget att kontrollera om kommunikationen via IP-adress fortfarande fungerar. Det gör det lättare att avgöra om problemet bara gäller DNS eller hela nätverket. Därefter bör /etc/resolv.conf, systemd-resolved, NetworkManager, DHCP och VPN-inställningar kontrolleras systematiskt. Målet är inte bara en tillfällig lösning, utan också att förstå vilken komponent som faktiskt styr DNS på systemet.

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *