Come configurare il server DNS su Debian

Come configurare il server DNS su Debian

Cos'è DNS?

Il sistema DNS o Name di dominio è il sistema che traduce il nome di un dominio nel corrispondente indirizzo IP. Ad esempio, quando digiti www.esempio.com nel tuo browser, mappa all'indirizzo IP di un particolare server Web su Internet. Ciò rende facile per le persone ricordare server, applicazioni o qualsiasi altro dispositivo connesso a Internet senza dover memorizzare i propri indirizzi IP.

DNS è un sistema di database distribuito gerarchico. Ha una struttura simile a un albero con nodi disposti a strati chiamati domini. Ogni dominio punta al nodo di qualche livello inferiore a se stesso. In DNS, questi domini sono definiti come sottodomini e ognuno risiede sul proprio server DNS, DNS principale o DNS primario, che contiene i record per tutti gli indirizzi IP e nomi host all'interno della sua zona di dominio.

Possono esserci più server DNS secondari che contengono una copia aggiornata delle informazioni contenute nei loro corrispondenti server DNS Master. Oltre a risolvere le query utilizzando questi dati specchi, i server DNS secondari forniscono anche tolleranza agli errori nel caso in cui il maestro primario diminuisca rispondendo alle domande stesse in attesa di risposte dal master primario.

Le query sono elaborate dai server DNS ricorsivi in ​​base alle informazioni nella sua cache combinate con i dettagli del server dei nomi ricorsivi specificati in /etc/resolv.Conf File. Il sistema di nomi di dominio è un elemento critico dell'architettura di Internet ed è essenziale per i computer di rete insieme in quello che chiamiamo oggi "Internet".

I parametri di configurazione DNS possono essere modificati utilizzando il “scavare"Strumento o modifica direttamente i file di zona. La modifica dei file della zona non è consigliabile poiché un errore potrebbe comportare inaccessibili il sito Web, anche se questo sarebbe un evento raro. Se non sei sicuro di quello che stai facendo, usa invece Dig quando possibile. Alcuni pacchetti di dominio Nome Internet di Bind o Berkeley sono disponibili "dnsutils" E "ospite", Che vengono utilizzati per interrogare i server DNS e stampare i risultati. È anche disponibile l'utilità NSLookup nella maggior parte dei sistemi UNIX che possono essere utilizzati per scopi simili. Tuttavia, "Dig" è generalmente più affidabile di entrambi questi strumenti.

Come funziona DNS?

DNS funziona come un sistema gerarchico, a partire dalla radice del dominio. Ad esempio, se digiti www.esempio.com Nel tuo browser, chiede al tuo server DNS locale queste informazioni. Quando non ce l'ha dato che non è autorevole per quel dominio, inoltra la domanda a uno dei suoi server DNS ricorsivi a monte. Questi server controlleranno la loro cache prima di contattare tutti i server dei nomi autorevoli direttamente responsabili del dominio "Esempio" fino a scoprire quale DNS ha questi dati e li invierà al computer client con un indirizzo IP per quel dominio.

Come puoi vedere, ogni dominio o sottodominio ha il proprio server di nome autorevole ed è responsabile della risoluzione delle query solo per quel sottodominio. Pertanto un server DNS dovrebbe avere tutte le informazioni per rispondere a qualsiasi domanda su un determinato dominio. Quindi se "esempio.com"Non è il dominio principale dei server DNS locali, quindi non sarà in grado di risolvere le domande per WWW.esempio.com senza inoltrarlo prima a monte.

Nota: Quando possibile, configurare diversi nameserver per ciascun sottodominio poiché ciascuno richiede procedure di manutenzione e amministrativa separate. In effetti, questo è il modo in cui DNS è stato progettato all'inizio quando i protocolli TCP/IP sono stati rilasciati nel 1983 prima dell'invenzione del sistema di nomi di dominio. Ciò è stato fatto in seguito dopo la creazione di servizi di registrazione internica nel 1992. I sottodomini sono stati introdotti come estensione del protocollo DNS ed era destinato solo a scopi amministrativi.

