为了更好的实现dns的解析功能,使用主从dns服务器来解析,是很好的方式,这样可以实现冗余,也可以实现一点负载。
首先建立一个主DNS服务器,他的配置文件主要有/etc/named.conf、/vat/named/localhost.zone、/var/named/named.ca、/var/named/named.local
当然还有对应区域的配置文件的详细信息,首先介绍一下主dns 的主配置文件/etc/named.conf
一个主配置文件至少应该有options、zone "."、zone "localhost.zone"、zone "named.local"几个分区,如下图所示
接下来就是要解析的域名的区域了,比如我申请了一个域名就是a27.com
那么就在dns主配置文件中添加如下的配置
简单介绍一下这个配置文件中的信息,首先是options 里面是介绍工作目录的,也就是我们下面各个区域的配置文件放置的位置。
其次是zone "."这个区域,这个是一个根区域,是我们解析其他的地址的最重要的区域,然后就是本机的区域,分别是localhost.zone和named.local这两个区域,通过这两个区域就是可以解析出localhost 是127.0.0.1同时还可以方向解析,下面的zone "a27.com" 和zone "0.168.192.in-addr.arpa"就是我们要解析申请的域名,而0.168.192.in-addr.arpa是反向解析的,其中每个区域的type是区域类型,file是该区域的配置文件的类型。
在主dns服务器上的a27.com.zone的配置中,内容如下
$TTL 86400 @ 600 IN SOA ns1.a27.com. admin.a27.com. ( 2011081801 ;序列号 1H ;刷新时间 10M ;重试时间 7D ;从dns的“殉情”时间 1D ) ;否定回答时间 IN NS ns1.a27.com. IN NS ns2.a27.com. IN MX 10 mail.a27.com. ns1.a27.com. IN A 192.168.0.90 ns2.a27.com. IN A 192.168.0.151 www1.a27.com. IN A 192.168.0.90 www2.a27.com. IN A 192.168.0.90 . IN A 192.168.0.90
这里面首先添加一条soa记录,这条记录包括主服务器的名称,管理员的邮箱,以及下面的序列号、刷新时间、重试时间、从服务器的宕机时间、拒绝回答的时间,接着是NS 记录,NS记录是域名到服务器名的一个映射关系,最后面的是添加A记录,这个是FQDN和IP之间的映射关系。
在192.168.zone中添加如下配置信息
$TTL 86400 @ 600 IN SOA ns1.a27.com. admin.a27.com. ( 2011081801 1H 10M 7D 1D ) IN NS ns1.a27.com. IN NS ns2.a27.com. IN MX 10 mail.a27.com. 90 IN PTR ns1.a27.com. 151 IN PTR ns2.a27.com. 90 IN PTR www1.a27.com. 90 IN PTR www2.a27.com. 90 IN PTR .
这个里面大部分和a27.com.zone中的配置一样,就是这个是反向解析的,需要添加IP到FQDN的映射关系,也就是PTR记录
在named.local文件中,有如下的内容,
$TTL 86400 @ 600 IN SOA localhost. admin.localhost. ( 2011081801 1H 10M 7D 1D ) IN NS localhost. 1 IN PTR localhost.
这个里面主要实现从127.0.0.1能解析到本地主机
而在localhost.zone文件安中配置也很简单
如下所示:
这样主dns的配置就算是完成了,接下来就是从dns的配置了,从dns只需要配置四个配置文件,而其他的区域的配置文件可以自动同步。
主要的配置文件有/etc/named.conf 、/var/named/named.ca、/var/named/localhost.zone、/var/named/named.local这样就可以实现从主dns那里同步信息了
从dns的/etc/named.conf的配置信息如下:
options { directory "/var/named"; };
zone "." IN { type hint; file "named.ca"; };
zone "localhost" IN { options { directory "/var/named"; };
zone "." IN { type hint; file "named.ca"; };
zone "localhost" IN { type master; file "localhost.zone"; };
zone "0.0.127.in-addr.arpa" IN { type master; file "named.local"; };
zone "a27.com" IN { type slave; //设置为slave类型 file "slaves/a27.com.zone"; masters { 192.168.0.90; }; //指定主dns服务器的地址 };
zone "0.168.192.in-addr.arpa" IN { type slave; file "slaves/192.168.zone"; masters { 192.168.0.90; }; };
其他的配置文件和上面组配置文件一样,但是这个时候可以把/etc/resolv.conf文件的servername 改为 127.0.0.1就能实现同步了
而我们也可以启动从dns服务器之后,查看/var/named/slaves 下会出现主配置文件中提及到的两个配置文件,这就说明他从主dns那里学习到了
如图所示
当我们使用vim打开这两个文件的时候,会和主dns服务器中的配置是相同的
当然我们也可以查看日志文件,可以看到详细的过程
tail -20 /var/log/messages
Aug 18 23:04:11 ns3 named[6108]: running Aug 18 23:04:11 ns3 named[6108]: zone 0.168.192.in-addr.arpa/IN: sending notifies (serial 2011081801) Aug 18 23:04:11 ns3 named[6108]: zone a27.com/IN: sending notifies (serial 2011081801)
可以看到主从服务器之间采用notify的机制进行同步信息的。
接下来说说主从信息同步的过程
首先介绍主从服务器的同步过程。触发同步过程的原因有4种:1.从域名服务器刚刚启动;2.主域名服务器的Serial值增大;3.执行了rndc reload命令;4.到了主从服务器的同步更新时间。
主从域名服务器开始同步
1. 主服务器向从服务器发送notify消息
2. 从服务器收到主服务器发送notify消息,向主服务器返回一个notify response消息。
3. 从服务器向主服务器发送SOA query消息。
4. 主服务器向从服务器返回SOA response消息。
5. 从服务器收到SOA response消息后,比对自身的Serial值,如果发现主服务器的Serial值大于自身的Serial值,那么就发送Zone transfer request消息。
6. 主服务器返回Zone transfer response消息。
7. 主服务器执行Zone transfer。
以上是一个简单的实现主从域名解析的架构,以后工作中遇到的也就是基于这种方式来实现负载,冗余的,还会结合acl和视图,视图和acl将在后面介绍
©著作权归作者所有:来自51CTO博客作者Ro_410的原创作品,谢绝转载,否则将追究法律责任
1
收藏
推荐专栏
掌握VMware超融合技术
共41章 |
¥51.00 346人订阅
容器私有云平台实践之路
共15章 |
¥51.00 596人订阅
网络工程师2.0进阶指南
共30章 |
¥51.00 1567人订阅
高并发架构之路
共15章 |
¥51.00 507人订阅
前百度高级工程师的架构高可用实战
共15章 |
¥51.00 462人订阅
猜你喜欢
扫一扫,领取大礼包
1
0
分享
Ctrl+Enter 发布
发布
取消