原理:

当DNS客户端需要查询所使用的名称时,它会查询DNS服务器来解析该名称。客户端发送的查询消息包括以下3条信息:

1:指定的DNS域名,必须为完全合格的域名(FQDN);
2:指定的查询类型(SOA起始授权机构,NS NAME SERVER 服务器的ip地址,A 主机的记录,,CANME 别名的记录,MX 邮件服务器)。

3:DNS域名的指定类别。

clip_p_w_picpath001

查询的两种方式:本地解析和查询DNS服务器

1.本地解析

当客户端提出解析请求时,首先将请求传送至DNS客户服务,以便使用本地缓存信息进行解析。如果可以解析所要查询的名称,则DNS客户服务应答该查询,该请求处理过程结束。本地DNS服务客户解析过程如图1所示。

clip_p_w_picpath002

图1  本地DNS服务客户解析过程

本地解析程序的缓存包括两种名称信息:

本地配置的主机文件(/etc/hosts,C:\WINDOWS\system32\drivers\etc),该文件是主机名称到地址的映射信息,在DNS客户服务启动时预先加载到缓存中;
从以前的DNS查询应答的响应中获取的资源记录,它被保留在缓存中一段时间。

如果此查询与本机的缓存中的项目不匹配,则解析过程将继续进行,客户端将查询DNS服务器来解析名称。

2.查询DNS服务器

当客户端请求无法在本地解析时,将请求发送至DNS服务器。DNS服务器接收到查询请求时,首先检查它能否在服务器的本地配置区域中获取资源记录信息做出应答,其原理如图2所示。

如果查询的名称与本地区域信息中的相应资源记录匹配,则使用该信息来解析查询的名称,服务器做出应答,则此次查询完成。

clip_p_w_picpath003

图2  查询DNS服务器原理图

如果区域信息中没有查询的名称,则服务器检查它能否通过来自先前查询的本地缓存信息来解析该名称。如果从中发现了匹配的信息,则服务器使用该信息应答查询,此次查询完成。

如果无论从缓存还是从区域信息,查询的名称在首选服务器中都未发现匹配的应答,那么查询过程可继续进行,使用递归来完全解析名称。递归查询的工作过程如下。

如图3所示,如要递归查询certer.example.com的地址,首选DNS服务器通过分析完全合格的域名,向顶层域com查询,而com的DNS服务器与example.com服务器联系以获得更进一步的地址。这样循环查询直到获得所需要的结果,并一级级向上返回查询结果,最终完成查询工作。

clip_p_w_picpath004

图3 递归查询流程

需要注意的是,为了让DNS服务可以正确运行递归查询,需要有一些必要的信息,该信息通常是以根目录的形式来提供,借助使用根目录提示寻找根域服务器,DNS服务器可以完成递归查询。

? 如果客户端申请使用递归过程,但在DNS服务器上禁用递归或查询DNS服务器时客户端没有申请使用递归,则使用迭代的方式查询。迭代查询的工作过程如下。

如图4所示,如要迭代查询user.certer.example.com的地址,首先DNS服务器在本地查询不到客户端请求的信息时,就会以DNS客户端的身份向其他配置的DNS服务器继续进行查询,以便解析该名称。在大多数情况下,可能会将搜索一直扩展到Internet上的根域服务器,但根域服务器并不会对该请求进行完整的应答,它只会返回example.com服务器的IP地址,这时DNS服务就根据该信息向example.com服务器查询,由example.com服务器完成对user.certer.example.com域名的解析后,再将结果返回DNS服务器。

clip_p_w_picpath005

图4  迭代查询流程

对于大多数的迭代查询而言,如果它的主DNS不能解析该名称,那么客户端会使用本地配置的DNS服务器列表,在整个DNS名称空间中联系其他名称服务器。

dns的相关术语:

1:区域类型 正向 名称---》ip   反向 地址---》名称 :2

2:服务器类型 主dns(保存本区域的最原始的记录) 辅助dns(只是主dns的一个复件,不允许进行增加和删除)   cache-only存根

3:记录类型 正向区域
               SOA  (主dns 管理员邮箱 刷新策略)
               NS     (该区域的dns服务器)
               A        主机 ---》ip地址
               CNAME  别名
               MX     邮件服务器
