User Tools

Site Tools


dns:bind_configure_guide

This is an old revision of the document!


Configure BIND

Remember, if you are using two BIND DNS servers in a master/slave configuration, you must update the serial number of the zone file when you update the file on the master if you want the slave to pick it up.

Remember, if you make a change to a zone, you can make that change live without restarting the DNS service with the following command

rndc reload example.local

On Ubuntu 16.04, you need to

sudo apt-get install bind9 bind9utils bind9-doc

Then

vi /etc/bind/named.conf.options

And add…

options {
        directory "/var/cache/bind";
        listen-on port 53 { 127.0.0.1; 192.168.1.5; };

        listen-on-v6 { any; };
        allow-recursion { any; };
        allow-query { any; };
        allow-query-cache { any; };
		
        //========================================================================
        // If BIND logs error messages about the root key being expired,
        // you will need to update your keys.  See https://www.isc.org/bind-keys
        //========================================================================
        dnssec-validation auto;

        auth-nxdomain no;    # conform to RFC1035

};
service bind9 restart

If you are running the local ufw firewall, you may need to open UDP/TCP 53.

Create Zones

vi /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 "example.local" {
        type master;
        file "/etc/bind/zones/example.local.db";
        allow-transfer { slave.ip.address; };
};

zone "1.168.192.in-addr.arpa" {
        type master;
        file "/etc/bind/zones/rev.99.168.192.in-addr.arpa";
        allow-transfer { slave.ip.address; };
};

Configure Zone

vi /etc/bind/zones/example.local.db
$TTL    604800
@       IN      SOA     ns1.example.local admin.example.local. (
                              2         ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                         604800 )       ; Negative Cache TTL
;
@       IN      NS      localhost.
@       IN      A       127.0.0.1
@       IN      AAAA    ::1




; Name servers
example.local.    IN      NS      ns1.example.local.
example.local.    IN      NS      ns2.example.local.


; records for name servers
ns1         IN      A       192.168.1.4
ns2        IN      A       192.168.1.5



; Other A records
@               IN      A       192.168.1.7
www             IN      A       192.168.1.8
myserver          IN      A       192.168.1.9

Configure Reverse Zone

vi /etc/bind/zones/rev.99.168.192.in-addr.arpa
$TTL    604800
@       IN      SOA     example.local. admin.example.local. (
                              1         ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                         604800 )       ; Negative Cache TTL

; Name servers
        IN      NS      ns1.example.com.
        IN      NS      ns2.example.com.

; PTR Records
14       IN      PTR      server1.example.local.
15       IN      PTR      server2.example.local.
16       IN      PTR      server3.example.local.

Logging

In Ubuntu 16.04

rndc querylog
tail -f /var/log/syslog

Also

user@hostname:/etc/bind# cat named.conf.options
options {
        directory "/var/cache/bind";
        listen-on port 53 { 127.0.0.1; 127.0.1.1; 192.168.0.1; };

        //========================================================================
        // If BIND logs error messages about the root key being expired,
        // you will need to update your keys.  See https://www.isc.org/bind-keys
        //========================================================================
        dnssec-validation auto;

        auth-nxdomain no;    # conform to RFC1035
        listen-on-v6 { any; };
        allow-recursion { any; };
        allow-query { any; };
        allow-query-cache { any; };
};

logging {
        channel bind_default_log {
                file "/var/log/bind/default.log" versions 3 size 5m;
                //severity debug 9;
                severity info;
                print-category yes;
                print-severity yes;
                print-time yes;
        };

        channel bind_update_log {
                file "/var/log/bind/update.log" versions 3 size 5m;
                //severity debug 9;
                severity info;
                print-category yes;
                print-severity yes;
                print-time yes;
        };

        channel bind_update-security_log {
                file "/var/log/bind/update-security.log" versions 3 size 5m;
                //severity debug 9;
                severity info;
                print-category yes;
                print-severity yes;
                print-time yes;
        };

        channel bind_security_log {
                file "/var/log/bind/security.log" versions 3 size 5m;
                //severity debug 9;
                severity info;
                print-category yes;
                print-severity yes;
                print-time yes;
        };

        channel bind_query_log {
                file "/var/log/bind/query.log" versions 3 size 5m;
                //severity debug 10;
                severity info;
                print-category yes;
                print-severity yes;
                print-time yes;
        };

        channel bind_lame-servers_log {
                file "/var/log/bind/lame-servers.log" versions 3 size 5m;
                //severity debug 9;
                severity info;
                print-category yes;
                print-severity yes;
                print-time yes;
        };

        category default { bind_query_log; };
        category update { bind_query_log; };
        category update-security { bind_query_log; };
        category security { bind_query_log; };
        category queries { bind_query_log; };
        category lame-servers { bind_query_log; };
};

Test Transfer

Log on to the slave machine and run

dig @master.ip.address mydomain.local. AXFR

Enable NS Servers to use DNS

I found I had to edit vi /etc/resolvconf/resolv.conf.d/head and add nameserver 127.0.0.1 to the end of the file, save, exit and then run the following to get the NS servers to correctly access DNS on themselves.

resolvconf --enable-updates
dns/bind_configure_guide.1632392561.txt.gz · Last modified: (external edit)