Ricerca nel sito web

Come configurare il server DNS con BIND su Ubuntu 22.04


Su questa pagina

  1. Prerequisiti
  2. Impostazione FQDN (nome di dominio completo)
  3. Installazione dei pacchetti BIND
  4. Impostazione di BIND Master
  5. Impostazione delle zone
  6. Impostazione di BIND Slave
  7. Verifica del server DNS dal computer client
  8. Conclusione

BIND o Berkeley Internet Name Domain è un software server DNS gratuito e open source. È uno dei software per server DNS più popolari utilizzato da oltre il 70% dei DNS su Internet. BIND esiste dagli anni '80 ed è noto per la sua flessibilità, prestazioni e funzionalità. BIND può essere utilizzato sia come DNS autorevole che come DNS di memorizzazione nella cache, supporta bilanciamento del carico, aggiornamento dinamico, DNS diviso, DNSSEC, IPv6 e molti altri.

Il software BIND DNS è uno dei server DNS più affidabili per i sistemi operativi simili a Unix. È disponibile sulla maggior parte delle distribuzioni Linux e fornisce strumenti aggiuntivi per la diagnostica e il test del server DNS.

Questa guida ti insegnerà come installare il server DNS con BIND sul server Ubuntu 22.04. Questo tutorial ti mostrerà come configurare l'installazione del server DNS BIND Master-Slave utilizzando due server Ubuntu.

Prerequisiti

Prima di iniziare con questa guida, dovresti avere i seguenti requisiti:

  • Due server Ubuntu 22.04.
  • Un utente non root con privilegi di root/amministratore.

Impostazione FQDN (nome di dominio completo)

Prima di iniziare l'installazione dei pacchetti BIND, devi assicurarti che il nome host e l'FQDN dei tuoi server siano corretti. In questa dimostrazione, vedremo due server Ubuntu con i seguenti dettagli:

Hostname    IP Address      FQDN                Used As
---------------------------------------------------------
ns1         192.168.5.21    ns1.hwdomain.io     BIND Master
ns2         192.168.5.22    ns2.hwdomain.io     BIND Slave

Ora accedi a ciascun server ed esegui il seguente comando per impostare l'FQDN (Fully Qualified Domain Name).

Imposta FQDN sul server \ns1\.

sudo hostnamectl set-hostname ns1.hwdomain.io

Imposta FQDN sul server \ns2\.

sudo hostnamectl set-hostname ns2.hwdomain.io

Successivamente, modifica il file \/etc/hosts\ utilizzando il seguente comando.

sudo nano /etc/hosts

Aggiungere la seguente configurazione a ogni server.

192.168.5.21 ns1.hwdomain.io ns1
192.168.5.22 ns2.hwdomain.io ns2

Salva e chiudi il file quando hai finito.

Infine, controlla e verifica l'FQDN su ciascun server utilizzando il seguente comando. Sul server \ns1\ otterrai l'FQDN come \ns1.hwdomain.io\, e sul server \ns2\ otterrai l'output \ns2.hwdomain.io\.

sudo hostname -f

Installazione dei pacchetti BIND

I pacchetti Bind sono disponibili per impostazione predefinita nel repository del server Ubuntu. Ora puoi facilmente installare Bind usando il comando apt su entrambi i server \ns1\ e \ns2\.

Esegui il comando apt di seguito per aggiornare e aggiornare i repository di Ubuntu.

sudo apt update

Successivamente, installa i pacchetti Bind usando il seguente comando. inserire Y per confermare l'installazione e premere ENTER per continuare. E l'installazione inizierà.

sudo apt install bind9 bind9utils bind9-doc dnsutils

Al termine dell'installazione di Bind, modifica la configurazione \/etc/default/named\ utilizzando il seguente comando.

sudo nano /etc/default/named

La riga \OPTIONS=\ consente di impostare opzioni specifiche quando il servizio BIND è in esecuzione. In questa demo, eseguirai Bind solo con IPv4, quindi dovrai creare la riga \OPTIONS\ come di seguito.

