Bind的View及Master/Slave配置

本文介绍如何在Bind DNS服务器中配置视图(view),实现根据客户端IP地址的不同返回不同的解析结果。此外,还详细说明了如何在存在视图的情况下进行主从服务器(Master/Slave)之间的同步配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

         单位的互联网出口是一条电信链路,新近又拉了一条移动出口链路。DNS服务器以前都是将各种服务器解析到电信IP,既然有了新的移动出口,就可以按照客户端IP来判断,将来自移动的DNS请求解析到移动IP,其他来源的DNS请求解析到电信IP。这项需求可以通过bind的view配置来完成,配置view相对较为容易,但配置基于view的Master/Slave复制却遇到不少问题,做个记录,留作备忘。

        先说说环境:操作系统CentOS6.9、bind版本9.8.2

        假设:电信的公网IP:1.1.1.1  移动的公网IP:2.2.2.2  域名:test.com

        Master DNS公网映射地址:3.3.3.3

        Slave DNS公网映射地址:4.4.4.4

 

一、View的配置:

        配置view就是根据不同来源IP的DNS请求,响应不同的zone文件内容。首先就要分类不同来源的IP:移动IP和其他IP,建立两个acl,在/var/name/chroot/etc/目录下新建named.acl文件,并写入以下内容:

//移动IP列表

acl "chinamobile" { 

        36.128.0.0/10;

        39.128.0.0/10;

        43.251.244.0/22;

        103.20.112.0/22;

...

};

//其他IP列表

acl "default" { 

        ! "chinamobile"; 

        any; 

};

 

然后修改主配置文件/etc/named.conf:

options {

        listen-on port 53 { any; };

        directory       "/var/named";

        dump-file       "/var/named/data/cache_dump.db";

        statistics-file "/var/named/data/named_stats.txt";

        memstatistics-file "/var/named/data/named_mem_stats.txt";

        allow-query     { any; };

        recursion yes;

        allow-transfer  { none; };

};

 

logging {

        channel default_debug {

                file "data/named.run";

                severity dynamic;

        };

};

//将刚才建好的named.acl文件包含进来

include "/etc/named.acl";

//移动IP的DNS请求

view "chinamobileIP" {

        match-clients { "chinamobile"; };

        zone "." IN {

                type hint;

                file "named.ca";

        };        

        include "/etc/named.rfc1912.chinamobile.zones";

        include "/etc/named.root.key";

};

//其他IP的DNS请求

view "defaultIP" {

        match-clients { "default"; };

        zone "." IN {

                type hint;

                file "named.ca";

        };        

        include "/etc/named.rfc1912.zones";

include "/etc/named.root.key";

};

 

在/var/named/chroot/etc/目录下新建named.rfc1912.chinamobile.zones文件,写入如下内容:

zone  "test.com" in {

        type master;

        file  "test.com-chinamobile";

        allow-query {any;};

};

 

修改/etc/named.rfc1912.zones文件,写入如下内容:

zone  "test.com" in {

        type master;

        file  "test.com";

        allow-query {any;};

};

 

在/var/named/目录新建test.com文件,写入如下内容:

$TTL 86400

@       IN      SOA     ns.test.com.        master.test.com. (

        0              ; serial

        1800            ; Refresh

        900             ; Retry

        2592000         ; Expire

        345600 )        ; Minimum

@       IN      NS      ns.test.com.

www             IN      A       1.1.1.1  //其他IP的DNS请求,解析到电信公网IP

$include        /var/named/test.com-common

 

在/var/named/目录新建test.com-chinamobile文件,写入如下内容:

$TTL 86400

@       IN      SOA     ns.test.com.        master.test.com. (

        0              ; serial

        1800            ; Refresh

        900             ; Retry

        2592000         ; Expire

        345600 )        ; Minimum

@       IN      NS      ns.test.com.

www             IN      A      2.2.2.2  //移动IP的DNS请求,解析到移动公网IP

$include        /var/named/test.com-common

 

        注意:以上的两个文件中都有一个$include语句,目的是将哪些无论来自哪里IP的DNS请求都解析到相同的公网地址,这样做的好处是避免写两次,只将差异化的解析分别写进test.com和test.com-chinamobile文件。比如,在/var/named/test.com-common文件中写入如下内容:

ns              IN      A       3.3.3.3

        到此,view的配置就完成了。

 

二、Master/Slave配置:

        Master/Slave配置就折腾了很长时间,主要是因为有view的情况下配置Master/Slave,要在主从DNS服务器上分别配置两个IP才行。否则,从服务器只能同步defaultIP  view下的test.com文件。除了这个问题外,调试过程中也是各种报错,折腾一天终于配置成功,排错过程就不写了,直接上成功的配置:

        Master DNS IP - eth0:192.168.100.8、eth0:0:192.168.100.9

        Slave    DNS IP - eth0:192.168.100.21、eth0:0:192.168.100.22

 

