====== Ubuntu - Bind - Configure Bind9 - Primary Nameserver ======
===== Forward Zone File =====
A DNS Zone resolves names to IP Addresses.
To add a DNS zone to BIND9, turning BIND9 into a Primary server, first edit **/etc/bind/named.conf.local**:
zone "example.com" {
type master;
file "/etc/bind/db.example.com";
};
**NOTE:** If bind will be receiving automatic updates to the file as with DDNS, then use **/var/lib/bind/db.example.com** rather than **/etc/bind/db.example.com** both here and in the copy command below.
Use an existing zone file as a template to create the **/etc/bind/db.example.com** file:
sudo cp /etc/bind/db.local /etc/bind/db.example.com
Edit the new zone file **/etc/bind/db.example.com** as follows:
;
; BIND data file for example.com
;
$TTL 604800
@ IN SOA example.com. root.example.com. (
2014100501 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
@ IN NS ns.example.com.
@ IN A 192.168.1.10
@ IN AAAA ::1
ns IN A 192.168.1.10
**NOTE:**
* **Comment:** Change this comment to refer to the domain that this file is for.
* **Serial Number:**
**must** be incremented every time changes are made to a zone file.
This Serial number can simply be any number, such as 1 or 2 or 3 etc.
The approach taken here is to use the last date this zone file was edited, in the format yyyymmddss (where ss is the change number for that day; 01 for 1st change, 02 for 2nd change, etc).
* **FQDNs:**
Leave the additional **.** at the end of the FQDNs (example.com. and root.example.com.).
* **root.example.com.** actually refers to an email address of root@example.com. Change this as needed to a valid email address, but with a . instead of the usual @ symbol, and leaving a . at the end.
* Create an **A** record for the base domain, example.com.
* Create an **A** record for the nameserver; in this example **ns.example.com**.
**NOTE:** Add any additional DNS records to the bottom of the zone file.
See [[[[Networking:DNS:Common Record Types|Common Record Types]] for details.
Restart Bind for any changes to take effect:
sudo systemctl restart bind9.service
----
===== Reverse Zone File =====
A Reverse Zone needs to be added to allow DNS to resolve an address to a name.
Edit **/etc/bind/named.conf.local** and add the following:
zone "1.168.192.in-addr.arpa" {
type master;
file "/etc/bind/db.192";
};
**NOTE:** Replace 1.168.192 with the first three octets of whatever network you are using.
Also, name the zone file **/etc/bind/db.192** appropriately. It should match the first octet of your network.
Create the **/etc/bind/db.192** file:
sudo cp /etc/bind/db.127 /etc/bind/db.192
Edit **/etc/bind/db.192** changing the same options as **/etc/bind/db.example.com**:
;
; BIND reverse data file for local 192.168.1.XXX net
;
$TTL 604800
@ IN SOA ns.example.com. root.example.com. (
2014100501 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS ns.
10 IN PTR ns.example.com.
**IMPORTANT:** The Serial Number in the Reverse zone needs to be incremented on each change as well.
For each **A** record you configure in **/etc/bind/db.example.com**, that is for a different address, you need to create a PTR record in **/etc/bind/db.192**.
----
===== Restart Bind9 =====
sudo systemctl restart bind9.service
----