GNU/Linux >> Linux Esercitazione >  >> Debian

Configura il tuo risolutore DNS su Debian 10 Buster con BIND9

Questo tutorial ti mostrerà come configurare un resolver DNS locale su Debian 10 Buster, con il software DNS BIND9 ampiamente utilizzato. Esistono molti sinonimi di risolutore DNS, alcuni dei quali sono elencati di seguito. Si riferiscono tutti alla stessa cosa.

  • full resolver (in contrasto con stub resolver)
  • Ricorrente DNS
  • server DNS ricorsivo
  • Risolutore ricorsivo

Tieni inoltre presente che un server DNS può anche essere chiamato server dei nomi. Esempi di risolutore DNS sono 8.8.8.8 (server DNS pubblico di Google) e 1.1.1.1 (server DNS pubblico Cloudflare). Anche il sistema operativo del tuo PC ha un resolver, sebbene sia chiamato stub resolver a causa delle sue capacità limitate. Un risolutore stub è un piccolo client DNS sul computer dell'utente finale che riceve richieste DNS da applicazioni come Firefox e inoltra le richieste a un risolutore ricorsivo. Quasi tutti i risolutori possono memorizzare nella cache la risposta DNS per migliorare le prestazioni, quindi sono anche chiamati server DNS di memorizzazione nella cache.

Perché eseguire il proprio risolutore DNS

Normalmente, il tuo computer o router utilizza il resolver DNS del tuo ISP per interrogare i nomi di dominio al fine di ottenere un indirizzo IP. L'esecuzione del tuo resolver DNS locale può velocizzare le ricerche DNS, perché

  1. Il resolver DNS locale ascolta solo le tue richieste DNS e non risponde alle richieste DNS di altre persone, quindi hai maggiori possibilità di ottenere una risposta DNS direttamente dalla cache del resolver.
  2. La latenza di rete tra il tuo computer e il resolver DNS viene eliminata (quasi zero), quindi le query DNS possono essere inviate ai server DNS root più rapidamente.

Se si esegue un server di posta e si utilizzano le liste nere DNS (DNSBL) per bloccare lo spam, si consiglia di eseguire un resolver DNS locale per accelerare le ricerche DNS. Se esegui il tuo server VPN su un VPS (Virtual Private Server), è buona norma anche installare un resolver DNS sullo stesso VPS.

Potresti anche voler eseguire il tuo risolutore DNS se non ti piace che la cronologia di navigazione in Internet venga archiviata su un server di terze parti.

Se possiedi un sito Web e desideri che il tuo server DNS gestisca la risoluzione dei nomi per il tuo nome di dominio invece di utilizzare il server DNS del registrar di domini, dovrai configurare un server DNS autorevole, che è diverso da un risolutore DNS. BIND può fungere contemporaneamente da server DNS autorevole e risolutore DNS, ma è buona norma separare i due ruoli su caselle diverse . Questo tutorial mostra come configurare un resolver DNS locale e poiché verrà utilizzato su host locale/rete locale, non è necessaria alcuna crittografia (DNS su TLS o DNS su HTTPS). La configurazione di un server DoT o DoH verrà discussa in un prossimo articolo.

Si noti che è necessario disporre dei privilegi di root durante l'installazione del software su Debian. Puoi aggiungere sudo all'inizio di un comando, oppure usa su - comando per passare all'utente root.

Installa BIND9 su Debian 10 Buster

BIND (Berkeley Internet Name Domain) è un software server DNS open source ampiamente utilizzato su Unix/Linux grazie alla sua stabilità e alta qualità. È stato originariamente sviluppato da UC Berkeley e successivamente, nel 1994, il suo sviluppo è stato spostato a Internet Systems Consortium, Inc (ISC).

Eseguire il comando seguente per installare BIND 9 su Debian 10 Buster dal repository predefinito. BIND 9 è la versione attuale e BIND 10 è un progetto morto.

sudo apt update
sudo apt install bind9 bind9utils bind9-doc bind9-host dnsutils

Controlla le informazioni sulla versione.

sudo named -v

Esempio di output:

BIND 9.11.5-P4-5.1-Debian (Extended Support Version) <id:998753c>

Per controllare il numero di versione e le opzioni di build, esegui

sudo named -V

