= DNS Master = == Network == We will give the DNS master a static IP-address. Edit `/etc/networking/interfaces` and make the following changes. {{{ # The primary network interface #allow-hotplug eth0 #iface eth0 inet dhcp auto eth0 iface eth0 inet static address 192.168.1.36 network 192.168.1.0 netmask 255.255.255.0 broadcast 192.168.1.255 gateway 192.168.1.1 }}} == Install BIND == {{{ apt-get install bind9 }}} == Configure BIND == === Stop BIND === {{{ service bind9 stop }}} === Make BIND listen === edit `/etc/bind/named.conf.options` and add {{{ listen-on { any; }; }}} === Make a DDNS update key === We are going to let the DHCP server update BIND. For this we need an update key. Create it with the following command. Remember that entrophy must be available for the key to be generated, you can check available entrophy in `/proc/sys/kernel/random/entropy_avail`. {{{ dnssec-keygen -a HMAC-SHA512 -b 512 -n HOST kallenberg.dk }}} This will create two files with filenames equivalent to `Kkallenberg.dk.+165+38700.private` and `Kkallenberg.dk.+165+38700.key`. The latter is your public key, which will be used by the DCHP server to update BIND. Create the file `/etc/bind/ddns-update.kallenberg.dk` and put your public key inside it. {{{ key "ddns-update" { algorithm hmac-sha512; secret "yYFzfibvlpS33+vsngV2jF5tGkTiVSjhYoFuV0T7bnCVfFGx3Mu05SW+LakImdofkNM00LxHCLuvD1W1vSWMmA=="; }; }}} Make sure BIND can read `/etc/bind/ddns-update.kallenberg.dk`. {{{ chown root:bind /etc/bind/ddns-update.kallenberg.dk }}} === Create a new zone === `/etc/bind/named.conf.kallenberg.dk` {{{ # Key used by DHCP servers for dynamic DNS updates include "/etc/bind/ddns-update.kallenberg.dk"; zone "kallenberg.dk" { type master; file "/var/lib/bind/kallenberg.dk.zone"; allow-transfer { 192.168.1.37; }; allow-update { key "ddns-update"; }; }; zone "1.168.192.in-addr.arpa" { type master; file "/var/lib/bind/1.168.192.zone"; allow-transfer { 192.168.1.37; }; allow-update { key "ddns-update"; }; }; }}} Add the new zone file to `/etc/bind/named.conf.local` {{{ include "/etc/bind/named.conf.kallenberg.dk"; }}} `/var/lib/bind/kallenberg.dk.zone` {{{ $ORIGIN . $TTL 86400 ; 1 day kallenberg.dk IN SOA ns01.kallenberg.dk. ns02.kallenberg.dk. ( 20171210 ; serial 7200 ; refresh (2 hours) 300 ; retry (5 minutes) 604800 ; expire (1 week) 60 ; minimum (1 minute) ) IN NS ns01.kallenberg.dk. IN NS ns02.kallenberg.dk. A 212.237.182.56 $ORIGIN kallenberg.dk. $TTL 86400 ; 1 day ns01 IN A 192.168.1.36 ns02 IN A 192.168.1.37 }}} `/var/lib/bind/1.168.192.zone` {{{ $ORIGIN . $TTL 86400 ; 1 day 1.168.192.in-addr.arpa IN SOA ns01.kallenberg.dk. ns02.kallenberg.dk. ( 20171210 ; serial 7200 ; refresh (2 hours) 300 ; retry (5 minutes) 604800 ; expire (1 week) 60 ; minimum (1 minute) ) IN NS ns01.kallenberg.dk. IN NS ns02.kallenberg.dk. $ORIGIN 1.168.192.in-addr.arpa. 36 IN PTR ns01.kallenberg.dk 37 IN PTR ns02.kallenberg.dk }}} === Start BIND === Finally start the service again {{{ service bind9 start }}}