Ogni volta che un server DNS riceve una query da un client, controlla prima la cache per vedere se tutti i record necessari sono presenti in esso. Se non c'è alcun record trovato o non è abbastanza fresco, allora fa le seguenti domande ricorsive:

Se è una query Internet (in), risolve i nomi host a partire dalla radice del dominio e lavora verso il basso attraverso ciascun dominio genitore fino a raggiungere i server autorevoli per quella zona. Questo è chiamato "A partire dall'alto“, E di solito viene fatto per primo dal nome dei nomi responsabili di TLDS (.com, .Net, ecc.) hanno velocità di connessione più rapide con una larghezza di banda maggiore rispetto a quelle per i domini di secondo livello, E.G., "esempio". Mentre lo fa, il tuo server DNS locale tiene conto se può fidarsi o meno della risposta dei suoi server DNS a monte. Se non hai accesso a /etc /host o /etc /resolv.I server FILE e DNS Conf utilizzati dal tuo ISP stanno accoppiando le loro risposte, quindi è probabile che la maggior parte del traffico di rete venga registrato. Pertanto, ciò potrebbe rappresentare una minaccia per la sicurezza e, in caso contrario, chiederà direttamente ai server ricorsivi per tali dati. Questo è chiamato "A partire dal fondo"Poiché i server dei nomi responsabili dei domini di secondo livello hanno una velocità di connessione più lente con larghezza di banda inferiore rispetto a quelle per i domini di alto livello.

L'intero processo viene ripetuto iterativamente fino a quando:

  1. Un server di nomi non autoritativi risponde a una query in in query, dicendo che non conosce le informazioni richieste.
  2. Un server di nome trova quello che pensa sia una risposta autorevole per la query e la invia al computer client.
  3. Il numero di iterazioni preconfigurati nella cache del nome del resolver scade.

Questo tutorial ti guiderà attraverso come impostare il tuo server DNS interno su Debian. Utilizziamo il software di bind name server (bind9) per farlo.

Cos'è Bind9?

Bind (Berkeley Internet Name Domain) è un'implementazione del Protocollo DNS. In Bind 9, Sono stati apportati diversi miglioramenti importanti, tra cui il supporto IPv6, configurazione e controllo molto più flessibili, prestazioni di memorizzazione nella cache migliorate, Supporto EDNS0 per risposte UDP più grandi e una migliore gestione rispetto agli indirizzi IP assegnati dinamicamente.

LEGAMENTO è il software di server di nome più utilizzato su Internet. Supporta una serie di diversi protocolli di servizio di nomi di dominio, anche Bind4 (il dominio Name Internet Berkeley originale, versione 4), Bind8 (il successore storico a Bind4) e Servizi DNS per IPv6 Attraverso due implementazioni separate: una basata sul demone e un altro chiamato LWRES (resolver leggero).

Bind 9.5 è l'attuale versione stabile di bind ed è disponibile per il download sia in forma di origine che binaria dal Consorzio software Internet.

Prerequisiti

Prima di iniziare con il processo di installazione del server DNS su Debian, devi chiederti, "Ho davvero bisogno di un server DNS?"

Questo articolo si concentra solo su IPv4, quindi se sei interessato a utilizzare DNS per IPv6, È necessario fare più lavoro. Questa guida non ti aiuterà più in argomenti, come l'aggiunta di record AAAA manualmente, ecc.

È necessaria una nuova installazione di server Debian per testare i passaggi in questa guida. Alcuni dei comandi usati qui potrebbero essere diversi per il tuo caso e tali differenze saranno sottolineate se del caso.

Questa guida presuppone che tu abbia un lavoro Rete IPv4 e conoscenza per configurare correttamente gli indirizzi IP statici sui computer client.

UN sudo utente e un firewall dovrebbe già essere configurato sul sistema.

Iniziare

Aggiornamento del tuo sistema

