Linux non riesce a risolvere il DNS: cause e soluzioni

Se in Linux la connessione a Internet sembra presente ma i siti web non si aprono, oppure se l’accesso tramite indirizzo IP funziona ma quello tramite nome di dominio no, molto spesso il problema riguarda la risoluzione DNS. Il DNS ha il compito di tradurre nomi di dominio come example.com in indirizzi IP reali. Quando questo processo si rompe, la rete può sembrare attiva, ma l’uso normale di Internet diventa molto limitato.

Sintomi comuni

  • Il browser mostra che il server non può essere trovato
  • ping 8.8.8.8 funziona, ma ping google.com fallisce
  • Gestori di pacchetti come apt, dnf, yum o pacman non funzionano correttamente
  • Compare il messaggio Temporary failure in name resolution

Cosa controllare per prima cosa

Prima di tutto bisogna capire se il problema riguarda l’intera rete oppure solo il DNS.

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

Se 8.8.8.8 risponde ma google.com no, il problema è molto probabilmente nel DNS. Se invece non funziona nemmeno l’accesso diretto all’IP, la causa è più probabilmente nel Wi-Fi, nell’interfaccia di rete, nel gateway o nel routing.

Cause principali

1. Configurazione errata di /etc/resolv.conf

In molti sistemi Linux, le informazioni sui server DNS sono memorizzate nel file /etc/resolv.conf. Se lì non è presente un nameserver valido, i nomi di dominio non potranno essere risolti.

cat /etc/resolv.conf

Esempio:

nameserver 8.8.8.8
nameserver 1.1.1.1

Se il file è vuoto o punta a un DNS locale errato, si verificherà il problema. Bisogna però ricordare che nei sistemi Linux moderni questo file viene spesso generato automaticamente da NetworkManager o systemd-resolved, quindi le modifiche manuali possono essere sovrascritte.

2. Problema con systemd-resolved

Su sistemi come Ubuntu, systemd-resolved gestisce spesso il DNS e usa 127.0.0.53 come resolver locale. Se questo servizio si arresta, il DNS può smettere di funzionare.

systemctl status systemd-resolved
resolvectl status

Se c’è un problema, è possibile riavviare il servizio:

sudo systemctl restart systemd-resolved

3. NetworkManager non applica correttamente il DNS

Nei sistemi Linux desktop, NetworkManager riceve spesso le informazioni DNS tramite DHCP. Se il profilo di rete è danneggiato o la riconnessione fallisce, i server DNS corretti potrebbero non essere applicati.

nmcli dev show | grep DNS
nmcli connection show

Se necessario, riavvialo:

sudo systemctl restart NetworkManager

4. Effetti di VPN, proxy o firewall

Una VPN può instradare le richieste DNS lungo un percorso errato, mentre un firewall può bloccare la porta 53. In questi casi la rete sembra funzionare, ma i nomi di dominio non vengono risolti.

5. Cache DNS corrotta o obsoleta

Se la cache locale è corrotta o troppo vecchia, alcuni domini potrebbero smettere di funzionare. Nei sistemi che usano systemd-resolved o nscd, svuotare la cache può aiutare.

sudo resolvectl flush-caches

Passaggi pratici per la risoluzione

Passaggio 1: testare direttamente un DNS pubblico

nslookup google.com 8.8.8.8
dig google.com @8.8.8.8

Se questo funziona, il DNS esterno è probabilmente corretto e il problema si trova nella configurazione locale.

Passaggio 2: impostare temporaneamente un DNS pubblico

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

Questa è solo una soluzione temporanea. Dopo un riavvio o una nuova connessione, il file potrebbe essere modificato di nuovo. Per una soluzione permanente bisogna correggere la configurazione di NetworkManager, netplan o systemd-resolved.

Passaggio 3: controllare netplan su Ubuntu

sudo nano /etc/netplan/*.yaml

Esempio:

nameservers:
  addresses: [8.8.8.8,1.1.1.1]

Poi applicare la modifica:

sudo netplan apply

Passaggio 4: ottenere nuovamente le informazioni DHCP

sudo dhclient -r
sudo dhclient

Se il server DHCP ha fornito dati DNS errati, questo passaggio può aiutare.

Comandi utili per il controllo

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

Come evitare che il problema si ripresenti

  • Non limitarti a modificare manualmente /etc/resolv.conf
  • Comprendi se il DNS è gestito da DHCP, NetworkManager o systemd-resolved
  • Dopo aver configurato una VPN, controlla le impostazioni DNS
  • Nei server è meglio definire chiaramente DNS statici

Conclusione

Quando Linux non riesce a risolvere i nomi DNS, il primo passo più importante è verificare se la comunicazione tramite indirizzo IP funziona ancora. Questo permette di capire rapidamente se il problema riguarda solo il DNS o l’intera rete. In seguito è opportuno controllare in modo sistematico /etc/resolv.conf, systemd-resolved, NetworkManager, DHCP e le impostazioni della VPN. L’obiettivo non è solo ripristinare temporaneamente il funzionamento, ma anche capire quale componente del sistema gestisce davvero il DNS.

Lascia una risposta

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *