Ricerca nel sito web

Come installare un server DNS con BIND su Rocky Linux 9


Su questa pagina

  1. Prerequisiti
  2. Preparazione del sistema
  3. Installazione dei pacchetti BIND
  4. Configurazione del server DNS BIND principale
    1. Configurazione di base
    2. Impostazione delle zone

    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 e 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.

    Questo tutorial ti mostrerà come configurare il server DNS con BIND su un server Rocky Linux 9. BIND è uno dei software server DNS più popolari che offre varie funzionalità come DNS autorevole, DNS solo cache, bilanciamento del carico DNS di base, DNS diviso, DNSSEC, IPv6 e molti altri.

    Prerequisiti

    Con questo tutorial, configurerai e implementerai un BIND DNS Server con architettura Master-Slave. Quindi, avrai bisogno di due server Rocky Linux. Inoltre, avrai bisogno dei privilegi di root/amministratore su ogni server.

    Per impostare un server DNS pubblico in grado di gestire il tuo dominio (server DNS autorevole), devi anche avere il nome di dominio registrato e i Glue Records configurati.

    Inoltre, in questa guida, supponiamo di avere SELinux in esecuzione con la modalità permissiva.

    Preparazione del sistema

    Per iniziare con questa guida, imposterai il nome di dominio completo (Fully Qualified Domain Name) corretto su ciascuno dei tuoi server Rocky Linux. Questo può essere fatto tramite l'utilità di comando hostnamectl e il file /etc/hosts.

    Di seguito sono riportati i server di dettaglio che verranno utilizzati come esempio per questa guida:

    Hostname    IP Address          FQDN                    Used as
    ---------------------------------------------------------------
    ns1         192.168.5.100       ns1.hwdomain.io         Master
    ns2         192.168.5.120       ns2.hwdomain.io         Slave

    Sul server principale, esegui l'utility di comando hostnamectl riportata di seguito per impostare fqdn su ns1.hwdomain.io.

    sudo hostnamectl set-hostname ns1.hwdomain.io

    Di seguito devi anche eseguire il comando hostnamectl sul server Slave per impostare fqdn su ns2.hwdomain.io.

    sudo hostnamectl set-hostname ns2.hwdomain.io

    Successivamente, apri il file /etc/hosts su entrambi i server Master e Slave utilizzando il seguente comando nano editor.

    sudo nano /etc/hosts

    Aggiungi la seguente riga al file.

    192.168.5.100   ns1.hwdomain.io     ns1
    192.168.5.120   ns2.hwdomain.io     ns2

    Salva il file ed esci dall'editor quando hai finito.

    Infine, esegui il seguente comando hostname per verificare fqdn su ogni server. Dovresti vedere che il server principale ha l'fqdn ns1.hwdomain.io e il server slave ha l'fqdn ns2.hwdomain.io.

    sudo hostname -f

    Di seguito è riportato l'output del server principale.

    E sotto c'è l'output dal server Slave.

    Con fqdn configurato, sei pronto per installare BIND sui server Rocky Linux.

    Installazione dei pacchetti BIND

    Per impostazione predefinita, il repository Rocky Linux AppStream fornisce l'ultima versione stabile del pacchetto BIND. Al momento in cui scriviamo, l'attuale versione stabile di BIND è la v9.16.

    In questo passaggio, installerai i pacchetti BIND su entrambi i server Master e Slave. Quindi configurare BIND per l'esecuzione solo su IPv4 e configurare il firewalld per consentire la porta DNS.

    Eseguire il comando dnf seguente per installare i pacchetti BIND su entrambi i server Master e Slave. Quando viene richiesta la conferma, inserire y per confermare e premere INVIO per procedere.

    sudo dnf install bind bind-utils

    Dopo aver installato i pacchetti BIND, apri la configurazione /etc/sysconfig/named utilizzando il seguente comando nano editor.

    sudo nano /etc/sysconfig/named

    Aggiungi il valore predefinito OPTIONS=.. con la seguente riga. Questa opzione di comando per bind o named eseguirà BIND solo su IPv4.

    OPTIONS="-4"

    Salva il file ed esci dall'editor quando hai finito.

    Successivamente, esegui l'utilità di comando systemctl riportata di seguito per avviare e abilitare il servizio BIND named. Il servizio denominato dovrebbe ora essere in esecuzione e abilitato, che verrà avviato automaticamente all'avvio.

    sudo systemctl start named
    sudo systemctl enable named

    Ora verifica il servizio denominato per assicurarti che sia in esecuzione e abilitato tramite il seguente comando.

    sudo systemctl is-enabled named
    sudo systemctl status named

    Riceverai un output simile al seguente: il servizio denominato BIND è abilitato ed è attualmente in esecuzione.

    Con il servizio denominato BIND in esecuzione, dovrai aggiungere la porta DNS al firewalld, che è abilitato e in esecuzione per impostazione predefinita su Rocky Linux.

    Eseguire l'utilità di comando firewall-cmd riportata di seguito per aggiungere il servizio DNS al file firewalld. Quindi ricaricare il firewalld per applicare le modifiche.

    sudo firewall-cmd --add-service=dns --permanent
    sudo firewall-cmd --reload

    Se verifichi l'elenco dei servizi abilitati su firewalld, dovresti vedere che il servizio DNS è abilitato. Esegui il comando firewall-cmd di seguito per controllare l'elenco dei servizi.

    sudo firewall-cmd --list-services

    Produzione:

    A questo punto, hai terminato la configurazione di fqdn, installato i pacchetti BIND e configurato anche firewalld. Con questo in mente, ora puoi iniziare a configurare BIND Master sul server Master.

    Configurazione del server DNS BIND principale

    In questo passaggio, configurerai il server BIND Master utilizzando Rocky Linux ns1.hwdomain.io e l'indirizzo IP del server è 192.168.5.100. Assicurati di eseguire i seguenti comandi sul server principale.

    Configurare il server BIND Master con i seguenti passaggi:

    • La configurazione di base includerà la configurazione degli ACL (Access Control List), l'impostazione dell'indirizzo IP per eseguire il servizio BIND, l'impostazione dei forwarder e molto altro.
    • Impostazione delle zone: è qui che crei le configurazioni per il tuo dominio. Ciò include la configurazione del dominio principale e la configurazione del DNS inverso.

    Configurazione di base

    La configurazione predefinita di BIND sulla distribuzione basata su RHEL è disponibile in /etc/named.conf.

    Ora apri il file /etc/named.conf usando il seguente comando nano editor di seguito.

    sudo nano /etc/named.conf

    Modificare la configurazione predefinita con le seguenti righe.

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

    options {
            listen-on port 53 { 192.168.5.100; };

            // listen-on-v6 port 53 { ::1; };
            
            directory       "/var/named";
            dump-file       "/var/named/data/cache_dump.db";
            statistics-file "/var/named/data/named_stats.txt";
            memstatistics-file "/var/named/data/named_mem_stats.txt";
            secroots-file   "/var/named/data/named.secroots";
            recursing-file  "/var/named/data/named.recursing";
            
            allow-query     { localhost; trusted; };

            recursion yes;
            allow-recursion { trusted; };
            allow-transfer { localhost; 192.168.5.120; };

            forwarders {
                    8.8.8.8;
                    1.1.1.1;
            };

    Salva il file ed esci dall'editor quando hai finito.

    Con questa configurazione, configurerai BIND con le seguenti configurazioni:

    • Imposta un ACL attendibile che consenta qualsiasi query dalle reti locali.
    • Esegui il servizio BIND su 192.168.5.100 con la porta predefinita 53.
    • Abilita la ricorsione e consenti la ricorsione dalle reti ACL attendibili.
    • Consenti il trasferimento delle zone al server Slave con indirizzo IP 192.168.5.120.
    • Imposta i forwarder con il server DNS pubblico 1.1.1.1 di Cloudflare e 8.8.8.8 di Google.

    Successivamente, esegui il comando seguente per verificare la configurazione di BIND /etc/named.conf.

    sudo named-checkconf /etc/named.conf

    Infine, eseguire l'utilità di comando systemctl di seguito per riavviare il servizio denominato BIND e applicare le modifiche.

    sudo systemctl restart named

    Ora hai terminato la configurazione di base del BIND DNS Server.

    Impostazione delle zone

    Ora imposterai le zone con il BIND DNS Server. Creerai un nuovo server DNS con l'indirizzo ns1.hwdomain.io e ns2.hwdomain.io.

    Per iniziare, apri la configurazione di BIND /etc/named.conf tramite il comando nano editor di seguito.

    sudo nano /etc/named.conf

    Aggiungi la seguente configurazione in fondo alla riga.

    include "/etc/named/zones.conf.local";

    Salva il file ed esci dall'editor quando hai finito.

    Successivamente, crea una nuova configurazione /etc/named/zones.conf.local utilizzando il nano editor di seguito.

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

    Aggiungere le seguenti righe al file.

    zone "hwdomain.io" {
        type master;
        file "db.hwdomain.io";        # zone file path
        allow-transfer { 192.168.5.120; };           # ns2 IP address - secondary DNS
    };


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

    Salva e chiudi il file quando hai finito.

    Con questa configurazione, definirai le seguenti configurazioni:

    • Crea due zone per il dominio hwdomain.io e il DNS inverso 5.168.192.in-addr.arpa.
    • Entrambe le zone digitano come master.
    • Consenti il trasferimento di zona al server DNS slave che verrà eseguito sull'indirizzo IP del server 192.168.5.120.

    Successivamente, crea una nuova configurazione della zona DNS, /var/named/db.hwdomain.io, utilizzando il seguente comando nano editor.

    sudo nano /var/named/db.hwdomain.io

    Aggiungere le seguenti righe al file.

    ;
    ; 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.100
    ns2.hwdomain.io.          IN      A       192.168.5.120

    ; 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.50
    mail.hwdomain.io.       IN      A      192.168.5.15

    Salva e chiudi il file quando hai finito.

    In questo esempio, imposterai le zone con le seguenti configurazioni:

    • Definisci i record del server dei nomi ns1.hwdomain.io con l'indirizzo IP 192.168.5.100 e ns2.hwdomain.io con l'indirizzo IP 192.168.5.120.
    • Definisci due domini aggiuntivi, hwdomain.io, che verranno risolti nell'indirizzo IP del server 192.168.5.50 e il dominio mail.hwdomain.io nell'indirizzo IP 192.168.5.15.
    • Creerai anche un record MX per il dominio hwdomain.io che verrà gestito dal server di posta mail.hwdomain.io.

    Successivamente, inizierai a configurare il DNS inverso per il dominio hwdomain.io.

    Crea una nuova configurazione DNS inversa /var/named/db.192.168.5 utilizzando il comando nano editor di seguito.

    sudo nano /var/named/db.192.168.5

    Aggiungere le seguenti righe al file.

    ;
    ; 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
    100   IN      PTR     ns1.hwdomain.io.    ; 192.168.5.100
    120   IN      PTR     ns2.hwdomain.io.    ; 192.168.5.120
    50    IN      PTR     hwdomain.io.        ; 192.168.5.50
    15    IN      PTR     mail.hwdomain.io.   ; 192.168.5.15

    Salva e chiudi il file quando hai finito.

    Con questa configurazione, imposterai i record DNS o PTR inversi come di seguito.

    • Nella configurazione del DNS inverso, definirai anche il server dei nomi ns1.hwdomain.io e ns2.hwdomain.io.
    • Ogni configurazione DNS inversa utilizza l'ultimo numero dell'indirizzo IP che viene risolto in ciascun dominio. In questo esempio, il server dei nomi ns1.hwdomain.io con indirizzo IP 192.168.5.100 e il record PTR dovrebbe essere 100.
    • Il resto dei record PTR è lo stesso descritto sopra.

    A questo punto, hai creato la configurazione di due zone per il dominio hwdomain.io e creato un name server ns1.hwdomain.io e ns2.hwdomain.io.

    Ora esegui il comando chmod di seguito per modificare la proprietà di entrambe le configurazioni di zona.

    sudo chown -R named: /var/named/{db.hwdomain.io,db.192.168.5}

    Quindi verifica i file di configurazione della zona tramite l'utilità di comando named-checkconf di seguito.

    sudo named-checkconf
    sudo named-checkzone hwdomain.io /var/named/db.hwdomain.io
    sudo named-checkzone 5.168.192.in-addr.arpa /var/named/db.192.168.5

    Se hai le configurazioni BIND corrette, riceverai l'output come nella seguente schermata.

    Infine, esegui il comando systemctl di seguito per riavviare il servizio denominato BIND e applicare le modifiche. Quindi, verificare lo stato del servizio BIND per assicurarsi che il servizio sia in esecuzione.

    sudo systemctl restart named
    sudo systemctl status named

    Riceverai un output simile al seguente: il servizio BIND named è in esecuzione e hai terminato la configurazione di BIND Master.

    Nella fase successiva, configurerai il server BIND Slave.

    Configurazione del server DNS BIND secondario

    Dopo aver configurato il server DNS Master, inizierai a configurare il server BIND Slave sul server ns2.hwdomain.io con l'indirizzo IP 192.168.5.120.

    La configurazione di base per named.conf è simile a BIND Master e per i file di zona è possibile definire il nome del file senza creare un file effettivo sul server BIND Slave.

    Prima di iniziare, assicurati di eseguire i seguenti comandi sul server BIND Slave.

    Ora apri la configurazione BIND /etc/named.conf sul server Slave tramite il comando nano editor di seguito.

    sudo nano /etc/named.conf

    Modificare la configurazione predefinita con le seguenti righe.

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

    options {
            listen-on port 53 { 192.168.5.120; };

            //listen-on-v6 port 53 { ::1; };
            
            directory       "/var/named";
            dump-file       "/var/named/data/cache_dump.db";
            statistics-file "/var/named/data/named_stats.txt";
            memstatistics-file "/var/named/data/named_mem_stats.txt";
            secroots-file   "/var/named/data/named.secroots";
            recursing-file  "/var/named/data/named.recursing";

            allow-query     { any; };

            recursion yes;
            allow-recursion { trusted; };
            allow-transfer { none; };

            forwarders {
                    8.8.8.8;
                    1.1.1.1;
            };

    };

    Le impostazioni sono simili al server BIND Master e di seguito sono riportate alcune differenze nelle configurazioni.

    • Il servizio BIND verrà eseguito sull'indirizzo IP 192.168.5.120 sul server Slave.
    • La ricorsione è abilitata, ma il permesso di trasferimento è configurato su nessuno.

    Ora aggiungi la seguente riga alla fine del file named.conf per definire le zone.

    include "/etc/named/zones.conf.local";

    Salva il file ed esci dall'editor quando hai finito.

    Successivamente, crea una nuova configurazione /etc/named/zones.conf.local utilizzando il seguente comando nano editor.

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

    Aggiungere le seguenti righe al file.

    zone "hwdomain.io" {
        type slave;
        file "slaves/db.hwdomain.io";
        masters { 192.168.5.100; };           # ns1 IP address - master DNS
    };


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

    Salva e chiudi il file quando hai finito.

    Con questo, definirai alcune configurazioni di seguito sul server BIND Slave:

    • Definisci due zone per il dominio hwdomain.io e il suo DNS inverso.
    • Entrambi i tipi di zone sono slave.
    • Il file di zona per ciascuno verrà preso dalla directory /var/named/slaves, che viene trasferita dal server master BIND.

    Successivamente, eseguire la seguente utilità di comando named-checkconf per verificare le configurazioni BIND. Quindi, riavviare il servizio denominato BIND sul server slave tramite il comando systemctl come di seguito.

    sudo named-checkconf
    sudo systemctl restart named

    Non avrai alcun messaggio di errore se hai una corretta configurazione di BIND.

    Infine, esegui il seguente comando systemctl per verificare il servizio BIND named sul server slave per assicurarti che il servizio sia in esecuzione.

    sudo systemctl status named

    Ora riceverai l'output simile al seguente: il servizio denominato BIND è in esecuzione sul server slave BIND.

    A questo punto hai terminato l'installazione di BIND DNS con l'architettura Master-Slave. Ora sarai pronto per iniziare il test dal computer client.

    Test dal cliente

    Questo esempio utilizza un sistema Debian come macchina client, quindi installa alcuni pacchetti di seguito tramite APT prima di iniziare.

    sudo apt install dnsutils bind9-utils

    Immettere y quando viene richiesta la conferma e premere INVIO per procedere.

    Successivamente, esegui il seguente comando 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 Cloudflare. 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.100
    nameserver 192.168.5.120
    nameserver 1.1.1.1
    search hwdomain.io

    Salva e chiudi il file quando hai finito.

    Ora sei pronto per verificare il tuo server 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.50\, mentre il sottodominio \mail.hwdomain.io\ è gestito dall'indirizzo IP del server\192.168.5.15\.

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

    Verifica del nome di dominio hwdomain.io.

    verificando il sottodominio mail.hwdomain.io.

    Successivamente, esegui il comando dig qui sotto 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

    Puoi 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.100\ è invertito nel server dei nomi \ns1.hwdomain.io\, l'indirizzo IP\192.168.5.120\ viene invertito nel server dei nomi \ns2.hwdomain.io\ e nell'indirizzo IP \192.168.5.50 \ viene invertito nel nome di dominio principale \hwdomain.io\, e infine l'indirizzo IP \192.168.5.15\ viene invertito nel sotto- dominio \mail.hwdomain.io.

    nslookup 192.168.5.100
    nslookup 192.168.5.120
    nslookup 192.168.5.50
    nslookup 192.168.5.15

    A questo punto, hai terminato l'installazione del BIND DNS Server con architettura Master-Slave su Rocky Linux. Hai anche imparato a testare il server DNS tramite varie utilità di comando come dig e nslookup.

    Conclusione

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