DNS查询方式:
- 递归查询:当DNS服务器接收到查询请求时,要么做出查询成功响应,要么做出查询失败的响应。递归查询一般发生在DNS客户端与DNS服务器之间
- 迭代查询:DNS服务器根据自己的告诉缓存或区域的数据,以最佳结果响应。如果DNS服务器无法解析,它可能返回一个指针。指针指向有下级域名的DNS服务器,继续该过程,直到找到拥有所查询名字的DNS服务器,或直到出错,超时为止。迭代查询一般发生在DNS服务器之间。
下面通过一个查询www.redhat.com的例子来了解DNS查询的基本工作原理
(1)客户端将www.redhat.com的查询提交给本地DNS服务器(递归查询)。
(2)本地DNS服务器检查区域数据库,由于此服务器没有redhat.com的授权,因此,它将查询传递到根服务器,请求解析主机名称。根名称服务器把"com"DNS服务器IP地址返回给本地DNS服务器(迭代查询)。
(3)本地DNS服务器将请求发送给“com”DNS服务器,此服务器根据请求将"redhat.com"DNS服务器IP地址返回给本地DNS服务器(迭代查询)
(4)本地DNS服务器向“redhat.com”DNS服务器发送请求,由于此服务器具有www.benet.com记录,因此它将www.redhat.com的IP地址返回给本地DNS服务器。
(5)本地DNS服务器将www.redhat.com的IP地址发送给客户端。
环境:Red hat linux 5.5
软件包
bind-libs-9.3.6-4.P1.el5_4.2
bind-utils-9.3.6-4.P1.el5_4.2
bind-chroot-9.3.6-4.P1.el5_4.2
bind-9.3.6-4.P1.el5_4.2
caching-nameserver-9.3.6-4.2.1.i386.rpm
rpm -ivh /media/Server/caching-nameserver-9.3.6-4.2.1.i386.rpm
BIND全局配置文件为named.conf。若果未使用chroot机制位于/etc/目录下,如果使用chroot机制位于/var/named/chroot/etc目录下。
vi /var/named/chroot/etc/named.conf //手动建立,文件所数组改为named
options { //options用于指定BIND服务的参数
listen-on port 53 { 192.168.1.1; }; //指定BIND侦听的DNS查询请求的本机IP地址及端口,如不定义
表示侦听本机所有IP地址收到的DNS查询请求
# listen-on-v6 port 53 { ::1; };
directory "/var/named"; //区域数据文件的默认存放位置
dump-file "/var/named/data/cache_dump.db"; //当执行rndc dumpdb命令时,DNS服务器存放数据库文件的路径名
statistics-file "/var/named/data/named_stats.txt"; //当执行rndc stats命令时,服务器会将统计信息追加到的文件路径名。
memstatistics-file "/var/named/data/named_mem_stats.txt";
query-source port //指定客户端在提交DNS查询时必须使用的源端口
allow-query { any; }; //指定接收DNS查询请求的客户端
Allow-transfer {192.168.1.2 }; //指定允许区域传输的辅助区域
forwarders: //指定转发服务器,当指定多个时,会依次尝试,知道获得查询信息为止。
};
//主配置文件中通过zone定义当前BIND可管辖的所有区域
zone "benet.com" IN {
type master;
file "benet.com.zone";
};
zone "accp.com" IN {
type master;
file "accp.com.zone";
};
zone "0.168.192.in-addr.arpa" IN {
type master;
file "192.168.0.arpa";
allow-transfer { 192.168.1.10; };
}
loging块,用于指定BIND服务的日志参数
view块,用于指定主配置文件存放路径及名称,实现不同的客户端请求,通过不同的主配置文件解析
Zone{}模块
Type master;
在BIND中的区域会根据作用划分为以下几种类型:
master:主要区域,拥有该区域数据文件,并对此区域提供管理数据;
slave辅助区域,拥有主要区域数据文件的完整只读副本,从主要区域同步所有区域数据,同步过程被称为区域传输
Forward:转发区域,用于转发DNS客户端的递归查询。
Hint:用于查找根域名服务器