博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
dns 视图
阅读量:4874 次
发布时间:2019-06-11

本文共 5542 字,大约阅读时间需要 18 分钟。

DNS视图功能实现

众所周知网通和电信之间互相的访问速度是很慢的,但是大型网络公司无论你是在哪用的什么方式接入的网络,访问起来速度都很快,那么是怎么实现的呢!首先想到的会是电信和网通各放一些内容完全相同的服务器,那么怎样才能让电信的用户自己去访问电信的服务器,网通的用户访问网通的服务器呢?就需要DNS高级功能视图来实现了。

DNS服务器的视图通常在配置文件中是使用view实现的。把要使用某些IP地址作单独访问的zone区域,统一放在一个命名的view段落中,并且在view中定义请求的IP地址或IP地址段,把IP地址写入match-clients选项中。如果像上面说的,区分电信和网通路线的话,那么可以使用两个acl访问控制列表写上电信或网通IP地址,定义电信网通路线,把acl名字写入view段落match-clients选项中。

 

注意:

1.一旦使用view,所有的zone都必须定义在view中;只有允许给其地规定客户端所在的view才有必要定义根区域等;

2.客户端请求到达时,其匹配view是自上而下匹配match-clients中定义的地址范围;第一次被匹配到的为最终生效;

 

全局定义一个ACL列表intnet

将主配置文件的根区域定义到named.rfc1912.zones

注释根区域

下面是主配置文件:/etc/named.conf

 

acl intnet {

       172.16.0.0/16;

       127.0.0.0/8;

};

 

options {

 

       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";

       recursion yes;

};

 

logging {

       channel default_debug {

                file"data/named.run";

                severity dynamic;

       };

};

 

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

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

 

我们将根区域写进去,然后将里面的所有zone定义到一个视图view中;所有来自intnet的客户端都匹配到这个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
52
53
54
55
56
[root@bind named]# vim/etc/named.rfc1912.zones
 
view int {
       
match-clients { intnet; };
  
zone "." IN {
       
type hint;
       
file "named.ca";
};
  
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.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa"IN {
       
type master;
       
file "named.loopback";
       
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 "oracle.com" IN {
        
type master;
       
file "oracle.com.zone";
};
  
};

 

 

    上面的view只定义了intnet这个网络的访问请求可以到达的区域,其他网络的访问我们还要设置个视图来匹配;视图是自上而下匹配的,还需要明确定义这个视图内部不允许递归;定义访问的区域是这个视图负责的。

    我们定义不同视图的客户端访问本机的区域返回的IP不一致,上面的视图是针对内部网络的请求,返回的ip是内部ip,而来自外部网络的客户端返回的结果是下面视图中定义的区域负责返回结果。

1
2
3
4
5
6
7
8
9
view extend {
        
match-clients { any; };
       
allow-recursion { none; };
  
       
zone "oracle.com" IN {
                
type master;
                
file"oracle.com.ext";
       
};
};

 

我们还需要定义一个来自外部网络请求的区域解析库文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
[root@bind named]#cd /var/named
[root@bind named]# vim  oracle.com.ext
$ORIGIN oracle.com.
@      IN      SOA     ns.oracle.com.  root.oracle.com. (
                        
2014121101      ;serial
                        
1D              ;refresh
                        
5M              ;retry
                        
1W              ;expiry
                        
1H)             ;minimum
@      IN      NS      ns.oracle.com.
               
IN      MX 5   mail.oracle.com.
ns     IN      A       172.16.31.100
www    IN      A       192.168.1.100
www    IN      A       192.168.1.101
www1   IN      A       192.168.1.100
www2   IN      A       192.168.1.101
mail   IN      A       192.168.1.100
pop3   IN      CNAME   mail
iamp4  IN      CNAME   mail

 

进行语法检查,启动服务,查看日志:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[root@bind named]# named-checkconf
[root@bind named]# service named restart
Stopping named:                                           [  OK  ]
Starting named:                                           [  OK  ]
[root@bind named]# tail /var/log/messages
Dec 13 09:27:43 bind named[2193]: zone0.in-addr.arpa/IN/int: loaded serial 0
Dec 13 09:27:43 bind named[2193]: zone1.0.0.127.in-addr.arpa/IN/int: loaded serial 0
Dec 13 09:27:43 bind named[2193]: zone1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa/IN/int:loaded serial 0
Dec 13 09:27:43 bind named[2193]: zoneoracle.com/IN/int: loaded serial 2014121101
Dec 13 09:27:43 bind named[2193]: zonelocalhost.localdomain/IN/int: loaded serial 0
Dec 13 09:27:43 bind named[2193]: zonelocalhost/IN/int: loaded serial 0
Dec 13 09:27:43 bind named[2193]:managed-keys-zone ./IN/int: loaded serial 3
Dec 13 09:27:43 bind named[2193]: zoneoracle.com/IN/extend: loaded serial 2014121101
Dec 13 09:27:43 bind named[2193]:managed-keys-zone ./IN/extend: loaded serial 3
Dec 13 09:27:43 bind named[2193]: running

 

