详解DNS服务器的配置

 

首先了解一下DNS,再来做相关部署。

DNS 是域名系统 (Domain Name System) 的缩写,是因特网的一项核心服务,它作为可以将域名和IP地址相互映射的一个分布式数据库,能够使人更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。

DNS服务器配置成以下4类之一:

 

  • DNS服务器。
  • DNS服务器
  • 缓存DNS服务器。
  • 转发器

记录类型:

  •  SOA  其实授权记录 包括(主dns,管理员邮箱,刷新策略)
  • A记录 名称——》地址的转换
  • PTR记录 地址——》名称的反向解析
  • NS dns服务器
  • MX 交换记录,电子邮件服务器,其后要带有优先级
  • CNAME 别名记录

在任何操作系统中都有其自带的域名解析工具——hosts文件。当需要域名解析时先寻找系统的hosts文件,如果hosts文件中有需要解析的域名,则直接把相对应的ip地址反馈解析给用户。如果没有则寻找用户指定dns服务器进行解析 ,顺便说一下dns指向,有resolv.conf文件

  1. [root@localhost named]# vim /etc/resolv.conf 
  2.  
  3. nameserver 192.168.0.100                #指向哪台dns服务器 
  4.  
  5. search localdomain 
  6.  
  7.   

linux系统中,可以安装bind-包来安装dns服务,但是其运行的进程却命名为named

 安装过程:

 

  1. # mkdir  /mnt/cdrom 
  2. # mount  /dev/cdrom  /mnt/cdrom  挂载光盘到创建的目录/mnt/cdrom 
  3. mount: block device /dev/cdrom is write-protected, mounting read-only 
  4. #cd /mnt/cdrom/Server 
  5.  
  6. [root@localhost Server]# rpm -ivh bind-9.3.6-20.P1.el5.i386.rpm  # dns主程序包 
  7. [root@localhost Server]# rpm -ivh bind-chroot-9.3.6-20.P1.el5.i386.rpm  

# bind-chroot 包,可以不安装,安装之后当服务器遭到入侵时,也不会被对方访问到计算机内的其他目录,只能限制在/var/named/chroot/目录内,保证了操作系统的安全,

  bind-utils-9.3.6-20.P1.el5 :该包为客户端工具,默认安装,用于搜索域名指令

caching-nameserver-9.3.6-20.P1.el5.i386.rpm高速缓存DNS服务器的基本配置文件,建设一定要安装。

  1. [root@localhost Server]# rpm -ivh caching-nameserver-9.3.6-20.P1.el5.i386.rpm 
  2.  
  3. [root@localhost Server]# rpm -qa |grep  bind # 查询有关bind包的安装 
  4.  
  5. bind-chroot-9.3.6-20.P1.el5 
  6.  
  7. ypbind-1.19-12.el5_6.1 
  8.  
  9. bind-libs-9.3.6-20.P1.el5 
  10.  
  11. bind-utils-9.3.6-20.P1.el5 
  12.  
  13. bind-9.3.6-20.P1.el5 


配置高速缓存DNS 服务器

此时/var/named/chroot/dns服务器的根目录

[root@localhost chroot]# ls

dev  etc  proc  var

etc dns服务器服务配置文件存放位置

[root@localhost chroot]# ls etc

localtime                      named.conf           rndc.conf

named.caching-nameserver.conf  named.rfc1912.zones  rndc.key

var/named dns服务器数据库文件的存放位置

[root@localhost chroot]# ls var/named

192.168.0.zone    localhost.zone   named.ip6.local  slaves

data              named.broadcast  named.local      zzu.com.zone

localdomain.zone        named.zero  named.ca #自动生成的,也可以执行dig –t ns .> named.ca
named.conf
BIND 的核心配置文件,它包含了BIND 的基本配置,但其并不包括区域数据库。
named.conf
文件定义了DNS 服务器的工作目录所在位置,所有的区域数据文件都存放在该目录中,该文件还定义了DNS 服务器能够管理哪些区域,如果DNS 服务器可以管理某个区域,它将完成该区域内的域名解析工作。
设置named.conf 文件并添加“zzu.com”区域

但是此时用户和组都为root,应把组改为root

  1. # chown :named  named.conf 
  2. # vim named.conf 
  3. options{ 
  4.  directory "/var/named";                     #全局区域 
  5.  
  6. }; 
  7. zone "." IN{ 
  8.  
  9.     type hint;                             #线索区域 
  10.    file "named.ca";                        # 全世界13台dns的地址 
  11. }; 
  12. zone "localhost" IN { 
  13.    type master; 
  14.    file "localhost.zone"; 
  15. }; 
  16. zone "0.0.127.in-addr.arpa" IN{ 
  17.  
  18.       type master; 
  19.       file "named.local"; 
  20. }; 

