当前位置: > RedHat >

RedHat6.3配置DNS服务器

时间:2014-09-23 11:43来源:linux.it.net.cn 作者:it

1 系统环境

OS:Red 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就可以了,属主是root或named不影响。

重启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,如果不是named,DNS服务是没有权限读取这个文件的,也会提示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 

分析:查看DNS的messages日志,显示如下:


  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 

 

(责任编辑:IT)
------分隔线----------------------------
栏目列表
推荐内容