DNS 是域名系统 (Domain Name System) 的缩写,是因特网的一项核心服务,它作为可以将域名和IP地址相互映射的一个分布式数据库,能够使人更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。
             通常 Internet 主机域名的一般结构为:主机名.三级域名.二级域名.顶级域名。 Internet 的顶级域名由 Internet网络协会域名注册查询负责网络地址分配的委员会进行登记和管理,它还为 Internet的每一台主机分配唯一的 IP 地址。全世界现有三个大的网络信息中心: 位于美国的 Inter-NIC,负责美国及其他地区; 位于荷兰的RIPE-NIC,负责欧洲地区;位于日本的APNIC ,负责亚太地区。
              FQDN:(Fully Qualified Domain Name)完全合格域名/全称域名,是指主机名加上全路径,全路径中列出了序列中所有域成员。全域名可以从逻辑上准确地表示出主机在什么地方,也可以说全域名是主机名的一种完全表示形式。从全域名中包含的信息可以看出主机在域名树中的位置。DNS解析流程:首先查找本机HOSTS表,有的直接使用表中定义,没有查找网络连接中设置的DNS 服务器由他来解析
您可以把DNS服务器配置成以下3类之一:
1.主DNS服务器:数据修改
2.辅助DNS服务器:定期更改,向主服务器请求数据同步,当主服务器出现故障,辅助服务器就停止运作
             servial  number:版本号,序列号
             refresh:刷新时间,检查时间周期,定义多长时间更新一次
              retry:重试时间  小于检查时间
             expire:过期时间,辅助服务器停止运作
             nagative answer TTL:否定答案的缓存时间
            (保存于数据文件中)
3.缓存DNS服务转发器是网络上的域名系统 (DNS) 服务器,用来将外部 DNS 名称的 DNS 查询转发给该网络外的 DNS 服务器。也可使用“条件转发器”按照特定域名转发查询。
4.转发器:通过让网络中的其他 DNS 服务器将它们在本地无法解析的查询转发给网络上的 DNS 服务器,该 DNS 服务器即被指定为转发器。使用转发器可管理网络外的名称的名称解析(例如,Internet 上的名称),并改进网络中的计算机的名称解析效率
器:
            一个DNS查询可能会是一个非递归查询或递归查询:
            一个非递归查询的DNS服务器提供了一个记录的域,它是权威本身,或没有查询其他服务器,它提供了一个结果。
            一个递归查询的DNS服务器将全面解答如需要查询其他名称服务器查询(或给出错误)。不支持递归查询的DNS服务器。
           解析器,或另一台DNS服务器递归代表的情况下,域名解析器,协商使用递归服务,使用查询头位。解决通常需要遍历多个名称服务器,找到所需要的信息。然而,一些解析器的功能更简单地只用一个名称服务器进行通信。这些简单的解析器依赖于一个递归名称服务器(称为“存根解析器”),为他们寻找信息的执行工作。
根节点服务器a.root-server.net------m.root-server.net
透过主机名查询ip地址的流程:
例:在浏览器输入 时
1.收到用户的请求,先看看自身有木有缓存记录,若无,则向.查询:因为DNS是阶层式架构,每部主机都会管理自己辖下的主机名解释而已,
2.想顶层.(root)查询。但是由于.只记录了.com的信息,此时,会告知“我不知道这部主机。你可以向.com询问,告诉你.com的地址”
3.向第三曾.com查询。依次类推,最后找到
这些我们可以通过dig指令来查看
[root@localhost ~]# dig +trace
DNS使用的port number:53 你可以在你的linux系统查/etc/services档案,搜寻domain这个关键词,可以查到53这个port
区域传送类型:
       增量区域传送:ixfr  只传送改变的条目
       完全区域传送:axfr
                     适用于主从服务器
 
区域类型:
     主区域:master
     从区域:slave
     提示区域:hint  定义根所在的地方,记录.的zone
     转发区域:forward
 
