内容简介:


DNS的简述


DNS服务器的安装


DNS常见名词


DNS配置文件详解


配置主要的DNS服务


DNS的简述


网络中为了区别各个主机,必须给每台主机配置一个唯一的IP地址,但这些数字的地址人们比较难以记忆,所以就采用了“域名”的方式来取代这些数字。


当某台主机要与其他主机进行通信时,就可以利用域名通信,域名向DNS服务器进行查询,转换成相应的IP地址进行通信。


早期的DNS服务是有一个文件提供/etc/hosts文件,但是后来随着互联网的开发,这个文件已经不能满足需求,于是由伯克利大学开发了BIND软件,来进行提供更广的DNS服务。


DNS服务器系统由以下四个组成部分:


DBS域名空间


资源记录


DNS服务器


DNs客户端


域分为:


组织域:com、org、net、cc....


国家域:cn、tw,hk,....


反向域:IP-->FQDN


 区域的划分:如图1


 


linux系统服务架设之DNS架设_客户端


 DNS的查询过程分为两部分进行


名称查询从客户端开始,并传输给本机的DNS客户服务查询进行解析,如果本地不能在本机解析查询,则向本机设定的DNS服务器进行解析。如图2


 


linux系统服务架设之DNS架设_linux系统服务架设之DNS架设_02


 DNS服务进行域名解析有两种方式:


递归查询:只发送一次请求,而后的查询由DNS服务器完成并返回其结果。


迭代查询:发送一次或者多次查询。DNS服务器返回一个绝对值或参考值,有客户端自己完成查询。如图3


 


linux系统服务架设之DNS架设_linux系统服务架设之DNS架设_03


hosts文件 


hosts文件是Linux系统中一个负责IP地址与域名快速解析的文件,/etc/hosts 


Hosts文件包含了IP地址和主机名之间的映射,还包括主机名的别名。 


hosts文件的格式如下: 


IP地址 主机名/域名 如图4


 


linux系统服务架设之DNS架设_客户端_04


DNS服务器的安装


软件包:


bind97:程序主包,提供DNS服务的安装


bind97-libs:提供DNS服务器程序运行的库文件


bind97-utils:DNS工具包


bind97-level:开发包


需要安装bind97,bind97-libs,bind97-utils。安装之前需要卸载系统上之的文件,包括库文件和utils。


rpm -qa bind*     //查询已安装的软件包


rpm -e bind-libs bind-utils //卸载软件包


yum install bind97 bind97-libs bind97-utils //安装bind97必须软件包


安装完成后检查所有包是否安装正确:如图5


 


linux系统服务架设之DNS架设_服务器_05


rpm -qa bind97*


DSN服务的启动和停止


1、启动DNS服务


service named start


2、停止DNS服务


service named stop


3、重启NDS服务


service named restart


4、开启DNS服务的启动选项


chkconfig --list named //查看启动项


chkconfig named on  //开启dns启动项


如图6所示


 


linux系统服务架设之DNS架设_dns服务器_06


5、重读配置文件,不重启服务而使配置文件生效


service named reload


DNS常见名词:


ZONE:DNS名称,其中包含了存储在DNS服务器上的资源记录。


FQDN:(Fully Qualified Domain Name)主机全名


正向解析:域名到IP地址的解析过程


反向解析:从IP到域名的解析过程


DNS配置文件:


/etc/named.conf:主文件,设置一般的参数,指向该服务器使用的域数据库的存放位置


/var/named/named.ca:根域配置服务文件,指向根域名配置的服务器


/var/named/named.localhost.zone:localhost区的正向解析文件,用于将localhost名字转换为Ip127.0.0.1


/var/named/named.loopback:locahost的反向解析文件,用于将IP127.0.0.1转换为localhost主机名


资源记录类型:


SOA资源记录:起始授权记录(Start of Authority Record),简称SOA记录。SOA定义了域的全局参数,进行整个域的管理设置。一个区域文件只允许存在唯一的SOA记录。 


格式:区域名(当前) 记录类型 SOA 主域名服务器(FQDN) 管理员邮件地址 (序列号 刷新间隔 重试间隔 过期间隔 TTL) 


NS资源记录:名称服务器(NS)资源记录表示该区的授权服务器,它们表示SOA资源记录中指定的该区的主和辅助服务器,也表示了任何授权区的服务器。每个区在区根处至少包含一个NS记录。 


格式:区域名 IN NS 完整主机名(FQDN) 


A资源记录:地址(A)资源记录把FQDN映射到IP地址,因而解析器能查询FQDN对应的IP地址。 


