一、DNS概述:DNS 是域名系统 (Domain Name System),是一个分布式数据库,组织成域层次结构次的结构的计算机和网络服务命名系统。它的作用是:把域名转换成为网络可以识别的 IP 地址,查询结果保存起来,并告诉给客户端.
二、DNS查询过程
1.本地解析
客户机平时得到的dns查询记录都记录保留在dns缓存中,dns客户端程序首先使用本地缓存信息进行解析,如果可以解析要查询的名称,则dns客户端程序就直接应答该查询,而不需要向dns服务器查询,该dns查询处理过程也就结束了。
2.直接解析
如果dns客户程序不能从本地dns缓存回答客户机的dns查询,它就向客户机所设定的局部dns服务器发一个查询请求,要求局部dns服务器进行解析。
3.递归解析
当局部dns服务器自己不能回答客户机的dns查询时,它就要想其他的dns服务器进行查询,此时有两种方式 一种是递归查询,局部服务器一般是先向该域名的根域服务器查询,再由根域名服务器一级级向下查询,最后得到的结果返回给局部服务器,再由局部服务器返回给客户端。
4.迭代解析
当局部dns服务器自己不能回答客户机的dns查询时,也可以通过迭代查询的方式进行解析。局部dns不是自己向其他dns服务器进行查询,而是把能解析该域名的ip地址返回给客户端dns程序,客户端dns程序再继续向dns服务器进行查询,直到得到查询结果为止。
5.按查询内容分类DNS查询
a.正向查询;域名--》IP
b.反向查询:IP----》域名
三、目录
1.dns服务器目录
/var/named/chroot/
2.主配置文档目录
/var/named/chroot/etc
3.区域文件目录
/var/named/chroot/var/named
四.案例一.
linux系统主DNS 服务器ip:192.168.1.25
linux系统辅助DNS 服务器ip:192.168.1.26
测试机xp ip:192.168.1.30
五、DNS安装
主要安装这3个包
1.bind 主程序
2.bind-chroot 安全 【产生额外目录】
3.caching-nameserver 产生dns的主配置文档的样例文件,实现缓存服务器
主DNS 服务器的配置
1. [root@dg ~]# mount /dev/cdrom /mnt/cdrom
[root@dg cdrom]# cd Server/
[root@dg Server]# ll bind*
-r--r--r-- 64 root root 1001253 2009-07-31 bind-9.3.6-4.P1.el5.i386.rpm
-r--r--r-- 64 root root 44959 2009-07-31 bind-chroot-9.3.6-4.P1.el5.i386.rpm
[root@dg Server]# rpm -ivh bind-9.3.6-4.P1.el5.i386.rpm
[root@dg Server]# rpm -ivh bind-chroot-9.3.6-4.P1.el5.i386.rpm
[root@dg Server]# rpm -ivh caching-nameserver-9.3.6-4.P1.el5.i386.rpm
2.切换到 /var/named/chroot/etc
[root@dg ~]# cd /var/named/chroot/etc
[root@dg etc]# ll
-rw-r--r-- 1 root root 405 09-10 18:16 localtime
-rw-r----- 1 root named 1230 2009-07-30 named.caching-nameserver.conf
-rw-r----- 1 root named 113 10-19 13:40 rndc.key
3.复制主配置文件,并修改如下
[root@dg etc]# cp -p named.caching-nameserver.conf named.conf
[root@dg etc]# vim named.conf
4.编辑named.rfc1912.zones文件
5.切换目录,并拷贝域文件进行修改 (注意cp时要加上 -p)
[root@dg etc]# cd ../var/named
[root@dg named]# ll
[root@dg named]# cp -p localhost.zone dg.com.zone
[root@dg named]# vim dg.com.zone
6.主DNS服务器配置完成,重启DNS服务器
[root@dg etc]# service named restart
停止 named: [确定]
启动 named: [确定]
7.辅助DNS 配置 是在另一台linux服务器上进行配置的,它的配置基本上和主DNS服务器一样,在编辑named.rfc1912.zones文件,:一定要将默认的"allow-update {none;}; 删除。配置文件所有者和拥有组是named
[root@localhost etc]# vim named.rfc1912.zones
masters{192.168.1.25}是主服务器的ip地址
file“slaves/dg.zone”是文件的存放位置。
8.重启named服务,发现slaves目录下生成了一个dg.zone文件
9、测试:在主DNS服务器中添加几条记录。观察辅助DNS服务器里面有没有变化。这是主DNS添加↓↓
用nslookup来测试,发现新添加记录并没有正确解析,因为dns设置的refresh刷新时间为1分钟,过一段时间后, slaves 下的 dg.com.zone 文件已经增大了,而且那几条记录 , 也已经添加到辅助区域的区域文件内了
测试是否能够正常解析:
把测试机的DNS服务器设为主DNS服务器ip
测试说明可以正常解析
本实验到此结束。注意:linux DNS服务器的防火墙一定要关掉否则可能不能正常解析。
案例二.
实验描述:某公司其总部在北京,主域名为:qq.com,北京的子域bj.qq.com也建在主域的dns服务器,而要想远在上海的子域sh.qq.com也能够正常解析主区域的域名,则要通过转发而在北京的主机想通过主DNS查询到子域的域名则需要通过委派来实现,实验拓扑图如下:
注:1.转发:
a.完全转发:将客户端所有DNS查询以递归的方式转发到指定DNS服务器。
b.条件转发:将指定DNS后缀的查询转发到指定的DNS服务器。
2.委派:在BIND中可以将某个子域的查询工作委派给别一个DNS服务器完成。
配置过程:
1. 和案例一中一样修改dns主配置文件.并修改named.rfc1912.zones文件如下
2添加区域文件,下面是已经添加过了
3修改主域qq.com:
4.修改北京子域
5.主区域配置完成,重启服务。
6.配置上海子域:
为子域设置转发,在主配置文件添加"forwareders {192.168.1.25; };"实现完全转发:
[root@localhost etc]# vim named.conf
修改如下:
也可以在named.rfc1912.zones中添加如下图中的语句,实现条件转发
7.测试,修改测试机IP为192.168.1,30DNS改为192.168.1.26,即子域的DNS
8.委派配置,在主区域的区域文件内添加如下语句,即将对sh.qq.com域的查询委派给上海子域192.168.1.26
[root@dg named]# vim qq.com.zone
9.测试。把测试机的DNS服务器设为主域DNS的ip
配置到此结束。
反向区域的配置
正向区域是dg.com ,ip地址段 192.168.1.0 /24
DNS服务器ip地址是192.168.1.25
添加www主机:192.168.1.30
1.修改主配置文件 [root@dg etc]# vim named.conf
2.修改named.rfc1912.zones文件如下
[root@dg etc]# vim named.rfc1912.zones
3. 复制模版文件并修改
[root@dg named]# cp -p localhost.zone dg.com.zone
[root@dg named]# cp -p named.local 1.168.192.zone
[root@dg named]# vim dg.com.zone 修改正向域
[root@dg named]# vim 1.168.192.zone 修改反向域
3.语法检查,重起服务
[root@dg named]# named-checkzone dg.com dg.com.zone
zone dg.com/IN: loaded serial 44
OK
[root@dg named]# named-checkzone dg.com 1.168.192.zone
zone dg.com/IN: loaded serial 1997022700
OK
[root@dg etc]# service named restart
停止 named: [确定]
启动 named: [确定]
4.测试把测试机的DNS服务器设置为 192.168.1.25
测试DNS能够正常正反方向解析,本实验到此结束。