@   IN NS  ns.abc.com.

ns  IN  A   1.1.1.1

            A   名称---》ip地址

           www     2.2.2.2

           CNAME

pop3    IN CANME     mail

  MX (该区域的电子邮件服务器)

@    IN   MX   10   mail.abc.com.
反向区域
            SOA   (  主dns 管理员邮箱 刷新策略)
            NS    (该区域的dns服务器)
            PTR   指针(ip地址---》主机)
  10.168.192.in-addr.arpa.

  SOA  授权起始记录

(主dns服务器,管理员邮箱,刷新策略)

  NS  (该区域dns服务器)

  @   IN NS  ns.abc.com.

  ns  IN  A   1.1.1.1

案例一:

需求分析:

某企业的总部位于北京,并且有三个子公司,b,com   bj.b.com   sh.b.com ,要实现各个公司间域名的解析工作,所以在在北京总部dns  server 192.168.2.100 上建立了父子域并且进行了对上海子公司sh.b.com的授权。

示意图:

clip_p_w_picpath006

一:安装dns的各个包

[root@localhost Server]# rpm -ivh bind-9.3.6-4.P1.el5.i386.rpm  主配置文件
Preparing...                ########################################### [100%]
   1:bind                   ########################################### [100%]
[root@localhost Server]# rpm -ivh bind-chroot-9.3.6-4.P1.el5.i386.rpm  跟安全有关
Preparing...                ########################################### [100%]
   1:bind-chroot            ########################################### [100%]
[root@localhost Server]# rpm -ivh bind-libbind-devel-9.3.6-4.P1.el5.i386.rpm  dns的库文件
Preparing...                ########################################### [100%]
   1:bind-libbind-devel     ########################################### [100%]
[root@localhost Server]# rpm -ivh bind-utils-9.3.6-4.P1.el5.i386.rpm        
Preparing...                ########################################### [100%]
    package bind-utils-9.3.6-4.P1.el5.i386 is already installed

[root@localhost Server]# rpm -ivh caching-nameserver-9.3.6-4.P1.el5.i386.rpm 数据库的存根和数据库的模板文件
Preparing...                ########################################### [100%]
   1:caching-nameserver     ########################################### [100%]

二:切换到dns的根目录下

[root@localhost /]# cd /var/named/chroot/  dns的根目录
[root@localhost chroot]# ll
total 12
drwxr-x--- 2 root named 4096 Mar  5 14:34 dev
drwxr-x--- 2 root named 4096 Mar  5 14:34 etc
drwxr-x--- 6 root named 4096 Mar  5 14:34 var

三:切换到/etc目录并拷贝模板文件

[root@localhost chroot]# cd etc/
[root@localhost etc]# ll
total 16
-rw-r--r-- 1 root root   405 Mar  1 14:17 localtime
-rw-r----- 1 root named 1230 Jul 30  2009 named.caching-nameserver.conf
-rw-r----- 1 root named  955 Jul 30  2009 named.rfc1912.zones
-rw-r----- 1 root named  113 Mar  5 14:34 rndc.key
[root@localhost etc]# cp -p named.caching-nameserver.conf named.conf  拷贝模板文件 一定要加-p选项 代表加模式的一种拷贝

四:修改主配置文件

[root@localhost etc]# vim named.conf

clip_p_w_picpath007

五:启动该服务

[root@localhost etc]# service named restart
Stopping named:                                            [  OK  ]
Starting named:                                             [  OK  ]

六:在 dns server 上进行相关配置

[root@zzu chroot]# vim etc/named.rfc1912.zones

clip_p_w_picpath008

七:拷贝数据库文件 b.com   bj.b.com

[root@zzu named]# cp -p localhost.zone b.com

[root@zzu named]# cp -p localhost.zone bj.b.com