检查配置文档name.conf和对应的区域文件

  1. [root@localhost named]# named-checkconf named.conf /var/named/chroot/etc/name.conf # 检查配置文件 
  2. [root@localhostnamed]#named-checkzone zzu.com /var/named/chroot/var/named/zzu.com.zone 
  3. # 检查区域文件是否正确 
  4.  
  5. [root@localhost chroot]# service named start 
  6. Starting named:                                            [  OK  ] 
  7. [root@localhost chroot]# netstat -tupln |grep named  #查看有关named进程开放的端口 
  8. #tcp 53 和udp 53 
  9. tcp        0      0 192.168.0.123:53            0.0.0.0:*                   LISTEN      23475/named         
  10. tcp        0      0 192.168.0.100:53            0.0.0.0:*                   LISTEN      23475/named         
  11. tcp        0      0 127.0.0.1:53                0.0.0.0:*                   LISTEN      23475/named         
  12. tcp        0      0 127.0.0.1:953               0.0.0.0:*                   LISTEN      23475/named         
  13. udp        0      0 192.168.0.123:53            0.0.0.0:*                               23475/named         
  14. udp        0      0 192.168.0.100:53            0.0.0.0:*                               23475/named         
  15. udp        0      0 127.0.0.1:53                0.0.0.0:*                               23475/named 

