7.2. Configurazione e amministrazione di un Domain Name Server (DNS)

Sul mio posto di lavoro, usiamo Linux come server DNS. E funziona proprio bene. Questa sezione descriverà la configurazione delle tabelle DNS usando il pacchetto BIND 8.x incluso nella distribuzione Red Hat.

Nota

La versione 5.1 e precedenti di Red Hat 5.1 usavano il pacchetto BIND 4.x, il quale utilizzava un formato leggermente diverso per il file di configurazione. BIND 8.x offre maggiori funzionalità rispetto a BIND 4.x, e dato che 4.x non viene più sviluppato, dovrete probabilmente aggiornare il pacchetto BIND all'ultima versione. Installate semplicemente il pacchetto RPM di BIND (si veda la Sezione 10.1 per maggiori informazioni sull'uso dell'utilità) e convertite poi il vostro file di configurazione nel nuovo formato.

Fortunatamente il processo di conversione è semplice. Nella directory della documentazioni che accompagna BIND (per esempio, "/usr/doc/bind-8.1.2/" per BIND versione 8.1.2), c'è un file chiamato "named-bootconf.pl", che è un programma Perl eseguibile. Posto che abbiate Perl installato sul vostro sistema, potete usare questo programma per fare la conversione. Digitale i seguenti comandi da root:

cd /usr/doc/bind-8.1.2
./named-bootconf.pl < /etc/named.boot > /etc/named.conf
mv /etc/named.boot /etc/named.boot-obsolete

Dovreste avere adesso un file "/etc/named.conf" che funziona con BIND 8.x. Le vostre tabelle DNS non avranno bisogno di modifiche per la nuova versione di BIND, poiché il formato rimane lo stesso.

