码迷,mamicode.com
首页 > 其他好文 > 详细

DNS 基本工作原理,及正反向解析和主从同步:

时间:2015-05-15 15:50:59      阅读:323      评论:0      收藏:0      [点我收藏+]

标签:dns 基本工作原理   及正反向解析和主从同步:   

DNS 基本工作原理,及正反向解析和主从同步:

 

今天给大家介绍一下DNS的基本工作原理以及正反向解析和主从同步的应用;

 

DNS是域名系统(Domain Name System),它是由解析器和域名服务器组成的域名服务器是指保存有该网络中所以主机的域名和对应的IP地址,并具有将域名转换为IP地址功能的服务器.域名必须有IP地址,而IP地址不一定有域名。

域名系统太用类似目录树的等级结构最上层是根域,一般以 开头,根域下面是顶级域,顶级域包含com(商业机构)edu(教育机构)gov(政府机构)net(网络机构)以及国家代码如:.cn  .hk 和 .uk  ;  . cn 是中国专用的顶级域名。顶级域下面是次级域如: ibm.commicrosoft.com google.com 以此类推.  

当你在网页上输入网址打开网页的时候,其实是通过域名解析服务找到了对应的IP地址,这样才能上网的。

 

DNS 的是工作在 tcp/53 和 udp/53 号端口的应用层协议;

 

DNS的查询类型:

递归查询:发送一次请求,就能得到答案。

迭代查询:需要发送多次查询请求才能得到答案.

 

DNS 服务的类型:主DNS服务器、辅助DNS服务器、缓存DNS服务器以及转发器。

DNS服务器:维护所负责解析的域内解析库服务器,解析库由管理员维护。

DNS服务器:从主DNS服务器或其它从DNS服务器那里“复制”(区域传递)一   份解析库.

 

区域传送又有完全传送(及传送整个解析库)和增量传送(传递解析库变化的那部分内容).

 

 

 

一、下面介绍一下在Linux DNS实现的方法:

 

BIND( Bekerley Internat Name Domain)Linux下一种开源的DNS 协议的实现,它是互联网上最广泛使用的一种DNS服务器。


BIND的安装配置:

DNS服务: 程序包名bind ,程序名 named


最主要有这样几个包:

 bind.x86_64:主程序包

 bind-libs:  库文件

 bind-utils 工具包  


 bind-chroot:安全套件,测试环境中最好不要安装;


服务脚本:/etc/rc.d/init.d/named

主配置文件:/etc/named.conf , /etc/named.rfc1912.zone , /etc/rndc.key

 

解析库文件:/var/named/zone_name.zone  负责保存本地的区域数据;

 

注:

(1) 一台物理服务器可同时为多个区域提供解析;

(2) 必须要有根区域文件

(3) 应该有两个(或更多)实现localhost和本地回环地址的解析库;

 

 

下面开始搭建一个DNS服务器:


1)安装 bind 软件包:



技术分享

2) 进入/var/named/目录下 查看named.ca文件 里面保存着全球13个根服务器的信;

技术分享


3) /etc/named.conf 主配置文件备份一下,以防止意外情况发生;

技术分享


技术分享

最好先把本地主机的IP加入到监听的端口中;注意方便实验解析到该地址;

技术分享


4) 配置主DNS服务器:进入/etc/named.rfc1912.zones 文件中,在最下面添加一行信息:

技术分享


zone : 定义区域名;

type: 指定区域的类型;类型有:masterslavehintforward.

File: 定义区域解析库文件;

 

5) 添加 区域解析库文件;


技术分享


这是在blue.com.zone 编辑的内容:

技术分享



区域库文件的简要说明:

TTL:缓存资源记录(RR)的秒数;可从全局继承

$ORIGIN :可用于引用当前区域的名字;

如:INNSns1.blue.com.

等同于: INNSns1

符号: 等于@ORIGIN

 

 

区域库文件:由众多的RR组成

资源记录:Resource Record , RR

FQDN: full Qualified Domain Name  完全合格域名  如www.google.com

记录类型:

SOAStart of authority ,起始授权记录;一个区域解析库有且仅能有一个SOA记录,还必须出现为解析库的第一条记录;

name: 当前区域的名字,例如“blue.com.;

value: 有多部分组成

(a) 当前区域的主DNS服务器的FQDN,也可以使用当前区域的名字;

(b) 当前区域管理员的邮箱地址;但地址中不能使用@符号,一般用.替换;例如linux.blue.com;

(c) (主从服务协调属性的定义以及否定的答案的统一的TTL)

2015042201;序列号

2H;刷新时间

5M;重试时间

7D;过期时间

1D;否定答案的TTL

 

H:小时  M:分钟  W:周 D:

 

NSName Server,专用于标明当前区域的DNS服务器

name:当前区域的名字

value:当前区域的某dns服务器的名字,例如 ns.blue.com  ;

如:blue.com.INNSns1.blue.com.

blue.com.INNSns2.blue.com.

后面的点(.)一定要加上;

a) 相邻的两个资源记录的name相同时,后续的可省略;

