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.8töötab, kuidping google.comebaõnnestub- Paketihaldurid nagu
apt,dnf,yumjapacmanei 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.confkä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.