Linux DNS服务系列之主从复制、子域授权和转发、view配置详解

前言

上文我们讲解了DNS服务的原理及正反向解析配置,相信大家对DNS服务已经有了初步了解。接下来,让我们进一步了解DNS服务的其它功能,本文将详解主从复制、子域授权和转发以及view的相关配置。

主从服务器配置

主从服务器关系

如果公司内DNS服务器负载过重或者为了实现冗余这一类功能就需要用到一个备份DNS服务器,备份服务器和主DNS服务器就形成了主从关系,如果主服务器的区域文件更新就会通知从服务器同步最新的区域文件,平时从服务器不提供解析服务,如果主服务器有故障从服务器就立刻激活提供域名解析服务。

主从复制工作过程

1.jpg

主从复制配置

①开始配置从服务器之前,请确保主从服务器时间同步

②从服务器bind版本可高于主服务器

实战主从复制配置

案例要求:

实验接上文,为主DNS服务器172.16.10.10添加从服务器172.16.10.100,要求只允许从服务器传输区域文件,其它主机一律禁止传送。

添加从服务器

在主服务器正反向配置文件中添加从服务器

[root@lab named]# vim scholar.com.zone 

$TTL 3600
@       IN      SOA     dns.scholar.com.        admin.scholar.com. (
                                        2015040801 #每次主服务器更新,必须更改版本号
                                        2H
                                        10M
                                        7D
                                        1D )
@       IN      NS      dns
@       IN      NS      dns2      #添加从服务器NS记录
@       IN      MX 10   mail
dns     IN      A       172.16.10.10
dns2    IN      A       172.16.10.100   #添加从服务器地址
mail    IN      A       172.16.10.12
www     IN      A       172.16.10.10
pop     IN      CNAME   mail
ftp     IN      CNAME   www
[root@lab named]# vim 172.16.10.zone

$TTL 3600
@       IN      SOA     dns.scholar.com.        admin.scholar.com. (
                                                        2015040801
                                                        2H
                                                        10M
                                                        7D
                                                        1D )
@       IN      NS      dns.scholar.com.
@       IN      NS      dns2.scholar.com. #添加从服务器NS记录
10      IN      PTR     dns.scholar.com.
100     IN      PTR     dns2.scholar.com. #添加从服务器地址
12      IN      PTR     mail.scholar.com.
10      IN      PTR     www.scholar.com.

在主服务器添加区域传送限制,只允许从服务器传送

[root@lab named]# vim /etc/named.conf   #区域定义在哪就修改那个配置文件

zone "scholar.com" IN {
        type master;
        allow-transfer { 172.16.10.100; };  #定义传输白名单,可多个IP用分号分隔
        file "scholar.com.zone";
};
zone "10.16.172.in-addr.arpa" IN {
        type master;
        allow-transfer { 172.16.10.100; }; #定义反向区域传输白名单
        file "172.16.10.zone";
};

检查语法,重启服务

2.jpg

定义从区域

在从服务器上定义与主服务器相同的正反向区域

[root@scholar ~]# vim /etc/named.conf   #也可编辑/etc/named.rfc1912.zones


zone "scholar.com" IN {
        type slave;                       #定义服务器类型为从服务器
        masters { 172.16.10.10; };        #定义主服务器,可多个IP用分号分隔 
        file "slaves/scholar.com.zone";
};
zone "10.16.172.in-addr.arpa" IN {
        type slave;
        masters { 172.16.10.10; };
        file "slaves/172.16.10.zone";
};

测试语法,启动服务并设置开机自启

3.jpg

查看53端口是否开启

4.jpg

查看日志,是否传输成功

5.jpg

注意:此处报错,请设置防火墙规则

看一下文件传输过来了没

6.jpg

从服务器解析测试

7.jpg

到这里主从复制就配置完了,让我们再看一下子域授权和转发功能。

子域授权和转发

子域授权概念

为了方便公司部门管理运营,每个部门需要独立的域名服务器,这就要在父域下分配子域,比如,运维部的子域ops.scholar.com,而子域需要父域授权,所谓子域授权就是在父域的区域解析库中添加胶水记录(glue record)

胶水记录包括:

授权的子区域域名称

子区域的名称服务器

子区域的名称服务器IP地址 

子域授权和转发工作过程

8.jpg

子域授权和转发配置

正向子域授权

只需要在父域的区域解析库中添加“胶水记录”

例如:
ops 	IN  	NS  	dns.ops
ops     IN      A       172.16.10.110

配置转发器

转发所有非本机负责的区域的请求至某指定的DNS服务器

options {
	...
forward only|first;
forwarders { IP; };
		}
only/first:
only:只使用forwarders DNS服务器做域名解析,如果查询不到则返回查询失败。
first优先使用forwarders DNS服务器做域名解析,如果查询不到再使用本地DNS
服务器做域名解析。
访问控制:
allow-transfer {};  #区域传输白名单
allow-query {};     #查询白名单
allow-update {};    #更新白名单,一般为none
递归白名单:
allow-recursion {};
recursion yes;

配置转发区域

转发本区域解析不到的请求至某指定的DNS服务器,而非根

zone "ZONE NAME" IN {
type forward;
foward only|first;
forwarders { IP; };
}

bind acl

内置的acl:any (任何主机)、none(拒绝任何)、localhost(本机)、localnet(本机所在网络)

自定义acl:

acl ACL_NAME {
ip;
ip;
network;
};
例如:
acl localnetwork {
172.16.0.0/16;
192.168.0.0/24;
};
allow-recursion { localnetwork; }
#通常定义于options之上

