配置域从DNS服务器以及缓存DNS服务器
配置域从DNS服务器以及缓存DNS服务器
您可以通过点击 右下角 的按钮 来对文章内容作出评价, 也可以通过左下方的 关注按钮 来关注我的博客的最新动态。 如果文章内容对您有帮助, 不要忘记点击右下角的 推荐按钮 来支持一下哦 如果您对文章内容有任何疑问, 可以通过评论或发邮件的方式联系我: 501395377@qq测试数据 / lzp501395377@gmail测试数据 如果需要转载,请注明出处,谢谢!!
在上一篇随笔中 Linux学习之CentOS(三十四)--配置域主DNS服务器 ,详细讲解了如何在Linux环境下配置一个域的主DNS服务器,在本篇随笔中将讲解如何配置一个域的从DNS服务器以及缓存DNS服务器
一、域从DNS服务器的作用
我们在之前上一篇随笔里有提到,DNS服务器一般有三种类型,一个是Primary DNS Server(主DNS服务器),一个是Secondary DNS Server(从DNS服务器),还有一个就是Caching DNS Server,我们配置一个域的DNS服务就是给其配置一个主DNS服务器,那么从DNS服务器主要是用来干嘛的呢?
配置一个域的从服务器一般是为了进行备份以及负载均衡使用,例如在生产环境中,我们给一个域配置的主DNS服务器崩溃了或者被恶意攻击了,那么这个时候如果没有配置从DNS服务器的话,我们的DNS服务器就不能提供DNS服务了,也就无法解析服务器上配置的域名了,或者说主服务器的访问量特别大,此时我们配置从服务器来达到负载均衡的效果,因此我们通常在配置了一个主DNS服务器以后,还需要为其配置多个从DNS服务器
我们知道,我们为一个域配置的文件都是由主DNS服务器来控制的,我们的从服务器上的信息都是通过从主服务器上抓取得来的,当域slave服务器启动的时候就会从域master服务器上抓取指定域的zone文件,所以我们配置从服务器的步骤就非常的简单了
二、配置域从DNS服务器
我们这里通过虚拟机模拟了两台Linux主机,一台主机就是昨天已经配置好的主DNS服务器,另外一台主机作为从DNS服务器来使用。
在进行域从DNS服务器配置之前,我们首先需要在主DNS服务器上进行一些配置:
(1) 开放主DNS服务器上的53、953端口
因为我们的从服务器要通过网络去抓取主服务器上的zone文件,所以我们要在iptables里面增加两个规则,开放本机的53和953端口,这里为了实验方便,就直接先将iptables清空了
[root@xiaoluo etc]# iptables - F [root@xiaoluo etc]# iptables - L Chain INPUT (policy ACCEPT) target prot opt source destination Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination
(2) 将我们的SELinux设置成permissive
[root@xiaoluo etc]# getenforce Enforcing [root@xiaoluo etc]# setenforce 0 [root@xiaoluo etc]# getenforce Permissive
(3) 修改一下主配置文件 named.conf
因为我们从服务器要通过网络来访问主服务器进行zone文件的抓取,所以我们要在 named.conf 主配置文件里面添加从服务器的IP地址进去,因为我们默认是指定了本机IP,这样就只能我们的本机使用BIND服务,所以我们需要将从服务器的IP地址也写进去,或者说不指定开放53、953端口的IP地址,这样其他主机也就能够通过网络访问到这台主机的DNS服务了
这是昨天配置的named.conf文件,我们这里就将 listen-on port 那两行代码删除即可
/*
Sample named.conf BIND DNS server 'named' configuration file
for the Red Hat BIND distribution.
See the BIND Administrator's Reference Manual (ARM) for details, in:
file:///usr/share/doc/bind-{version}/arm/Bv9ARM.html
Also see the BIND Configuration GUI : /usr/bin/system-config-bind and
its manual.
*/
options
{
// Put files that named is allowed to write in the data/ directory:
directory " /var/named " ; // "Working" directory
// listen-on port 53 { any; };
listen-on port 53 { 127.0 . 0.1 ; };
// listen-on-v6 port 53 { any; };
listen-on-v6 port 53 { :: 1 ; };
};
zone " cnblogs测试数据 "
{
type master;
file " cnblogs测试数据.zone " ;
};
修改后:
[root@xiaoluo etc]# vim named.conf
/*
Sample named.conf BIND DNS server 'named' configuration file
for the Red Hat BIND distribution.
See the BIND Administrator's Reference Manual (ARM) for details, in:
file:///usr/share/doc/bind-{version}/arm/Bv9ARM.html
Also see the BIND Configuration GUI : /usr/bin/system-config-bind and
its manual.
*/
options
{
// Put files that named is allowed to write in the data/ directory:
directory " /var/named " ; // "Working" directory
};
zone " cnblogs测试数据 "
{
type master;
file " cnblogs测试数据.zone " ;
};
(4) 开启我们的主DNS服务器的BIND服务
[root@xiaoluo etc]# service named start Starting named: named: already running [ OK ]
主DNS服务器的配置就基本这样子,接下来就是我们配置从DNS服务器的步骤了:
① 首先我们也需要在从服务器上安装BIND服务 ,这块就省略了,具体安装上一篇随笔有详细讲解 Linux学习之CentOS(三十四)--配置域主DNS服务器
② 在bind主配置文件中添加指定域的信息
我们只需要在named.conf配置文件下面添加如下信息就可:
zone " cnblogs测试数据 "
{
type slave;
masters { 192.168.198.129; };
file "slaves/cnblogs测试数据.zone"
};
[root@slave etc]# cat named.conf
/*
Sample named.conf BIND DNS server 'named' configuration file
for the Red Hat BIND distribution.
See the BIND Administrator's Reference Manual (ARM) for details, in:
file:///usr/share/doc/bind-{version}/arm/Bv9ARM.html
Also see the BIND Configuration GUI : /usr/bin/system-config-bind and
its manual.
*/
options
{
directory " /var/named " ; // "Working" directory
};
zone " cnblogs测试数据 "
{
type slave; // 指定这是从DNS服务器
masters { 192.168 . 198.129 ; }; // 因为从DNS服务器要抓取主DNS服务器上的zone文件,这里要指定主DNS服务器的IP地址, 注意: IP地址要用{}括起来,且以;结尾,前后都有空格
file " slaves/cnblogs测试数据.zone " ; // 从服务器默认抓取到的zone文件通常都保存在了 slaves 这个目录下
};
③ 关闭从服务器上的SELinux
因为要通过网络来访问主服务器,所以这里也需要将我们的SELinux设置成 permissive
[root@slave etc]# getenforce Enforcing [root@slave etc]# setenforce 0 [root@slave etc]# getenforce Permissive
【 注意: 】因为我们从主服务器上抓取文件到 slaves 这个目录下是由 named 这个系统用户来完成的,所以我们要保证 slaves 要有 可写权限 ,同时 slaves 的所属用户、所属组都是 named
[root@slave named]# ls - l 总用量 32 drwxr -xr-x. 2 root root 4096 6月 6 22 : 52 data -rw-r--r--. 1 root root 56 6月 6 22 : 52 my.external.zone.db -rw-r--r--. 1 root root 56 6月 6 22 : 52 my.internal.zone.db -rw-r--r--. 1 root root 1892 6月 6 22 : 52 named.ca -rw-r--r--. 1 root root 152 6月 6 22 : 52 named.empty -rw-r--r--. 1 root root 152 6月 6 22 : 52 named.localhost -rw-r--r--. 1 root root 168 6月 6 22 : 52 named.loopback drwxr -xr-x. 2 root root 4096 6月 6 22 : 52 slaves [root@slave named]# chown named slaves/ [root@slave named]# chgrp named slaves/ [root@slave named]# ls - l 总用量 32 drwxr -xr-x. 2 root root 4096 6月 6 22 : 52 data -rw-r--r--. 1 root root 56 6月 6 22 : 52 my.external.zone.db -rw-r--r--. 1 root root 56 6月 6 22 : 52 my.internal.zone.db -rw-r--r--. 1 root root 1892 6月 6 22 : 52 named.ca -rw-r--r--. 1 root root 152 6月 6 22 : 52 named.empty -rw-r--r--. 1 root root 152 6月 6 22 : 52 named.localhost -rw-r--r--. 1 root root 168 6月 6 22 : 52 named.loopback drwxr -xr-x. 2 named named 4096 6月 6 22 : 52 slaves
④ 启动我们从服务器上的BIND服务,或刷新我们的BIND服务配置
[root@slave etc]# service named start Generating /etc/ rndc.key: [确定] 启动 named: [确定]
⑤ 查看域的zone配置文件是否正常被抓取到了 /var/named/chroot/var/named/slaves/ 这个目录当中
[root@slave slaves]# ls - l 总用量 12 -rw-r--r--. 1 named named 381 6月 6 23 : 20 cnblogs测试数据.zone -rw-r--r--. 1 root root 56 6月 6 22 : 52 my.ddns.internal.zone.db -rw-r--r--. 1 root root 56 6月 6 22 : 52 my.slave.internal.zone.db
我们看到,cnblogs测试数据.zone文件已经从主DNS服务器上抓取下来了
[root@slave slaves]# cat cnblogs测试数据.zone
$ORIGIN .
$TTL 86400 ; 1 day
cnblogs测试数据 IN SOA cnblogs测试数据. rname.invalid. (
0 ; serial
86400 ; refresh ( 1 day)
3600 ; retry ( 1 hour)
604800 ; expire ( 1 week)
10800 ; minimum ( 3 hours)
)
NS cnblogs测试数据.
A 127.0 . 0.1
MX 10 mail.cnblogs测试数据.
AAAA :: 1
$ORIGIN cnblogs测试数据.
mail A 192.168 . 1.222
www A 192.168 . 1.111
⑥ 将从DNS服务器的指向当前主机
这个时候我们的从DNS服务器已经配置好了,我们这时修改 /etc/resolv.conf 文件然后将 nameserver 指向本机
[root@slave slaves]# vim /etc/ resolv.conf nameserver 127.0 . 0.1
⑦ 通过 host 或者 dig 命令来验证我们的从DNS服务器是否能够正常解析
// 查询HdhCmsTestcnblogs测试数据的IP地址 [root@slave slaves]# dig HdhCmsTestcnblogs测试数据 ; <<>> DiG 9.8 .2rc1-RedHat- 9.8 . 2 - 0.17 .rc1.el6 <<>> HdhCmsTestcnblogs测试数据 ;; global options: + cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id : 61233 ;; flags: qr aa rd ra; QUERY: 1 , ANSWER: 1 , AUTHORITY: 1 , ADDITIONAL: 2 ;; QUESTION SECTION: ;HdhCmsTestcnblogs测试数据. IN A ;; ANSWER SECTION: HdhCmsTestcnblogs测试数据. 86400 IN A 192.168 . 1.111 ;; AUTHORITY SECTION: cnblogs测试数据. 86400 IN NS cnblogs测试数据. ;; ADDITIONAL SECTION: cnblogs测试数据. 86400 IN A 127.0 . 0.1 cnblogs测试数据. 86400 IN AAAA :: 1 ;; Query time : 2 msec ;; SERVER: 127.0 . 0.1 # 53 ( 127.0 . 0.1 ) ;; WHEN: Thu Jun 6 23 : 29 : 16 2013 ;; MSG SIZE rcvd: 107 // 查询cnblogs测试数据这个域的邮件记录 [root@slave slaves]# dig - t mx cnblogs测试数据 ; <<>> DiG 9.8 .2rc1-RedHat- 9.8 . 2 - 0.17 .rc1.el6 <<>> - t mx cnblogs测试数据 ;; global options: + cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id : 3328 ;; flags: qr aa rd ra; QUERY: 1 , ANSWER: 1 , AUTHORITY: 1 , ADDITIONAL: 3 ;; QUESTION SECTION: ;cnblogs测试数据. IN MX ;; ANSWER SECTION: cnblogs测试数据. 86400 IN MX 10 mail.cnblogs测试数据. ;; AUTHORITY SECTION: cnblogs测试数据. 86400 IN NS cnblogs测试数据. ;; ADDITIONAL SECTION: mail.cnblogs测试数据. 86400 IN A 192.168 . 1.222 cnblogs测试数据. 86400 IN A 127.0 . 0.1 cnblogs测试数据. 86400 IN AAAA :: 1 ;; Query time : 2 msec ;; SERVER: 127.0 . 0.1 # 53 ( 127.0 . 0.1 ) ;; WHEN: Thu Jun 6 23 : 30 : 04 2013 ;; MSG SIZE rcvd: 124 // 查询mail.cnblogs测试数据的IP地址 [root@slave slaves]# dig mail.cnblogs测试数据 ; <<>> DiG 9.8 .2rc1-RedHat- 9.8 . 2 - 0.17 .rc1.el6 <<>> mail.cnblogs测试数据 ;; global options: + cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id : 47353 ;; flags: qr aa rd ra; QUERY: 1 , ANSWER: 1 , AUTHORITY: 1 , ADDITIONAL: 2 ;; QUESTION SECTION: ;mail.cnblogs测试数据. IN A ;; ANSWER SECTION: mail.cnblogs测试数据. 86400 IN A 192.168 . 1.222 ;; AUTHORITY SECTION: cnblogs测试数据. 86400 IN NS cnblogs测试数据. ;; ADDITIONAL SECTION: cnblogs测试数据. 86400 IN A 127.0 . 0.1 cnblogs测试数据. 86400 IN AAAA :: 1 ;; Query time : 1 msec ;; SERVER: 127.0 . 0.1 # 53 ( 127.0 . 0.1 ) ;; WHEN: Thu Jun 6 23 : 30 : 36 2013 ;; MSG SIZE rcvd: 108
我们看到,我们的域名都能正常的解析成功,说明我们的从DNS服务器的配置就成功了
这个时候我们的客户端既可以指向我们的主服务器,也可以指向我们的从服务器了,当主服务器发生故障时,从服务器就会接替主服务器进行工作,提供DNS服务
三、配置缓存DNS服务器
在上面以及前一篇随笔中我们讲解了如何配置一个主DNS服务器,以及从DNS服务器,但是一个DNS服务器可以既不是某个域的master服务器,也可以不是某个域的slave服务器,一个DNS服务器可以不包含任何域的配置信息,它将接收到的所有DNS查询进行递归解析,将解析的结果返回给我们的查询客户端,并且将查询结果缓存下来,这样的服务器就称之为Caching DNS Server
通常我们在一个局域网中配置一个缓存DNS服务器是为了加速网络访问
我们也可以在缓存服务器上配置一个上游的DNS服务器地址,缓存服务器可以给客户提供一个上游DNS服务器的地址,只需通过加上以下一行语句在 named.conf 主配置文件即可:
forwarders { 218.30.19.40; };
[root@slave etc]# vim named.conf
/*
Sample named.conf BIND DNS server 'named' configuration file
for the Red Hat BIND distribution.
See the BIND Administrator's Reference Manual (ARM) for details, in:
file:///usr/share/doc/bind-{version}/arm/Bv9ARM.html
Also see the BIND Configuration GUI : /usr/bin/system-config-bind and
its manual.
*/
options
{
directory " /var/named " ; // "Working" directory
forwarders { 218.30.19.40; }; // 一般上游的DNS服务器要更稳定,性能更好 forwarders forward 选项都要写在 options 里面
};
zone " cnblogs测试数据 "
{
type slave;
masters { 192.168 . 198.129 ; };
file " slaves/cnblogs测试数据.zone " ;
};
我们还可以通过以下选项让缓存服务器将所有的DNS查询转发到forwarders服务器上:
forward only;
至此,本篇随笔的编写就告一段落了,本篇随笔详细讲解了如何配置一台从DNS服务器,讲解了从服务器从主服务器上抓取zone配置文件的原理以及通过配置我们的缓存服务器来提高网络性能.......
分类: Linux
标签: linux , CentOS
作者: Leo_wl
出处: http://HdhCmsTestcnblogs测试数据/Leo_wl/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
版权信息查看更多关于配置域从DNS服务器以及缓存DNS服务器的详细内容...