dns view 实现分离解析

讲述了linux下的dns服务器,使用dns的view来实现分离解析,分离解析是根据客户端的IP地址来判断的

在前面的文章我们讲了基本解析和解析过程,这里再来看一下分离解析。

view 视图,实现分离解析,其实现的原理,是根据dns客户端的源IP地址来实现的,也就是说,当客户端源IP为192.168.100.x段的源IP请求解析的时候,服务器去查找相对应的资源记录,比如请求 www.example.com ,返回地址为 192.168.100.12,当客户端源IP为192.168.200.X段的地址请求,返回www.example.com 的对应地址为192.168.200.12,其它地址返回210.11.11.11

安装和基本配置,请参考 DNS快速搭建 下面不啰嗦,直接进入正题,先来看我的named.conf配置文件

cat /var/named/chroot/etc/named.conf
  options {
    listen-on port 53 { any; };
    directory "/var/named";
};

acl yanfabu {
  192.168.100.0/24;
};
acl caiwubu {
  192.168.200.0/24;
};
acl other {
  any;
};
view yanfa {
  match-clients { yanfabu; };
    zone "." IN {
       type hint;
       file "named.ca";
    };
    zone "example.com" IN {
       type master;
       file "example.yanfa.zone";
    };
};
view caiwu {
  match-clients { caiwubu; };
    zone "." IN {
       type hint;
       file "named.ca";
};
    zone "example.com" IN {
       type master;
       file "example.caiwu.zone";
    };
};
view other {
  match-clients { other; };

    zone "." IN {
       type hint;
       file "named.ca";
    };
    zone "example.com" IN {
       type master;
       file "example.other.zone";
    };
};

这里,我定义了三个ACL,名称分别为 yanfabu、caiwubu、other,yanfabu 匹配地址为192.168.100.0/24,caiwubu匹配地址为192.168.200.0/24,other匹配任意地址。

还定义了三个view 视图,yanfa、caiwu、other,每个view 下面的 match-clients 即指定匹配的源IP地址。

再下面就是zone了,这里要提一下,做了view 以后,zone 都要在下view之下写上

再写资源记录文件

cat /var/named/chroot/var/named/example.yanfa.zone

  $TTL 3H
  @ IN SOA @ rname.invalid. (
                            0 ; serial
                            1D ; refresh
                            1H ; retry
                            1W ; expire
                            3H ) ; minimum
NS @
@ A 192.168.22.22
www A 192.168.100.12
cat /var/named/chroot/var/named/example.caiwu.zone

  $TTL 3H
  @ IN SOA @ rname.invalid. (
                            0 ; serial
                            1D ; refresh
                            1H ; retry
                            1W ; expire
                            3H ) ; minimum
NS @
@ A 192.168.22.22
www A 192.168.200.12
cat /var/named/chroot/var/named/example.other.zone

  $TTL 3H
  @ IN SOA @ rname.invalid. (
                            0 ; serial
                            1D ; refresh
                            1H ; retry
                            1W ; expire
                            3H ) ; minimum
NS @
@ A 192.168.22.22
www A 210.11.11.11

重启启动named 服务

service named restart

这里我们来测试一下,由于只是做DNS,这里不再涉及其它的东西,我们在一个网卡上配置个多个IP地址,这里这的eth0的IP是192.168.22.22,这个IP可以匹配other的view,再来配置100段和200段的IP

sifconfig eth0:0 192.168.100.111 netmask 255.255.255.0 up
ifconfig eth0:1 192.168.200.111 netmask 255.255.255.0 up

重启named服务,使用其它监听这两个新配置的上的地址

service named restart

下面我们再依次来测试,先测试源IP为192.168.100.X的

echo "nameserver 192.168.100.111" > /etc/resolv.conf
nslookup www.example.com

  Server: 192.168.100.111
  Address: 192.168.100.111#53

  Name: www.example.com
  Address: 192.168.100.12

再测试一下192.168.200.X段的

echo "nameserver 192.168.200.111" > /etc/resolv.conf
nslookup www.example.com

  Server: 192.168.200.111
  Address: 192.168.200.111#53

  Name: www.example.com
  Address: 192.168.200.12

再测试一下其它IP地址,这个匹配other的

echo "nameserver 192.168.22.22" > /etc/resolv.conf
nslookup www.example.com

  Server: 192.168.22.22
  Address: 192.168.22.22#53

  Name: www.example.com
  Address: 210.11.11.11

这里我使用的是通过 一块网上配置多个IP,以及更改DNS地址,这样通信的源,也就会变,因为如果不这样的话,我们还需要做其它环境,所以这里就用这种方法来测试,实际线上生产环境中,我们就这么配置就可以,但不需要配置多个IP,这里配置多个IP和更改DNS,只是为了测试,而看效果的。

猜您喜欢