====== BIND unter Debian 6.0 ====== BIND unter Debian 6.0 als Primary und Secondary Nameserver einrichten: ===== Installation ===== * Paket einspielen: # apt-get install bind9 * Nameserver anhalten: # /etc/init.d/bind9 stop * Für chroot konfigurieren und IPv4 erzwingen (gibt sonst Fehlermeldungen, weil der Server keine IPv6-Adresse hat): # vi /etc/default/bind9 OPTIONS="-u bind -t /var/lib/named -4" * Verzeichnisbaum anlegen: # mkdir -p /var/lib/named/etc # mkdir /var/lib/named/dev # mkdir -p /var/lib/named/var/run # mkdir /var/lib/named/var/cache * Konfiguration verschieben: # mv /etc/bind /var/lib/named/etc # ln -s /var/lib/named/etc/bind /etc/bind * Datenverzeichnisse kopieren: # cp -a /var/cache/bind /var/lib/named/var/cache # cp -a /var/run/named /var/lib/named/var/run * Notwendige Devices anlegen: # mknod /var/lib/named/dev/random c 1 8 # chmod 666 /var/lib/named/dev/null /var/lib/named/dev/random * Nameserver wieder starten: # /etc/init.d/bind9 start * Lauffähigkeit überprüfen: # ps -Naf | grep named [...] /usr/sbin/named -u bind -t /var/lib/named # less /var/log/daemon.log [...] named[xxxx]: starting BIND 9.7.3 -u bind -t /var/lib/named -4 [...] [...] named[xxxx]: running * Quellen: * [[http://www.howtoforge.com/howto_bind_chroot_debian|Bind-Chroot-Howto (Debian)]] * [[http://oat.tao.ca/node/view/150|BIND 9 chroot on Debian 3.0]] * Hinweise: * Bei älteren Versionen mussten auch ''/dev/null'' und ''/dev/log'' in der Chroot-Umgebung liegen. Der Syslog-Daemon musste umkonfiguriert werden, damit er ''/dev/log'' in der Chroot-Umgebung berücksichtigte. Beides ist bei Debian 6.0 nicht mehr notwendig. * Bind kann ''/dev/random'' auch von außerhalb der Chroot-Umgebung nutzen, es gibt dann eine Warning in der Daemon-Log-Datei. ===== Konfiguration ===== * Globale Optionen: * Kein IPv6 (''listen-on-v6''). * Nur auf localhost und einer IP-Adresse horchen (''listen-on port'', unnötig, wenn nur 1 IP-Adresse vorhanden). * Standardmäßig nur lokale Anfragen beantworten (''allow-query'' und ''allow-recursion''). * Standardmäßig keine Zonentransfers erlauben (''allow-transfer''). # vi /var/lib/named/etc/bind/named.conf.options options { [...] listen-on port 53 { 127.0.0.1; 85.214.92.99; }; listen-on-v6 { none; }; allow-query { 127.0.0.1; }; allow-recursion { 127.0.0.1; }; allow-transfer { none; }; }; * Konfiguration überprüfen: # named-checkconf -t /var/lib/named # echo $? 0 * Nameserver neu starten: # /etc/init.d/bind9 restart * Lauffähigkeit und gebundene IP-Adressen überprüfen: # ps -Naf | grep named [...] /usr/sbin/named -u bind -t /var/lib/named # less /var/log/daemon.log [...] named[xxxx]: starting BIND 9.7.3 -u bind -t /var/lib/named -4 [...] [...] named[xxxx]: listening on IPv4 interface lo, 127.0.0.1#53 [...] named[xxxx]: listening on IPv4 interface venet0:0, 85.214.235.82#53 [...] [...] named[xxxx]: running ===== Zonendateien ===== ==== Konfiguration ==== * Verzeichnisse für Zonendateien erzeugen: # mkdir /var/lib/named/etc/bind/primary # mkdir /var/lib/named/etc/bind/secondary # chown bind:bind /var/lib/named/etc/bind/secondary * Zonendatei erzeugen: # vi /var/lib/named/etc/bind/primary/disorganized.de.zone * Zonendatei überprüfen: # named-checkzone disorganized.de /var/lib/named/etc/bind/primary/disorganized.de.zone zone disorganized.de/IN: loaded serial 2006051700 OK * Zonendatei für Primary Nameserver in Konfiguration eintragen: * Anfragen von außen freischalten (''allow-query''). * Zonentransfers für Secondary Nameserver freischalten (''allow-transfer''). * Falls nötig, IP-Adresse für Notifications festlegen (''notify-source'', z.B. wenn mehrere IP-Adressen konfiguriert sind). # vi /var/lib/named/etc/bind/named.conf.local [...] zone "disorganized.de" in { type master; file "/etc/bind/primary/disorganized.de.zone"; allow-query { any; }; allow-transfer { 62.116.163.100; 62.116.162.121; }; notify-source 85.214.92.99; }; * Zonendatei für Secondary Nameserver in Konfiguration eintragen: * Primary Nameserver eintragen (''masters''). * Anfragen von außen freischalten (''allow-query''). * Falls nötig, IP-Adresse und Portnummer für Zonentransfers festlegen (''transfer-source'', z.B. wegen Firewall). # vi /var/lib/named/etc/bind/named.conf.local [...] zone "disorganized.de" in { type slave; file "/etc/bind/secondary/disorganized.de.zone"; masters { a.b.c.d; }; allow-query { any; }; transfer-source 85.214.92.99 port 53; }; * Konfiguration überprüfen: # named-checkconf -t /var/lib/named # echo $? 0 * Nameserver neu starten: # /etc/init.d/bind9 restart * Log-File überprüfen: # less /var/log/daemon.log ==== Beispiel ==== Hier ist ein Beispiel für eine primäre Zonendatei: # vi /var/lib/named/etc/bind/primary/disorganized.de.zone $TTL 1d @ IN SOA ns hostmaster ( 2006061200 ; serial 8h ; refresh 2h ; retry 1w ; expiry 1d ) ; minimum IN NS ns IN NS ns10.schlundtech.de. IN A 85.214.92.99 IN MX 10 mx ns IN A 85.214.92.99 mx IN A 85.214.92.99 www IN A 85.214.92.99 ===== Debug-Logging ===== So wird Debug-Logging aktiviert: * Verzeichnis für Log-Datei erzeugen: # mkdir /var/lib/named/tmp # chown bind:bind /var/lib/named/tmp * Debug-Logging aktivieren: # vi /var/lib/named/etc/bind/named.conf.options [...] logging { category default { default_syslog; default_debug; }; channel my_file { file "/tmp/log.msgs"; severity debug 3; print-category yes; print-severity yes; }; category notify { my_file; }; }; * Nameserver-Konfiguration neu einlesen: # /etc/init.d/bind9 reload * Debug-Ausgaben werden nach ''/var/lib/named/tmp/log.msgs'' geloggt. ===== Test ===== Einer der vielen Dienste, um DNS zu testen: http://www.dnssy.com/