OPTIONS="-u bind -4"

Salva e chiudi il file quando hai finito.

Ora esegui il comando seguente per riavviare il servizio Bind \named\. Quindi, controlla e verifica lo stato del servizio BIND. Dovresti vedere che il servizio Bind \named\ è in esecuzione su entrambi i server.

sudo systemctl restart named
sudo systemctl status named

Configurazione di BIND Master

Dopo aver installato i pacchetti BIND su entrambi i server \ns1\ e \ns2\, configurerai il server DNS BIND. configurerai il server \ns1\ come Master del server DNS BIND. È possibile eseguire BIND su un singolo server, ma si consiglia di utilizzare più server per configurare il server DNS ad alta disponibilità.

Torniamo alla sessione terminale del server \ns1\.

Eseguire il comando seguente per modificare il file di configurazione \/etc/bind/named.conf.options\.

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

Aggiungi la seguente configurazione al file all'inizio della riga, prima della riga \options {....};\.

Con questa configurazione, creerai un ACL (Access Control List) con il nome \affidabile\, che include tutti gli indirizzi IP e le reti affidabili nel tuo ambiente. Inoltre, assicurati di aggiungere l'indirizzo IP del server locale \ns1\ e l'indirizzo IP del server DNS secondario \ns2\.

acl "trusted" {
        192.168.5.21;    # ns1 - or you can use localhost for ns1
        192.168.5.22;    # ns2
        192.168.5.0/24;  # trusted networks
};

Ora apporta le modifiche alla sezione \options {..};\ come di seguito.

Nell'esempio seguente, disabilitiamo il supporto per IPv6 commentando l'opzione \listen-on-v6\, abilitando e consentendo la ricorsione dall'ACL \trusted\ ed eseguendo il servizio BIND su uno specifico indirizzo IP \ns1\ \192.168.5.21\. Inoltre, stiamo disabilitando il trasferimento di zona predefinito e definendo i forwarder specifici per il server DNS BIND su Google Public DNS \8.8.8.8\ e \8.8.4.4 \.

options {

        directory "/var/cache/bind";

        //listen-on-v6 { any; };        # disable bind on IPv6

        recursion yes;                 # enables resursive queries
        allow-recursion { trusted; };  # allows recursive queries from "trusted" - referred to ACL
        listen-on { 192.168.5.21; };   # ns1 IP address
        allow-transfer { none; };      # disable zone transfers by default

        forwarders {
                8.8.8.8;
                1.1.1.1;
        };
};

Salva e chiudi il file quando hai finito.

Infine, esegui il seguente comando per controllare e verificare il file di configurazione \/etc/bind/named.conf.options\. Se non viene visualizzato alcun messaggio di output, la configurazione è corretta.

sudo named-checkconf /etc/bind/named.conf.options

Impostazione delle zone

Dopo aver impostato la configurazione di base del master BIND, ora imposterai le zone per il tuo nome di dominio. Nell'esempio seguente, utilizzeremo il nome di dominio \hwdomain.io\ con il server dei nomi \ns1.hwdomain.io\ e \ns2.hwdomain.io\.

Modifica il file di configurazione \/etc/bind/named.local\ utilizzando il seguente comando.

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

In questa configurazione, definirai due file di zona, forward e reverse zone per il tuo nome di dominio. La zona Forward conterrà la configurazione di dove i tuoi nomi di dominio verranno risolti nell'indirizzo IP, mentre la zona inversa tradurrà l'indirizzo IP in quale nome di dominio.

Nell'esempio seguente, definiremo la forward zone \/etc/bind/zones/db.hwdomain.io\ per il dominio \hwdomain.io\ e la reverse zone \/etc/bind/zones/db.192.168.5\.

zone "hwdomain.io" {
    type master;
    file "/etc/bind/zones/db.hwdomain.io"; # zone file path
    allow-transfer { 192.168.5.22; };           # ns2 IP address - secondary DNS
};