我们找到一台内部网络的主机来解析一下,得到的结果是来自172.16网段的反馈:

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
[root@www httpd]# dig  -t  A  www.oracle.com  @172.16.31.100
  
; <<>> DiG9.8.2rc1-RedHat-9.8.2-0.30.rc1.el6 <<>> -t A www.oracle.com@172.16.31.100
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY,status: NOERROR, id: 30864
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2,AUTHORITY: 1, ADDITIONAL: 1
  
;; QUESTION SECTION:
;www.oracle.com.                        IN      A
  
;; ANSWER SECTION:
www.oracle.com.         600    IN      A       172.16.31.101
www.oracle.com.         600    IN      A       172.16.31.100
  
;; AUTHORITY SECTION:
oracle.com.             600     IN     NS      ns.oracle.com.
  
;; ADDITIONAL SECTION:
ns.oracle.com.          600     IN     A       172.16.31.100
  
;; Query time: 2 msec
;; SERVER: 172.16.31.100#53(172.16.31.100)
;; WHEN: Sat Dec 13 09:30:03 2014
;; MSG SIZE rcvd: 97

 

我再从外部网络访问此服务器;如图:

其返回的结果是通过192.168.1.0这个网络返回的:

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
[root@test ~]# dig  =t  A  www.oracle.com  @172.16.31.100
; <<>> DiG9.8.2rc1-RedHat-9.8.2-0.30.rc1.el6 <<>> =t A www.oracle.com@172.16.31.100
;; global options: +cmd
;; connection timed out; no servers couldbe reached
;; Got answer:
;; ->>HEADER<<- opcode: QUERY,status: NOERROR, id: 60969
;; flags: qr aa rd; QUERY: 1, ANSWER: 2,AUTHORITY: 1, ADDITIONAL: 1
;; WARNING: recursion requested but notavailable
  
;; QUESTION SECTION:
;www.oracle.com.                        IN      A
  
;; ANSWER SECTION:
www.oracle.com.         600    IN      A       192.168.1.101
www.oracle.com.         600    IN      A       192.168.1.100
  
;; AUTHORITY SECTION:
oracle.com.             600     IN     NS      ns.oracle.com.
  
;; ADDITIONAL SECTION:
ns.oracle.com.          600     IN     A       172.16.31.100
  
;; Query time: 5 msec
;; SERVER: 172.16.31.100#53(172.16.31.100)
;; WHEN: Sat Dec 13 09:43:22 2014
;; MSG SIZE rcvd: 97

 

我们可以看出结果哦!完成啦(*^__^*) 

转载于:https://www.cnblogs.com/han1094/p/6383561.html

你可能感兴趣的文章
selenide总结
查看>>
selenium--控制浏览器和简单元素操作
查看>>
[笔记] imooc《JavaScript深入浅出》对象与函数
查看>>
hdu1078FatMouse and Cheese
查看>>
jquery 处理密码输入框(input type="password" ) 模仿placeholder
查看>>
移动端touch触摸事件(滑动效果和手势操作)
查看>>
HTTP、TCP、 UDP、 IP 、 Socket的关系
查看>>
Linux终端使用技巧——个人总结
查看>>
简单通用线程池的实现
查看>>
KMP算法详解
查看>>
2019.4.27
查看>>
Linux 操作
查看>>
【3】JAVA---地址App小软件(AddPanel.class)(表现层)
查看>>
Java中的代理模式
查看>>
一个linux守护进程的编写(Ubuntu环境下)
查看>>
Leetcode-1002 Find Common Characters(查找常用字符)
查看>>
面向对象编程(基础)
查看>>
AOJ 802.运输宝物
查看>>
android studio C/C++ jni 编写以及调试方法
查看>>
Oracle RMAN 的 show,list,crosscheck,delete命令整理
查看>>