实现DNS视图view
从Bind 9开始,bind支持视图功能。什么是视图呢?就是以某种特殊的方式根据用户来源的不同而返回不同的查询结果。比如同样是访问www.baidu.com,DNS返送给电信用户和联通用户的IP地址是不一样的,这样既可以达到分流效果,也提高了用户的访问速度,在CDN中应用较广泛。
需要注意的是:
(1)、如果使用了视图的功能,那么配置文件中的所有zone区域都要必须写在视图里面,如,配置文件里默认要配置的三个区域,根、127.0.0.1、1.0.0.127.in-addr.arpa都要写入视图。
(2)、在acl中定义IP地址,IP地址的写法可以是单个IP地址也可以是一个IP地址段加掩码,如:192.168.0.0/24。
(3)、视图是根据配置文件从上往下匹配的,所以希望优先访问的资源记录文件,区域应该尽量写前面。
(4)、如果定义的若干个视图的IP地址不全的话,那么可以在最后定义一个默认视图,match-clients选项中的IP地址写上any,代表如果此次访问的IP地址上面没有一个能匹配到,则在此处归类。
因此,实现DNS试图view步骤:
(1):修改配置文件named.conf,,定义相应的acl和view
(2):创建每个view的zone对于的RR文件
(3):重启DNS服务后测试
下面来进行模拟实验:
规划:10.1.19.5的这个用户访问www.magedu.com的IP地址是1.1.1.1
10.1.19.6的这个用户访问www.magedu.com的IP地址是2.2.2.2(我的机器少只能模拟两个主机,这里写上网段也可以)
说明,这里仅实验最简单的view,只实现正向查询,并没有包括根和反向查询,想添加直接写上相应的内容即可
编辑named.conf文件,创建相应的acl和view:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 | [15:56 root@centos6.8/var/named]# cat /etc/named.conf // // named.conf // // Provided by Red Hat bind package to configure the ISC BIND named(8) DNS // server as a caching only nameserver (as a localhost DNS resolver only). // // See /usr/share/doc/bind*/sample/ for example named configuration files. // acl Anet { 10.1.19.5; }; acl Bnet { 10.1.19.6; }; options { listen-on port 53 { any; }; listen-on-v6 port 53 { ::1; }; 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; dnssec-enable yes; dnssec-validation yes; /* Path to ISC DLV key */ bindkeys-file "/etc/named.iscdlv.key" ; managed-keys-directory "/var/named/dynamic" ; }; view Anet { match-clients { Anet; }; zone "magedu.com" IN { type master; file "Anet.magedu.com.zone" ; }; }; view Bnet { match-clients { Bnet; }; zone "magedu.com" IN { type master; file "Bnet.magedu.com.zone" ; }; }; view Default { match-clients {any;}; zone "magedu.com" IN { type master; file "Bnet.nihao.com.zone" ; }; }; |
创建每个view的zone对于的RR文件
[root@centos7-1 named]# cat Anet.magedu.com Bnet.magedu.com $TTL 6400 @ IN SOA ns1.magedu.com. admin.magedu.com. ( 2016110601 1H 20M 1D 10H) @ IN NS ns1.magedu.com. ns1 IN A 10.1.19.1 www IN A 1.1.1.1 $TTL 6400 @ IN SOA ns1.magedu.com. admin.magedu.com. ( 2016110601 1H 20M 1D 10H) @ IN NS ns1.magedu.com. ns1 IN A 10.1.19.1 www IN A 2.2.2.2
测试效果:
同样是访问www.magedu.com 返回的结果不一样
[root@centos7-2 named]# dig -t A www.magedu.com @10.1.19.1 ; <<>> DiG 9.9.4-RedHat-9.9.4-29.el7 <<>> -t A www.magedu.com @10.1.19.1 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 25680 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;www.magedu.com. IN A ;; ANSWER SECTION: www.magedu.com. 6400 IN A 1.1.1.1 ;; AUTHORITY SECTION: magedu.com. 6400 IN NS ns1.magedu.com. ;; ADDITIONAL SECTION: ns1.magedu.com. 6400 IN A 10.1.19.1 ;; Query time: 1 msec ;; SERVER: 10.1.19.1#53(10.1.19.1) ;; WHEN: Sun Nov 06 15:54:47 CST 2016
[root@centos7-3 ~]# dig -t A www.magedu.com @10.1.19.1 ; <<>> DiG 9.9.4-RedHat-9.9.4-29.el7 <<>> -t A www.magedu.com @10.1.19.1 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 41419 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;www.magedu.com. IN A ;; ANSWER SECTION: www.magedu.com. 6400 IN A 2.2.2.2 ;; AUTHORITY SECTION: magedu.com. 6400 IN NS ns1.magedu.com. ;; ADDITIONAL SECTION: ns1.magedu.com. 6400 IN A 10.1.19.1 ;; Query time: 2 msec ;; SERVER: 10.1.19.1#53(10.1.19.1) ;; WHEN: Sun Nov 06 15:55:00 CST 2