RedHat6.3配置DNS服务器


1 系统环境

OSRed Hat Enterprise Linux Server release 6.3 (Santiago)

DNS 服务器:172.21.20.1/255.255.0.0

2 安装DNS

  1. # yum -y install bind 

3 配置DNS

3.1 开始配置DNS主配置文件 named.conf

编辑 /etc/named.conf 配置文件,添加一个域

  1. options {  
  2. listen-on port 53 { 172.21.20.1; };  
  3. listen-on-v6 port 53 { ::1; };  
  4. directory "/var/named";  
  5. dump-file "/var/named/data/cache_dump.db";  
  6. statistics-file "/var/named/data/named_stats.txt";  
  7. memstatistics-file "/var/named/data/named_mem_stats.txt";  
  8. allow-query { localhost; };  
  9. recursion yes;  
  10. dnssec-enable yes;  
  11. dnssec-validation yes;  
  12. dnssec-lookaside auto;  
  13. /* Path to ISC DLV key */  
  14. bindkeys-file "/etc/named.iscdlv.key";  
  15. managed-keys-directory "/var/named/dynamic";  
  16. };  
  17. logging {  
  18. channel default_debug {  
  19. file "data/named.run";  
  20. severity dynamic;  
  21. };  
  22. };  
  23. zone "." IN {  
  24. type hint;  
  25. file "named.ca";  
  26. };  
  27. zone "aaa.com" IN {  
  28. type master; #master表示主域名服务器  
  29. file "aaa.com.zone"; #解析aaa.com域记录的文件名  
  30. allow-update { none; };  
  31. };  
  32. zone "20.21.172.in-addr.arpa" {  
  33. type master;  
  34. file "20.21.172.ptr";  
  35. allow-update { none; };  
  36. };   
  37. include "/etc/named.rfc1912.zones";  
  38. include "/etc/named.root.key"; 

3.2 配置域的正向解析文件

根据上面DNS主配置文件的配置,正向解析文件位置在 /var/named目录下

利用bind提供的模版文件我们创建aaa.com.zone,提供了两个模版文件

  • 正向解析模版named.localhost
  • 反向解析模版named.loopback
  1. # cp named.localhost aaa.com.zone 

编辑/var/named/aaa.com.zone文件

  1. $TTL 1D  
  2. @ IN SOA dns.aaa.com. root.aaa.com. (  
  3. 0 ; serial  
  4. 1D ; refresh  
  5. 1H ; retry  
  6. 1W ; expire  
  7. 3H ) ; minimum  
  8. @ IN NS dns.aaa.com.  
  9. dns IN A 172.21.20.1  
  10. www IN A 172.21.20.1  
  11. test IN A 172.21.20.1 

注意:这里用的都是全域名,后面都有一个 . 符号。

3.3 配置域的反向解析文件

  1. # cp named.loopback 20.21.172.ptr 

编辑 /var/named/20.21.172.ptr文件

  1. $TTL 1D  
  2. @ IN SOA dns.aaa.com. root.aaa.com. (  
  3. 0 ; serial  
  4. 1D ; refresh  
  5. 1H ; retry  
  6. 1W ; expire  
  7. 3H ) ; minimum  
  8. @ IN NS dns.aaa.com.  
  9. 1 IN PTR dns.aaa.com.  
  10. 1 IN PTR www.aaa.com. 

3.4 确保/var/named目录下所有dns记录文件属组为named

  1. # ll  
  2. total 36  
  3. -rw-r----- 1 root named 176 Aug 14 12:01 20.21.172.ptr  
  4. -rw-r----- 1 root named 218 Aug 14 10:57 aaa.com.zone 

说明:只要保证属组是named就可以了,属主是rootnamed不影响。

重启DNS服务

  1. # /etc/init.d/named restart  
  2. Stopping named: .[ OK ]  
  3. Starting named: [ OK ] 

设置开机自动启动

  1. # chkconfig named on 