实战子域授权和转发

案例要求:

父域服务器为172.16.10.10,域名scholar.com,运维部需要一个子域ops.scholar.com,子域服务器为172.16.10.110,要求完成子域授权,确保子域可以使用,将子域解析不到的请求向父域转发,只向父域查询,父域解析不了,返回失败。

在父域正向区域文件添加胶水记录

[root@lab named]# vim scholar.com.zone 

ops     IN      NS      dns.ops
dns.ops IN      A       172.16.10.110   #子域可在不同网段
 
#如有多个子域都需要一一添加

父域检查语法,重新启动服务

9.jpg

子域添加子域区域及转发域

[root@scholar ~]# vim /etc/named.conf

zone "ops.scholar.com" IN {       #添加正向区域
        type master;
        file "ops.scholar.com.zone";
};
zone "scholar.com" IN {           #添加转发域
        type forward;             #指定服务器类型为转发
        forwarders { 172.16.10.10; }; #转发列表,可多个IP
        forward only;                 #定义转发类型
};
include "/etc/named.rfc1912.zones";
//include "/etc/named.root.key";   #转发需注释此行

创建子域区域文件

[root@scholar named]# vim ops.scholar.com.zone

$TTL 3600
@       IN      SOA     dns.ops.scholar.com.    admin.ops.scholar.com. (
                                                2015040801
                                                2H
                                                10M
                                                7D
                                                1D )
@       IN      NS      dns.ops.scholar.com.
@       IN      MX 10   mail.ops.scholar.com.
dns     IN      A       172.16.10.110
www     IN      A       172.16.10.110
mail    IN      A       172.16.10.123
ftp     IN      CNAME   www
pop     IN      CNAME   mail

修改权限及属组

10.jpg

检查语法,启动服务并设置开机自启

11.jpg

测试子域能否解析

12.jpg

子域测试转发

13.jpg

子域授权和转发配置完成,解析通过,看一下最后一项view视图。

view视图

视图定义

根据客户端来源的不同,将同一个名称解析至不同的值。

视图工作过程

14.jpg

view配置

语法格式

acl telecom {

	};

	acl unicom {

	};



	view telecom {
		match-clients { telecom; };
		zone "scholar.com" IN {
			type master;
			file "scholar.com.tel";
		};

	};

	view unicom {
		match-clients { unicom; };
		zone "scholar" IN {
			type master;
			file "scholar.com.uni";
		};
	};

使用view注意的事项:

①通常只为内网客户端提供递归功能,提供根区域等;

②通常只为外网客户端提供本机所负责的区域的解析;

实战view配置

案例要求:

配置一个视图,要求内网访问(这里以172.16.0.0/16代表)返回一组解析结果,外网访问(这里以192.168.1.0/24代表)返回另一组解析结果。

DNS服务器:172.16.10.10(centos6.6),两个接口(172.16.10.10、192.168.1.100)

测试客户端:172.16.10.110(centos6.6)、192.168.1.5(winxp)

修改配置文件,添加view

view internal {
        match-clients { 172.16.0.0/16; };
zone "." IN {
        type hint;
zone "localhost.localdomain" IN {
        type master;
        file "named.localhost";
        allow-update { none; };
};

zone "localhost" IN {
        type master;
        file "named.localhost";
        allow-update { none; };
};

zone "1.0.0.127.in-addr.arpa" IN {
        type master;
        file "named.loopback";
        allow-update { none; };
};

zone "0.in-addr.arpa" IN {
        type master;
        file "named.empty";
        allow-update { none; };
};
zone "scholar.com" IN {
        type master;
        allow-transfer { 172.16.10.100; };
        file "scholar.com.int";
};
zone "10.16.172.in-addr.arpa" IN {
        type master;
        allow-transfer { 172.16.10.100; };
        file "172.16.10.int";
};
};
view external {
        match-clients { any; };
        zone "scholar.com" IN {
        type master;
        file "scholar.com.ext";
};
};

创建internal正向区域文件

$TTL 3600
@       IN      SOA     dns.scholar.com.        admin.scholar.com. (
                                                        2015040803
                                                        2H
                                                        10M
                                                        7D
                                                        1D )
@       IN      NS      dns
@       IN      MX 10   mail
dns     IN      A       172.16.10.10
mail    IN      A       172.16.10.12
www     IN      A       172.16.10.10
pop     IN      CNAME   mail
ftp     IN      CNAME   www

创建external正向区域文件

$TTL 3600
@       IN      SOA     dns.scholar.com.        admin.scholar.com. (
                                                        2015040803
                                                        2H
                                                        10M
                                                        7D
                                                        1D )
@       IN      NS      dns
@       IN      MX 10   mail
dns     IN      A       172.16.10.10
mail    IN      A       11.1.1.2
www     IN      A       11.2.2.10

创建完别忘了,修改权限和属组,我这里是直接修改以前的文件,就不需要再修改了

测试语法,重启服务

15.jpg

测试不同客户端返回解析

16.jpg

17.jpg

解析返回结果不同,看看是不是我们定义的结果呢,好了view就讲到这里了。

The end

好了,到此为止Linux DNS服务系列的相关功能就讲解完了,林林总总写了这么多,希望可以对你有所帮助,以上仅为个人学习总结,如有错漏,大神勿喷~~~

原创文章,作者:书生,如若转载,请注明出处:http://www.178linux.com/2998