Master配置:

1、修改/etc/named.conf文件:

view "chinamobileIP" {

        match-clients { 192.168.100.22;"chinamobile"; };

        zone "." IN {

                type hint;

                file "named.ca";

        };        

        include "/etc/named.rfc1912.chinamobile.zones";

        include "/etc/named.root.key";

};

view "defaultIP" {

        match-clients { !192.168.100.22;"default"; };

        zone "." IN {

                type hint;

                file "named.ca";

        };        

        include "/etc/named.rfc1912.zones";

        include "/etc/named.root.key";

};

黑体字是加入的内容,允许你Slave服务器通过IP192.168.100.22来同步chinamobileIP View的zone文件。

2、修改/etc/named.rfc1912.zones文件:

zone  "test.com" in {

        type master;

        file  "test.com";

        allow-query {any;};

        notify yes;  //启用DNS修改通知

        also-notify { 192.168.100.21; }; //通知发送给Slave的哪个IP

        notify-source 192.168.100.8; //通知由哪个接口发出

        allow-transfer { 192.168.100.21; }; //允许Slave的哪个IP来同步

};

3、修改/var/named/chroot/etc/named.rfc1912.chinamobile.zones文件:

zone  "test.com" in {

        type master;

        file  "test.com-chinamobile";

        allow-query {any;};

        notify yes;  //启用DNS修改通知

        also-notify { 192.168.100.22; }; //通知发送给Slave的哪个IP

        notify-source 192.168.100.9; //通知由哪个接口发出

        allow-transfer { 192.168.100.22; }; //允许Slave的哪个IP来同步

};

4、在zone文件中加入Slave服务器的NS标志,修改/var/named/test.com文件:

$TTL 86400

@       IN      SOA     ns.test.com.        master.test.com. (

        0              ; serial  版本序列号,每次更新zone文件后,确保该值大于slave的值,才能触发slave同步

        1800            ; Refresh  Slave服务器在没有收到notify的情况下,多少秒后主动连接Master

        900             ; Retry   连接Master失败后,多少秒重试

        2592000         ; Expire   重试的最大时间

        345600 )        ; Minimum

@       IN      NS      ns.test.com.

@   IN     NS      ns1.test.com.

www             IN      A       1.1.1.1  //其他IP的DNS请求,解析到电信公网IP

$include        /var/named/test.com-common

5、修改/var/named/test.com-chinamobile文件:

$TTL 86400

@       IN      SOA     ns.test.com.        master.test.com. (

        0              ; serial

        1800            ; Refresh

        900             ; Retry

        2592000         ; Expire

        345600 )        ; Minimum

@       IN      NS      ns.test.com.

@   IN     NS      ns1.test.com.

www             IN      A      2.2.2.2  //移动IP的DNS请求,解析到移动公网IP

$include        /var/named/test.com-common

6、修改/var/named/test.com-common文件:

ns              IN      A       3.3.3.3

ns1   IN    A       4.4.4.4

 

Slave配置:

1、修改/etc/named.conf文件:

...前面省略

include "/etc/named.acl";

 

view "chinamobileIP" {

        match-clients { 192.168.100.9;"chinamobile"; };

        zone "." IN {

                type hint;

                file "named.ca";

        };        

        include "/etc/named.rfc1912.chinamobile.zones";

        include "/etc/named.root.key";

};

view "defaultIP" {

        match-clients { !192.168.100.9;"default"; };

        zone "." IN {

                type hint;

                file "named.ca";

        };        

        include "/etc/named.rfc1912.zones";

        include "/etc/named.root.key";

};

2、修改/etc/named.rfc1912.zones文件:

zone "test.com" in {

        type slave;       //类型为Slave

        file "slaves/test.com";

        allow-query {any;};

        transfer-source 192.168.100.21;  //指定由本机的哪个接口传输

        masters { 192.168.100.8; }; //指定master的接口

};

3、修改/var/named/chroot/etc/named.rfc1912.chinamobile.zones文件:

zone  "test.com" in {

        type slave;

        file  "slaves/test.com-chinamobile";

        allow-query {any;};

        transfer-source 192.168.100.22; //指定由本机的哪个接口传输

        masters { 192.168.100.9; }; //指定master的接口

};

 

        Master/Slave配置完成,重启两台服务器的named服务。分别查看/var/log/messages,确认同步正常。记住每次修改了Master的zone文件后,都要修改SOA版本序列号,建议用年月日加序号。

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值