zone "5.168.192.in-addr.arpa" {
    type master;
    file "/etc/bind/zones/db.192.168.5";  # subnet 192.168.5.0/24
    allow-transfer { 192.168.5.22; };  # ns2 private IP address - secondary DNS
};

Salva e chiudi il file quando hai finito.

Successivamente, esegui il seguente comando per creare una nuova directory \/etc/bind/zones\ che verrà utilizzata per memorizzare i file di configurazione della zona.

sudo mkdir -p /etc/bind/zones/

Successivamente, copia la configurazione predefinita della zona di inoltro \/etc/bind/zones/db.hwdomain.io\ e modifica il file utilizzando il seguente comando.

sudo cp /etc/bind/db.local /etc/bind/zones/db.hwdomain.io
sudo nano /etc/bind/zones/db.hwdomain.io

Modifica il record SOA predefinito con il tuo nome di dominio. Inoltre, dovrai cambiare il numero \Seriale\ all'interno dei record SOA ogni volta che apporti modifiche al file, e questo deve essere lo stesso numero \Seriale\ con il server DNS secondario/slave.

Quindi, puoi definire record NS e record A per il tuo server DNS. In questo esempio, il server dei nomi sarà \ns1.hwdomain.io\ con l'indirizzo IP del record A \192.168.5.21\ e \ns2.hwdomain.io\ con il record A del server DNS secondario Indirizzo IP \192.168.5.22\.

Infine, puoi definire altri nomi di dominio. In questo esempio, definiremo un record MX (gestore di posta) per il dominio \hwdomain.io\ che sarà gestito dal server di posta \mail.hwdomain.io. Inoltre, definiremo il nome di dominio\hwdomain.io\ che verrà risolto nel server con indirizzo IP \192.168.5.100\ e il sottodominio per il server di posta \mail.hwdomain.io\ nell'indirizzo IP del server \192.168.5.120 \.

;
; BIND data file for the local loopback interface
;
$TTL    604800
@       IN      SOA     ns1.hwdomain.io. admin.hwdomain.io. (
                              3         ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                         604800 )       ; Negative Cache TTL
;

; NS records for name servers
    IN      NS      ns1.hwdomain.io.
    IN      NS      ns2.hwdomain.io.

; A records for name servers
ns1.hwdomain.io.          IN      A       192.168.5.21
ns2.hwdomain.io.          IN      A       192.168.5.22

; Mail handler or MX record for the domain hwdomain.io
hwdomain.io.    IN     MX   10   mail.hwdomain.io.

; A records for domain names
hwdomain.io.            IN      A      192.168.5.100
mail.hwdomain.io.       IN      A      192.168.5.120

Salva e chiudi il file quando hai finito.

Successivamente, copia il file di configurazione della zona inversa predefinito in \/etc/bind/zones/db.192.168.5\ e modifica il nuovo file utilizzando il seguente comando.

sudo cp /etc/bind/db.127 /etc/bind/zones/db.192.168.5
sudo nano /etc/bind/zones/db.192.168.5

Modifica il record SOA predefinito utilizzando il tuo nome di dominio. Inoltre, non dimenticare di modificare il numero \Serial\ all'interno del record SOA.

Definisci i record NS per i tuoi server DNS. Questi sono gli stessi server dei nomi che hai utilizzato nella zona di inoltro.

Infine, definisci i record PTR per i tuoi nomi di dominio. Il numero sui record PTR è l'ultimo numero dell'indirizzo IP. In questo esempio, il server dei nomi \ns1.hwdomain.io\ viene risolto nell'indirizzo IP \192.168.5.21\, quindi ora il record PTR sarà \21\ e così via per altri nomi di dominio.

;
; BIND reverse data file for the local loopback interface
;
$TTL    604800
@       IN      SOA     ns1.hwdomain.io. admin.hwdomain.io. (
                              3         ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                         604800 )       ; Negative Cache TTL
;

; name servers - NS records
      IN      NS      ns1.hwdomain.io.
      IN      NS      ns2.hwdomain.io.

