Come installare un server di cache DNS locale su Linux?

Le ricerche DNS non sono normalmente qualcosa di cui devi preoccuparti. A volte dovresti!


Se l’ISP di casa o dell’ufficio ha server dei nomi lenti o il tuo server sta eseguendo molte ricerche, allora hai bisogno di un server DNS di cache locale.

Come può aiutarmi un server DNS di cache?

Un server DNS di cache funziona eseguendo tutte le query DNS effettuate dal sistema e quindi salvando o memorizzando nella cache i risultati in memoria. Una volta che i risultati vengono memorizzati nella cache ogni volta che si effettua una richiesta duplicata per un dominio, il risultato verrà pubblicato quasi istantaneamente dalla memoria.

Questo potrebbe non sembrare troppo importante, ma se i server DNS del tuo ISP stanno impiegando il loro tempo per rispondere, rallenterà notevolmente la tua navigazione in Internet. Ad esempio, la home page del canale di notizie statunitense MSNBC deve contattare oltre 100 nomi di domini univoci per caricare correttamente. Se i server dei nomi del tuo ISP impiegano anche un decimo di secondo in più del normale per rispondere, ciò significa che la pagina impiegherà 10 secondi in più per terminare il caricamento.

Un server DNS di memorizzazione nella cache locale non solo aiuterà a casa o in ufficio, ma aiuterà anche sul tuo server. Se si dispone di un’applicazione che esegue molte ricerche DNS, ad esempio un server di posta elettronica occupato che esegue software anti-spam, riceverà un aumento di velocità da un server DNS di cache locale.

Infine, systemd-resolved supporta i più recenti standard DNS sicuri DNSSEC e DNSoverTLS o Punto. Questi aiutano a proteggerti e a mantenere la tua privacy online.

Quale DNS di cache locale useremo?

Il server DNS di memorizzazione nella cache locale che abiliteremo e configureremo in questa guida è systemd-resolved. Questo strumento fa parte di systemd suite di strumenti di gestione del sistema. Se il tuo sistema utilizza systemd e quasi tutte le principali distribuzioni Linux lo sono, allora avrai già installato systemd risolto ma non funzionante. La maggior parte delle distribuzioni non utilizza la risoluzione di systemd anche se è presente.

systemd-risolto funziona eseguendo un piccolo server DNS di memorizzazione nella cache locale che configureremo per l’avvio all’avvio. Riconfigureremo quindi il resto del sistema per indirizzare le loro query DNS al DNS risolto dal sistema di memorizzazione nella cache locale.

Come verificare se si sta già utilizzando systemd-risolto?

Alcune distribuzioni Linux stanno già usando systemd risolto di default come Ubuntu 19.04.

Se si sta già eseguendo systemd-risolto, non è necessario abilitarlo o configurare il sistema per utilizzarlo. Tuttavia, potrebbe essere necessario assicurarsi che gli strumenti di gestione della rete come NetworkManager siano configurati correttamente in quanto possono ignorare la configurazione di rete del sistema.

Prima di passare alla sezione successiva, eseguire il comando seguente per verificare se si sta già eseguendo systemd-risolto:

$ resolvectl status

Se ricevi il messaggio:

$ resolvectl status
Impossibile ottenere i dati globali: unità dbus-org.freedesktop.resolve1.service non trovata.

Siete non in esecuzione systemd-risolto e dovrebbe passare alla sezione successiva. Se invece vedi un output che inizia con qualcosa di simile al seguente:

Globale
Impostazione LLMNR: sì
Impostazione MulticastDNS: sì
Impostazione DNSOverTLS: opportunistica
Impostazione DNSSEC: consentire il downgrade
DNSSEC supportato: no
Server DNS corrente: 1.1.1.1
Server DNS: 1.1.1.1
1.0.0.1

Quindi stai già eseguendo systemd-risolto e non è necessario abilitarlo.

Abilitazione e configurazione del sistema risolto

Non è necessario installare systemd-resolved come già parte di systemd. Tutto quello che dobbiamo fare è avviarlo per far funzionare il server di cache DNS e quindi abilitarlo per avviarlo all’avvio.

