Controllare e configurare accuratamente i server DNS su un sistema Linux è estremamente importante per mantenere la stabilità e l’efficienza della vostra rete. Questo articolo fornisce una guida completa sia per principianti che per utenti avanzati su come controllare e configurare i server DNS su Linux. Partendo dai concetti di base, copre l’uso di specifici strumenti da linea di comando, la modifica dei file di configurazione, la risoluzione dei problemi e abbraccia a fondo la conoscenza pratica. Di conseguenza, il vostro sistema Linux diventerà più efficiente nell’accedere alle risorse su Internet.
Cos’è il DNS: una spiegazione del concetto di base
Il Domain Name System (DNS) è un sistema che converte i nomi di dominio Internet in indirizzi IP e viceversa. Gioca un ruolo cruciale nel rendere possibili le ricerche su Internet e l’accesso ai siti web traducendo i nomi di dominio memorabili (ad es., www.example.com) in indirizzi IP numerici (ad es., 192.0.2.1) che i computer possono comprendere. Questo processo, noto come “risoluzione dei nomi”, facilita il recupero delle informazioni su internet.
Il DNS ha una struttura gerarchica con i “Root DNS Servers” in cima, che gestiscono l’ultima parte dei nomi di dominio (ad es., .com, .org). Questi sono seguiti dai “Top-Level Domain (TLD) Servers”, poi dagli “Authoritative DNS Servers” e infine, i “Local DNS Servers” rispondono alle query degli utenti in questa configurazione strutturata.
Quando un utente inserisce un nome di dominio in un browser web, il server DNS locale cerca l’indirizzo IP corrispondente. Se il server DNS locale non ha l’informazione, la richiesta viene passata ai server DNS di livello superiore fino a quando l’informazione necessaria viene recuperata. Questo processo si completa tipicamente in millisecondi, consentendo all’utente di accedere alla pagina web.
Il sistema DNS è indispensabile per l’infrastruttura di Internet, e il suo funzionamento efficiente ha un impatto significativo sulla performance e l’accessibilità del web. Pertanto, configurare e gestire correttamente i server DNS sui sistemi Linux è una competenza cruciale per gli amministratori di sistema.
Come controllare i server DNS: utilizzando strumenti da linea di comando
Ci sono diversi modi per controllare le impostazioni dei server DNS sui sistemi Linux, ma il metodo più diretto e comune è l’utilizzo di strumenti da linea di comando. Qui, introduciamo due strumenti ampiamente usati: il comando cat
e il comando nmcli
.
Controllare /etc/resolv.conf con il comando `cat`
Il metodo più basilare è visualizzare il file /etc/resolv.conf
. Questo file contiene gli indirizzi dei server DNS utilizzati dal sistema per la risoluzione DNS. È possibile controllare il suo contenuto eseguendo il seguente comando:
cat /etc/resolv.conf
L’output potrebbe apparire così:
# Generato da NetworkManager
search example.com
nameserver 192.168.1.1
nameserver 8.8.8.8
In questo esempio, le righe con nameserver
indicano gli indirizzi IP dei server DNS, con 192.168.1.1
e l’indirizzo DNS pubblico di Google 8.8.8.8
impostati.
Controllare i server DNS con il comando `nmcli`
Sui sistemi che utilizzano NetworkManager
, è possibile usare il comando nmcli
per controllare le impostazioni DNS della connessione di rete corrente. Il seguente comando recupera le informazioni del server DNS:
nmcli device show | grep IP4.DNS
Questo comando estrae e visualizza le impostazioni del server DNS (IPv4) dalle informazioni del dispositivo di rete corrente. L’output potrebbe apparire così:
IP4.DNS[1]: 192.168.1.1
IP4.DNS[2]: 8.8.8.8
Questi metodi consentono di controllare facilmente le informazioni del server DNS impostate sul vostro sistema Linux, il che può essere utile per diagnosticare problemi di connessione di rete o considerare modifiche a un server DNS specifico.
Come configurare i server DNS: modificando /etc/resolv.conf
Uno dei metodi basilari per impostare i server DNS su un sistema Linux è modificare direttamente il file /etc/resolv.conf
. Questo file mantiene un elenco dei server DNS a cui il sistema fa riferimento per la risoluzione DNS. Qui, spieghiamo come modificare in modo sicuro questo file.
Modificare il file /etc/resolv.conf
- Prima di tutto, effettuate un backup delle impostazioni correnti. È importante poter ripristinare il file originale in caso di problemi. Usate il seguente comando per creare un backup:
sudo cp /etc/resolv.conf /etc/resolv.conf.backup
- Successivamente, utilizzate un editor di testo per modificare il file
/etc/resolv.conf
. Qui usiamo l’editornano
, ma potete usare il vostro editor preferito comevi
oemacs
:
sudo nano /etc/resolv.conf
- Una volta aperto il file, aggiungete o modificate le righe che iniziano con
nameserver
per specificare gli indirizzi dei server DNS. Per esempio, per utilizzare gli indirizzi DNS pubblici di Google, scrivereste:
nameserver 8.8.8.8
nameserver 8.8.4.4
- Dopo aver effettuato le modifiche, salvate il file e uscite dall’editor. Se state usando
nano
, premereCtrl + O
per salvare eCtrl + X
per uscire.
Attivare le nuove impostazioni
Dopo aver modificato il file /etc/resolv.conf
, di solito è necessario riavviare il servizio di rete per applicare le modifiche. Questo può essere fatto con il seguente comando:
sudo systemctl restart network.service
O, se state utilizzando NetworkManager
, potete riavviare la connessione di rete con questo comando:
sudo systemctl restart NetworkManager
Questo applica le nuove impostazioni DNS al vostro sistema. Per assicurarsi che le impostazioni funzionino correttamente, si raccomanda di testare accedendo a siti web o utilizzando comandi come ping
per risolvere i nomi di dominio.
La configurazione manuale del server DNS è efficace per adeguare le strategie di risoluzione DNS secondo i requisiti del sistema o della rete. Tuttavia, questo metodo potrebbe non essere adatto per soluzioni a lungo termine, poiché il file /etc/resolv.conf
potrebbe essere sovrascritto automaticamente da altri processi. Pertanto, considerate l’utilizzo di strumenti come resolvconf
, systemd-resolved
o NetworkManager
per gestire le impostazioni DNS.
Controllare e modificare le impostazioni DNS con strumenti da linea di comando
Linux offre diversi metodi per controllare e modificare le impostazioni DNS utilizzando la linea di comando, senza fare affidamento su strumenti GUI. Questi metodi sono particolarmente utili per ambienti server o la gestione di sistemi remoti. Qui, spieghiamo metodi utilizzando i comandi systemd-resolve
e nmcli
.
Controllare le impostazioni DNS con il comando `systemd-resolve`
Sui sistemi che utilizzano systemd
, il comando systemd-resolve
può essere utilizzato per controllare le impostazioni DNS correnti. Questo comando è relativo al servizio systemd-resolved
e fornisce configurazione e statistiche di risoluzione dei nomi.
Per controllare le impostazioni DNS, eseguite il seguente comando:
systemd-resolve --status
Questo comando fornisce un output dettagliato includendo i server DNS in uso, i domini di ricerca e altre informazioni relative alla rete. L’output è diviso per interfaccia di rete, con ogni sezione che visualizza le impostazioni per quell’interfaccia.
Modificare le impostazioni DNS con il comando `nmcli`
Sui sistemi che utilizzano NetworkManager, il comando nmcli
può essere utilizzato per modificare le impostazioni DNS. nmcli
è uno strumento da linea di comando per configurare e gestire le connessioni di rete.
Ad esempio, per impostare i server DNS per una connessione specifica, utilizzate il seguente comando:
nmcli connection modify <nome connessione> ipv4.dns "8.8.8.8 8.8.4.4"
nmcli connection modify <nome connessione> ipv4.ignore-auto-dns yes
nmcli connection up <nome connessione>
In questo comando, i server DNS di Google (8.8.8.8
e 8.8.4.4
) sono impostati per la connessione denominata <nome connessione>
. L’opzione ipv4.ignore-auto-dns yes
viene utilizzata per ignorare le impostazioni DNS ottenute automaticamente e utilizzare invece i DNS specificati manualmente. Infine, il comando nmcli connection up
viene utilizzato per riavviare la connessione e applicare le nuove impostazioni.
Questi strumenti da linea di comando consentono una verifica e una modifica flessibili delle impostazioni DNS sui sistemi Linux. Sono particolarmente utili per l’amministrazione di sistemi remoti e l’automazione tramite script.
Impostazioni DNS con systemd-resolved
systemd-resolved
è un moderno risolutore DNS integrato nel gestore di sistema e servizi systemd. Offre varie funzionalità come la cache DNS, la validazione DNSSEC e il routing dei record, semplificando il processo di risoluzione DNS. Qui, spieghiamo come gestire le impostazioni DNS utilizzando systemd-resolved
.
Panoramica di systemd-resolved
systemd-resolved
gestisce le richieste di risoluzione DNS dalle applicazioni locali, memorizzando nella cache le risposte dai server DNS esterni per migliorare la velocità e l’affidabilità della risoluzione dei nomi. Gestisce anche il file /etc/resolv.conf
, fornendo una strategia di risoluzione DNS a livello di sistema.
Abilitare e configurare systemd-resolved
La maggior parte delle distribuzioni Linux moderne ha systemd-resolved
abilitato per impostazione predefinita. Tuttavia, se non è abilitato, potete avviare e abilitare il servizio utilizzando il seguente comando:
sudo systemctl enable --now systemd-resolved.service
Una volta abilitato, è possibile modificare il file /etc/systemd/resolved.conf
per impostare indirizzi personalizzati dei server DNS. Si raccomanda di effettuare un backup del file prima di modificarlo.
sudo nano /etc/systemd/resolved.conf
Ad esempio, per utilizzare i server DNS pubblici di Google, impostate quanto segue:
[Resolve]
DNS=8.8.8.8 8.8.4.4
FallbackDNS=1.1.1.1 9.9.9.9
L’opzione DNS
specifica gli indirizzi IP dei server DNS primari da utilizzare, separati da spazi. FallbackDNS
elenca i server DNS da utilizzare se i server primari non sono disponibili.
Dopo aver modificato le impostazioni, riavviate il servizio systemd-resolved
per applicare le modifiche:
sudo systemctl restart systemd-resolved
La relazione tra systemd-resolved e /etc/resolv.conf
Sui sistemi che utilizzano systemd-resolved
, si raccomanda di collegare il file /etc/resolv.conf
a /run/systemd/resolve/stub-resolv.conf
. Questo consente l’uso della cache DNS locale e delle funzionalità di inoltro fornite da systemd-resolved
. Per impostare il collegamento simbolico, utilizzate il seguente comando:
sudo ln -sf /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf
Questo consente a systemd-resolved
di gestire il processo di risoluzione DNS del sistema, fornendo una connessione Internet più veloce e sicura.
Gestire il DNS con Network Manager
Nei sistemi Linux, Network Manager (NetworkManager) è lo strumento più comunemente utilizzato per la configurazione e la gestione della rete. Facilita la gestione di varie interfacce di rete, inclusi reti wireless, reti cablate, banda larga mobile e connessioni VPN. Anche le impostazioni DNS possono essere gestite tramite questo strumento. Qui, discutiamo come impostare il DNS utilizzando Network Manager.
Modificare le impostazioni DNS con Network Manager
Con Network Manager, è possibile modificare le impostazioni DNS utilizzando sia l’interfaccia grafica utente (GUI) che l’interfaccia da linea di comando (CLI). Per la CLI, il comando nmcli
è molto utile.
Per cambiare le impostazioni DNS per una connessione di rete specifica, identificate prima il nome della connessione. È possibile elencare tutte le connessioni di rete disponibili con il seguente comando:
nmcli connection show
Poi, utilizzate il nome della connessione per impostare i server DNS. Il seguente comando imposta gli indirizzi dei server DNS per la connessione denominata “nome connessione”:
nmcli connection modify "nome connessione" ipv4.dns "8.8.8.8 8.8.4.4"
nmcli connection modify "nome connessione" ipv4.ignore-auto-dns yes
nmcli connection up "nome connessione"
Questo comando imposta i server DNS di Google (8.8.8.8
e 8.8.4.4
) per una connessione specifica, ignorando le impostazioni DNS ottenute automaticamente. Infine, la connessione viene riavviata usando nmcli connection up
per applicare le impostazioni.
Modificare le impostazioni DNS globali
È possibile utilizzare anche Network Manager per cambiare le impostazioni DNS su tutto il sistema. Per fare ciò, modificate il file /etc/NetworkManager/NetworkManager.conf
e aggiungete l’opzione dns
sotto la sezione [main]
:
[main]
dns=dnsmasq
Questa impostazione consente a Network Manager di utilizzare dnsmasq
per elaborare le query DNS. dnsmasq
è un server DNS e DHCP leggero che fornisce risoluzione e memorizzazione nella cache delle query DNS locali, migliorando la velocità di risoluzione DNS.
Dopo aver cambiato le impostazioni, è necessario riavviare Network Manager:
sudo systemctl restart NetworkManager
Gestire il DNS tramite Network Manager migliora significativamente la flessibilità e la comodità della configurazione di rete. Consente agli utenti di personalizzare facilmente le impostazioni DNS, ottimizzando le prestazioni e la sicurezza della rete.
Risoluzione dei problemi: problemi comuni e loro soluzioni
I problemi relativi al DNS possono manifestarsi in varie forme, come problemi di connessione a Internet, difficoltà nell’accesso ai siti web e ritardi. Qui, discutiamo i problemi comuni relativi al DNS che potreste incontrare su Linux e gli approcci per risolverli.
Lenta risoluzione DNS
Se la risoluzione DNS è lenta, il server DNS che state utilizzando potrebbe essere la causa del ritardo. Passare a un altro server DNS potrebbe risolvere il problema. Ad esempio, Google Public DNS (8.8.8.8 e 8.8.4.4) e Cloudflare DNS (1.1.1.1) sono opzioni veloci e affidabili.
Fallimento nella risoluzione DNS
Se la risoluzione DNS fallisce, verificate prima se il vostro sistema punta ai server DNS corretti. È possibile verificare ciò utilizzando il file /etc/resolv.conf
o il comando systemd-resolve --status
. Se i server DNS corretti sono impostati e il problema persiste, la pulizia della cache DNS potrebbe aiutare. Se state utilizzando systemd-resolved
, potete pulire la cache con il seguente comando:
sudo systemd-resolve --flush-caches
Impossibilità di accedere a siti web specifici
Se avete problemi ad accedere a siti web specifici, potrebbero esserci problemi con i record DNS di quei siti, o la vostra cache DNS locale potrebbe contenere informazioni obsolete. Pulire la cache DNS potrebbe risolvere il problema. Inoltre, verificate se il file /etc/hosts
non ha voci aggiunte manualmente per quei siti web.
Il server DNS non risponde
Se il server DNS che state utilizzando non risponde, verificate prima se il server DNS è inattivo o se ci sono problemi con la vostra connessione di rete. Potete testare se potete raggiungere il server DNS utilizzando il comando ping
. Se il server DNS non risponde, considerate di passare a un altro server DNS.
Provando questi passaggi generali per la risoluzione dei problemi, dovreste essere in grado di risolvere molti problemi relativi al DNS. Tuttavia, se il problema persiste, potrebbe essere necessaria un’ulteriore indagine sulle impostazioni o sulla configurazione della rete. In alcuni casi, contattare il vostro Internet Service Provider (ISP) o l’amministratore di rete potrebbe essere il corso d’azione appropriato.
Considerazioni sulla sicurezza: cose da tenere a mente quando si configurano i DNS
Quando si configurano le impostazioni DNS, è importante considerare le implicazioni per la sicurezza. Impostazioni DNS inappropriate possono aumentare la vulnerabilità agli attacchi informatici. Qui, introduciamo alcune considerazioni chiave sulla sicurezza da tenere a mente quando si configurano i DNS.
Affidabilità e sicurezza dei server DNS
Il server DNS che scegliete dovrebbe essere affidabile e avere misure di sicurezza in atto. Se utilizzate un servizio DNS pubblico, controllate le funzionalità di sicurezza fornite dal fornitore di servizi, come il supporto DNSSEC e il blocco dei siti malevoli.
Mitigare l’avvelenamento della cache DNS
L’avvelenamento della cache DNS è un attacco in cui un aggressore inietta informazioni DNS false nella cache, indirizzando gli utenti verso siti malevoli, come siti di phishing. Utilizzare server DNS che supportano DNSSEC (DNS Security Extensions) può proteggere da tali attacchi.
Proteggere la configurazione del server DNS locale
Se gestite il vostro server DNS, mantenete gli aggiornamenti software correnti, disabilitate i servizi non necessari e assicuratevi di una configurazione sicura. Inoltre, configurare correttamente il firewall è fondamentale per prevenire l’accesso non autorizzato dall’esterno.
Proteggere la privacy
Le query DNS possono rivelare la cronologia dell’uso di Internet degli utenti. Per proteggere la privacy, considerate l’uso di server DNS che supportano query DNS crittografate, come DNS over HTTPS (DoH) o DNS over TLS (DoT).
Conclusione
Comprendere come controllare e configurare i server DNS su Linux e gestirli in modo appropriato è fondamentale per mantenere l’efficienza e la sicurezza della rete. Questo articolo ha coperto le basi del DNS, come controllare e configurare i server DNS, la gestione del DNS con systemd-resolved e Network Manager, la risoluzione dei problemi e le considerazioni sulla sicurezza. Applicando questa conoscenza, potrete abilitare una configurazione DNS più efficace e sicura sui sistemi Linux.