Il processo di installazione è abbastanza semplice, ma vediamolo in dettaglio. Innanzitutto, è necessario assicurarsi che il sistema abbia tutti i pacchetti necessari installati e aggiornati, utilizzando il seguente comando:

sudo apt-get update && sudo apt-get upgrade -y

Il flag -y risponderà automaticamente a tutte le conferme che potrebbero essere richieste.

Il comando APT-EGT AGGIORNAMENTE aggiornerà gli elenchi dei pacchetti del server. Utilizzando il comando Apt-get Upgrade, tutti i pacchetti installati su di esso verranno aggiornati.

Ciò richiederà un po 'di tempo a seconda della velocità di connessione della rete e della quantità di aggiornamenti da installare.

Esempio di output:

Installazione di Bind9

Ora che il tuo sistema è aggiornato, puoi procedere con l'installazione di a Server DNS - Bind. Questo verrà fatto installando diversi nuovi pacchetti:

sudo apt install bind9 bind9utils bind9-doc

Il comando sopra si installerà Bind9 e i due pacchetti ausiliari che contengono i file richiesti per il corretto funzionamento del server DNS.

IL Bind9 è il software DNS Server.

I bind9utils sono utility per la gestione Configurazione di bind e sono chiamati il ​​comando utilizzato per controllare LEGAMENTO Dalla riga di comando.

Nota: Bind9-Doc è un pacchetto di documentazione per Bind Software.

Esempio di output:

Installazione del server DNS

Al termine dell'installazione, è possibile verificare che tutti i pacchetti siano stati installati correttamente eseguendo il comando seguente:

nominato -v

Il comando sopra mostrerà la versione installata di bind e le sue dipendenze.

Esempio di output:

Bind si avvia automaticamente quando lo installi. Controlli il suo stato con il comando SystemCtl, come segue:

Sudo SystemCtl Status Bind9

Il comando sopra ti fornirà una vista più dettagliata delle funzioni di bind sul tuo server, come tempo attivo, numero di zone, ecc.

Otterrai qualcosa di simile al seguente output:

Esempio di output:


Se mai vuoi iniziare, fermarsi o riavviare Bind, esegui semplicemente i comandi di seguito:

sudo service bind9 avvia
sudo service bind9 stop
Sudo Service Bind9 Riavvia

Il server Bind verrà eseguito come utente BIND e gruppo per impostazione predefinita. Questo lo rende ragionevolmente sicuro poiché eventuali modifiche nei file di zona sono consentite solo per questo utente. Il server Bind ascolta per impostazione predefinita sulla porta 53 per le query DNS. Puoi cambiare questa porta in di nome.Conf File se ti piace. Esegui il seguente comando per vedere quale porta sta ascoltando il server Bind:

sudo netstat -lnptu | grep nominato

Esempio di output:

Il comando sopra mostra che il demone nominato è attualmente avviato e ascoltando sulla porta 53 UDP. Utilizzare queste informazioni per verificare se si utilizza il numero di porta corretto.

Se il tuo server non utilizza la porta 53, puoi risolvere questo modifica modificando /etc/bind/denomina.conf.Locale e cambiando il numero di porta in quello che vuoi. È inoltre possibile modificare il nome del file di registro del server mediante modifica /etc/bind/denomina.conf.zone predefinite e aggiunta di dichiarazioni di registrazione nella direttiva delle opzioni.

Configurazione di Bind9

Ora che hai Bind9 installato Sul tuo server, è tempo di iniziare a configurarlo.

La directory di configurazione per LEGAMENTO si trova sotto /etc/legame. Ci sono alcuni file importanti in questa directory:

Il file denominato 'di nome.conf'È il file di configurazione principale, che ha molti commenti per chiarire ogni sezione.

Il prossimo file di configurazione che modificheremo si trova su /etc/bind/denomina.conf.Locale. Questo file contiene tutte le informazioni di rete riguardanti il ​​server e le zone che si desidera risolvere localmente (da nameservers).

