配置域从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.com"
{
type master;
file "cnblogs.com.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.com"
{
type master;
file "cnblogs.com.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.com"
{
type slave;
masters { 192.168.198.129; };
file "slaves/cnblogs.com.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.com"
{
type slave; // 指定这是从DNS服务器
masters { 192.168.198.129; }; // 因为从DNS服务器要抓取主DNS服务器上的zone文件,这里要指定主DNS服务器的IP地址,注意:IP地址要用{}括起来,且以;结尾,前后都有空格
file "slaves/cnblogs.com.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.com.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.com.zone文件已经从主DNS服务器上抓取下来了

[root@slave slaves]# cat cnblogs.com.zone
$ORIGIN .
$TTL 86400 ; 1 day
cnblogs.com IN SOA cnblogs.com. rname.invalid. (
0 ; serial
86400 ; refresh (1 day)
3600 ; retry (1 hour)
604800 ; expire (1 week)
10800 ; minimum (3 hours)
)
NS cnblogs.com.
A 127.0.0.1
MX 10 mail.cnblogs.com.
AAAA ::1
$ORIGIN cnblogs.com.
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服务器是否能够正常解析

// 查询www.cnblogs.com的IP地址
[root@slave slaves]# dig www.cnblogs.com ; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6 <<>> www.cnblogs.com
;; 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:
;www.cnblogs.com. IN A ;; ANSWER SECTION:
www.cnblogs.com. 86400 IN A 192.168.1.111 ;; AUTHORITY SECTION:
cnblogs.com. 86400 IN NS cnblogs.com. ;; ADDITIONAL SECTION:
cnblogs.com. 86400 IN A 127.0.0.1
cnblogs.com. 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.com这个域的邮件记录
[root@slave slaves]# dig -t mx cnblogs.com ; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6 <<>> -t mx cnblogs.com
;; 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.com. IN MX ;; ANSWER SECTION:
cnblogs.com. 86400 IN MX 10 mail.cnblogs.com. ;; AUTHORITY SECTION:
cnblogs.com. 86400 IN NS cnblogs.com. ;; ADDITIONAL SECTION:
mail.cnblogs.com. 86400 IN A 192.168.1.222
cnblogs.com. 86400 IN A 127.0.0.1
cnblogs.com. 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.com的IP地址
[root@slave slaves]# dig mail.cnblogs.com ; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6 <<>> mail.cnblogs.com
;; 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.com. IN A ;; ANSWER SECTION:
mail.cnblogs.com. 86400 IN A 192.168.1.222 ;; AUTHORITY SECTION:
cnblogs.com. 86400 IN NS cnblogs.com. ;; ADDITIONAL SECTION:
cnblogs.com. 86400 IN A 127.0.0.1
cnblogs.com. 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.com"
{
type slave;
masters { 192.168.198.129; };
file "slaves/cnblogs.com.zone";
};

我们还可以通过以下选项让缓存服务器将所有的DNS查询转发到forwarders服务器上:
forward only;
配置域从DNS服务器以及缓存DNS服务器的更多相关文章
- Service系统服务(四):搭建单区域DNS服务器、特殊DNS解析、配置DNS子域授权、搭建并测试缓存DNS
一.搭建单区域DNS服务器 目标: 本例要求要求为DNS区域tedu.cn搭建一台DNS服务器,以便用户能通过域名的方式访问网站.测试阶段主要提供以下正向记录: svr7.tedu.cn ---> ...
- linux dns子域授权 split分离解析 缓存dns服务器
DNS子域授权作用:适用于同一个DNS组织父/子域名的解析工作由不同的dns服务器负责父dns服务器应该有为子域名迭代的能力 上下级区域属于不同的机构管理:.cn与.Anonymous.cn.cn需要 ...
- 配置域主DNS服务器
一.DNS服务器的类型 ①Primary DNS Server(Master) 一个域的主服务器保存着该域的zone配置文件,该域所有的配置.更改都是在该服务器上进行,本篇随笔要讲解的也是如何配置一个 ...
- 【Linux】DNS服务-BIND从服务器、缓存服务器及转发服务器配置(三)
环境 操作系统:CentOS 6.5 DNS软件:bind(安装参照:[Linux]DNS服务-BIND基础配置(二)) BIND从服务器 从服务器就是在bind的主配置文件中添加从域example. ...
- 十五.DNS子域授权、分离解析、缓存DNS服务器
1.搭建基本DNS服务器 pc7: 1.1 安装软件包 ]# yum -y install bind-chroot bind bind //域名服务包 bind-chroot //提 ...
- 6.DNS公司PC访问外网的设置 + 主DNS服务器和辅助DNS服务器的配置
网站部署之~Windows Server | 本地部署 http://www.cnblogs.com/dunitian/p/4822808.html#iis DNS服务器部署不清楚的可以看上一篇:ht ...
- CentOS7下BIND配置主从服务器和缓存服务器
系统环境:CentOS Linux release 7.4.1708 (Core) 3.10.0-693.el7.x86_64 软件版本:bind-chroot-9.9.4-51.el7_4.1.x ...
- DNS软件bind-实现DNS服务器
DNS服务器软件::bind,powerdns,dnsmasq,unbound,coredns BIND相关程序包 bind:服务器 bind-libs:相关库 bind-utils:客户端 bind ...
- 于网站主机,DNS,域名解析,Web服务器关系详解
/*本文将介绍网站主机,DNS,域名解析,Web服务器关系,转载请保留以下版权*/ /*启明星工作室 www.dotnetcms.org 提供会议室预定系统,请假系统,helpdesk,工作日志系统 ...
随机推荐
- 字符串长度函数strlen()
如下是我的测试文件: #include <stdio.h> #include <stdlib.h> #include <string.h> int main() { ...
- malloc calloc 和 realloc
realloc()函数 原型:extern void *realloc(void *mem_address, unsigned int newsize); 语法:指针名=(数据类型*)realloc( ...
- 【转载】4412开发板、PC、ubuntu通过网线连接
今天看到使用TFTP方式,开发板直接从ubuntu下载程序,不需要一直通过烧写文件系统下载,我试了一下,虚拟机.开发板.pc三者老是互相ping不通.纠结了很久终于解决了. 写下这个小笔记,供大家参考 ...
- A Personal Selection of Books on E lectromagnetics and Computational E lectromagnetics---David B. Davidson
链接. General Books on Electromagnetics When our department recently reviewed our junior-level text, w ...
- ASP.NET MVC中分析淘宝网页发生乱码标题搞定方法
ASP.NET MVC中分析淘宝网页发生乱码标题搞定方法 近来正在分析淘宝中商品的信息,效果发生乱码,如: 原因便是中文字符格式发生冲突,ASP.NET MVC 默认采用utf-8,可是淘宝网页采用g ...
- HDU 4454 Stealing a Cake --枚举
题意: 给一个点,一个圆,一个矩形, 求一条折线,从点出发,到圆,再到矩形的最短距离. 解法: 因为答案要求输出两位小数即可,精确度要求不是很高,于是可以试着爆一发,暴力角度得到圆上的点,然后求个距离 ...
- 搜索服务Solr集群搭建 使用ZooKeeper作为代理层
上篇文章搭建了zookeeper集群 那好,今天就可以搭建solr搜服服务的集群了,这个和redis 集群不同,是需要zk管理的,作为一个代理层 安装四个tomcat,修改其端口号不能冲突.8080~ ...
- java 20 -1 递归的概述和案例
/* * 递归:方法定义中调用方法本身的现象 * * 方法的嵌套调用,这不是递归. * Math.max(Math.max(a,b),c); * * public void show(int n) { ...
- java 11-8 在大串中查找小串的案例
1.统计大串中小串出现的次数 举例: 在字符串"woaijavawozhenaijavawozhendeaijavawozhendehenaijavaxinbuxinwoaijavagun& ...
- iOS请求服务器数据去空NSNull
我们在处理数据库接口的过程中,如果数据中出现null,我们是没法处理的.我在使用NSUserDaults保存后,出现崩溃. null产生原因 null是后台在处理数据的时候,如果没有设置value值, ...