DNS(domain name system)是域名解析服务器,提供域名和IP地址之间一种相互转换的机制,目的是为了方便人们的记忆和管理。工作在应用层。同时监听TCP 53端口 ,UDP 53端口。 

 
域名解析发展史;
 
            早期初期在管理员去官方服务器hosts下载主机映射到本机/etc/hosts 下记录你想访问的网络的所有对应关系,但是适应不了网络更新频繁。随着时代的发展,hosts不堪重负。             之后出现了dns来解决这个问题。
 
特征:
 
       nds是hosts的扩展,也是分层的。dns解析是从后向前的,www.baidu.com. 为主机名,最后面的.为根域,默认省略了。 .com为一级域,.baidu为二级域,www为主机名。
 
解析顺序:
 
       先找.再找.com再找.baidu再找www
 
 
层次化的结构:
 
            跟域            .                   根服务器
 
            一级域         com          net          org    一级域名(国家域,组织域,反向域)
 
 
            二级域         ibm         hp     qq   
                        
  
 
在二级域ibm里可以再划分子域www、tech等三、四、五级域,最多64个子域。整个结构层次化,就像倒置的树。
nds服务器,只知道根还有与下级服务器之间关系。但是不知道上级服务器是谁,都需要从根查询。每个dns都需要知道跟在哪里。根节点全球只有13个,日本一个,亚洲一个,剩下全在美国。
 
查询类型:
    1,递归查询:a询问b问题,b直接回应结果,b的工作量很大
     
    2,迭代查询:a询问b问题,b给一个参考路径,a在去寻找
 
在互联网上,不进行递归查询,递归查询只在本地执行。
 
 
解析类型:
     
           域名----> ip    :正向解析
           ip  ----> 域名  :反向解析
 
记录类型:
   nds本身就是一个数据库,一个文本文件记录了不同类型的映射,通过这些记录实现解析。
   第一条,我们这个库代表着什么区域。
   第二条,我们这个库里主机名的ip
   第三条,ip号对应着哪个主机名
 
常用的记录类型:
                SOA记录    表明起始授权记录,标识一个域名服务器的主服务器
                A记录     主机名转换ip
                PTR记录    ip转换主机名
                NS记录      域对应的服务器
                MX记录     域对应的邮箱      
                CNAME记录   别名对应的主机名          
                
 
 
DNS服务器的类型:
 
可以设置多台dns服务器,但是必须有一个为主。主服务器有权限创建一个记录,其他从服务器只需要与主服务器进行拷贝同步。主、从服务器可以同时进行解析,从服务器数据保持与主服务器一样。
 
区域传送:
主从服务器之间进行,主服务器-----只有一台,一旦数据更新,立刻通知辅助名称服务器
                    辅助名称服务器------接受主服务器传来的配置文件,记录。更新时通知其他
                    缓存服务器--------把第一次的查询结果保存一定时间,在这个时间内,直接使用,不在查询。
          
          axfr 完全区域传送,数据完全传送。
          ixfr 增量区域传送,只传送变化的数据与记录。
 
 
名称解析 与 区域、域概念:
 
正向:需要一个单独的数据文件,
反向:需要一个单独的数据文件          
区域:物理概念
域:逻辑概念
 
正向与反向解析各自都需要一个单独的文件来配置。这个单独的文件叫做区域,是物理概念。他们都是在一个域内,实现解析的配置文件。
一个域就包含了一个正向区域与一个反向区域。如果域中如果有子域,还可以在包含子域中的区域。
 
 
解析流程:客户端要找www.a.org
 
1.主机查看本地/etc/hosts,没有的话递归查询找dns服务器
2.dns服务器查看本地dns服务器缓存,有的话返回。没有,下一步
3,查看是否是在自己本地服务器的域,如果没有再找根,进行迭代查询(权威答案)
 
主机找dns,dns找根,找到根就等于找到了所有主机路径,除非目标不存在。
 
 
 
构建主、从服务器流程:
 
1.首现安装软件   dns是协议,bind是软件,named是进程
 
]# yum list all bind*  查找bind相关的包
]# yum install bind.i386  安装bind软件包
 
bind.i386 安装包 , caching-nameserver.i386 这个包包含了配置文件
 
2.配置主配置文件:主要有3个
            一.  /etc/name.conf 主配置文件,主要用于配置区域,全局设置。分两段。};不能有空格.
         
