How to Setup DNS ( Bind ) Server on CentOS, RHEL 6
April 2, 2013 Linux Tutorials 9 CommentsThe DNS ( Domain Name System ) is a distributed system, used for transalate domain names to IP and vice a versa.
For example when we type domain name in browser url like “http://www.tecadmin.net”, Our computer sends a request to DNS and get an ip address of domain. Below steps are to configure dns server on centos 6 or RHEL 6 systems.
Network Setup used in Tutorial:
1. DNS Server IP: 192.168.1.90
2. DNS Server Name: ns1.tecadmin.net, ns2.tecadmin.net
3. Domain Name: demotecadmin.net
4. Domain IP to point: 192.168.1.91
Step 1: Install Bind Packages
Bind packages are available under default yum repositories. To install packages simple execute below command.
# yum install bind bind-chroot
Step 2: Edit Configuration Files
There are two types of configuration files in DNS servers.
1. DNS main configuration file: /var/named/chroot/etc/named.conf
2. Zone configuration files: This is nnother type of configuration file are called zone file. Which is individually created for all domains. named.conf keeps an entry for all zone files.
2.1. Configure named.conf
Firstly edit bind main configuration file and update content as below.
# vim /var/named/chroot/etc/named.conf
Content of named.conf:
// /var/named/chroot/etc/named.conf options { listen-on port 53 { 127.0.0.1; 192.168.1.0/24; 0.0.0.0/0; }; listen-on-v6 port 53 { ::1; }; directory "/var/named"; dump-file "/var/named/data/cache_dump.db"; statistics-file "/var/named/data/named_stats.txt"; memstatistics-file "/var/named/data/named_mem_stats.txt"; allow-query { localhost; 192.168.1.0/24; 0.0.0.0/0; }; recursion yes; dnssec-enable yes; dnssec-validation yes; dnssec-lookaside auto; /* Path to ISC DLV key */ bindkeys-file "/etc/named.iscdlv.key"; managed-keys-directory "/var/named/dynamic"; }; logging { channel default_debug { file "data/named.run"; severity dynamic; }; }; zone "." IN { type hint; file "named.ca"; }; zone "demotecadmin.net" IN { type master; file "/var/named/demotecadmin.net.db"; }; include "/etc/named.rfc1912.zones"; include "/etc/named.root.key";
2.2. Create Zone File
After creating bind main configuration file, create a zone file for you domain as per configuration, for exampledemotecadmin.net.db in this article.
# vim /var/named/chroot/var/named/demotecadmin.net.db
Content of zone file:
; Zone file for demotecadmin.net
$TTL 14400
@ 86400 IN SOA ns1.tecadmin.net. webmaster.tecadmin.net. (
3013040200 ; serial, todays date+todays
86400 ; refresh, seconds
7200 ; retry, seconds
3600000 ; expire, seconds
86400 ; minimum, seconds
)
demotecadmin.net. 86400 IN NS ns1.tecadmin.net.
demotecadmin.net. 86400 IN NS ns2.tecadmin.net.
demotecadmin.net. IN A 192.168.1.91
demotecadmin.net. IN MX 0 demotecadmin.net.
mail IN CNAME demotecadmin.net.
www IN CNAME demotecadmin.net.
If you are having more domain, its required to create zone files for each domain individually.
2.3. Add More Domains..
To add more domains in dns, create zone files individually for all domain as above. After that add any entry for all zones in named.conf like below. Changedemotecadmin.net with your domain name.
zone "demotecadmin.net" IN { type master; file "/var/named/demotecadmin.net.db"; };
Step 3: Start Bind Service
Start named (bind) service using below command.
# /etc/init.d/named restart
Enable auto start on system boot.
# chkconfig named on
Step 4: Finally Test Your DNS Setup
Send query to your dns server directly using below command.
Syntax: nslookup <domainname> <dns server name/ip>
# nslookup demotecadmin.net 192.168.1.90
Sample Output:
Server: 192.168.1.90 Address: 192.168.1.90#53 Name: demotecadmin.net Address: 192.168.1.91
Above output is showing that dns server has successfully resolved domain demotecadmin.net.