IL di nome.conf.zone predefinite si trova a /etc/bind/denomina.conf.zone predefinite. Questo file contiene le informazioni del server per le zone utilizzate da Bind quando non è esplicitamente detto di utilizzare una zona diversa. In altre parole, zone che sono abilitate.

Quindi, andiamo avanti e iniziamo con una configurazione di base.

Esempio di output:

Per impostazione predefinita, Bind è configurato per servire solo LocalHost. Ciò significa che qualsiasi richiesta che provenga dall'esterno del server verrà rifiutata dal bind stesso a meno che non lo abbia configurato correttamente.

Se stavi cercando di accedere a un sito Web ospitato, ad esempio, il "154.54.55.Indirizzo IP da 56 ", cosa sarebbe successo? La risposta è semplice: tutte le richieste sarebbero senza risposta perché non è stata specificata la configurazione per il “154.54.55.Indirizzo IP da 56 "in bind9 e il daemon" nominato "ha rifiutato di soddisfare qualsiasi richiesta DNS al di fuori della sua interfaccia di rete.

Innanzitutto, imposteremo il server DNS per ascoltare tutti gli indirizzi IP per inviare richieste al server DNS da vari luoghi: dal server, da una rete diversa o quando si utilizza Internet.

Lascialo farlo modificando il nome.conf.File di configurazione delle opzioni:

CD /ETC /BIND
Sudo Nano chiamato.conf.opzioni
Sostituiamo ascolto su 127.0.0.1;;
di
Ascolta su any;;
Ascolta su V6 qualsiasi;

Salva e chiudi il file quando hai finito. Quindi riavviare il demone Bind9 con il comando in basso:

Sudo Service Bind9 Riavvia

Ora, abbiamo abilitato Bind9 di ascoltare tutte le interfacce.

Esempio di output:

Creazione di zone di ricerca in avanti (dominio -> IP)

Le zone di ricerca in avanti sono il tipo più comune di file di zona. Mappano un nome di dominio su un indirizzo IP e vengono utilizzati per risolvere i nomi di dominio agli indirizzi IP per e -mail, pagine Web, ecc. Il prossimo passo è creare un file di zone di ricerca in avanti.

Modificheremo il "/etc/bind/denomina.conf.Locale"File per dichiarare una zona in avanti. Ai punti di sola di questo tutorial, dichiareremo un dominio chiamato "Linuxhint.com"E indicalo all'indirizzo IP pubblico del server che viene utilizzato esplicitamente per ospitare siti Web rivolti esterni sul LinuxHint.dominio com.

Nota: Un indirizzo IP accessibile a Internet valido deve essere impostato sul tuo server se si prevede di risolvere i domini esterni all'interno della rete.

Ora modificheremo il "/etc/bind/denomina.conf.Locale"File per dichiarare una zona di ricerca in avanti:

Sudo Nano chiamato.conf.Locale

Aggiungi quanto segue alla fine del file:

zona "Linuxhint.com "
Digita Master;
File "/etc/bind/db.Linuxhint.com ";
// permette a transfer xxx.xxx.xxx.xxx;; // server DNS secondario di Hoster
;

In questo contesto:

Tipo "maestro". Questo è un file di zona di dominio principale. Il parametro di tipo può essere impostato su "schiavo"Se stai ospitando una zona in avanti o inversa autorevole e non si desidera consentire aggiornamenti dinamici.

IL "/etc/bind/db.Domaine.com"È un file che contiene i record per il dominio"Linuxhint.com"Con un percorso completo.

consentire il trasferimento xxx.xxx.xxx.xxx;. È necessario consentire il trasferimento di zona al server DNS secondario di Hoster perché se il provider di hosting non ti consente di farlo, non è possibile aggiornarlo online con il comando "Ricarica RNDC"Su localhost. xxx.xxx.xxx.xxx; Indirizzo IP del server DNS secondario (name server) che è ospitato dal provider di hosting.

Salva e chiudi il file quando hai finito.

Esempio di output:


Ora, creeremo un file per ogni zona dichiarata sopra:

sudo nano db.Linuxhint.com

