Linux ei suuda DNS-i lahendada: põhjused ja lahendused

Kui Linuxis näib internetiühendus olemas olevat, kuid veebilehed ei avane, või kui IP-aadressiga pääseb ligi, aga domeeninimega mitte, on probleem sageli DNS-i lahendamises. DNS-i ülesanne on muuta domeeninimed nagu example.com tegelikeks IP-aadressideks. Kui see protsess ebaõnnestub, võib võrk paista aktiivne, kuid tavaline internetikasutus on tugevalt häiritud.

Tüüpilised sümptomid

  • Brauser kuvab, et serverit ei leitud
  • ping 8.8.8.8 töötab, kuid ping google.com ebaõnnestub
  • Paketihaldurid nagu apt, dnf, yum ja pacman ei tööta õigesti
  • Kuvatakse viga Temporary failure in name resolution

Mida tuleks kõigepealt kontrollida

Esiteks tuleb kindlaks teha, kas probleem puudutab kogu võrku või ainult DNS-i.

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

Kui 8.8.8.8 vastab, kuid google.com mitte, viitab see tugevalt DNS-i probleemile. Kui isegi IP-aadressile ei pääse ligi, on põhjus tõenäolisemalt Wi-Fi-s, võrguliideses, lüüsis või marsruutimises.

Peamised põhjused

1. Vale seadistus failis /etc/resolv.conf

Paljudes Linuxi süsteemides on DNS-serverite info salvestatud faili /etc/resolv.conf. Kui seal puudub korrektne nameserver, ei saa domeeninimesid lahendada.

cat /etc/resolv.conf

Näide:

nameserver 8.8.8.8
nameserver 1.1.1.1

Kui fail on tühi või viitab valele kohalikule DNS-ile, tekib probleem. Tuleb ka arvestada, et tänapäevastes Linuxi süsteemides loob selle faili sageli automaatselt NetworkManager või systemd-resolved, seega võivad käsitsi tehtud muudatused üle kirjutatud saada.

2. Probleem systemd-resolved teenusega

Süsteemides nagu Ubuntu haldab systemd-resolved sageli DNS-i ning kasutab kohalikku lahendajat aadressil 127.0.0.53. Kui see teenus peatub, võib DNS lakata töötamast.

systemctl status systemd-resolved
resolvectl status

Probleemi korral saab teenuse taaskäivitada:

sudo systemctl restart systemd-resolved

3. NetworkManager ei rakenda DNS-i õigesti

Lauaarvuti Linuxis saab NetworkManager DNS-andmed sageli DHCP kaudu. Kui võrguprofiil on rikutud või ühenduse taastamine ebaõnnestub, ei pruugita õigeid DNS-servereid kasutada.

nmcli dev show | grep DNS
nmcli connection show

Vajadusel taaskäivitage see:

sudo systemctl restart NetworkManager

4. VPN-i, puhverserveri või tulemüüri mõju

VPN võib saata DNS-päringud vale marsruudi kaudu ning tulemüür võib blokeerida porti 53. Sellisel juhul võib võrk näida töötavat, kuid domeeninimed ei lahene.

5. Rikutud või aegunud DNS-vahemälu

Kui kohalik vahemälu on rikutud või vananenud, võivad mõned domeenid lakata töötamast. systemd-resolvedi või nscd kasutavates süsteemides võib aidata vahemälu tühjendamine.

sudo resolvectl flush-caches

Praktilised veaotsingu sammud

1. samm: testige otse avaliku DNS-iga

nslookup google.com 8.8.8.8
dig google.com @8.8.8.8

Kui see töötab, on väline DNS tõenäoliselt korras ja probleem on pigem kohalikus seadistuses.

2. samm: määrake ajutiselt avalik DNS

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

See on ainult ajutine lahendus. Pärast taaskäivitust või uuesti ühendamist võib fail uuesti muutuda. Püsiva lahenduse jaoks tuleb parandada NetworkManageri, netplani või systemd-resolvedi seadistus.

3. samm: kontrollige Ubuntus netplani

sudo nano /etc/netplan/*.yaml

Näide:

nameservers:
  addresses: [8.8.8.8,1.1.1.1]

Seejärel rakendage muudatus:

sudo netplan apply

4. samm: hankige DHCP-andmed uuesti

sudo dhclient -r
sudo dhclient

Kui DHCP-server andis valed DNS-andmed, võib see aidata probleemi lahendada.

Kasulikud käsud kontrollimiseks

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

Kuidas vältida probleemi kordumist

  • Ärge piirduge ainult /etc/resolv.conf käsitsi muutmisega
  • Mõistke, kas DNS-i haldab DHCP, NetworkManager või systemd-resolved
  • Pärast VPN-i seadistamist kontrollige DNS-i seadeid
  • Serverites on parem määrata püsivad DNS-serverid selgelt

Kokkuvõte

Kui Linux ei suuda DNS-nimesid lahendada, on kõige olulisem esimene samm kontrollida, kas IP-aadressi kaudu suhtlus endiselt töötab. See aitab kiiresti mõista, kas probleem on ainult DNS-is või kogu võrgus. Seejärel tuleks järjest kontrollida /etc/resolv.conf, systemd-resolved, NetworkManager, DHCP ja VPN-i seadeid. Eesmärk ei peaks olema ainult ajutine parandus, vaid ka arusaamine, milline komponent süsteemis DNS-i tegelikult haldab.

Leave a Reply

Sinu e-postiaadressi ei avaldata. Nõutavad väljad on tähistatud *-ga