b) NS记录而言,任何一个ns记录后面的服务器名字,都应该在后续有一个A记录;

 

MXMail eXchange , 邮件交换器

name:当前区域的名字

value:当前区域的某邮件服务器的主机名

a) 一个区域内,MX记录可以有多个;但每个记录的value之前应该有一个数字,数字(0-99)是优先级;值越低优先级越高;

b) MX记录而言,任何一个MX记录后面的服务器名字,都应该有后续的A记录;

如:blue.com.INMX  10mx1.magedu.com.

INMX  20mx2.magedu.com.

 

 

AInternet Address,作用,FQDN 解析为IP地址

name:某主机的FQDN,例 www.blue.com.

Value:主机名对应主机的IP地址;

如:www.blue.com.INA1.1.1.1

www.blue.com.INA1.1.1.2

mx1.blue.com.INA1.1.1.3

mx2.blue.com.INA1.1.1.4

注:*INA172.16.249.226  是通过泛域名解析至某特定地址的;

blue.com  INA172.16.249.226不加www 也是一样可访问到特定站点;



AAAAFQDN -> IPv6

 

PTR:  pointer 指针, IP-à FQDN IP找到主机名

nameIP 有特定格式把IP地址反过来写;226.249.16.172 ; 而有特定的后缀

in-addr-arpa.  完整写法是:226.249.16.172.in-addr.arpa.

如:226.249.16.172.in-addr.arpa.INPTRwww.blue.com.

简写:226INPTRwww.blue.com.

注:网址及后缀可省略;主机地址必须要反着写;

 

 

CNAME: Canonical Name,别名记录

Name:别名的FQDN

Value:正式名字的FQDN

如:web.blue.com.INCNAMEwww.blue.com.


 


资源记录定义的格式:

语法: name [TTL] IN  rr_type   value

  缓存时长  关键字资源记录类型最重要的值

 

 

6) 自检配置文件是否有问题:

技术分享


7) 修改/var/named/blue.com.zone 的权限和属组;

技术分享


8)  启动服务即可;

技术分享


9) 使用dig t A www.blue.com @172.16.249.226  就可以查看解析到的A记录了;这样一个正向解析的DNS服务就搭建好了;


技术分享


下面来增加一个反向解析域:

1) 在主DNS名称服务器中:/etc/named.rfc1912.zones 文件中添加一个主的反向区域:

技术分享

技术分享


2) /var/named/ 目录下定义一个反向区域解析文件:(反向解析库中不需要MXAAAAA记录;主要以PTR为主);最好与正向解析域一一对应.

技术分享

技术分享


注: 这里的主机名( ns1.blue.com ) 一定要写上全名;如果不写上就会自动补上$ORIGIN的内容,变成 ns1.249.16.172.in-addr.arpa.   所以一定要写全了.


3) 配置属组,以及权限;

技术分享


4) 重新启动服务:service  named  restart

 并用# dig -x 172.16.249.226 @172.16.249.226  查看反向解析域名;

技术分享


使用:host  -p  ptr  172.16.249.226  172.16.249.226  解析172.16.249.226 PTR

技术分享


检查配置 : 

技术分享


查看:全量区域传送,会得到对方所有的资源记录信息:(这个命令很危险,不要让任何人能够查看这些信息)


正向信息:


技术分享


反向信息:

技术分享



这样一个反向解析域名就完成了。





二、搭建一个主从的DNS服务器:ns2 服务器 IP是:172.16.249.227  与主服务器一样,先按照bind这个软件包:


技术分享


然后配置成缓存服务器:

1)修改 # vim /etc/named.rfc1912.zones  ; 配置从服务器;

技术分享

技术分享


2) 重新启动 172.16.249.12 dns 服务:

技术分享


3) 查看日志文件: # tail  /var/log/messages 主服务器上的数据将会传递到从服务器;


技术分享


在主服务器中添加一条信息:然后把序列号加以,这条刚刚更新的信息就会传递给其他所有服务器了不用重启服务,只需要用 #  rndc reload 重新载入区域解析文件就可以了;

编辑主服务器上的: # cd  /var/named/

#  vim  blue.com.zone

 #  rndc  reload

技术分享

技术分享



当所有配置都配置好,完成更新通知后,从服务器上会多出一个文件但是,任何时候都不要去编辑从服务器上的文件;要编辑也只能编辑主配置文件.切记。。。


技术分享

技术分享


主服务器必须有一条记录指向从服务器的地址;如:ns2INA172.16.249.227 只有指向了从服务器的地址,从服务器才会收到更新通知信息;主服务器只要发生更改会通知所有DNS服务器。

 

这样一个正向区域的从服务器已经配置好了当同步的时间,最好保持主服务器和从服务器上的时间点一致;这样才不会出现问题;




反向区域的从服务:(与正向区域的从服务相同;)


1) 主服务器反向区域必须有一条记录指向从服务器的地址(要不然无法同步信息)



技术分享



注释:这是第二次试验的反向解析主服务器上的文件; /var/named/172.16.8.zone 文件


技术分享