Eseguire il comando seguente da un prompt della shell poiché sudo ha consentito a un utente non root di avviare systemd risolto:

$ sudo systemctl avvia systemd-resolved.service

Quindi, eseguire il comando seguente per avviare systemd-risolto all’avvio del sistema:

$ sudo systemctl abilita systemd-resolved.service

L’ultimo elemento di configurazione rimasto è quello di impostare i server DNS che il sistema risolto eseguirà la query sui domini risolti. Ci sono molte opzioni qui, ma una delle seguenti coppie è gratuita, veloce ed entrambe supportano DNSSEC e DoT:

DNS pubblico di Google

  • 8.8.8.8
  • 8.8.4.4

DNS pubblico Cloudflare

  • 1.1.1.1
  • 1.0.0.1

Apri il file di configurazione principale con risoluzione del sistema con il tuo editor di testo preferito, qui ho usato nano:

$ sudo nano /etc/systemd/resolved.conf

Modifica la riga inizia

# DNS =

In modo che una coppia di indirizzi IP sia elencata. Qui sono mostrati i server DNS Cloudflare:

DNS = 1.1.1.1 1.0.0.1

Salva ed esci dall’editor di testo. Ora è necessario riavviare systemd-risolto in modo che inizi a utilizzare i nameserver:

$ sudo systemctl restart systemd-resolved.service

systemd-resolved è ora in esecuzione e pronto per iniziare ad accelerare e proteggere le query DNS non appena configuriamo il sistema per iniziare a usarlo.

Configurazione del sistema per l’utilizzo di systemd-risolto

Il tuo sistema può essere configurato in diversi modi per utilizzare systemd risolto, ma esamineremo due configurazioni che coprono la maggior parte dei casi d’uso. La prima è la configurazione consigliata e la seconda è la configurazione di compatibilità. La differenza tra i due è come viene gestito il file /etc/resolv.conf.

Il file /etc/resolv.conf contiene gli indirizzi IP dei nameserver che i programmi sul sistema dovrebbero interrogare. I programmi che devono eseguire query DNS consulteranno questo file per scoprire quali server devono contattare per effettuare tali query.

Le due modalità di risoluzione di systemd si basano su come vengono gestiti i contenuti di questo file. Nella modalità consigliata, /etc/resolv.conf viene creato un collegamento simbolico a /run/systemd/resolve/stub-resolv.conf. Questo file è gestito da systemd-resolved e quindi systemd-resolved gestisce le informazioni di configurazione DNS per tutti gli altri programmi sul sistema.

Ciò può causare problemi quando altri programmi tentano di gestire il contenuto di /etc/resolv.conf. La modalità di compatibilità lascia /etc/resolv.conf in atto consentendo ad altri programmi di gestirlo mentre le soluzioni DNS risolte utilizzano tali informazioni DNS. In questa modalità, gli altri programmi che gestiscono /etc/resolv.conf devono essere configurati per impostare 127.0.0.53 come nameserver di sistema in /etc/resolv.conf.

Configurazione della modalità consigliata

Quando configuriamo questa modalità systemd-resolved gestirà /etc/resolv.conf rendendolo un link simbolico a /run/systemd/resolve/stub-resolv.conf. Dovremo farlo manualmente poiché non è configurato automaticamente.

Innanzitutto, elimina o rinomina il file /etc/resolv.conf esistente. La ridenominazione è un’opzione migliore per eliminarla poiché avrà lo stesso effetto, ma puoi sempre fare riferimento all’originale se hai bisogno delle informazioni che contiene. Qui, rinominiamo /etc/resolv.conf usando il comando mv:

$ sudo mv /etc/resolv.conf /etc/resolv.conf.original

Quindi, creare il collegamento simbolico:

$ sudo ln -s /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf

Infine, riavvia systemd-risolto:

$ sudo systemctl restart systemd-resolved.service

Configurazione della modalità di compatibilità