4 测试

  1. # vi /etc/resolv.conf   
  2. nameserver 172.21.20.1  
  3. # ping www.aaa.com  
  4. PING www.aaa.com (172.21.20.1) 56(84) bytes of data.  
  5. 64 bytes from localhost (172.21.20.1): icmp_seq=1 ttl=64 time=0.016 ms  
  6. 64 bytes from localhost (172.21.20.1): icmp_seq=2 ttl=64 time=0.021 ms 

结果返回172.21.20.1地址说明我们本地的DNS服务可以正常解析了。

  1. # ping www.baidu.com  
  2. PING www.a.shifen.com (119.75.217.56) 56(84) bytes of data.  
  3. 64 bytes from 119.75.217.56: icmp_seq=1 ttl=51 time=4.61 ms  
  4. 64 bytes from 119.75.217.56: icmp_seq=2 ttl=51 time=4.04 ms 

也可以代解析互联网其他服务器

4.1 测试正向解析

  1. # nslookup  
  2. > www.aaa.com  
  3. Server: 172.21.20.1  
  4. Address: 172.21.20.1#53  
  5. Name: www.aaa.com  
  6. Address: 172.21.20.1 

4.2 测试反向解析

  1. # nslookup   
  2. > 172.21.20.1  
  3. Server: 172.21.20.1  
  4. Address: 172.21.20.1#53  
  5. 1.20.21.172.in-addr.arpa name = dns.aaa.com. 

5 案例1:公司内网DNS服务器添加解析互联网域名的记录

需求:

公司内部服务器需要一台内网的DNS服务器,用来帮助解析互联网的域名。

原理:

互联网的域名管理都是由各自的NS记录指向的DNS服务器管理的。我们不能直接在内网DNS服务器上添加A记录,我们必须添加这些域名的NS记录,这样每当内网客户机通过内网的DNS查询时,内网DNS首先去找管理这些域名的DNS询问对应的IP地址,然后在返回给客户机。

5.1 DNS正向解析常见记录样例

  1. [domain] IN [RR type] [RR data] 

主机名称. IN A IPv4 IP 位址

主机名称. IN AAAA IPv6 IP 位址

领域名称. IN NS 管理这个域名的DNS服务器主机名字. 例如cns2.icbc.com.cn.

领域名称. IN SOA 管理這個领域名称的起始授权的DNS名字.

领域名称. IN MX 优先级 邮件服务器的主机名字.

主机别名. IN CNAME 实际代表这个主机别名的主机名字.

5.2 如何获得互联网域名由哪台DNS服务器提供解析

举例说明,我们想知道中国银行域名 www.boc.cn 由哪个DNS服务提供,我们需要查询这个域名所在的NS记录。查询的时候,我们得输入全域名即 www.boc.cn才行。使用下面的命令查询

  1. # dig -t ns www.boc.cn  
  2. <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.10.rc1.el6 <<>> -t ns www.boc.cn  
  3. ;; global options: +cmd  
  4. ;; Got answer:  
  5. ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 4595  
  6. ;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0  
  7. ;; QUESTION SECTION:  
  8. ;www.boc.cn. IN NS  
  9. ;; AUTHORITY SECTION:  
  10. boc.cn. 3551 IN SOA ns3.boc.cn. hostmaster.ns3.boc.cn. 2013081996 10800 3600 604800 86400  
  11. ;; Query time: 0 msec  
  12. ;; SERVER: 172.21.20.1#53(172.21.20.1)  
  13. ;; WHEN: Thu Aug 14 16:40:33 2014  
  14. ;; MSG SIZE rcvd: 79 

说明:我们查到www.boc.cn域名的SOA记录是 ns3.boc.cn,这个就是提供www.boc.cn解析的主DNS服务器的名字。

5.3 配置内网DNS

1. 编辑/etc/named.conf,添加一个ns.com

  1. zone "ns.com" IN {  
  2. type master;  
  3. file "ns.com.zone";  
  4. allow-update { none; };  
  5. }; 