新建自己需要负责的域

  1. zone "zzu.com" IN {                       #新建的正向区域 
  2.   type master;#                           #主dns服务器 
  3.  file "zzu.com.zone";                     #新建区域的数据库文件,其中有对应的记录 
  4. allow-transfer { 192.168.0.110;  };       #是否允许区域传送,其中的地址为允许的主机地址 
  5. }; 
  6.  
  7. zone "0.168.192.in-addr.arpa" IN{         #新建的反向区域 
  8.     type master;                         #主dns服务器 
  9.    file "192.168.0.zone"; 
  10.   allow-transfer { 192.168.0.110;   
  11. }; 

# 配置rndc ,可以远程控制服务器

  1. key "rndckey" {     
  2.        algorithm hmac-md5; 
  3.        secret "B44XxFwx0l7D9etS+0ifEg=="; 
  4. }; 
  5. controls { 
  6.  
  7.         inet 127.0.0.1 port 953 
  8.         allow { 127.0.0.1; } keys { "rndckey"; }; 
  1. [root@localhost etc]# cd /var/named/chroot/var/named/ 
  2. [root@localhost named]# pwd 
  3. /var/named/chroot/var/named  

  创建与named.conf中创建的区域文件相对应的数据库文件zzu.com.zone 192.168.0.zone

  1. [root@localhost named]# vim zzu.com.zone  #其中要求严格,必须要求完全FQDN格式 
  2.  
  3. $TTl 64800 
  4. @     IN SOA  ns.zzu.com.  dmin.zzu.com. ( 
  5.  
  6.           10002    #编号 ,不能大于十位数字 
  7.           30M      #刷新时间 
  8.           10M      #重试时间 
  9.           1W       #过期时间 
  10.           1D)      #停止服务时间 
  11.  
  12. @   IN NS ns.zzu.com.       #主dns服务器 
  13. ns   IN A  192.168.0.100 
  14. www IN A   192.168.100.1 
  15. ftp   IN A   192.168.100.2 
  16. ftp1  IN A   192.168.100.77 
  17.  
  18.   
  19.  
  20. [root@localhost named]# vim 192.168.0.zone 
  21.  
  22. $TTL 64800 
  23. @     IN   SOA  ns.zzu.com.  admin.zzu.com. ( 
  24.         10000 
  25.         30M 
  26.         10M 
  27.         1W 
  28.         1D) 
  29. @       IN  NS   ns.zzu.com. 
  30. 100     IN   PTR  ns.zzu.com.           #反向记录了 
  31. 1       IN   PTR  www.zzu.com. 
  32. 2       IN   PTR  ftp.zzu.com. 
  33.  
  34.   

 重新启动dns服务器就可以做域名解析了。

  1. [root@localhost named]# service named restart 
  2.  
  3. Stopping named:                                            [  OK  ] 
  4.  
  5. Starting named:                                             [  OK  ] 

顺便介绍一下dns解析测试工具:nslookup和dig 

nslookup 交互式

  1. [root@localhost named]# nslookup 
  2. > set q=A 
  3. > ftp.zzu.com 
  4. Server:           192.168.0.100 
  5. Address:  192.168.0.100#53 
  6. Name:     ftp.zzu.com 
  7. Address: 192.168.100.2 
 dig dig-t 记录类型

查询反向记录可以使用dig –x 192.168.0.1

  1. [root@localhost named]# dig  -t  A www.zzu.com 
  2.  
  3. <<>> DiG 9.3.6-P1-RedHat-9.3.6-20.P1.el5 <<>> -t A www.zzu.com 
  4. ;; global options:  printcmd 
  5. ;; Got answer: 
  6. ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 53258 
  7. ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1,ADDITIONAL: 1 
  8. ;; QUESTION SECTION: 
  9. ;www.zzu.com.                    IN   A 
  10. ;; ANSWER SECTION: 
  11.  
  12. www.zzu.com.              64800     IN   A     192.168.100.1 # 正确解析到地址 
  13. ;; AUTHORITY SECTION: 
  14.  
  15. zzu.com.        64800     IN   NS   ns.zzu.com. 
  16. ;; ADDITIONAL SECTION: 
  17.  
  18. ns.zzu.com.           64800     IN   A     192.168.0.100 
  19. ;; Query time: 7 msec 
  20. ;; SERVER: 192.168.0.100#53(192.168.0.100) 
  21. ;; WHEN: Thu Jun 21 17:43:45 2012 
  22. ;; MSG SIZE  rcvd: 78 
  23.  
  24. [root@localhost named]# dig -x 192.168.0.1 
  25. <<>> DiG 9.3.6-P1-RedHat-9.3.6-20.P1.el5 <<>> -x 192.168.0.1 
  26.  
  27. ;; global options:  printcmd 
  28. ;; Got answer: 
  29. ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 56281 
  30. ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1 
  31.  
  32. ;; QUESTION SECTION: 
  33. ;1.0.168.192.in-addr.arpa.     IN   PTR 
  34.  
  35. ;; ANSWER SECTION: 
  36. 1.0.168.192.in-addr.arpa. 64800   IN   PTR www.zzu.com. 
  37. ;; AUTHORITY SECTION: 
  38.  
  39. 0.168.192.in-addr.arpa.  64800     IN   NS   ns.zzu.com. 
  40.  
  41. ;; ADDITIONAL SECTION: 
  42. ns.zzu.com.           64800     IN   A     192.168.0.100 
  43.  
  44. ;; Query time: 80 msec 
  45. ;; SERVER: 192.168.0.100#53(192.168.0.100) 
  46. ;; WHEN: Thu Jun 21 17:48:51 2012 
  47. ;; MSG SIZE  rcvd: 100 

主从dns服务器的配置


dns服务器中的named.conf配置文件

  1. zone "zzu.com" IN {              #新建的正向区域 
  2.  type master;#                  #主dns服务器 
  3.  file "zzu.com.zone";          #新建区域的数据库文件,其中有对应的记录 
  4. allow-transfer {  192.168.0.110;  };     #是否允许区域传送,其中的地址为允许传送的主机地址 
  5.  
  6. }; 
  7. zone "0.168.192.in-addr.arpa" IN{          #新建的反向区域 
  8.  
  9.       type master;                        #主dns服务器 
  10.       file "192.168.0.zone"; 
  11.      allow-transfer { 192.168.0.110;  }; 
  12.  
  13. }; 
  1. bind-9.3.6-20.P1.el5.i386.rpm 
  2. ind-chroot-9.3.6-20.P1.el5.i386.rpm 

在辅助dns服务器上安装

辅助dns服务器的named.conf文件内容

  1. vim named.conf 
  2.  
  3. options{ 
  4.  
  5.  directory "/var/named";                  
  6.  
  7. }; 
  8.  
  9. zone "." IN{ 
  10.  type hint; 
  11.  file "named.ca"; 
  12.  
  13. }; 
  14.  
  15. zone "localhost" IN { 
  16.     type master; 
  17.     file "localhost.zone"; 
  18.  
  19.   
  20.  
  21. }; 
  22.  
  23. zone "0.0.127.in-addr.arpa" IN{ 
  24.  
  25.       type master; 
  26.       file "named.local"; 
  27. }; 
  28. zone "zzu.com" IN { 
  29.  
  30.  type slave ;                      #辅助dns服务器类型 
  31.  
  32.  file "slaves/zzu.com.zone";         #从主服务器copy过来的数据存放位置 
  33.  
  34.  masters { 192.168.0.100; };         #主服务器是哪个 
  35. }; 
  36. zone "0.168.192.in-addr.arpa" IN{ 
  37.       type slave; 
  38.       file "slaves/192.168.0.zone"; 
  39.       masters { 192.168.0.100; };     #同上啦,你懂得 
  40.  
  41. }; 

此时辅助服务器就做好了,可以查看日志信息来查看是否传送成功

  1. #tail –f /var/log/messages                   #动态查看日志 

也可以先测试一下是否允许区域传送使用

  1. #dig -t axfr zzu.com  
  1. [root@station22 named]# ls slaves/ 
  2.  
  3. 192.168.0.zone  zzu.com.zone #文件也传送过来了 查看一下 
  1. [root@station22 named]# cat slaves/zzu.com.zone 
  2.  
  3. $ORIGIN . 
  4.  
  5. $TTL 64800  ; 18 hours 
  6.  
  7. zzu.com               IN SOA  ns.zzu.com. dmin.zzu.com. ( 
  8.  
  9.                           10002      ; serial 
  10.  
  11.                           1800       ; refresh (30 minutes) 
  12.  
  13.                           600        ; retry (10 minutes) 
  14.  
  15.                           604800     ; expire (1 week) 
  16.  
  17.                           86400      ; minimum (1 day) 
  18.  
  19.                           ) 
  20.  
  21.                    NS   ns.zzu.com. 
  22.  
  23. $ORIGIN zzu.com. 
  24.  
  25. ftp               A     192.168.100.2 
  26.  
  27. ftp1              A     192.168.100.77 
  28.  
  29. ns                A     192.168.0.100 
  30.  
  31. www               A     192.168.100.1 

dns子域授权


父域 dnszzu.com.zone

  1.  $TTL 64800      ; 18 hours 
  2.  
  3. zzu.com                 IN SOA  ns.zzu.com. dmin.zzu.com. ( 
  4.  
  5.                                 10002      ; serial 
  6.  
  7.                                 1800       ; refresh (30 minutes) 
  8.  
  9.                                 600        ; retry (10 minutes) 
  10.  
  11.                                 604800     ; expire (1 week) 
  12.  
  13.                                 86400      ; minimum (1 day) 
  14.  
  15.                                 ) 
  16.  
  17.                         NS      ns.zzu.com. 
  18.  
  19. ftp        IN           A       192.168.100.2 
  20.  
  21. ns         IN           A       192.168.0.100 
  22.  
  23. www        IN           A       192.168.100.1 
  24.  
  25. tec        IN          NS    ns.tec 
  26.  
  27. ns.tec     IN         A      192.168.0.110 

子域dnsnamed.conf

编辑named.conf文件 

 

  1. zone "tec.zzu.com" IN { 
  2.  
  3.  type master; 
  4.  
  5.  file "tec.zzu.com.zone"; 
  6.  
  7. }; 
  1. [root@localhost named]# vim tec.zzu.com.zone 
  2.  
  3. $TTl 64800 
  4.  
  5. @     IN SOA  ns.tec.zzu.com. dmin.zzu.com. ( 
  6.  
  7.          10002 
  8.  
  9.           30M 
  10.  
  11.           10M 
  12.  
  13.           1W 
  14.  
  15.           1D) 
  16.  
  17. @   IN NS ns.tec.zzu.com. 
  18.  
  19. ns  IN A  192.168.0.110 
  20.  
  21. www IN A   192.168.110.10 
  22.  
  23. ftp IN A   192.168.110.20  


  1.  root@localhost etc]# dig -t A www.tec.zzu.com 
  2.  
  3.   
  4.  
  5. <<>> DiG 9.3.6-P1-RedHat-9.3.6-20.P1.el5 <<>> -t A www.tec.zzu.com 
  6.  
  7. ;; global options:  printcmd 
  8.  
  9. ;; Got answer: 
  10.  
  11. ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 25754 
  12.  
  13. ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1 
  14.  
  15.   
  16.  
  17. ;; QUESTION SECTION: 
  18.  
  19. ;www.tec.zzu.com.        IN   A 
  20.  
  21.   
  22.  
  23. ;; ANSWER SECTION: 
  24.  
  25. www.tec.zzu.com.  64800     IN   A     192.168.110.10 
  26.  
  27.   
  28.  
  29. ;; AUTHORITY SECTION: 
  30.  
  31. tec.zzu.com.          64800     IN   NS   ns.tec.zzu.com. 
  32.  
  33.   
  34.  
  35. ;; ADDITIONAL SECTION: 
  36.  
  37. ns.tec.zzu.com.             64800     IN   A     192.168.0.110 
  38.  
  39.   
  40.  
  41. ;; Query time: 7 msec 
  42.  
  43. ;; SERVER: 192.168.0.110#53(192.168.0.110) 
  44.  
  45. ;; WHEN: Thu Jun 21 18:34:55 2012 
  46.  
  47. ;; MSG SIZE  rcvd: 82 
  48.  
  49.   

 

    从我自己对dns服务的认识给大家介绍和说明了一下dns服务 。dns相关概念和配置就说道这里,有什么疑问可以您随时留言,有什么错误请您指正,我一定会改正错误,相互学习,相互促进。