Come controllare e configurare i server DNS su Linux: dalle basi alle misure di sicurezza

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.

Indice

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

  1. 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
  1. Successivamente, utilizzate un editor di testo per modificare il file /etc/resolv.conf. Qui usiamo l’editor nano, ma potete usare il vostro editor preferito come vi o emacs:
sudo nano /etc/resolv.conf
  1. 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
  1. Dopo aver effettuato le modifiche, salvate il file e uscite dall’editor. Se state usando nano, premere Ctrl + O per salvare e Ctrl + 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.

Indice