In questa modalità, è necessario assicurarsi che il server dei nomi locale avviato da systemd risolto sia interrogato dai servizi di sistema. Apri /etc/resolv.conf in un editor di testo, qui viene utilizzato l’editor nano:

$ sudo nano /etc/resolv.conf

Elimina tutte le righe che incontri che iniziano con “nameserver” e aggiungi questa riga:

nameserver 127.0.0.53

Questa modifica può essere modificata da qualsiasi altro programma che gestisce /etc/resolv.conf. In questo caso, dovrai configurare quei programmi per utilizzare questo nameserver per rendere permanente la modifica.

Debug sistemato-risolto

Scoprire esattamente come il tuo sistema sta eseguendo query DNS dopo aver apportato queste modifiche può essere difficile. Il metodo più efficace per osservare ciò che sta accadendo è mettere systemd-resolved in modalità di debug e guardare il file di registro.

systemd-resolved è un servizio di systemd, il che significa che può essere facilmente messo in modalità debug creando un file di servizio drop-in che contiene l’impostazione di debug. Il seguente comando creerà il file corretto nella posizione corretta:

$ sudo systemctl edit systemd-resolved.service

Incolla le seguenti righe nell’editor, quindi salva ed esci:

[Servizio]
Ambiente = SYSTEMD_LOG_LEVEL = di debug

Il servizio risolto dal sistema verrà ricaricato automaticamente in caso di esito positivo del salvataggio e dell’uscita.

Aprire un secondo terminale sullo stesso server e seguire il registro journald per il servizio risolto da systemd:

$ sudo journalctl -f -u systemd-risolto

Una riga che inizia “Utilizzo del server DNS” ad es .:

Utilizzo del server DNS 1.1.1.1 per la transazione 19995.

Indica esattamente quale server DNS viene utilizzato per le query DNS. In questo caso, è stato richiesto il server DNS Cloudflare alla 1.1.1.1.

Le righe che sono “Miss cache” indicano che il nome di dominio non è stato memorizzato nella cache. Per esempio.:

Manca la cache per esempio.com IN SOA

Linee che iniziano con “Hit cache positivo”, ad es .:

Hit cache positivo per example.com IN A

Indica che systemd-resolved ha già interrogato questo dominio in precedenza e che la risposta è stata fornita dalla cache nella memoria locale.

Dovresti disabilitare la modalità di debug quando hai finito di lavorare con systemd risolto in quanto creerà un file di registro molto grande su un sistema occupato. È possibile disabilitare la registrazione di debug eseguendo:

$ sudo systemctl edit systemd-resolved.service

ed eliminando le due righe, hai aggiunto quindi il salvataggio e l’uscita dall’editor.

Utilizzo di query DNS sicure

systemd-resolved è uno dei pochi server DNS attualmente disponibili che supportano sia DNSSEC che DNSoverTLS. Entrambi aiutano a garantire la ricezione di informazioni DNS autentiche (DNSSEC) e che nessuno può curiosare sul traffico DNS mentre passa su Internet. (Punto).

Queste opzioni sono facilmente attivabili aprendo il file di configurazione principale risolto da systemd con un editor di testo:

$ sudo nano /etc/systemd/resolved.conf

E modificando il file in modo che siano impostate le seguenti due righe:

DNSSEC = allow-downgrade
DNSOverTLS = opportunistica

Salvare ed uscire dall’editor, quindi ricaricare systemd risolto:

$ sudo systemctl restart systemd-resolved.service

Finché il server DNS è stato impostato il supporto DNSSEC e DoT, le query DNS saranno protette. I server DNS pubblici Google e Cloudflare supportano entrambi questi protocolli.

Conclusione

Il sistema è ora configurato per eseguire query DNS in modo rapido ed efficiente anche quando il server DNS del tuo ISP non risponde così rapidamente come dovrebbe. Inoltre, la tua vita digitale è più sicura poiché stai utilizzando i protocolli DNS più recenti e sicuri per proteggere le tue query DNS.

Se sei un appassionato di Linux e stai cercando di saperne di più, dai un’occhiata a questo fantastico corso online.

TAGS:

  • Linux

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map