2. 编辑 /var/named/ns.com.zone文件,添加不同域名的NS记录

  1. $TTL 1D  
  2. @ IN SOA dns.ns.com. root.ns.com. (  
  3. 0 ; serial  
  4. 1D ; refresh  
  5. 1H ; retry  
  6. 1W ; expire  
  7. 3H ) ; minimum  
  8. @ IN NS dns.ns.com.  
  9. dns IN A 172.21.20.1  
  10. www.95599.cn IN NS ns1.shdc.95599.cn.  
  11. corporbank.icbc.com.cn IN NS cns2.icbc.com.cn.  
  12. ebspay.boc.cn IN NS ns3.boc.cn.  
  13. www.cebbank.com IN NS dns3.cebbank.com.  
  14. unionpaysecure.com IN NS ns1.dnsv5.com.  
  15. bjportal.zqpay.com IN NS dns17.hichina.com.  
  16. www.boc.cn IN NS ns3.boc.cn. 

配置好后,不需要重启named服务即可生效。

5.4 测试

  1. # vi /etc/resolv.conf   
  2. nameserver 172.21.20.1  
  3. # ping www.95599.cn  
  4. PING www.shdc.95599.cn (124.74.251.240) 56(84) bytes of data.  
  5. 64 bytes from 124.74.251.240: icmp_seq=1 ttl=239 time=25.2 ms  
  6. 64 bytes from 124.74.251.240: icmp_seq=2 ttl=239 time=25.5 ms 

表示可以成功解析。

6 FAQ

6.1 反向解析时,提示“server can't find xxxx: SERVFAIL”错误,如何处理?

现象如下所示:

  1. # nslookup   
  2. > 172.21.20.1  
  3. Server: 172.21.20.1  
  4. Address: 172.21.20.1#53   
  5. ** server can't find 1.20.21.172.in-addr.arpa: SERVFAIL 

分析:首先我们查看named.conf文件是否配置正确。然后检查 /var/named/目录下是否存在反向解析文件。最后检查/var/named目录下的解析文件的属组是否是named,如果不是namedDNS服务是没有权限读取这个文件的,也会提示can’t find 的错误。

解决:果然是因为该文件的属组不是named导致的问题。

6.2 客户机使用DNS无法解析

客户机配置了/etc/resolv.conf文件,但是却无法提供解析

  1. # cat /etc/resolv.conf   
  2. nameserver 172.21.20.1 

现象:解析测试失败,内容如下

  1. # nslookup  
  2. > www.sina.com  
  3. Server: 172.21.20.1  
  4. Address: 172.21.20.1#53  
  5. ** server can't find www.sina.com: REFUSED 

分析:查看DNSmessages日志,显示如下:

  1. Aug 18 11:29:31 Monitor named[9161]: client 172.21.20.2#36810: query (cache) 'quit/A/IN' denied 

估计是DNS配置了某种解析限制,查看/etc/named.conf文件,修改下面的部分

  1. options {  
  2. listen-on port 53 { 172.21.20.1; };  
  3. listen-on-v6 port 53 { ::1; };  
  4. directory "/var/named";  
  5. dump-file "/var/named/data/cache_dump.db";  
  6. statistics-file "/var/named/data/named_stats.txt";  
  7. memstatistics-file "/var/named/data/named_mem_stats.txt";  
  8. allow-query { localhost; }; 改成 allow-query { any; };  
  9. recursion yes;  
  10. dnssec-enable yes;  
  11. dnssec-validation yes;  
  12. dnssec-lookaside auto;  
  13. /* Path to ISC DLV key */  
  14. bindkeys-file "/etc/named.iscdlv.key";  
  15. managed-keys-directory "/var/named/dynamic";  
  16. }; 

重启BIND服务

  1. # /etc/init.d/named restart  
  2. Stopping named: .[ OK ]  
  3. Starting named: [ OK ] 

再次测试客户机的解析,一切正常了。

  1. # nslookup  
  2. > www.sina.com  
  3. Server: 172.21.20.1  
  4. Address: 172.21.20.1#53  
  5. Non-authoritative answer:  
  6. www.sina.com canonical name = us.sina.com.cn.  
  7. us.sina.com.cn canonical name = wwwus.sina.com.  
  8. Name: wwwus.sina.com  
  9. Address: 12.130.132.30 

相关内容