Clark's Home page

Tecnicismi vari di un Sysadmin Linux ma anche qualcosa della sua vita

Server DNS in chroot —

Il DNS è indispensabile per la risoluzione dei nomi, vale a dire convertire in nomi dominio “human friendly” gli indirizzi IP dei siti o degli hosts di una LAN.
Il più noto server DNS in circolazione è BIND (Berkeley Internet Name Domain) vediamo in dettaglio come preparare un server DNS  che sia utile tanto alla nostra LAN quanto per risolvere i nomi su internet.

#apt-get install bind9

che si tira dietro le necessarie dipendenze

Bind ha delle pecche intrinseche di sicurezza, quindi è decisamente meglio installarlo in chroot, a tale scopo seguiremo Bind Chroot di Debian.

# /etc/init.d/bind9 stop
# vim /etc/default/bind9

e modificare  la voce OPTIONS nel modo seguente

OPTIONS="-u bind -t /var/bind9/chroot"

che è poi in definitiva il posto dove si creerà il chroot.

Ora  si deve creare l’intero albero di directory necessario per il chroot:

# mkdir -p /var/bind9/chroot/{etc,dev,var/cache/bind,var/run/named}

Creiamo i device necessari e settiamo i permessi corretti per essi

# mknod  /var/bind9/chroot/dev/null c 1 3
# mknod /var/bind9/chroot/dev/random c 1 8
 # chmod 660 /var/bind9/chroot/dev/{null,random}

Spostiamo i files di configurazione nella nuova posizione e creiamo un symlink

# mv /etc/bind /var/bind9/chroot/etc

# ln -s /var/bind9/chroot/etc/bind /etc/bind
chown -R bind:bind /etc/bind/* chmod 775 /var/bind9/chroot/var/{cache/bind,run/named} chgrp bind /var/bind9/chroot/var/{cache/bind,run/named}

Modifichiamo il path del pidfile in /etc/init.d/bind9

PIDFILE=/var/bind9/chroot/var/run/named/named.pid

Istruiamo rsyslogd ad ascoltare i messaggi di bind in chroot

echo "\$AddUnixListenSocket /var/bind9/chroot/dev/log" > /etc/rsyslog.d/bind-chroot.conf

Istruiamo adesso resolv.conf ad ascoltare sulla loopback

# vim /etc/resolv.conf

commentare la/le voce/i nameserver presente e aggiungere

 nameserver 127.0.0.1

Quindi riavviamo rsyslog e facciam partire bind

# /etc/init.d/rsyslog restart; /etc/init.d/bind9 start

A questo punto abbiamo un server DNS che è in grado di risolvere i nomi INTERNET perfettamente funzionante e relativamente sicuro, dandolo come DNS alla LAN le macchine interne possono navigare tranquillamente. Creiamo adesso 2 files che descrivono la nostra LAN, in modo tale che tramite un unico DNS sia possibile risolvere interno ed esterno, userò come esempio crazyhouse.lan la LAN di casa i due files sono anche detti files di zona.

# vim /etc/bind/crazyhouse.lan
;# database per la risoluzione diretta della rete crazyhouse.lan
;# indirizzi 192.168.20.0/24
;# ricordarsi di aumentare il seriale ad ogni modifica
$TTL 64800
crazyhouse.lan.           IN SOA dns.crazyhouse.lan. hostmaster.dns.crazyhouse.lan. (
                          140520110     ; Serial
                          10800         ; Refresh
                          3600          ; Retry
                          604800        ; Expire 30 days
                          3600)         ; Minimum
;#server dns
crazyhouse.lan.                 IN      NS      dns.crazyhouse.lan.
;## aggiunto il 10/04/07 per prova postfix interno
                               IN      MX      5 aliseo.crazyhouse.lan.
;# forward mapping
noi                             IN      A       192.168.20.1
libeccio.crazyhouse.lan.        IN      A       192.168.20.2
ale.crazyhouse.lan.             IN      A       192.168.20.9
aliseo.crazyhouse.lan.          IN      A       192.168.20.241
dns.crazyhouse.lan.             IN      A       192.168.20.10
maestrale.crazyhouse.lan.       IN      A       192.168.20.100 ;wifi router
$GENERATE 25-50 dhcp$ A 192.168.20.$

sangiusto2      IN      A       172.27.1.1
;sanmarco2      IN      A       10.0.10.4
pc0             IN      A       192.168.100.3
sibilla         IN      A       192.168.150.10

sangiorgio      IN      A       xxx.xxx.xxx.xxx
crm             IN      A       xxx.xxx.xxx.xxx 
crm             IN      A       192.168.150.6
angelo          IN      A       192.168.100.6
perseo          IN      A       77.93.230.62
cluster         IN      A       172.27.1.1
horde           IN      A       172.27.1.1

; alias
gateway         IN      CNAME   aliseo.crazyhouse.lan.
mail            IN      CNAME   aliseo.crazyhouse.lan.
proxy           IN      CNAME   aliseo.crazyhouse.lan.

e il file per la risoluzione inversa

#vim /etc/bind/crazyhouse.rev
; database per la risoluzione inversa della rete crazyhouse.lan
; indirizzi 192.168.20.0/24
; filename db.192.168.20.
; ricordarsi di aumentare il seriale ad ogni modifica
$TTL 64800
20.168.192.in-addr.arpa.        IN  SOA dns.crazyhouse.lan hostmaster.crazyhouse.lan. (
                        140520111       ; Serial
                        10800           ; Refresh
                        3600            ; Retry
                        604800          ; Expire
                        7200)           ; Minimum

; server dns
                        IN      NS      dns.crazyhouse.lan.
; reverse mapping
10.20.168.192.in-addr.arpa.     IN      PTR     dns.crazyhouse.lan.
100.20.168.192.in-addr.arpa.    IN      PTR     maestrale.crazyhouse.lan.
1.20.168.192.in-addr.arpa.      IN      PTR     noi.crazyhouse.lan.
2.20.168.192.in-addr.arpa.      IN      PTR     libeccio.crazyhouse.lan.
9.20.168.192.in-addr.arpa.      IN      PTR     ale.crazyhouse.lan.241.20.168.192.in-addr.arpa.
241.20.168.192.in-addr.arpa.    IN      PTR     aliseo.crazyhouse.lan.
$GENERATE 25-50  IN  PTR dhcp$.crazyhouse.

e con questi 2 files abbiamo definito la nostra LAN e nello specifico gli indirizzi di VPN

che usiamo per connetterci dall’esterno o che dobbiamo raggiungere dall’interno.

L’ultimo passo è modificare il file /etc/bind/named.conf.local inserendo le zone che abbiamo appena creato

#vim /etc/bind/named.conf.local
// Do any local configuration here
//
// Consider adding the 1918 zones here, if they are not used in your
// organization//include "/etc/bind/zones.rfc1918";
zone "crazyhouse.lan" {
     type master;
      file "/etc/bind/crazyhouse.lan";
}
;zone "20.168.192.in-addr.arpa" {
      type master;
      file "/etc/bind/crazyhouse.rev";
};

e con questo rilanciando bind9 abbiamo concluso


Categorised as: Linux | Networking | Work

Comments are disabled on this post


Comments are closed.