; PTR Records
21   IN      PTR     ns1.hwdomain.io.    ; 192.168.5.21
22   IN      PTR     ns2.hwdomain.io.    ; 192.168.5.22
100  IN      PTR     hwdomain.io.  ; 192.168.5.100
120  IN      PTR     mail.hwdomain.io.  ; 192.168.5.120

Salva e chiudi il file quando hai finito.

Ora esegui il seguente comando per controllare le configurazioni BIND e assicurati di non ricevere alcun messaggio di errore.

sudo named-checkconf

Quindi, esegui il seguente comando per controllare e verificare ogni file di zona che hai appena creato, il file di configurazione della zona diretta e della zona inversa. Se i tuoi file di zona non hanno errori, dovresti vedere un messaggio di output come \OK\. Se non ci sono errori, il comando ti mostrerà quale riga del file ha causato un errore.

sudo named-checkzone hwdomain.io /etc/bind/zones/db.hwdomain.io
sudo named-checkzone 5.168.192.in-addr.arpa /etc/bind/zones/db.192.168.5

Per completare la configurazione di BIND Master, eseguire il comando seguente per riavviare il servizio BIND e applicare le nuove modifiche alle configurazioni apportate.

sudo systemctl restart named

Configurazione di BIND Slave

Ora hai terminato la configurazione del Master BIND DNS Server. È tempo di impostare il server \ns2\ come secondario o salva del server DNS BIND.

Il server principale memorizza i file di zona che contengono la configurazione DNS del tuo dominio e gestiscono query ricorsive o iterative. Il server DNS secondario/slave memorizza temporaneamente i record DNS per un periodo di tempo e questi record DNS vengono trasferiti automaticamente dal server Master BIND.

Ora passa alla sessione del terminale \ns2\ e inizia a configurare il server \ns2\ come Secondario/Slave del server DNS BIND.

Eseguire il seguente comando per modificare il file di configurazione \/etc/bind/named.conf.options\

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

In cima alla riga, aggiungi la seguente configurazione. Questo creerà lo stesso ACL (Access Control List) del server principale.

acl "trusted" {
        192.168.5.21;    # ns1
        192.168.5.22;    # ns2 - or you can use localhost for ns2
        192.168.5.0/24;  # trusted networks
};

All'interno della riga \options {...};\, puoi modificare la configurazione come di seguito. Questa configurazione è sempre la stessa del server Master BIND DNS, e l'unica differenza qui è l'opzione \listen-on\ specificata nell'indirizzo IP del server \ns2\.

options {

        directory "/var/cache/bind";

        //listen-on-v6 { any; };        # disable bind on IPv6

        recursion yes;                 # enables resursive queries
        allow-recursion { trusted; };  # allows recursive queries from "trusted" - referred to ACL
        listen-on { 192.168.5.22; };   # ns2 IP address
        allow-transfer { none; };      # disable zone transfers by default

        forwarders {
                8.8.8.8;
                1.1.1.1;
        };
};

Salva e chiudi il file quando hai finito.

Successivamente, modifica il file di configurazione \/etc/bind/named.conf.local\ utilizzando il seguente comando per configurare il server \ns2\ come server DNS secondario/slave.

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

Aggiungere la seguente configurazione al file. Come puoi vedere, definiamo le zone forward e reverse, ma con il \tipo slave\ e definiamo il server DNS master \192.168.5.21\. Non è necessario creare il file di zona perché i record e i dati DNS verranno trasferiti automaticamente dal server DNS master e verranno archiviati temporaneamente per un periodo di tempo sul server DNS secondario/slave.

zone "hwdomain.io" {
    type slave;
    file "/etc/bind/zones/db.hwdomain.io";
    masters { 192.168.5.21; };           # ns1 IP address - master DNS
};


zone "5.168.192.in-addr.arpa" {
    type slave;
    file "/etc/bind/zones/db.192.168.5";
    masters { 192.168.5.21; };  # ns1 IP address - master DNS
};

Salva e chiudi il file quando hai finito.

