10.1. Configurazione di Bind

Io a casa ho 2 PC, Pingu e Pinga, collegati in rete locale. Su Pingu a volte gira VmWare, cui in rete virtuale è assegnato l'IP 192.168.0.3. Inoltre accedo a Internet via modem analogico. Senza entrare nei dettagli, scopiazzatevi 'sti file e andate in pace (per altri dettagli leggete il DNS-Howto o gli immarcescibili & insostituibili Appunti di Informatica Libera, gli ex Appunti Linux). Potete cambiare i nomi (DOVETE anzi, se no Pingu e Pinga s'incavolano!) o aggiungerne altri, variando solo l'ultimo numero dell'IP, mentre per il resto lasciate tutto com'è, a meno di sapere dove mettere le mani. Anche se non avete una rete locale, i file vanno bene ugualmente, vi ritroverete con qualcosa in più che non pregiudicherà alcunchè, e vi spingerà al prossimo cambio di PC a tenervi quello attuale e collegarlo al nuovo, tanto più che non spendereste più di centomila lire tra schede di rete e cavi. Per prima cosa impostate il nome del vostro Linux-Box. Se non sapete cosa fare, sappiate che dovrete inventarvi un nome per il vostro PC e per il vostro dominio (consigliato NON sceglierne uno esistente, al massimo cambiate la parte finele, tipo: da yahoo.com a yahoo.cxm se proprio non avete fantasia...). Da utente root date il seguente comando:

hostname nome-macchina
     

ad esempio nel mio caso: hostname pingu (d'ora in poi ogni volta che vedete pingu.mrshark.home o simili, sostituiteli con i nomi scelti da voi). Impostate anche il file /etc/HOSTNAME come segue (alcune distribuzioni usano /etc/hostname):

=== file: /etc/HOSTNAME ===

pingu
     

oppure:

=== file: /etc/hostname ===

pingu
     

Nel caso abbiate una RedHat o derivate (Mandrake, Turbolinux ecc.), modificate il file /etc/sysconfig/network nella parte relativa a HOSTNAME e DOMAINNAME, altrimenti ad ogni riavvio l'hostname ritornerà localhost.localdomain :

=== file: /etc/sysconfig/network ===

...
HOSTNAME=pingu
DOMAINNAME=mrshark.home
     

Segue il file /etc/hosts, in questa versione già pronto per il protocollo ipv6. Dovreste cambiare solo gli elementi della riga 192.168.0.1. Il primo campo è l'IP della macchina, il secondo il nome completo, il terzo degli alias. NON ELIMINATE la riga 127...: serve per l'interfaccia di loopback, ossia un'interfaccia di rete fittizia che vi permette di collegarvi al vostro stesso PC come se fosse un normale computer di rete. Segue il file:

=== file: /etc/hosts ===

127.0.0.1       localhost.localdomain     localhost
192.168.0.1     pingu.mrshark.home        pingu 
::1             ip6-localhost             ip6-loopback
fe00::0         ip6-localnet
ff00::0         ip6-mcastprefix
ff02::1         ip6-allnodes
ff02::2         ip6-allrouters
ff02::3         ip6-allhosts
     

Nel file /etc/host.conf inserite:

=== file: /etc/host.conf ===

order hosts,bind
multi on
     

Nel file named.conf inserite quanto segue, cambiando i due mrshark.home alla fine con il vostro dominio, e inserendo nella sezione forwarders gli IP dei DNS del provider che usate.

Nota: Per conoscere in Windows gli IP dei DNS (in caso vengano assegnati in automatico), per poterli inserire in Linux, che invece li richiede obbligatoriamente, eseguite (tramite la voce Esegui... del Menu d'Avvio o Start) il comando winipcfg DOPO esservi collegati a internet, poi cliccate su Dettagli >> e guardate la seconda voce (DNS) della schermata che vi trovate davanti: quello che vedete è l'IP del DNS primario del provider che state usando, mentre premendo il tasto con i 2 punti ".." avrete l'IP del DNS secondario. Io ho messo 4 IP, visto che uso alternativamente 2 ISP diversi, ma dovrebbe funzionare anche con 2 soli IP, dato che di solito i DNS hanno libero accesso, e quindi potete contattare quelli di un ISP anche se ne usate un altro.

Commentate le 4 righe della direttiva forwarders e le 4 righe di zone "."... se avete solo una rete locale e non accedete a internet (ci sono delle differenze per alcune directory nella distribuzione Debian, quindi seguono 2 file, usate quello che si addice alla vostra distribuzione; in particolare Debian tiene il file named.conf nella directory /etc/bind/, mentre quasi tutte le altre distribuzioni lo tengono in /etc/):

=== file: /etc/named.conf REDHAT ===

options {
    directory "/var/named";
    allow-transfer {
        127.0.0.1;
        192.168.0.0/24;
    };
    allow-query {
        127.0.0.1;
        192.168.0.0/24;
    };
    forward first;
    forwarders {
        193.70.152.25;
        193.70.192.25;
        195.130.224.18;
        195.130.225.129;
    };
};
logging {
    category lame-servers { null; };
    category cname { null; };
};
zone "." {
        type hint;
        file "/var/named/db.root";
};
zone "localhost" {
        type master;
        file "/var/named/db.local";
};
zone "127.in-addr.arpa" {
        type master;
        file "/var/named/db.127";
};
zone "0.in-addr.arpa" {
        type master;
        file "/var/named/db.0";
};
zone "255.in-addr.arpa" {
        type master;
        file "/var/named/db.255";
};
zone "mrshark.home" {
    type master;
    file "/var/named/mrshark.home";
};
zone "0.168.192.in-addr.arpa" {
    type master;
    file "/var/named/mrshark.home.rev";
};
     

=== file: /etc/bind/named.conf DEBIAN ===

options {
    directory "/var/cache/bind";
    allow-transfer {
        127.0.0.1;
        192.168.0.0/24;
    };
    allow-query {
        127.0.0.1;
        192.168.0.0/24;
    };
    forward first;
    forwarders {
        193.70.152.25;
        193.70.192.25;
        195.130.224.18;
        195.130.225.129;
    };
};
logging {
    category lame-servers { null; };
    category cname { null; };
};
zone "." {
        type hint;
        file "/etc/bind/db.root";
};
zone "localhost" {
        type master;
        file "/etc/bind/db.local";
};
zone "127.in-addr.arpa" {
        type master;
        file "/etc/bind/db.127";
};
zone "0.in-addr.arpa" {
        type master;
        file "/etc/bind/db.0";
};
zone "255.in-addr.arpa" {
        type master;
        file "/etc/bind/db.255";
};
zone "mrshark.home" {
    type master;
    file "/etc/bind/mrshark.home";
};
zone "0.168.192.in-addr.arpa" {
    type master;
    file "/etc/bind/mrshark.home.rev";
};
     

Nota: TUTTI i file seguenti vanno inseriti in una stessa directory, che è /var/named/ nel caso di RedHat, o /etc/bind/ nel caso di Debian. Quindi riporto i file senza fare riferimento alle dir, sta a voi inserirli nel punto giusto in base alla vostra distribuzione. Naturalmente dovete cambiare, dovunque li vedete, il nome "mrshark.home" con quello del dominio che avete scelto di usare, e pingu, pinga e win con i nomi dei vostri pc.

Dovrete ora creare il file db.root. Questo file contiene gli indirizzi IP dei server DNS principali di Internet. Copiate il seguente (NON cambiate niente):

=== file: db.root ===

;       This file holds the information on root name servers needed to
;       initialize cache of Internet domain name servers
;       (e.g. reference this file in the "cache .  <file>"
;       configuration file of BIND domain name servers).
;
;       This file is made available by InterNIC registration services
;       under anonymous FTP as
;           file                /domain/named.root
;           on server           FTP.RS.INTERNIC.NET
;       -OR- under Gopher at    RS.INTERNIC.NET
;           under menu          InterNIC Registration Services (NSI)
;              submenu          InterNIC Registration Archives
;           file                named.root
;
;       last update:    Aug 22, 1997
;       related version of root zone:   1997082200
;
;
; formerly NS.INTERNIC.NET
;
.                        3600000  IN  NS    A.ROOT-SERVERS.NET.
A.ROOT-SERVERS.NET.      3600000      A     198.41.0.4
;
; formerly NS1.ISI.EDU
;
.                        3600000      NS    B.ROOT-SERVERS.NET.
B.ROOT-SERVERS.NET.      3600000      A     128.9.0.107
;
; formerly C.PSI.NET
;
.                        3600000      NS    C.ROOT-SERVERS.NET.
C.ROOT-SERVERS.NET.      3600000      A     192.33.4.12
;
; formerly TERP.UMD.EDU
;
.                        3600000      NS    D.ROOT-SERVERS.NET.
D.ROOT-SERVERS.NET.      3600000      A     128.8.10.90
;
; formerly NS.NASA.GOV
;
.                        3600000      NS    E.ROOT-SERVERS.NET.
E.ROOT-SERVERS.NET.      3600000      A     192.203.230.10
;
; formerly NS.ISC.ORG
;
.                        3600000      NS    F.ROOT-SERVERS.NET.
F.ROOT-SERVERS.NET.      3600000      A     192.5.5.241
;
; formerly NS.NIC.DDN.MIL
;
.                        3600000      NS    G.ROOT-SERVERS.NET.
G.ROOT-SERVERS.NET.      3600000      A     192.112.36.4
;
; formerly AOS.ARL.ARMY.MIL
;
.                        3600000      NS    H.ROOT-SERVERS.NET.
H.ROOT-SERVERS.NET.      3600000      A     128.63.2.53
;
; formerly NIC.NORDU.NET
;
.                        3600000      NS    I.ROOT-SERVERS.NET.
I.ROOT-SERVERS.NET.      3600000      A     192.36.148.17
;
; temporarily housed at NSI (InterNIC)
;
.                        3600000      NS    J.ROOT-SERVERS.NET.
J.ROOT-SERVERS.NET.      3600000      A     198.41.0.10
;
; housed in LINX, operated by RIPE NCC
;
.                        3600000      NS    K.ROOT-SERVERS.NET.
K.ROOT-SERVERS.NET.      3600000      A     193.0.14.129
;
; temporarily housed at ISI (IANA)
;
.                        3600000      NS    L.ROOT-SERVERS.NET.
L.ROOT-SERVERS.NET.      3600000      A     198.32.64.12
;
; housed in Japan, operated by WIDE
;
.                        3600000      NS    M.ROOT-SERVERS.NET.
M.ROOT-SERVERS.NET.      3600000      A     202.12.27.33
; End of File
     

I due file seguenti corrispondono all'interfaccia di loopback e suo reverse, non hanno bisogno di essere modificati:

=== file: db.local ===

;
; BIND data file for local loopback interface
;
$TTL    604800
@   IN  SOA localhost. root.localhost. (
                  1     ; Serial
             604800     ; Refresh
              86400     ; Retry
            2419200     ; Expire
             604800 )   ; Negative Cache TTL
;
@   IN  NS  localhost.
@   IN  A   127.0.0.1
     

=== file: db.127 ===

;
; BIND reverse data file for local loopback interface
;
$TTL    604800
@   IN  SOA localhost. root.localhost. (
                  1     ; Serial
             604800     ; Refresh
              86400     ; Retry
            2419200     ; Expire
             604800 )   ; Negative Cache TTL
;
@   IN  NS  localhost.
1.0.0   IN  PTR localhost.
     

I due file seguenti corrispondono all'indirizzo di broadcast e suo reverse, non hanno bisogno di essere modificati:

=== file: db.0 ===

;
; BIND data file for broadcast zone
;
$TTL    604800
@   IN  SOA localhost. root.localhost. (
                  1     ; Serial
             604800     ; Refresh
              86400     ; Retry
            2419200     ; Expire
             604800 )   ; Negative Cache TTL
;
@   IN  NS  localhost.
     

=== file: db.255 ===

;
; BIND reverse data file for broadcast zone
;
$TTL    604800
@   IN  SOA localhost. root.localhost. (
                  1     ; Serial
             604800     ; Refresh
              86400     ; Retry
            2419200     ; Expire
             604800 )   ; Negative Cache TTL
;
@   IN  NS  localhost.
     

I due file seguenti corrispondono alla zona su cui il vostro dns avrà autorità e suo reverse, modificate ovunque vedete nomi riferiti ai miei pc:

=== file: mrshark.home ===

$ORIGIN mrshark.home.
$TTL 1D
@       IN      SOA     pingu.mrshark.home. root.pingu.mrshark.home. (
        1    ; Serial
        8H   ; Refresh
        2H   ; Retry
        4W   ; Expire
        1D ) ; Default TTL
;
@           IN  MX  10  pingu.mrshark.home.
@           IN  NS      pingu.mrshark.home.
@           IN  A       192.168.0.1

pingu       IN  A       192.168.0.1 
pinga       IN  A       192.168.0.2
win         IN  A       192.168.0.129
localhost   IN  A       127.0.0.1

www         IN  CNAME   pingu
ftp         IN  CNAME   pingu
     

=== file: mrshark.home.rev ===

$ORIGIN 0.168.192.in-addr.arpa.
$TTL 1D
@       IN      SOA     pingu.mrshark.home. root.pingu.mrshark.home. (
        1    ; Serial
        8H   ; Refresh
        2H   ; Retry
        4W   ; Expire
        1D ) ; Default TTL

@           IN  NS      pingu.mrshark.home.
1           IN  PTR     pingu.mrshark.home.
2           IN  PTR     pinga.mrshark.home.
129         IN  PTR     win.mrshark.home.
     

L'ultimo file è quello che dice al sistema a quale dns rivolgersi, modificate i due domini indicati:

=== file: resolv.conf ===

search mrshark.home
domain mrshark.home
nameserver 127.0.0.1
nameserver 192.168.0.1
     

Salvate tutto, riavviate il sistema o riavviate BIND (da utente root: /etc/rc.d/init.d/named restart per RedHat, /etc/init.d/bind restart per Debian). Ora incominciate a fare le vostre prove. Esempi di prove per il mio PC sono (dal prompt di nslookup ">"): 192.168.0.1, 192.168.0.2, www.mrshark.home, ftp.mrshark.home, pingu.mrshark.home, pinga.mrshark.home, pingu, pinga. Se date l'IP dovete ottenere il nome e viceversa. Dopo esservi connessi a Internet, provate anche a fare qualche risoluzione di nomi di siti, p.e. www.yahoo.it o www.mrshark.it ;-).

Nota: Nota per l'uso di programmi che gestiscono in automatico il file /etc/resolv.conf, tipo kppp o wvdial: se avete impostato e testato completamente il vostro DNS, nelle impostazioni di questi programmi, invece di indicare il dominio e gli IP dei DNS che vi vengono forniti dal provider, inserite il VOSTRO dominio e come IP del DNS inserite 127.0.0.1, ricordando però di inserire i VERI IP dei DNS del provider nella sezione forwarders del file named.conf, in modo che il vostro DNS possa interrogare quelli esterni nel caso non riesca a gestire in proprio la risoluzione dei nomi.