Popolare il file con quanto segue:

;
; Bind Data File per l'interfaccia di loopback locale
;
$ TTL 604800
@ In SOA NS1.Linuxhint.Locale. radice.Linuxhint.Locale. (
2; Seriale
604800; ricaricare
86400; Riprovare
2419200; Scadere
604800); Cache negativa TTL
;
; Commento sotto tre righe
;@ In ns localhost.
;@ In un 127.0.0.1
;@ In aaaa :: 1
; Nome Informazioni sul server
@ In NS NS1.Linuxhint.Locale.
; Indirizzo IP del server dei nomi
NS1 in un 192.168.0.10
; Scambiatore di posta
Linuxhint.Locale. In MX 10 Mail.Linuxhint.Locale.
; A - record hostname all'indirizzo IP
www in un 192.168.0.100
Mail in un 192.168.0.150
; Record CNAME
FTP in CNAME www.Linuxhint.Locale.

In questo file, sostituire i valori LinuxHint con il nome di dominio, seguito da un punto (.) Questo è necessario e questo non è un errore.

Sostituisci “192.168.0 "con il tuo indirizzo IP pubblico, seguito da un punto (.) Questo è necessario per rendere accessibile il server da Internet.

Ricorda di salvare e chiudere il file quando hai finito.

Creazione di zone di ricerca inversa (IP -> Dominio)

Le zone di ricerca inversa vengono utilizzate per mappare un indirizzo IP in un nome di dominio e sono generalmente richieste per l'invio di e-mail. Il prossimo passo è creare un file di zona inversa.

Il nome della zona inversa è costituito dall'ID di rete (invertito) seguito da ".in-addr.arpa".

Per esempio:

Se il server ha un indirizzo IP "20.30.40.50", Il suo ID di rete sarà"20.30.40", E il nome della zona inversa sarà"40.30.20.in-addr.arpa".

Se il server ha un indirizzo IP "191.169.10.50", Il suo ID di rete sarà"191.169.10", E il nome della zona inversa sarà"10.169.191.in-addr.arpa".

Ora modificheremo il "/etc/bind/denomina.conf.Locale"File per dichiarare una zona inversa:

sudo nano/etc/bind/denomina.conf.Locale

Quindi, aggiungi quanto segue al file:

zona "40.30.20.in-addr.arpa "
Digita Master;
notificare no;
File "/etc/bind/db.10 ";
;

Quindi, creeremo un file per la zona dichiarata sopra:

sudo nano db.10

Quindi popola il file con quanto segue:

;
; Bind Reverse Data File per l'interfaccia di loopback locale
;
$ TTL 604800
@ In soa linuxhint.Locale. radice.Linuxhint.Locale. (
2; Seriale
604800; ricaricare
86400; Riprovare
2419200; Scadere
604800); Cache negativa TTL
;
;@ In ns localhost.
; 1.0.0 in PTR Localhost.
; Nome Informazioni sul server
@ In NS NS1.Linuxhint.Locale.
; Ricerca inversa per il server dei nomi
10 in PTR NS1.Linuxhint.Locale.
; Indirizzo IP del record PTR al nome host
100 in PTR www.Linuxhint.Locale.
150 in PTR Mail.Linuxhint.Locale.
# Fine del file

Controllo della sintassi della configurazione Bind

Ora controlleremo la sintassi della configurazione in ciascun file per errori. Per fare questo, avremo una query denominata con il seguente comando:

sudo chiamato-checkconf

Se non ci sono errori, questo comando tornerà alla shell vuota:

Esempio di output:

Conclusione

DNS è uno dei servizi più importanti su un server. Tutti lo usano. Tutti ne hanno bisogno e, alla fine, non vuoi che le tue macchine si perdano nella rete perché non riescono a trovarsi. Questo articolo fornisce una guida sull'impostazione del server DNS interno su Debian utilizzando il software Bind Name Server (BING9). Per ulteriori informazioni, consultare gli altri articoli trovati su Linuxhint.com.