Dies ist eine alte Version des Dokuments!
Vorraussetzung: bind als caching only nameserver
Paket caching-nameserver deinstallieren
Paket system-config-bind installieren
Mit
system-config-bind
Default-Konfigurationsdateien erzeugen
Unter Debian und CentOS muß man ein entsprechendes Verzeichnis master für die Zonendateien noch anlegen 1):
Debian :
mkdir /var/cache/bind/master
CentOS 5 :
mkdir /var/named/master
/var/named/master/linuxhotel.de : ( CentOS 5 )
/var/lib/named/master/linuxhotel.de : ( SuSE 10.0)
/var/cache/bind/master/linuxhotel.de : ( Debian 3.1 )
$TTL 2h
linuxhotel.de. IN SOA notebook20.linuxhotel.de. root.notebook20.linuxhotel.de. (
1 ; Seriennummer
3h ; refresh
1h ; retry
1w ; expire
1h ; negative ttl
)
; Nameserver:
linuxhotel.de. IN NS notebook20.linuxhotel.de.
; kanonische IP-Adressen:
notebook22.linuxhotel.de. IN A 192.168.1.222
notebook05.linuxhotel.de. IN A 192.168.1.205
notebook20.linuxhotel.de. IN A 192.168.1.220
notebook06.linuxhotel.de. IN A 192.168.1.206
notebook09.linuxhotel.de. IN A 192.168.1.209
; Aliase:
peter.linuxhotel.de. IN CNAME notebook09.linuxhotel.de.
lothar.linuxhotel.de. IN CNAME notebook05.linuxhotel.de.
heribert.linuxhotel.de. IN CNAME notebook06.linuxhotel.de.
bjoern.linuxhotel.de. IN CNAME notebook20.linuxhotel.de.
admin.linuxhotel.de. IN CNAME notebook22.linuxhotel.de.
named-checkzone linuxhotel.de. /var/named/master/linuxhotel.de
named-checkzone linuxhotel.de. /var/lib/named/master/linuxhotel.de
named-checkzone linuxhotel.de. /var/cache/bind/master/linuxhotel.de
Das Format der Zonendatei 2) läßt es auch zu, diese Datei sehr viel kürzer zu schreiben:
$TTL 2h
@ IN SOA notebook20 root.notebook20 (
1 ; Seriennummer
3h ; refresh
1h ; retry
1w ; expire
1h ; negative ttl
)
; Nameserver:
IN NS notebook20
; kanonische IP-Adressen:
notebook22 IN A 192.168.1.222
notebook05 IN A 192.168.1.205
notebook20 IN A 192.168.1.220
notebook06 IN A 192.168.1.206
notebook09 IN A 192.168.1.209
; Aliase:
peter IN CNAME notebook09
lothar IN CNAME notebook05
heribert IN CNAME notebook06
bjoern IN CNAME notebook20
admin IN CNAME notebook22
Bei jeder Änderung der Zonendatei sollte die Seriennummer hochgezählt werden.
named-checkzone -D linuxhotel.de. /var/named/master/linuxhotel.de
named-checkzone -D linuxhotel.de. /var/lib/named/master/linuxhotel.de
named-checkzone -D linuxhotel.de. /var/cache/bind/master/linuxhotel.de
/etc/named.conf : ( SuSE 10.2 )
/etc/named.conf : ( CentOS )
/etc/bind/named.conf.local : ( Debian 5.0 )
zone "linuxhotel.de" {
type master;
file "master/linuxhotel.de";
};
Konfigdatei und eingetragene Zonen überprüfen:
named-checkconf -z
bind die Änderung mitteilen:
SuSE 11.1 :
/etc/init.d/named reload
host peter.linuxhotel.de 127.0.0.1 dig peter.linuxhotel.de @127.0.0.1 any
/var/named/master/1.168.192.in-addr.arpa: ( CentOS )
/var/lib/named/master/1.168.192.in-addr.arpa: ( SuSE 10.0 )
/var/cache/bind/master/1.168.192.in-addr.arpa: ( Debian 3.1 )
$TTL 2h
1.168.192.in-addr.arpa. IN SOA notebook20.linuxhotel.de. root.notebook20.linuxhotel.de. (
2005082401 ; serial
3h ; refresh
1h ; retry
1w ; expire
1h ; negative ttl
)
; Nameserver
1.168.192.in-addr.arpa. IN NS notebook20.linuxhotel.de.
; kanonische IP-Adressen
205.1.168.192.in-addr.arpa. IN PTR notebook05.linuxhotel.de.
220.1.168.192.in-addr.arpa. IN PTR notebook20.linuxhotel.de.
206.1.168.192.in-addr.arpa. IN PTR notebook06.linuxhotel.de.
209.1.168.192.in-addr.arpa. IN PTR notebook09.linuxhotel.de.
222.1.168.192.in-addr.arpa. IN PTR notebook22.linuxhotel.de.
named-checkzone linuxhotel.de /var/lib/named/master/linuxhotel.de named-checkzone 1.168.192.in-addr.arpa. /var/lib/named/master/1.168.192.in-addr.arpa
/etc/named.conf : ( SuSE 10.2 )
/etc/named.conf : ( CentOS )
/etc/bind/named.conf.local : ( Debian 3.1 )
zone "1.168.192.in-addr.arpa" {
type master;
file "master/1.168.192.in-addr.arpa";
};
named-checkconf
SuSE 11.1 :
/etc/init.d/named reload host 192.168.1.222 127.0.0.1 dig -x 192.168.1.222 @127.0.0.1
Todo: leere Zonendateien für private IP-Adressen anlegen
Bei debian 5.0 gibt es dazu
/etc/bind/zones.rfc1918,
/etc/bind/db.empty
und einen Eintrag in /etc/bind/named.conf.local:
//include "/etc/bind/zones.rfc1918";
Muß man je nach eigenen verwendeten privaten Netzen anpassen.
/etc/named.conf : ( SuSE, CentOS )
/etc/bind/named.conf.local : ( Debian )
acl "nsupdate" {
127.0.0.1;
};
zone "linuxhotel.de" {
type master;
allow-update { "nsupdate"; };
file "master/linuxhotel.de";
};
zone "1.168.192.in-addr.arpa" {
type master;
allow-update { "nsupdate"; };
file "master/1.168.192.in-addr.arpa";
};
named-checkconf
Debian:
chown -R bind /var/cache/bind/master
nsupdate <<EOF
server localhost update add notebook23.linuxhotel.de 43200 IN A 192.168.1.223 update add 223.1.168.192.in-addr.arpa 43200 IN PTR notebook23.linuxhotel.de
EOF
rndc freeze linuxhotel.de vim linuxhotel.de rndc reload linuxhotel.de rndc thaw linuxhotel.de
Hilfreich ist vielleicht:
~/.bashrc :
function zvi {
cd /var/cache/bind/master
rndc freeze $1
vim $1
rndc reload $1
rndc thaw $1
cd -
}
Erst müssen die Slave-Nameserver in der Zonendatei des Masters eingetragen werden:
linuxhotel.de IN NS notebook04.linuxhotel.de.
Bei SuSE muß noch der Eintrag
notify no;
in der Datei /etc/named.conf entfernt oder auskommentiert werden.
/etc/named.conf : ( CentOS 5.3 )
zone "linuxhotel.de" {
type slave;
file "slaves/linuxhotel.de";
masters { 192.168.1.220; };
};
zone "1.168.192.in-addr.arpa" {
type slave;
file "slaves/1.168.192.in-addr.arpa";
masters { 192.168.1.220; };
};
/etc/named.conf : ( SuSE 10.0 )
/etc/bind/named.conf.local : ( Debian )
zone "linuxhotel.de" {
type slave;
file "slave/linuxhotel.de";
masters { 192.168.1.220; };
};
zone "1.168.192.in-addr.arpa" {
type slave;
file "slave/1.168.192.in-addr.arpa";
masters { 192.168.1.220; };
};
Debian:
mkdir /var/cache/bind/slave chown bind /var/cache/bind/slave
Schlüsselpaar erstellen: 3)
cd dnssec-keygen -a hmac-md5 -b 512 -n HOST zonentransfer
Dadurch werden zwei Dateien erstellt:
ls Kzonentransfer*
Die darin angegebenen Schlüssel und Verschlüsselungsverfahren müssen in die Konfigurationsdateien von master und slave eingetragen werden.
/etc/named.conf : ( CentOS 5, Debian 5.0 )
key "zonentransfer" {
algorithm hmac-md5;
secret "Ur7+TU8m24L9q24AWgNd4g==";
};
zone "linuxhotel.de" {
type master;
file "master/linuxhotel.de";
allow-transfer { key zonentransfer; };
};
zone "1.168.192.in-addr.arpa" {
type master;
file "master/1.168.192.in-addr.arpa";
allow-transfer { key zonentransfer; };
};
/etc/named.conf : ( CentOS 5, Debian 5.0 )
key "zonentransfer" {
algorithm hmac-md5;
secret "Ur7+TU8m24L9q24AWgNd4g==";
};
server 192.168.1.220 {
keys { zonentransfer; };
};
zone "linuxhotel.de" {
type slave;
file "slaves/linuxhotel.de";
masters { 192.168.1.220; };
};
zone "1.168.192.in-addr.arpa" {
type slave;
file "slaves/1.168.192.in-addr.arpa";
masters { 192.168.1.220; };
};
/etc/named.conf : ( CentOS 5, Debian 5.0 )
zone "linuxhotel.de" IN {
type master;
file "master/linuxhotel.de";
forwarders { };
};
/var/named/master : ( CentOS 5 )
sub05.linuxhotel.de. IN NS ns1.sub05.linuxhotel.de. ns1.sub05.linuxhotel.de. IN A 192.168.150.110
Wie oben, unter „eigene Zonen in bind verwalten“
/etc/bind/named.conf.options ( Debian )
/etc/bind/named.conf ( SuSE )
acl friendly {
192.168.1.0/24; //
};
options {
allow-recursion { friendly; };
};
/etc/bind/named.conf.options ( Debian )
/etc/bind/named.conf ( SuSE )
acl internal {
127.0.0.1/32; // localhost
};
acl friendly {
internal;
192.168.1.204; // slave DNS
};
options {
allow-transfer { friendly; };
};
Oder, alternativ, nur für eine Zone:
/etc/bind/named.conf.local ( Debian )
/etc/bind/named.conf ( SuSE )
zone "linuxhotel.de" {
type master;
file "master/linuxhotel.de";
allow-transfer { friendly; };
};
/etc/bind/named.options : ( Debian 4.0 )
options {
…
listen-on-v6 { none; };
};
bind-chroot,
/etc/default/bind9:
CHROOT="/var/lib/bind" OPTIONS="-u bind -t $CHROOT" test -d $CHROOT/var/run || mkdir -p $CHROOT/var/run test -d $CHROOT/var/run/bind || mv /var/run/bind $CHROOT/var/run test -e /var/run/bind || ln -s $CHROOT/var/run/bind /var/run/bind test -d $CHROOT/var/cache || mkdir -p $CHROOT/var/cache test -d $CHROOT/var/cache/bind || mv /var/cache/bind $CHROOT/var/cache test -e /var/cache/bind || ln -s $CHROOT/var/cache/bind /var/cache/bind test -d $CHROOT/dev || mkdir -p $CHROOT/dev test -c $CHROOT/dev/null || mknod $CHROOT/dev/null c 1 3 test -c $CHROOT/dev/random || mknod $CHROOT/dev/random c 1 8 chmod 666 $CHROOT/dev/random $CHROOT/dev/null test -d $CHROOT/etc || mkdir -p $CHROOT/etc test -d $CHROOT/etc/bind && rm -r $CHROOT/etc/bind cp -a /etc/bind $CHROOT/etc
Ab Debian lenny reicht:
/etc/default/bind9 :
OPTIONS="-u bind -t /var/lib/named"
Beim nächsten restart läuft bind in einer chroot-Umgebung. Überprüfen: 5) /etc/init.d/bind9 restart
ls /proc/`pgrep named`/root
#!/bin/bash NAMESERVER=$(hostname -f) SUBNET=192.168.1 cat <<HEAD \$TTL 2h @ IN SOA $NAMESERVER. root.$NAMESERVER. ( $(date '+%Y%m%d')01 ; Seriennummer 3h ; refresh 1h ; retry 1w ; expire 1h ; negative ttl ) IN NS $NAMESERVER. HEAD for ip in $(seq 1 254) do getent hosts $SUBNET.$ip | ( read ip name && echo -e "$name.\tIN\tA\t$ip" | expand -t '34 37 43 ' ) done
dnstop
dig +trace www.wupperrafting.de.
dnssec-keygen -a hmac-md5 -b 128 -n ZONE zonentransferbenutzt habe
options {
allow-query { friendly; };
};
/dev/log ins chroot zu legen und den Syslog anzupassen. named macht erst einen connect mit /dev/log und erst danach chroot.