Per impostazione predefinita, BIND si avvia automaticamente dopo l'installazione. Puoi verificarne lo stato con:

systemctl status bind9

Suggerimento:se il comando precedente non si chiude immediatamente, premi Q.

Se non è in esecuzione, avvialo con:

sudo systemctl start bind9

E abilita l'avvio automatico all'avvio:

sudo systemctl enable bind9

Il server BIND verrà eseguito come bind utente, che viene creato durante l'installazione, ed è in ascolto sulla porta TCP e UDP 53, come si può vedere eseguendo il seguente comando:

sudo netstat -lnptu | grep named

Di solito le query DNS vengono inviate alla porta UDP 53. La porta TCP 53 è per risposte di dimensioni maggiori di 512 byte.

Il demone BIND si chiama named . (Un demone è un pezzo di software che viene eseguito in background.) Il named binary è installato da bind9 pacchetto e c'è un altro importante binario:rndc , il controller del demone del nome remoto, installato da bind9utils pacchetto. Il rndc binary viene utilizzato per ricaricare/arrestare e controllare altri aspetti del demone BIND. La comunicazione avviene tramite la porta TCP 953.

Ad esempio, possiamo controllare lo stato del server dei nomi BIND.

sudo rndc status

Configurazioni per un risolutore DNS locale

/etc/bind/ è la directory che contiene le configurazioni per BIND.

  • named.conf :il file di configurazione principale che include le configurazioni di altri tre file.
  • db.127 :file della zona di mappatura inversa IPv4 di localhost.
  • db.local :localhost inoltra il file della zona di mappatura IPv4 e IPv6.
  • db.empty :un file di zona vuoto

Il pacchetto bind9 su Debian 10 non viene fornito con un db.root file, ora utilizza il file dei suggerimenti di root in /usr/share/dns/root.hints . I suggerimenti radice il file viene utilizzato dai risolutori DNS per interrogare i server DNS radice. Esistono 13 gruppi di server DNS root, da a.root-servers.net a m.root-servers.net .

Per impostazione predefinita, il server BIND9 su Debian fornisce un servizio ricorsivo solo per localhost e client di rete locale. Le domande esterne verranno rifiutate. Quindi non è necessario modificare i file di configurazione. Per familiarizzare con le configurazioni di BIND 9, ti mostrerò comunque come abilitare il servizio di ricorsione.

Il file di configurazione BIND principale /etc/bind/named.conf origina le impostazioni da altri 3 file.

  • /etc/bind/named.conf.options
  • /etc/bind/named.conf.local
  • /etc/bind/named.conf.default-zones

Per abilitare il servizio di ricorsione, modifica il primo file.

sudo nano /etc/bind/named.conf.options

Nelle options clausola, aggiungere le seguenti righe. Sostituisci gli indirizzi IP in allow-recursion dichiarazione con i tuoi indirizzi di rete locale.

 // hide version number from clients for security reasons.
 version "not currently available";

 // optional - BIND default behavior is recursion
 recursion yes;

 // provide recursion service to trusted clients only
 allow-recursion { 127.0.0.1; 192.168.0.0/24; 10.10.10.0/24; };

 // enable the query log
 querylog yes;

Salva e chiudi il file. Quindi prova la sintassi del file di configurazione.

sudo named-checkconf

