Skip to main content

 路由器设置 > 新闻资讯 >

一个实现DNS解析体系的项目实验(不完全版)

2013-08-18 00:03 浏览:

老师布置的一个作业

项目案例:
以组为单位:
1、其中一位同学实现根域服务器,并完成对.com, .net, .org三个子域的授权;不允许递归;
2、第二位同学实现一级域.com, .net, .org的正向及反向解析;并完成magedu.com, test.net, magelinux.org三个子域的授权;不允许递归;
3、第三位同学实现对第二位同学的DNS服务器进行辅助;
4、余下的同学分别实现magedu.com, test.net和magelinux.org域的解析;给本地客户端递归;

要求:给出规划拓扑图
1、每位同学的根服务器named.ca文件的内容中,根要指向第一位同学建立的服务器;
2、本地客户端把服务器指向任一台,要能实现全网解析;

 我们组一共7个人,俺因为接触linux相对久一些,基础好一些,忝为组长。除了反向解析没能来得及完成外,我们组其它的都完成了。我本来打算将其它人的配置收集起来整理成一个文档的,不过还是不是很重视这个问题,后来就不了了之了。反向解析老师说不做强制要求,我也就懒得做了。

 不过还是把负责根域的服务器的配置贴出来保存。其实配置主要是语法的问题,关键还是要理解DNS的原理,只要理解了原理,配置起来无非是找个模板改改的问题而已。这也是我有点懒得把其他人的配置整合起来写成博客的缘故——找借口啦。

拓扑图如下:

 

组员

负责的域

DNS服务器名称

DNS服务器的IP

A

. ()

a.net

172.16.9.11

B

.com .net .org (DNS)

dns1.com

172.16.17.11

C

.com .net .org (DNS)

dns2.com

172.16.8.11

 

D

magedu.com()

ns.magedu.com

 

192.168.0.15

E

test.net (主)

ns.test.net

192.168.1.5

F

magelinux.org ()

ns.magelinux.org

172.16.6.11

G

magedu.com, test.net, magelinux.org ()

slave.com

172.16.16.11

/etc/named.conf 文件,主配置文件

options {
listen-on port 53 172.16.9.11; };
directory   "/var/named";
allow-query { any; };
recursion no;
};
logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
};
zone "." IN {
type master;
file "root.zone";
};
 

root.zone 文件,根域的解析文件.

$TTL    1200
$ORIGIN .
@       IN  SOA a.net.  admin.gmail.com. ( 2013081301
2H
600
5D
900 )
IN      NS      a.net.
a.net.      IN      A       172.16.9.11
com.        IN      NS      dns1.com.
IN      NS      dns2.com.
net.        IN      NS      dns1.com.
net.        IN      NS      dns2.com.
org.        IN      NS      dns1.com.
org.        IN      NS      dns2.com.
dns1.com.   IN      A       172.16.17.11
dns2.com.   IN      A       172.16.8.11

named.ca 文件,参考原named.ca写成。此文件负责根域的DNS服务器不需要,给负责其它域的DNS替换原named.ca文件

.       518400  IN      NS  a.net.
a.net.  3600000 IN      A   172.16.9.11

 虽然没有做反解,这里还是写下思路以备后用。
 反解和正解不需要一一对应,就是说不能理解为要为每个域中的主机分别写一个反向解析文件,而应该根据实际IP网络划分写成反解文件。而且为 .com 域中的主机做反解的文件不一定要放在负责 .com 域的DNS服务器上,可以放在任意服务器上,因为反解和正解是独立的,16.172.in-addr.arpa 本身就是一个域,这个域的解析和什么 .com, .net, .org 没有任何关系。
 16.172.in-addr.arpa 域的解析应该得到上级域的授权,反向域里面根域应该也是 . , 不知道能否在根域服务器上直接放一个 16.172.in-addr.arpa 域的NS 记录和对应的A记录。这个域名好像分成好几级了。进一步,可以直接在根域里面放像 abc.net 这样一个二级域的授权记录么?

做这种实验还是有收获的,比如我以前不是很理解 name.ca 文件的作用,对于使用 dig -t NS . > /var/named/named.ca 生成这个文件觉得很神奇,这次做实验自己参考原 named.ca 文件,发现其连SOA记录都没有,全都是关于根域的NS记录和A记录而已。这才明白这个文件完全是为了 DNS 服务器在解析域名时找负责根域名单服务器用的,所以 type 是 hint 。因为不是下级DNS服务负责的域,而且根域不可能由负责下级域的DNS服务器授权,当然就不需要 SOA(start of authorization)记录了。
 而且负责根域的DNS服务器的名称叫A.ROOT-SERVERS.NET., 并不像我的某些同学所理解的那样:“DNS服务器的名称须是其负责的域名前面加个主机名”,完全不是这样,只要有A记录就行了,有IP就可以通信,DNS系统就可以通信。况且像我们这个项目实验,一台DNS服务器负责多个域,那它的名称得在其负责的每个域下,怎么办得到呢。