2)修改 # vim /etc/named.rfd1912.zones  文件,增加一条反向区域从服务器的信息(在172.16.249.227中增加);

技术分享

技术分享


注释:这是第二次试验的/etc/named.rfc1912.zones 文件


技术分享


3)验证是否有语法错误:named-checkconf  然后重新载入区域文件;最后查看日志,发现已经同步了反向区域的信息了;

技术分享


4)进入/var/named/slaves 目录下会增加 反向区域文件在日志中也显示,反向区域文件以及传送过来;

技术分享


这样一个反向区域的从服务器也搭建好了,是不是也很简单!在反向区域文件中,最好也要指明从服务的地址,要不然会联系不到从服务器;






三、下面来说说子域授权: 实现分布式的主要前提;

 

子域与父域可以不在同一个网络内,只需要能够相互联系到对方就可以;但是子域必须被主域授权才可以.

 

1) 先把主服务器搭建起来,配置成缓存服务器;

技术分享

技术分享



启动bind服务:

技术分享

技术分享


进入到 /etc/named.rfc1912.zones 增加主区域文件;查看是否创建成功;

技术分享


定义区域解析库文件:

技术分享

技术分享

技术分享


配置权限:

技术分享

技术分享

技术分享


此时父域服务器已经搭建完毕了;

1) 此时该添加子域了在 /var/named/blue.com.zone 区域中添加这些内容:

技术分享


1) 再来配置子域,与配置父域的过程一致最后在/etc/named.rfc1912.zones 下面添加子域;

技术分享

技术分享


添加子域的区域解析文件: /var/named/ops.blue.com.zone  ;

技术分享

技术分享

技术分享


通过父域服务器是可以解析到子域服务器:


技术分享


子域通过自己是不能解析到父域的:(这能解析是因为从互联网解析到的地址;不是我们内部的私有地址解析到的;请注意)

技术分享


如果想让子域解析到父域的服务器地址:那就得打开区域转发的功能

/etc/named.rfc1912.zones 添加转发功能:


技术分享

技术分享

技术分享


父域打开全局转发的方法:

进入父域的 /etc/named.conf 中添加:就可以了;


技术分享


此时子域就可以访问外网了:


技术分享

技术分享


区域转发的优先级是 高于 全局转发的优先级的;







四、最后来一个bind view 的功能;

 

视图:

1) 一个bind服务器可定义多个view,每个view中可定义一个或多个zone;

2) 每个view用来匹配一组客户端;

3) 每个view内可能需要对同一个区域进行解析,但使用不同的区域解析库文件;


定义方法:

view VIEW_NAME {

match-clients { };

};


注意:

1) 一旦启用了view,所有的zone都只能定义在view;

2) 仅有必要在匹配到允许递归请求的客户端所在view中定义根区域;

3) 客户端请求到达时,是自上而下检查每个view所服务的客户端列表;

 

示例: 需要两个网络在不同一个网段;但是外网是可以ping通服务器地址环境如下:

 

外网地址:


技术分享

技术分享


服务器地址:

技术分享


把 /etc/named.conf 的区域 ,移到 /etc/named.rfc1912.zones 中去;

 

/etc/named.conf 中的区域 : 

技术分享


已经移动到了 /etc/named.rfc1912.zones 文件中了;


技术分享


在 /etc/named.conf 中定义一个ACL 访问控制列表定义成本地网络客户端;

技术分享


然后在 /etc/named.rfc1912.zones 中定义 view  .

技术分享


上面是没有反花括号的,我们是要把中间所有的区域都定义到此处所有到结尾处定义反括号,就是把所有区域都包含进来;


技术分享



验证一下,看下是否有语法错误:

技术分享


从本机解析,自己的DNS. 是可以解析出来的.

技术分享


定义外部客户端请求解析的区域文件; blue.com.external ;

技术分享


增加 /var/named/blue.com.external 文件:

技术分享

技术分享



重新启动named 服务:


技术分享


172.16.8.100 这个服务器 自己解析自己:

技术分享

技术分享


这里看到的你会觉得我是同一个网段,因为配置其他网段无法ping 同这个服务器,所以改成了172.16.8.101  但是我把 ACL 访问控制列表改了;

技术分享


之后我用172.16.8.101 去解析 www.blue.com :结果如下: 结果解析的是1.1.1.1 这个就是我想要的答案;

技术分享


所以这就是两个VIEW 他们分别匹配不同的客户端,而且分别为每个ZONE提供两个不同的解析库文件;而且同一个解析库解析到的IP地址不一样;所以来自不同的客户端请求时,他们匹配到不同的VIEW,VIEW内的ZONE 将提供解析,这些ZONE提供了不同的解析库文件;而不同的解析库文件同一个域名,提供了不同的解析地址,所以解析的结果就不一样了。

这就是DNSVIEW的实现方法。


 

 

实验还有好多不足的地方,希望大家能够来提供一下您宝贵的意见!谢谢观看。

DNS 基本工作原理,及正反向解析和主从同步:

标签:dns 基本工作原理   及正反向解析和主从同步:   

原文地址:http://sailove.blog.51cto.com/3215562/1651563

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!