Ora esegui il seguente comando per controllare e verificare la configurazione BIND e assicurati che tutte le configurazioni siano corrette. Quindi, puoi riavviare il servizio BIND \named\ sul server \ns2\ per applicare le nuove modifiche. E ora hai terminato la configurazione sul server \ns2\ come secondario/slave del server DNS BIND.

sudo named-checkconf
sudo systemctl restart named

Infine, esegui il seguente comando per controllare e verificare il servizio BIND \named\ sul server \ns2\. E assicurati che il servizio \named\ sia in esecuzione.

sudo systemctl status named

Verifica del server DNS dal computer client

Sul computer client, esistono diversi modi per configurare il resolver DNS. È possibile impostare il resolver DNS dal NetworkManager o dalla configurazione netplan. Tuttavia, il modo più semplice è impostare manualmente il resolver DNS tramite il file \/etc/resolv.conf\. Ciò consente di configurare un resolver DNS statico per le macchine client.

Esegui il comando seguente per rimuovere il file di collegamento predefinito \/etc/resolv.conf\ e crea un nuovo file utilizzando l'editor nano.

sudo unlink /etc/resolv.conf
sudo nano /etc/resolv.conf

Aggiungere la seguente configurazione al file. Nella seguente configurazione stiamo definendo tre diversi resolver, il master DNS BIND, il server DNS BIND secondario e il resolver DNS pubblico di Google. Quando la macchina client richiede informazioni sul nome di dominio, le informazioni verranno prese dal resolver DNS, dall'alto verso il basso.

nameserver 192.168.5.21
nameserver 192.168.5.22
nameserver 8.8.8.8
search hwdomain.io

Salva e chiudi il file quando hai finito.

Quindi, esegui il comando seguente per installare alcune utility DNS sul tuo computer client. In questo esempio, la macchina client è un sistema Ubuntu, quindi stiamo installando l'utilità DNS utilizzando il comando apt come di seguito.

sudo apt install dnsutils bind9-utils

Dopo aver installato l'utilità DNS sul tuo sistema, puoi iniziare a controllare tutti i record DNS dal computer client.

Esegui il comando dig qui sotto per controllare il nome di dominio \hwdomain.io\ e \mail.hwdomain.io\. E dovresti vedere che \hwdomain.io\ è risolto nell'indirizzo IP del server \192.168.5.100\, mentre il sottodominio \mail.hwdomain.io\ è gestito dall'indirizzo IP del server\192.168.5.120\.

dig hwdomain.io +short
dig hwdomain.io
dig mail.hwdomain.io +short
dig mail.hwdomain.io

Successivamente, esegui il comando dig come di seguito per controllare il gestore di posta per il nome di dominio \hwdomain.io\. E dovresti ottenere l'output che \mail.hwdomain.io\ è la posta gestita per il dominio principale \hwdomain.io\.

dig hwdomain.io MX +short
dig hwdomain.io MX

Ora puoi anche verificare la configurazione della zona inversa per il tuo nome di dominio utilizzando il comando nslookup.

Eseguire il comando nslookup di seguito per controllare e verificare il DNS inverso per alcuni indirizzi IP.

Ora dovresti vedere che l'indirizzo IP \192.168.5.21\ è invertito nel server dei nomi \ns1.hwdomain.io\, l'indirizzo IP \192.168.5.22\ è invertito nel server dei nomi \ns2 .hwdomain.io\, e l'indirizzo IP \192.168.5.100\ viene invertito nel nome di dominio principale \hwdomain.io\, e infine l'indirizzo IP \192.168.5.120\ viene invertito nel nome secondario -domain \mail.hwdomain.io.

nslookup 192.168.5.21
nslookup 192.168.5.22
nslookup 192.168.5.100
nslookup 192.168.5.120

Conclusione

Congratulazioni! durante questo tutorial hai imparato l'installazione e la configurazione di BIND DNS Server sui server Ubuntu 22.04. Hai configurato correttamente il server DNS BIND master-slave utilizzando due diversi server Ubuntu. Inoltre, hai appreso il comando di base di Dig e Nslookup per il controllo e la verifica dei record e della configurazione DNS.