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.8funziona, maping google.comfallisce- Gestori di pacchetti come
apt,dnf,yumopacmannon 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.