格式:完整主机名(FQDN) IN A IP地址 


PTR资源记录:相对于A资源记录,指针(PTR)记录把IP地址映射到FQDN 


格式:IP地址 IN PTR 主机名(FQDN) 


CNAME资源记录:规范名字(CNAME)资源记录创建特定FQDN的别名。 


格式:别名 IN CNAME 主机名 


MX资源记录:邮件交换(MX)资源记录为DNS域名指定邮件交换服务器。 


格式:区域名 IN MX 优先级(数字) 邮件服务器名称(FQDN)


主配置文件/etc/named.conf,如图7


 


linux系统服务架设之DNS架设_客户端_07


named.confi文件的语法格式:




花括号必须成对出现,并且以;结尾


花括号的前后得有空格


花括号内的每段必须也以;结尾


 


type字段指定区域的类型 


master:表示定义的是主域名服务器 。拥有区域数据文件,并对此区域提供管理数据 


slave:表示定义的是辅助域名服务器。拥有主DNS服务器的区域数据文件的副本,辅助DNS服务器会从主DNS服务器同步所有区域数据 


hint:表示是互联网中根域名服务器。当服务器启动时,它使用根线索来查找根域名服务器,并找到最近的根域名服务器列表 


forward:一个forward zone是每个域的配置转发的主要部分


 


下面来我们自己架构一个简单的根DNS,


根区域定义


1、配置named.conf文件


 


  1. 新建一个named.conf,修改属组和属主。权限为640
  2. vim /etc/named.conf
  3. options {
  4. directory       "/var/named";
  5. };
  6. zone "." IN {
  7. type hint;
  8. file "named.ca";
  9. };
  10. zone "localhost" IN {
  11. type master;
  12. file "named.localhost";
  13. };
  14. zone "0.0.127.in-addr.arpa" IN {
  15. type master;
  16. file "named.loopback":
  17. };

  18. chown root:named /etc/named.conf
  19. chmod 640 /etc/named.conf
  20. named-checkconf //检查主配置文件是否有语法错误
  21. named-checkzone "." /var/named/named.ca //检查区域文件是否有错误




SELinux:selinux控制的机制比较特殊,启动DNS服务器的时候需要把SELinux关掉。




 


  1. [root@localhost etc]# getenforce    //查看SELinux状态
  2. Enforcing
  3. [root@localhost etc]# setenforce 0 //临时的关闭SELinux
  4. [root@localhost etc]# getenforce
  5. Permissive
  6. [root@localhost selinux]# vim /etc/selinux/config //配置文件,可以永久关闭。


 


启动DNS服务如下所示,图8


 


linux系统服务架设之DNS架设_linux系统服务架设之DNS架设_08


netstat -tunlp查看服务的相关端口,如图9


 


linux系统服务架设之DNS架设_服务器_09


测试:


vim /etc/resolv.conf


nameserver 172.16.7.1   //本机IP做DNS服务器


search localdomain


dig -t A localhost @172.16.7.1 //查找localhost的A记录,如图10


 


linux系统服务架设之DNS架设_服务器_10


DNS服务器案例一


需求规划:


主机:


master:172.16.7.1


slave:172.16.7.2


测试机:172.16.7.3


master:


ns  ns1.chris.cm


www 172.16.7.6


ftp 172.16.7.7


mail 172.16.7.8


chris 172.16.7.9


chrislee cname www


slave:


ns2.chris.com


要求:其能实现正反向解析


master设置:


1、vim /etc/named.conf在下面增加




  1. zone "chris.com" IN {
  2. type master;
  3. file "chris.com.zone"
  4. };

  5. zone "7.16.172.in-addr.arpa" IN {
  6. type master;
  7. file "172.16.6.zone";
  8. }
  9. 如图11所示

  10. 2、vim /var/named/chris.com.zone     //配置chirs.com的正向数据
  11. $TTL 600
  12. chris.com.      IN      SOA     ns1.chirs.com.  admin.chris.com (
  13. 2013040401 //序列号
  14. 1H       //刷新间隔
  15. 5M       //重试间隔
  16. 2D       //过期间隔
  17. 6H)      //否定答案的缓存时长
  18. IN      NS      ns1.chris.com.
  19. IN 10   MX      mail
  20. ns1             IN      A       172.16.7.1
  21. www             IN      A       172.16.7.6
  22. ftp             IN      A       172.16.7.7
  23. mail            IN      A       172.16.7.8
  24. chris           IN      A       172.16.7.9
  25. chrislee        IN      CNAME   chris


 