示例:    options {                      全局选项段options,表示对全局服务器生效。
             directory "/var/named";      定义工作目录
             version " com on "
            };
 
           zone "." IN {              区域声明段zone,对区域生效。"."定义的为根域   
              type hint;             固定的,定义区域的类型。这里定义根为线索域,找不到就去找根
              file "named.ca";       相对路径,相对于/var/named
           };
           
           zone "localhost" IN {      声明本地正向区域
              type master;            定义自己为主区域服务器
              file "localhost.zone";   
            };
   
           zone "0.0.127.in-addr.arpa" IN {     声明反向区域
               type master;
               file "named.local";
             };
如何定义从区域:
zone "zone_name" IN {
      type slave;
      file "slaves/zone_name.zone";
      masters { masrer_name; };
};
 
区域的类型:
hint 定义根线索域,跟域
master 定义主区域,主服务器
slave 定义从区域,从服务器
forward 定义反向区域
 
以上三条是最基本的,别人把dns指向你你就可以解析,可以利用根找到所有地址。
编辑好之后,把属组改为named
]# chown :named /etc/named.conf
 
配置文件准备完毕,cd /etc/named  里面是没有zone选项里的3个文件的。我们需要去创建数据文件.
 
创建数据文件:
named.ca  localhost.zone  named.local
 
利用dig -t NS .  查找,里面有13个根节点。
1.利用dig与输出重定向生成named.ca
 
]# dig -t NS . @a.root-servers.net > /var/named/named.ca 
 
 
 
 
2.格式比较独特,这是区域文件。包含宏定义,类似变量。解析记录,第一条必须是SOA记录.格式name [ttl] IN RECORD_TYPE value 定义解析记录,
 
]# vim /var/named/localhost.zone 
        
 
$TTL 86400                                                     定义宏定义,生存周期为86400秒
@          600  IN   SOA  localhost. admin.localhost. (         定义SOA,固定在第一条,定义主服务器
                                     2009021901                 更新序列号用于标记地址数据库的变化,可以是10位以内的整数,改变一次加一。
                                     3H                         刷新时间从域名服务器更新该地址数据库文件的间隔时间
                                    15M                         重试延时从域名服务器更新地址数据库失败以后,等待多长时间再次尝试
                                     1W                        失效时间超过该时间仍无法更新地址数据库,则不再尝试。
                                     1D )               缓存时间设置无效地址解析记录(该数据库中不存在的地址)的默认缓存时间,在此时间内再差寻,做否定回答.
 
                IN    NS   localhost.       重要:NS记录没写@与生存周期时间,代表保持上一条记录参数.这里的localhost为主机名.如果有多个服务器,则定义多条NS
localhost.      IN    A   127.0.0.1       定义正向解析
 
保存退出
 
3.刚刚是正向解析,我们还需要一个反向解析数据文件
cp /var/named/localhost.zone /var/named/named.local 修改成反向解析,名字为named.local
 
$TTL 86400 
@          600  IN   SOA  localhost. admin.localhost. ( 
                                          2009021901 
                                           3H
                                           15M
                                           1W
                                            1D  )
                IN    NS     localhost.
1               IN    PTR    localhost.      此处1前面引用named.conf中的0.0.127识别为127.0.0.1
 
保存退出,此时三个文件都有了.更改属组为named
 
          
            
 
二.  /etc/rndc.conf 编辑客户端文件
                nameserver 127.0.0.1
                search localdomain
     
三.  /etc/rndc.key
 
named-checkconf 检查配置文件语法错误
named-checkzone "区域名" 路径    检查区域配置文件语法错误
service named 
dig -t TYPE name @server 不使用缓存,指向nds服务器             
dig -t axfr magedu.com
dig -x ip地址 反向解析
dig -
netstat -tunlp 非常重要的网络查看命令,t表示tcp相关的会话,u表示udp相关的会话,n以数字的形式进行查看,不加n会很慢.l表示只产看在监听状态的连接,服务端套接字.p表示由哪个进程来连接的.
 
rndc:
rndc named start 开启named进程,dns协议
清空dns缓存: rndc flush      在windows上是ipconfig/flushdns
rndc status 查看rndc状态
rndc reload 重新加载数据文件与主配置文件,数据文件很大。
rndc reconfig重新加载主配置文件
 
 
 
 
server named configtest 用于测试named