Se il test ha esito positivo (indicato da un'uscita silenziosa), riavvia BIND9.

sudo systemctl restart bind9

Se si dispone di un firewall in esecuzione sul server BIND, è necessario aprire la porta 53 per consentire ai client LAN di inviare query DNS. Se utilizzi il firewall UFW, puoi eseguire il comando seguente.

sudo ufw allow in from 192.168.0.0/24 to any port 53

Questo aprirà la porta TCP e UDP 53 alla rete privata 192.168.0.0/24. Quindi da un altro computer nella stessa LAN, possiamo eseguire il seguente comando per interrogare il record A di google.com. Sostituisci 192.168.0.102 con l'indirizzo IP del tuo risolutore BIND.

dig A google.com @192.168.0.102

Ora sul risolutore BIND, controlla il registro delle query con il seguente comando.

sudo journalctl -eu bind9

Questo mostrerà l'ultimo messaggio di registro dell'unità di servizio bind9. Posso trovare la seguente riga nel registro, che indica che è stata ricevuta una query DNS per il record A di google.com dalla porta 57806 dell'indirizzo IP 192.168.0.103.

named[1162]: client @0x7f4d2406f0f0 192.168.0.103#57806 (google.com): query: google.com IN A +E(0)K (192.168.0.102)

Impostazione del risolutore DNS predefinito su Debian 10 Buster Server

Sul server BIND, dobbiamo impostare 127.0.0.1 come risolutore DNS predefinito. Puoi controllare l'attuale risolutore DNS su Debian 10 con il seguente comando.

cat /etc/resolv.conf

Esempio di output:

# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#      DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 2001:19f0:300:1704::6
nameserver 108.61.10.10

Il pacchetto bind9 su Debian 10 viene fornito con un'unità di servizio Systemd bind9-resolvconf.service , che ci aiuterà a impostare BIND come risolutore DNS predefinito sul server Debian. Per impostazione predefinita, questo servizio è disabilitato, è necessario avviarlo e abilitare l'avvio automatico all'avvio.

sudo systemctl start bind9-resolvconf

sudo systemctl enable bind9-resolvconf

Ora puoi controllare il contenuto di /etc/resolv.conf ancora. Come puoi vedere, 127.0.0.1 (BIND) è ora il risolutore DNS predefinito su Debian 10 Buster.

Se il tuo resolver DNS non è 127.0.0.1, è possibile che il tuo sistema non abbia il resolvconf binario, che causa il bind9-resolvconf servizio per fallire. Devi installare resolvconf pacchetto e riavviare il servizio.

sudo apt install resolvconf

sudo systemctl restart bind9-resolvconf

Impostazione del risolutore DNS predefinito sui computer client

Ora puoi configurare altri calcoli sulla LAN per utilizzare il server BIND come risolutore DNS. Per i computer Windows e MacOS, puoi cercare su Google per scoprire come impostare i resolver DNS predefiniti. Qui ti mostrerò come impostare il resolver DNS sui computer desktop Linux. Il metodo seguente funziona su qualsiasi distribuzione Linux che utilizza NetworkManager.

Fare clic sull'icona Network Manager sul desktop Linux per trovare Edit connections . (Su alcune distribuzioni Linux, è necessario fare clic con il pulsante destro del mouse su Network Manager.)

Quindi seleziona la connessione corrente e fai clic sull'icona a forma di ingranaggio per modificare questa connessione.

Seleziona la scheda Impostazioni IPv4, cambia metodo da Automatic(DHCP) a Automatic(DHCP) addresses only , che impedirà al tuo sistema Ubuntu di ottenere l'indirizzo del server DNS dal tuo router. Quindi specificare un server DNS. Qui inserisco l'indirizzo IP del server BIND nella mia LAN.

Salva le modifiche. Quindi riavvia NetworkManager per rendere effettive le modifiche.

sudo systemctl restart NetworkManager

Dopo esserti riconnesso, fai nuovamente clic sull'icona Network Manager e seleziona connection information . Puoi vedere che il tuo computer desktop Linux ora sta usando il tuo server DNS BIND.

Come disabilitare IPv6 in BIND

Se non utilizzi IPv6 nella tua rete, è una buona idea disattivare IPv6 in BIND, altrimenti ci saranno molti errori su IPv6 nel registro BIND come di seguito.

network unreachable resolving 'mirrors.fedoraproject.org/A/IN': 2001:4178:2:1269:dead:beef:cafe:fed5#53
network unreachable resolving 'mirrors.fedoraproject.org/AAAA/IN': 2001:4178:2:1269:dead:beef:cafe:fed5#53
network unreachable resolving 'mirrors.fedoraproject.org/A/IN': 2610:28:3090:3001:dead:beef:cafe:fed5#53
network unreachable resolving 'mirrors.fedoraproject.org/AAAA/IN': 2610:28:3090:3001:dead:beef:cafe:fed5#53

Per disabilitare IPv6 in BIND su Ubuntu, apri semplicemente il /etc/default/bind9 file

sudo nano /etc/default/bind9

Aggiungi -4 alle OPZIONI.

OPTIONS="-u bind -4"

Salva e chiudi il file. Quindi riavvia BIND e il gioco è fatto.

sudo systemctl restart bind9

BIND SERVFAIL

Se il tuo risolutore BIND non è in grado di rispondere alle query DNS (SERVFAIL) e nel registro BIND viene visualizzata la riga seguente.

dnssec: warning: managed-keys-zone: Unable to fetch DNSKEY set '.': timed out

Probabilmente è perché il tuo server non ha una connettività IPv6 funzionante. Questo è successo a uno dei miei server. Pensavo che la connettività IPv6 funzionasse come al solito, ma all'improvviso si è interrotta per ragioni che non conoscevo. Dopo aver disabilitato IPv6 in BIND, la risoluzione DNS funziona di nuovo.

BIND Riavvio automatico

Se per qualsiasi motivo il tuo processo di associazione viene interrotto, devi eseguire il comando seguente per riavviarlo.

sudo systemctl restart bind9

Invece di digitare manualmente questo comando, possiamo far riavviare automaticamente il binding modificando il named.service unità di servizio systemd. Per sovrascrivere la configurazione del servizio systemd predefinita, creiamo una directory separata.

sudo mkdir -p /etc/systemd/system/bind9.service.d/

Quindi crea un file in questa directory.

sudo nano /etc/systemd/system/bind9.service.d/restart.conf

Aggiungi le seguenti righe nel file, che farà riavviare automaticamente Bind 5 secondi dopo il rilevamento di un errore.

[Service]
Restart=always
RestartSec=5s

Salva e chiudi il file. Quindi ricarica systemd.

sudo systemctl daemon-reload

Per verificare se funzionerebbe, uccidi Bind con:

sudo pkill named

Quindi controlla lo stato di associazione. Troverai Bind riavviato automaticamente.

systemctl status bind9

BIND dimensione massima della cache

BIND può memorizzare nella cache i risultati DNS sul server per accelerare la ricerca DNS per i client. BIND presuppone che tu stia eseguendo un risolutore DNS dedicato, ovvero nessun altro servizio Web è in esecuzione sullo stesso host, quindi la dimensione della cache predefinita (definita da max-cache-size ) è impostato sul 90% della RAM totale per ottenere le migliori prestazioni. Puoi vedere una riga come quella di seguito nel registro BIND (sudo journalctl -eu bind9 ) all'avvio di BIND.

none:100: 'max-cache-size 90%' - setting to 7165MB (out of 7961MB)

Nota che BIND non utilizzerà immediatamente il 90% della tua RAM. Se ci sono solo poche richieste DNS, BIND utilizza solo una piccola quantità di RAM, perché non ci sono molti risultati DNS da memorizzare nella cache. Se ci sono molte richieste DNS, utilizzerà molta RAM per archiviare la cache DNS.

Se la tua RAM è limitata, potresti non volere che BIND utilizzi il 90% della tua RAM per la cache. Modifica il file di configurazione BIND /etc/bind/named.conf.options .

sudo nano /etc/bind/named.conf.options

Aggiungi la seguente direttiva nelle options clausola. Cambia del 50% il tuo valore preferito.

max-cache-size 50%;

Riavvia BIND per rendere effettive le modifiche.

sudo systemctl restart bind9

Conclusione

Spero che questo tutorial ti abbia aiutato a configurare un resolver DNS locale su Debian 10 Buster con BIND9. Come sempre, se hai trovato utile questo post, iscriviti alla nostra newsletter gratuita per ricevere ulteriori suggerimenti e trucchi. Abbi cura di 🙂


Debian
  1. Come impostare un indirizzo IP statico su Debian 10 Buster

  2. Come configurare un server Samba su Debian 10 Buster

  3. Come configurare un server NFS su Debian 10 Buster

  4. Come installare Steam con Steam Play su Debian 10 Buster

  5. Configura un server di posta con PostfixAdmin su Debian 9

Come configurare facilmente un server di posta su Debian 10 Buster con iRedMail

Gestisci il tuo sito Web di condivisione video con YouPHPTube su Debian 10 Buster

Configura il server DNS autorevole BIND su Debian 10 Buster

Configura il risolutore DNS su HTTPS (DoH) su Ubuntu con DNSdist

Configura un risolutore DNS locale su Ubuntu 18.04, 16.04 con BIND9

Configura il risolutore DNS locale su Ubuntu 20.04 con BIND9