[root@zzu named]# ll                          
total 44
-rw-r----- 1 root  named  348 Mar  5 08:14 b.com.db
-rw-r----- 1 root  named  249 Mar  5 07:33 bj.b.com.db
drwxrwx--- 2 named named 4096 Mar  5 08:14 data
-rw-r----- 1 root  named  198 Jul 30  2009 localdomain.zone
-rw-r----- 1 root  named  195 Jul 30  2009 localhost.zone
-rw-r----- 1 root  named  427 Jul 30  2009 named.broadcast
-rw-r----- 1 root  named 1892 Jul 30  2009 named.ca
-rw-r----- 1 root  named  424 Jul 30  2009 named.ip6.local
-rw-r----- 1 root  named  426 Jul 30  2009 named.local
-rw-r----- 1 root  named  427 Jul 30  2009 named.zero
drwxrwx--- 2 named named 4096 Jul 27  2004 slaves

八:并修改数据库文件 b.com   bj.b.com

clip_p_w_picpath009

clip_p_w_picpath010

九:对区域的数据库文件进行检测

clip_p_w_picpath011

十:对dns.conf文件 进行检测

clip_p_w_picpath012

十一:上海dns的配置

1:建立正向查找区域

clip_p_w_picpath013

2:在起始授权机构选项中制定主服务器和相应的名称服务器

clip_p_w_picpath014

clip_p_w_picpath015

3:在bj.b.com所管辖的区域进行相应的测试

clip_p_w_picpath016

4:在sh.b.com 上的测试

提示超时,由于没有联网,所以说在寻找根服务器的时候报错

clip_p_w_picpath017 解决方案

1:修改转发器

clip_p_w_picpath018

2 修改根提示

clip_p_w_picpath019

3:再次进行解析

clip_p_w_picpath020

参考知识

DNS 

作用 名称---》ip地址      www.sina.com.cn    www.yahoo.com
1.hosts  (小型)   2.dns  (大型)

linux  bind
主配置文档 (/var/named/chroot/etc/named.conf )
dns的根目录  /var/named/chroot

区域文件存放目录  /var/named/chroot/var/named

2:

dns 端口
tcp  53  (在进行区域文件传输是使用)
udp 53    (域名解析)

3:

检查工具
区域文件
named-chkzone   域名 区域文件的位置和名称
4:

主配置文档
named-checkconf /var/named/chroot/etc/named.conf
grep  named /var/log/message

5:解析指令 nklookup   dig -t   host

小结:

dns 有效的实现了域名到ip地址的映射

案例二:

需求分析在企业网中有一台dns服务器,ip地址为192.168.2.100,负责者zzu.com的区域,在数据库中有zzu.com.db和zzu.com.db1两个数据库文件,最终要实现内网用户在进行域名解析时用的是192.168.2.100dns服务器并且看到的是zzu.com.db的数据库,而外网用户在进行域名解析的时候同样也使用该dns服务器并且看到的是zzu.com.db1的数据库,但是在客户端显示的dns服务器的ip地址为firewall的eth1的ip地址192.168.3.254,从而达到视

clip_p_w_picpath021

步骤:

dns 

一、:配置好网络参数,并关闭防火墙功能

clip_p_w_picpath022

二:修改name.conf 的配置文件

clip_p_w_picpath023

clip_p_w_picpath024

clip_p_w_picpath025

三:检测数据库的named.conf文件

clip_p_w_picpath026

四:建立zzu.com.dbzzu.com.db1的数据库的文件

clip_p_w_picpath027

五:编辑数据库文件

clip_p_w_picpath028

clip_p_w_picpath029

clip_p_w_picpath030

五:加载数据库并启动named服务

clip_p_w_picpath031

firewall

一:配置各个网络参数

clip_p_w_picpath032

clip_p_w_picpath033

二:开启数据包的转发功能  vim /etc/sysctl.conf sysctl -p

clip_p_w_picpath034

三:测试下到dns服务器的连通性

clip_p_w_picpath035

四:进行DNAT的转换,使得到达192.168.3.254dns数据包指向192.168.2.100服务器

clip_p_w_picpath036

五:模拟内网主机进行测试

pc 192.168.2.200

1:先配置好网络的参数,清空下dns的缓存

clip_p_w_picpath037

2:进行域名解析

clip_p_w_picpath038

六:模拟外网的主机进行解析

pc 192.168.3.200

clip_p_w_picpath039

小结:dns的视图有效的增加了dns服务器的安全性