The procedure below can be used with any UNIX/LINUX flavor. All the machines in this example are using Red Hat Enterprise Linux 5.
For simplicity purposes, we will assume the server will resolve names on the LAN: 192.168.0.1/24, and the LAN has 4 workstations connected:
station1.example.com: 192.168.0.1
station2.example.com: 192.168.0.2
station3.example.com: 192.168.0.3
station4.example.com: 192.168.0.4
We will configure “station1.example.com” as a master DNS server, and “station2.example.com” as a slave DNS Server.
We will start by configuring the master DNS Server:
1. The package needed for this configuration is “BIND”. Check if it’s available:
[root@station1 named]# rpm -qa|grep bind ypbind-1.19-12.el5 bind-libs-9.3.6-4.P1.el5 bind-utils-9.3.6-4.P1.el5 bind-9.3.6-4.P1.el5 [root@station1 named]#
2. Edit “/etc/named.conf” as follows:
[root@station1 ~]# vi /etc/named.conf
options {
directory "/var/named";
};
zone "example.com" {
type master;
file "forward.zone";
};
zone "0.168.192.in-addr.arpa" {
type master;
file "reverse.zone";
};
[root@station1 ~]#
In the file above, we first specified that the Host Name to IP records will be stored in files under the directory “/var/named”, and then we created a zone for forward mapping (Host Name to IP mapping), and a zone for reverse mapping ( IP to Host Name mapping). Since we only have one LAN (one domain: example.com), so we need two zones only.
3. Create the forward zone file “forward.zone” under “/var/named” :
[root@station1 ~]# cd /var/named
[root@station1 named]# vi forward.zone
$TTL 86400
@ IN SOA station1.example.com. root (
42 ; serial (d. adams)
3H ; refresh
15M ; retry
1W ; expiry
1D ) ; minimum
IN NS station1.example.com.
station1 IN A 192.198.0.1
station2 IN A 192.168.0.2
station3 IN A 192.198.0.3
station4 IN A 192.168.0.4
[root@station1 named]#
In the file above, we specified that the “SOA” (start of authority) is “station1.example.come”, and that error messages be sent to “root”.
Then we specified that the “NS” (Domain Name Server) is “station1.example.com.” Then we added the “A” (Address) of each machine on the network.
4. Create the forward zone file “reverse.zone” under “/var/named” :
[root@station1 ~]# cd /var/named
[root@station1 named]# vi reverse.zone
$TTL 86400
@ IN SOA station1.example.com root (
42 ; serial (d. adams)
3H ; refresh
15M ; retry
1W ; expiry
1D ) ; minimum
IN NS station1.example.com.
1 IN PTR station1.example.com.
2 IN PTR station2.example.com.
3 IN PTR station3.example.com.
4 IN PTR station4.example.com.
[root@station1 named]#
In the reverse file, again we specified the same “SOA” and “NS”. After that, we specified the “PTR” (pointer), so that it will be appended to “0.168.192.in-addr.arpa”. For example, the record “192.168.0.4″ when queried to the DNS Server, it will be translated as “4.0.168.192.in-addr.arpa”, and then mapped to “station4.example.com.”
5. Make the sure that “forward.zone” and “reverse.zone” have the right owner/permission:
[root@station1 named]# ls -l total 24 drwxrwx--- 2 named named 4096 Jul 29 2009 data -rw-r--r-- 1 root root 239 Oct 17 16:57 forward.zone -rw-r--r-- 1 root root 250 Oct 17 16:55 reverse.zone drwxrwx--- 2 named named 4096 Jul 29 2009 slaves [root@station1 named]#
Since the daemon “named” will be using these file, the permission should be changed accordingly:
[root@station1 named]# chgrp named *.zone [root@station1 named]# ls -l total 24 drwxrwx--- 2 named named 4096 Jul 29 2009 data -rw-r--r-- 1 root named 239 Oct 17 16:57 forward.zone -rw-r--r-- 1 root named 250 Oct 17 16:55 reverse.zone drwxrwx--- 2 named named 4096 Jul 29 2009 slaves [root@station1 named]#
6. Configure all the clients to use “station1″ as a DNS Server by editing “/etc/resolv.conf”:
[root@station1 ~]# vi /etc/resolv.conf search example.com nameserver 192.168.0.1 [root@station1 ~]#
Make sure to configure the same on all the machines: station2, station3, and station4.
7. Start the service:
[root@station1 ~]# service named start Starting named: [ OK ] [root@station1 ~]#
Make the sure the service starts automatically after each reboot:
[root@station1 ~]# chkconfig named on [root@station1 ~]# chkconfig named --list named 0:off 1:off 2:on 3:on 4:on 5:on 6:off [root@station1 ~]#
8. Test the DNS functionality:
From Station3, for example, we can run the following tests:
[root@station3 ~]# nslookup station2 Server: 192.168.0.1 Address: 192.168.0.1#53 Name: station2.example.com Address: 192.168.0.2 [root@station3 ~]# [root@station3 ~]# nslookup station1 Server: 192.168.0.1 Address: 192.168.0.1#53 Name: station1.example.com Address: 192.198.0.1 [root@station3 ~]# nslookup 192.168.0.4 Server: 192.168.0.1 Address: 192.168.0.1#53 4.0.168.192.in-addr.arpa name = station4.example.com. [root@station3 ~]#
Now we have successfully configured “station1″ as a master (primary) DNS Server. The next step is to configure “station2″ as a slave (secondary) DNS Server. It’s very easy to do so, as only one file needs to be edited on “station2″:
1. Configure “/etc/named.conf” on “station2″ :
[root@station2 ~]# vi /etc/named.conf
options {
directory "/var/named/slaves";
};
zone "example.com" {
type slave;
file "forward.zone";
masters { 192.168.0.1; };
};
zone "0.168.192.in-addr.arpa" {
type slave;
file "reverse.zone";
masters { 192.168.0.1; };
};
[root@station2 ~]#
In “/var/named.conf”, we simply specified that the files should go under “/var/named/slaves”, and the the master DNS server is “192.168.0.1″ (i.e. station1) .
2. The next step is start the DNS Service on “station2″:
[root@station2 ~]# service named start Starting named: [ OK ] [root@station2 ~]# [root@station2 ~]# chkconfig named on [root@station2 ~]# chkconfig named --list named 0:off 1:off 2:on 3:on 4:on 5:on 6:off [root@station2 ~]#
3. Check that all the configuration files have been automatically copied from the master DNS Server:
[root@station2 ~]# ls /var/named/slaves/
forward.zone reverse.zone
[root@station2 ~]#
[root@station2 ~]# cat /var/named/slaves/forward.zone
$ORIGIN .
$TTL 86400 ; 1 day
example.com IN SOA station1.example.com. root.example.com. (
42 ; serial
10800 ; refresh (3 hours)
900 ; retry (15 minutes)
604800 ; expire (1 week)
86400 ; minimum (1 day)
)
NS station1.example.com.
$ORIGIN example.com.
station1 A 192.198.0.1
station2 A 192.168.0.2
[root@station2 ~]# cat /var/named/slaves/reverse.zone
$ORIGIN .
$TTL 86400 ; 1 day
0.168.192.in-addr.arpa IN SOA station1.example.com.0.168.192.in-addr.arpa. root.0.168.192.in-addr.arpa. (
42 ; serial
10800 ; refresh (3 hours)
900 ; retry (15 minutes)
604800 ; expire (1 week)
86400 ; minimum (1 day)
)
NS station1.example.com.
$ORIGIN 0.168.192.in-addr.arpa.
1 PTR station1.example.com.
2 PTR station2.example.com.
[root@station2 ~]#
4. Now, on all the clients (station1, station2, station3, and station4 ), Edit the file “/etc/resolv.conf” to specify that “station2″ is a slave DNS Server:
[root@station1 ~]# cat /etc/resolv.conf search example.com nameserver 192.168.0.1 nameserver 192.168.0.2 [root@station1 ~]#
I hope DNS is clear now …
Nice and simple explanation , thanks. ..
Do you have any similar tips on AD integration, AFTER windows 2003. ?
Have things changed after win 2003 and “Microsoft Identity Management for Unix” on Windows 2003 SP2 server ?
Best regards ..
Martin RØnde Andersen, fellow unix/linux geek
Hi Martin,
thanks for your comment. Unfortunately I have no tips for AD, specially after 2003. I never used it
Thanks for passing by
Pingback: BIND Question
Many many thanks to Hamdan and also to Sahara Geeks. It is an excellent for the beginners and the style of presentation is simply awesome. I am from Bangladesh. I wish you all the best. Keep it up.
Thanks for your comment Azad, I’m glad that you found our site useful
I will keep on writing then