DNS数据库的记录:正解、反解、ZONE的意义
      正向:FQDN-->IP
      反向:IP-->FQDN
 数据库中的,每一个条目称作一个资源记录
 资源记录的格式
  NAME (名称)  (TTL可省略,可全局定义)   IN(网络类型)     RT(资源记录类型)  VALUE(数据)
                                IN A     1.1.1.1
       1.1.1.1         IN    PTR    
  
资源记录类型:
   SOA(Start  Of  Authority):起始授权记录,只能有一条,
     ZONE NAME  TTL  IN  SOA  MASTER_NS_server_FQDN ADMINSTRATOR_MAILBOX(
          serial number:版本号,序列号
          refresh:刷新时间,检查时间周期,定义多长时间更新一次
          retry:重试时间  小于检查时间
          expire:过期时间,辅助服务器停止运作
          na ttl ):否定答案的缓存时间
       时间单位:M(分钟)、H(小时)、D(天)、W(周),默认单位是秒
       邮箱格式: -写为-> admin.magedu.com(@被识别为域名)
        
           例:magedu.com.  600  IN  SOA  ns1.magedu.com.  admin.magedu.com. (
                 2013040101
                1H
                5M
                1W
                1D ) 
NS (name  server) :(名称服务器)ZONE  NAME-->FQDN从区域到主机名的格式
     例:magedu.com.  600  IN  NS  ns1.magedu.com.
      magedu.com.  600  IN  NS  ns2.magedu.com.
      ns1.magedu.com. 600  IN  A  1.1.1.2
      ns2.magedu.com. 600  IN  A  1.1.1.5
 MX(Mail eXchanger)  :(邮件交换器)ZONE  NAME-->FQDN    <定义在正向解析之中>
 ZONE NAME   TTL  IN   MX pri  VALUE
       优先级:0-99,数字越小,级别越高
      例:magedu.com.  600  IN  MX   10  mail.magedu.com.
       mail.magedu.com.  600   IN  A  1.1.1.3
  A(address)  :FQDN-->IPv4  主机名到ip地址
  AAAA       :FQDN-->IPv6    
  PTR(pointer)  :(指针记录)IP-->FQDN  
  CNAME(Canonical Name):(别名记录)FQDN-->FQDN
      Alias   IN   CNAME   FQDN
     