La configurazione dei servizi DNS sotto Linux richiede i seguenti passi:

  1. Per attivare i servizi DNS, il file the "/etc/host.conf" dovrebbe apparire come questo:

    # Lookup names via /etc/hosts first, then by DNS query
    order hosts, bind
    # We don't have machines with multiple addresses
    multi on
    # Check for IP address spoofing
    nospoof on
    # Warn us if someone attempts to spoof
    alert on

    L'attivazione di un controllo extra per lo spoofing migliora le prestazione dei lookup DNS (anche di pochissimo), quindi se non vi importa di ciò potrete disabilitare "nospool" e "alert".

  2. Configurate il file "/etc/hosts" secondo i vostri bisogni. Di solito c'è poco da fare qui, ma per migliorare le prestazioni potete aggiungere qualunque host a cui accedete spesso (come i server locali) per evitare di compiere lookup DNS si di essi.

  3. Il file "/etc/named.conf" deve essere configurato in modo da puntare alla vostre tabelle DNS come nell'esempio sotto.

    Nota

    (Gli indirizzi IP sono solo esempi e devono essere sostituite con quelli della vostra classe!):

    options {
    	// le tabelle DNS si trovano nella direcoty /var/named
            directory "/var/named";
    
    	// Inoltra ogni richiesta non risolta al nosto ISP name server
            // (Questo è solo un esempio di indirizzo IP -- non usatelo!)
    	forwarders {
    		123.12.40.17;
    	};
    
    	/*
    	 * Se c'è un firewall tra voi e i nameserver con cui volete dialogare
             * dovete decommentare la direttiva query-source
             * sotto.  Versioni precedenti di BIND
             * usavano la porta 53, ma BIND 8.1 usa un porta senza privilegi
             * predefiniti.
    	 */
    	// query-source address * port 53;
    };
    
    // Attiva il caching e carica le informazioni del root server
    zone "named.root" {
    	type hint;
    	file "";
    };
    
    // Tutte le nostro informazioni DNS sono memorizzate in /var/named/mydomain_name.db
    // (es. if mydomain.name = foobar.com then use foobar_com.db)
    zone "mydomain.name" {
    	type master;
    	file "mydomain_name.db";
    	allow-transfer { 123.12.41.40; };
    };
    
    // Lookup inversi per 123.12.41.*, .42.*, .43.*, .44.* class C's
    // (sono solo esempi di Classe C -- non usateli!)
    zone "12.123.IN-ADDR.ARPA" {
    	type master;
    	file "123_12.rev";
    	allow-transfer { 123.12.41.40; };
    };
    
    // Lookup inversi per 126.27.18.*, .19.*, .20.* class C's
    // (sono solo esempi di Classe C -- non usateli!)
    zone "27.126.IN-ADDR.ARPA" {
    	type master;
    	file "126_27.rev";
    	allow-transfer { 123.12.41.40; };
    };

    Suggerimento

    Suggerimento: Prendete nota delle opzioni di allow-transfer, che limitano i trasferimenti di zona DNS a un dato indirizzo IP. Nel nostro esempio, permettiamo all'host 123.12.41.40 (probabilmente uno slave DNS server nel nostro dominio) di richiedere trasferimenti di zone. Se omettete questa opzione, chiunque su Internet potrà richiedere tali trasferimenti. Dato che queste informazioni vengono spesso usate da spammer e IP spoofer, vi raccomando caldamente di limitare i trasferimenti di zona eccetto per il vostro slave DNS server, oppure usate l'indirizzo di loopback "127.0.0.1".

  4. Adesso potete impostare le vostre tabelle DNS nella directory "var/named/" come configurato al punto tre nel file "/etc/named.conf". Configurare i file del database DNS per la prima volta è il compito più gravoso e va oltre gli scopi di questa documentazione. Ci sono molte guide sia online sia in formato cartaceo. Per maggiori informazioni potete far riferimento ad esse. Comunque vi mostro qualche esempio:

    Alcune informazioni presenti nel file di forward lookup "/var/named/mydomain_name.db":

    ; This is the Start of Authority (SOA) record.  Contains contact
    ; & other information about the name server.  The serial number
    ; must be changed whenever the file is updated (to inform secondary
    ; servers that zone information has changed).
        @ IN SOA mydomain.name.  postmaster.mydomain.name. (
    	19990811	; Serial number
    	3600		; 1 hour refresh
    	300		; 5 minutes retry
    	172800		; 2 days expiry
    	43200 )		; 12 hours minimum
    
    ; List the name servers in use.  Unresolved (entries in other zones)
    ; will go to our ISP's name server isp.domain.name.com
    	IN NS		mydomain.name.
    	IN NS		isp.domain.name.com.
    
    ; This is the mail-exchanger.  You can list more than one (if
    ; applicable), with the integer field indicating priority (lowest
    ; being a higher priority)
    	IN MX		mail.mydomain.name.
    
    ; Provides optional information on the machine type & operating system
    ; used for the server
    	IN HINFO	Pentium/350	LINUX
    
    ; A list of machine names & addresses
        spock.mydomain.name.    IN A    123.12.41.40   ; OpenVMS Alpha
        mail.mydomain.name.     IN A    123.12.41.41   ; Linux (main server)
        kirk.mydomain.name.     IN A    123.12.41.42   ; Windows NT (blech!)
    
    ; Including any in our other class C's
        twixel.mydomain.name.   IN A    126.27.18.161  ; Linux test machine
        foxone.mydomain.name.   IN A    126.27.18.162  ; Linux devel. kernel
    
    ; Alias (canonical) names
        gopher	IN CNAME	mail.mydomain.name.
        ftp		IN CNAME	mail.mydomain.name.
        www		IN CNAME	mail.mydomain.name.

    Alcune informazioni nel file di reverse lookup "/var/named/123_12.rev":

    ; This is the Start of Authority record.  Same as in forward lookup table.
        @ IN SOA mydomain.name.  postmaster.mydomain.name. (
    	19990811	; Serial number
    	3600		; 1 hour refresh
    	300		; 5 minutes retry
    	172800		; 2 days expiry
    	43200 )		; 12 hours minimum
    
    ; Name servers listed as in forward lookup table
    	IN NS		mail.mydomain.name.
    	IN NS		isp.domain.name.com.
    
    ; A list of machine names & addresses, in reverse.  We are mapping
    ; more than one class C here, so we need to list the class B portion
    ; as well.
        40.41	IN PTR    spock.mydomain.name.
        41.41	IN PTR    mail.mydomain.name.
        42.41	IN PTR    kirk.mydomain.name.
    
    ; As you can see, we can map our other class C's as long as they are
    ; under the 123.12.* class B addresses
        24.42	IN PTR    tsingtao.mydomain.name.
        250.42	IN PTR    redstripe.mydomain.name.
        24.43	IN PTR    kirin.mydomain.name.
        66.44	IN PTR    sapporo.mydomain.name.
    
    ; No alias (canonical) names should be listed in the reverse lookup
    ; file (for obvious reasons).

    Può essere creato qualunque altro file di lookup inverso che ha bisogno di mappare gli indirizzi in un diversa classe B (come 126.27.*), e dovrebbe essere simile all'esempio sopra.

  5. Assicuratevi che il demone named sia in esecuzione. Questo demone viene, di solito, avviato dal file "/etc/rc.d/init.d/named" al momento del boot del sistema. Potete anche avviarlo e fermarlo manualmente; digitate rispettivamente "named start" e "named stop".

  6. Qualunque cambiamento venga fatto alle tabelle DNS, il server DNS deve essere riavviato digitando "/etc/rc.d/init.d/named restart". Se volete, poi, testare i cambiamenti che avete apportato, potete utilizzare uno strumento come "nslookup" per interrogare la macchina che avete aggiunto o cambiato.

Maggiori informazioni relative alla configurazione dei servizi DNS possono essere reperito nel "DNS-HOWTO" su http://metalab.unc.edu/Linux/HOWTO/DNS-HOWTO-5.html. [NdT: disponibile in italiano su http://it.tldp.org/HOWTO/DNS-HOWTO-5.html]