linux系统服务架设之DNS架设_客户端_11


 


linux系统服务架设之DNS架设_客户端_12


3、vim /var/named/172.16.7.zone 如下图13


 


linux系统服务架设之DNS架设_linux系统服务架设之DNS架设_13


4、更改这两个文件的权限和属主属组并测试配置




  1. [root@localhost named]# chown root:named chris.com.zone
  2. [root@localhost named]# chown root:named 172.16.7.zone
  3. [root@localhost named]# chmod 640 chris.com.zone
  4. [root@localhost named]# chmod 640 172.16.7.zone
  5. [root@localhost named]# named-checkconf
  6. [root@localhost named]# named-checkzone "chris.com" /var/named/chris.com.zone
  7. [root@localhost named]# named-checkzone "chris.com" /var/named/chris.com.zone
  8. zone chris.com/IN: loaded serial 2013040401
  9. OK                      //正常
  10. [root@localhost named]# named-checkzone "7.16.172.in-addr.arpa" /var/named/172.16.7.zone
  11. zone 7.16.172.in-addr.arpa/IN: loaded serial 2013040401
  12. OK                      //正常


5、测试:如图14、15


 


linux系统服务架设之DNS架设_dns服务器_14


 


linux系统服务架设之DNS架设_linux系统服务架设之DNS架设_15


slave服务器的设置:


1、先在master服务器上配置named.conf配置文件




  1. options {
  2. directory       "/var/named";
  3. #       recursion yes|no;               //是否为客户端开启递归查询,默认是开启的
  4. allow-recursion {172.16.7.0/8; }; //开启递归查询,并规定客户端范围
  5. #       allow-transfer {any;};          //全局定义,开启区域传输,并规定传输的客户端,默认是开启给所有主机传输

  6. };


  7. zone "." IN {
  8. type hint;
  9. file "named.ca";
  10. };

  11. zone "localhost" IN {
  12. type master;
  13. file "named.localhost";
  14. allow-transfer {none; };        //不给任何客户端传输其区域
  15. };
  16. zone "0.0.127.in-addr.arpa" IN {
  17. type master;
  18. file "named.loopback";
  19. allow-transfer {none; };     //不给任何客户端传输其区域
  20. };

  21. zone "chris.com" IN {
  22. type master;
  23. file "chris.com.zone";
  24. allow-transfer {172.16.7.2; };  //只给客户端172.16.7.2传输此区域
  25. };

  26. zone "7.16.172.in-addr.arpa" IN {
  27. type master;
  28. file "172.16.7.zone";
  29. allow-transfer {172.16.7.2; };      //只给客户端172.16.7.2传输此区域
  30. };


2、配置数据文件chris.com.zone




  1. $TTL 600
  2. chris.com.      IN      SOA     ns1.chirs.com.  admin.chris.com (
  3. 2013040403
  4. 1H
  5. 5M
  6. 2D
  7. 6H)
  8. IN      NS      ns1.chris.com.
  9. IN      NS      ns2.chris.com.      //配置slave服务器的NS记录和相应的A记录,如果不配置将无法实现增量传输,就是数据号增加的时候客户端无法更新
  10. IN      MX  10  mail
  11. IN      A       172.16.7.2
  12. ns1             IN      A       172.16.7.1
  13. ns2             IN      A       172.16.7.2
  14. www             IN      A       172.16.7.6
  15. ftp             IN      A       172.16.7.7
  16. mail            IN      A       172.16.7.8
  17. chris           IN      A       172.16.7.9
  18. chrislee        IN      CNAME   chris


3、配置172.16.7.zone反向解数据文件




  1. $TTL 600
  2. @       IN      SOA     ns1.chirs.com.  admin.chris.com (
  3. 2013040401
  4. 1H
  5. 5M
  6. 2D
  7. 6H)
  8. IN      NS      ns1.chris.com.
  9. IN      NS      ns2.chris.com.  配置slave服务器的NS记录和相应的PTR记录,如果不配置将无法实现增量传输,就是数据号增加的时候客户端无法更新
  10. 1               IN      PTR     ns1.chris.com.
  11. 2               IN      PTR     ns2.chris.com
  12. 6               IN      PTR     www.chris.com.
  13. 7               IN      PTR     ftp.chris.com.
  14. 8               IN      PTR     mail.chris.com.
  15. 9               IN      PTR     chris.chris.com.
  16. 9               IN      PTR     chirs.chris.com.