主配置文件:/etc/named.conf 
    BIND进程的工作属性
    区域的定义
 options {
                 directory "/var/named"
                allow-recursion{172.16.0.0/16};能够被递归的客户端来源
                recursion  no 都不进行递归
                allow-query  定义哪些客户端来查询,允许的客户端  
                allow-transfer {none;} 不允许传送
                allow-transfer {172.16.0.0/16}允许谁传送
                notify  yes;通知从服务器改变
 根区域:zone "ZONE NAME"  IN {
                         type {master|salve|hint|fowward};
                       };
 主区域:
             file "区域名称文件“;
 从区域:
             file ”区域数据文件“;
              masters { master1_ip};
秘钥文件:/etc/rndc.key          (配置信息为/etc/rndc.conf)
区域数据文件:/var/named/  name.localhost    name.loopback
例:要求:a.com  172.16.14.0/24
                     ns1.a.com.  172.16.14.50
                     ns2.a.com.  172.16.14.51 
                     .  172.16.14.50   172.16.14.53
                      mail.a.com.  172.16.14.52
                      ftp    www
 1.先删除自带的软件
  rpm -e bind
 2.安装所需要bind软件(本例以bind97为例)
 [root@localhost ~]# yum install bind97
 [root@localhost ~]# yum  install bind97-utils
 3.主配置文件(先备份,配置个简单的)
  先配置缓存文件
  vim /etc/named.conf

 4.重启dns服务器
 [root@localhost ~]# service named restart
    Stopping named:                                            [  OK  ]
    Starting named:                                              [  OK  ]
 尽量使用reload,重读数据即可
 临时性地关闭SELinux:
 [root@localhost ~]# setenforce  0 
      (要想永久的关闭/etc/selinux/config           SELINUX=permissive)
 5.测试DNS是否可以运行
 [root@localhost etc]# ping 若能ping通,证明DNS缓存服务器建立完成
 6.让主机成为DNS服务器
 [root@localhost ~]# vim /etc/named.conf

 7.编辑正向解析文件,改变权限,和属主属组,并检查语法
 [root@localhost ~]# vim /var/named/a.com.zone

 8.编辑反向解析文件,改变权限,和属主属组,检查语法
 [root@localhost ~]# vim  /var/named/14.16.172.in-addr.arpa.zone

 9.重启

[root@localhost named]# service named restart

Stopping named:                                            [  OK  ]
Starting named:                                              [  OK  ]
 检测:10.使用dig指令.还可以使用nslookup、host等命令

     11.下次开机时自启

 基础的DNS服务器就完成啦(若没有连网,可以把DNS服务器指向主机 /etc/reslov.conf  把nameserver改为自己的所建立的DNS服务器即可)
扩展:建立从服务器,上边的配置文件里定义了从服务器为 ns2.a.com.
 1.安装BIND软件包
 [root@localhost ~]# yum install bind97
 [root@localhost ~]# yum  install bind97-utils
 2.从主服务器拷贝/etc/named.conf配置文件,
    先把/etc/named.conf 备份为/etc/named.conf.orig
    [root@localhost ~]# mv /etc/named.conf /etc/named.conf.orig

拷贝文件

   [root@server49 ~]# scp 172.16.14.50:/etc/named.conf /etc/
建立从服务器的主配置文件
   [root@server49 ~]# vim /etc/named.conf

    

    查看/var/named/slaves/下的文件,这时应该已经同步过来啦

 

 3.更改主服务器的配置文件,传送并通知从服务器,

      查看日志

[root@localhost named]# tail /var/log/messages

 Apr  3 01:33:18 localhost named[21728]: zone a.com/IN: sending notifies (serial 2013040302)
 Apr  3 01:40:50 localhost named[21853]: client 172.16.14.51#36344: transfer of 'a.com/IN': AXFR-style IXFR started
                               实现了主从服务器的同步
扩展:
建立子域
     编辑主服务器的配置文件

 
  1. [root@localhost named]# vim /var/named/a.com.zone  
  2. $TTL 600 
  3. a.com.  IN      SOA     ns1.a.com  admain.a.com (  
  4.                                 2013040304 
  5.                                 1H 
  6.                                 5M 
  7.                                 2D 
  8.                                 6H )  
  9.         IN      NS      ns1.a.com.  
  10.         IN      NS      ns2.a.com.  
  11.         IN      MX  10  mail.a.com.  
  12. ns1     IN      A       172.16.14.50 
  13. ns2     IN      A       172.16.14.51 
  14. www     IN      A       172.16.14.50 
  15. www     IN      A       172.16.14.53 
  16. mail    IN      A       172.16.14.52 
  17. ftp     IN      CNAME   www  
  18. qqq     IN      A       172.16.14.54 
  19. www     IN      A       172.16.14.55 
  20. fin     IN      NS      ns1.fin   #建立子域,指定子域的DNS服务器
  21. ns1.fin IN      A       172.16.14.1  #指定子域的DNS服务器地址
  22. master  IN      NS      ns1.master  
  23. ns1.master      IN      A       172.16.14.2 

添加子域的名字为fin.acom和master.a.com

切换到172.16.14.1这个虚拟机上上,配置主配置文件

vim /etc/named.conf(当然前提是安装bind软件包)

 

配置/var/named/fin.a.com.zone,这里只做正向解析,反向解析同上边的差不多

  重启服务器

检测

 dig命令
           dig -t RT NAME       查这个域的DNS服务器
           dig -x IP       根据IP查FQDN
           dig -t   A    @172.16.14.50 指定通过的端口
 host:
        host -t RT NAME
 nslookup:交互模式
     >server DNS服务器的地址    指定DNS服务器
 
希望对您们有所帮助!