Questo tutorial spiega come installare e configurare BIND, il server DNS più
utilizzato su internet.
| Keyword | Spiegazione | Esempio |
|---|---|---|
Per prima cosa, installare
# emerge net-dns/bind
La prima cosa da configurare è il file
options {
directory "/var/bind";
listen-on-v6 { none; };
listen-on port 53 { 127.0.0.1; IP_LOCALE; };
pid-file "/var/run/named/named.pid";
};
La seconda parte di
view "interna" {
match-clients { RETE_LOCALE; localhost; };
recursion yes;
zone "DOMINIO" {
type master;
file "pri/DOMINIO.internal";
allow-transfer { any; };
};
};
La terza parte di
view "esterna" {
match-clients { any; };
recursion no;
zone "." IN {
type hint;
file "named.ca";
};
zone "127.in-addr.arpa" IN {
type master;
file "pri/127.zone";
allow-update { none; };
notify no;
};
zone "DOMINIO" {
type master;
file "pri/DOMINIO.external";
allow-query { any; };
allow-transfer { SERVER_DNS_SLAVE; };
};
};
La parte finale di
logging {
channel default_syslog {
file "/var/log/named/named.log" versions 3 size 5m;
severity debug;
print-time yes;
print-severity yes;
print-category yes;
};
category default { default_syslog; };
};
La cartella
# mkdir -p /var/log/named/ # chmod 770 /var/log/named/ # touch /var/log/named/named.log # chmod 660 /var/log/named/named.log # chown -R named /var/log/named/ # chgrp -R named /var/log/named/
Saranno utilizzati i nomi host e gli indirizzi IP nell'immagine della rete di esempio. C'è da notare che quasi tutti (non tutti) i domini finiscono con "." (punto).
$TTL 2d @ IN SOA ns.DOMINIO. ADMIN.DOMINIO. ( MODIFICATION ; serial 3h ; refresh 1h ; retry 1w ; expiry 1d ) ; minimum DOMINIO. IN MX 0 mail.DOMINIO. DOMINIO.IN TXT "v=spf1 ip4:YOUR_PUBLIC_IP/32 mx ptr mx:mail.DOMINIO ~all" DOMINIO. IN NS ns.DOMINIO. DOMINIO. IN NSi SERVER_DNS_SLAVE www.DOMINIO. IN A 192.168.1.3 ns.DOMINIO. IN A 192.168.1.5 posta.DOMINIO. IN A 192.168.1.3 router.DOMINIO. IN A 192.168.1.1 hell.DOMINIO. IN A 192.168.1.3 heaven.DOMINIO. IN A 192.168.1.5 desktop.DOMINIO. IN A 192.168.1.4
Ora qui ci sono soltanto i sottodomini da utilizzare per i client esterni (www, posta e ns).
$TTL 2d @ IN SOA ns.DOMINIO. ADMIN.DOMINIO. ( MODIFICATION ;serial 3h ;refresh 1h ;retry 1w ;expiry 1d ) ;minimum DOMINIO. IN MX 0 mail.DOMINIO. DOMINIO. IN TXT "v=spf1 ip4:IP_PUBBLICO/32 mx ptr mx:mail.DOMINIO ~all" DOMINIO. IN NS ns.DOMINIO. DOMINIO. IN NS SERVER_DNS_SLAVE www.DOMINIO. IN A IP_PUBBLICO ns.DOMINIO. IN A IP_PUBBLICO posta.DOMINIO. IN A IP_PUBBLICO
Il servizio
# rc-update add named default
Ora è possibile utilizzare il proprio server DNS su tutte le macchine della propria
rete locale per risolvere i nomi domini. Ã necessario modificare il file
search DOMINIO nameserver IP_SERVER_DNS
Notare che IP_SERVER_DNS è lo stesso di IP_LOCALE utilizzato in questo documento. Nell'immagine l'esempio è 192.168.1.5.
Possiamo finalmente testare il nostro nuovo server DNS. Per prima cosa, avviare il servizio.
# /etc/init.d/named start
Verrà invocato diverse volte il comando
$ host www.gentoo.org www.gentoo.org has address 209.177.148.228 www.gentoo.org has address 209.177.148.229 $ host hell hell.DOMINIO has address 192.168.1.3 $ host router router.DOMINIO has address 192.168.1.1
Se si utilizza iptables per proteggere il proprio server, è possibile aggiungere queste regole per il servizio DNS.
iptables -A INPUT -p udp --sport 53 -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A INPUT -p udp --dport 53 -j ACCEPT iptables -A INPUT -p tcp --sport 53 -j ACCEPT iptables -A INPUT -p tcp --dport 53 -j ACCEPT