4、slave只需要配置named.conf




  1. options {
  2. directory       "/var/named";

  3. };


  4. zone "." IN {
  5. type hint;
  6. file "named.ca";
  7. };

  8. zone "localhost" IN {
  9. type master;
  10. file "named.localhost";
  11. };
  12. zone "0.0.127.in-addr.arpa" IN {
  13. type master;
  14. file "named.loopback";
  15. };

  16. zone "chris.com" IN {
  17. type master;
  18. file "chris.com.zone";
  19. };

  20. zone "7.16.172.in-addr.arpa" IN {
  21. type master;
  22. file "172.16.7.zone";


        解释如图17


 


linux系统服务架设之DNS架设_linux系统服务架设之DNS架设_16


        5、测试


        解析测试


        启动测试机7.3,编辑etc/resolv.conf


        nameserver 172.16.7.1


search localdomain


dig -t A ftp.chris.com 结果如图18


 


linux系统服务架设之DNS架设_linux系统服务架设之DNS架设_17


区域传输测试,如图19


 


linux系统服务架设之DNS架设_服务器_18


下面把master上的序列号加1,再重启服务,master的日志文件如图20


 


linux系统服务架设之DNS架设_dns服务器_19


查看slave服务器上的文件,如图21


 


linux系统服务架设之DNS架设_客户端_20


OK,此服务器到此已经实现了我们预设的全部功能,架设完毕。


 


泛域名解析:


只需建立一个A记录 *.ZONE NAME.    IN  A  IP


fg:*.chris.com.  IN  A  172.168.0.1


rndc:服务本地/远程控制命令


rndc-confgrn > /etc/rndc.conf //生成rdnc配置文件


如图22所示


 


linux系统服务架设之DNS架设_linux系统服务架设之DNS架设_21


vim /etc/rndc.conf


:,$-1w >> /etc/named.conf把配置文件追加到named.conf内


vim /etc/named.conf,如图23


 


linux系统服务架设之DNS架设_服务器_22


rndc的子命令选项,如图24


 


linux系统服务架设之DNS架设_服务器_23


利用rdns查询信息,如图25


 


linux系统服务架设之DNS架设_服务器_24


远程主机连接的时候需要把/etc/rndc.conf拷贝到客户端主机上面


scp /etc/rndc.conf 172.16.7.3:/root/


然后修改配置,如图26


 


linux系统服务架设之DNS架设_服务器_25


由于远程控制开启不安全,所以建议不要开启DNS的远程控制


 


DNS子域授权


格式:SUB_NAME IN NS NSSERVER_SUB_ZONE_NAME 


  NSSERVER_SUB_ZONE_NAME IN A IP


fg:ns1.fin.chris.com 172.16.100.1




只需要在named.cof内增以下配置即可


fin   IN   NS   ns1.fin


ns1.fin IN   A   172.16.100.1


market   IN   NS   ns1.market


ns1.market IN   A   172.16.200.1


然后在100.1和200.2上分别建立相应的DNS服务器,只是域为fin.chris.com和market.chris.com。这样就可以完成DNS的子域授权了,以后这两个小域可以分别负责自己域内主机的域名解析了。


解析转发:




  1. 【forward {only|first}
  2. forwards {172.16.100.1;}】:所有解析不出来的都转发给父域
  3. zone内设置只针对某个域的解析不歘来的转发格式:
  4. zone "ZONE_NAME"
  5. 【forward first;
  6. forwards {172.16.100.1;}】:
  7. 访问控制列表
  8. acl ACL_NAME {
  9. 172.16.0.0/16;
  10. 127.0.0,0/8
  11. };             //外面单独定义
  12. allow-query {ACL_NAME;}; //域内调用即可
  13. 系统内置的两个列表:
  14. none
  15. any


智能DNS:视图view


格式








fg:


需求规划:


172.16.10.0/8网段通过chris.com域解析


剩余的其他网段通过chrislee.com域解析


编辑named.conf




  1. cal a {
  2. 172.16.10.0/8;
  3. 127.0.0.1/8;
  4. };
  5. options{
  6. directory "/var/named"
  7. };
  8. view chris {
  9. match-clients {a; };
  10. zone "chris.com" IN {
  11. type master;
  12. file "chris.com.zone";
  13. };
  14. };
  15. view chrislee   {
  16. match-client {any; };
  17. zone "chrislee.com" IN {
  18. type master;
  19. file "chrislee.com.zone";
  20. };
  21. };


下面配置chris.com.zone和chrislee.com.zone数据文件即可实现其分类解析功能