企业内部DNS从服务器架构的步骤

从DNS服务器的架设

之前文章有说“主DNS服务器”的架构过程,现在来说从服务器的架构步骤,主从DNS服务器的IP地址和服务器名称跟之前的计划一样均不变。主服务器的IP:172.16.100.1,名称叫dns;从服务器的IP:172.16.100.2,名称叫ns2。


基本上来说从DNS服务器的设置比较简单,因为主服务器的数据都已经做完了,从服务器只需要做好链接,然后验证是否能从主服务器上读取到数据即可。


登陆从DNS服务器#yum install bind -y,获取并且安装bind,然后vim /etc/named.conf,这个conf也是要具备“链接全球13个根节点+本地正向解析+本地反向解析”的功能。


然后#scp 172.16.100.1:/var/named/{name.ca,localhost.zone,named.local},从主DNS服务器上复制到这三个基本的dns解析文件,同样把这三个文件放入/car/named这个文件夹内。


然后弄远程控制软件rndc,#rndc-confgen > /var/rndc.conf。将rndc.conf里后几行的内容复制粘贴到named.conf里,同时#chmod :named /var/named/#chmod :named /etc/named.conf


现在这个时候可以在从服务器上检查一下语法,并且尝试#dig -t A localhost看一下输出的结果是不是127.0.0.1。如果成功的话,那么说明整个named.conf这个文件是OK的。


既然named.conf这个文件OK,但是里面还没有具体的slave设定,所以目前这台DNS服务器仅仅是一个缓存服务器而已,还算不上是DNS从服务器,于是要往里面添加具体的内容,在named.conf里添加:

1
2
3
4
5
zone "lnsjb.com" IN {
            type slave;    #指定本服务器的性质是 从服务器;
            masters { 172.16.100.1; };    #他的主子是172.16.100.1
            file "/var/named/slave/lnsjb.com.zone";    #从主子那里获取的相关文件保存在这个路径里
};


如果要添加一个反向的解析,比如172.16网段的方向解析:

1
2
3
4
5
zone "16.172.in-addr.arpa" IN {
            type slave;
            masters { 172.16.100.1; };
            file "/var/named/slave/172.16.zone";
};


先加入这两段一正一反的信息,保存退出之后,#setforce 0#rndc reconfig,看一下lnsjb.com.zone和172.16.zone 是否被同步了过来。


架设之后

现在主从DNS服务器已经建立了关系,这时候手动在主DNS上的lnsjb.com.zone里添加一条新的记录,比如:games.lnsjb.com 对应的ip是 172.16.100.9。添加完毕之后,要切记把编号+1,然后:wq保存退出。


在主dns服务器上#rndc reload,然后到从服务器上#dig -t A games.lnsjb.com,会看到这条信息已经可以被解析了。可见编号发生了的改变,主DNS服务器就会自动通知从服务器来获得最新的数据。


但是这样的设定会带来巨大的隐患,其他人随便做一个dns服务器,写上我们的IP地址,就可以#dig -t axfr 域名 的方式获得我们服务器里目标域所有的IP信息,这肯定是不安全的。所以要在主服务器上做一个设定:仅仅准许从dns服务器的ip可以申请一次性获取大量数据,其余的ip地址一律屏蔽掉。


这个时候就要在主DNS服务器的named.conf里使用allow-transfer,在开头的options里加入allow-transfer的话,是全部域都可以传送到目标ip上,如果是在某个域内单独加上allow-transfer的话,是特意指明这个域的信息可以被传送到目标ip上,如:

1
2
3
4
options {
            directory "named文件夹的路径"
            allow-transfer { 203.56.100.4;176.24.99.6; };    #这样就指定下面所有的域信息可以被这两个IP获取,其余IP都不行
};


还有一个方法,比较一劳永逸,就是在主dns服务器上设定ACL(访问控制列表)。这个acl要在named.conf文件里的最上方进行设定,把具体的ip或者某个网络端添加到acl里,比如:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
acl MYSLAVES {
           127.0.0,1;    
           203.56.100.1;
           176.24.99.1;    #将上面三个ip地址,归属于MYSLAVES这个acl里
};
acl MYCLIENTS {
           192.168.0.0/24;        #将整个192.168.0.1~192.168.0.254都加入到MYCLIENTS这个acl里
           127.0.0.1;        #别忘了本机也要递归的
};
options {
           directory "/var/named/";
           allow-transfer { MYSLAVES; };    #只有MYSLAVES组里的成员可以访问
           allow-recursion { MYCLIENTS; };    #只有MYCLIENTS组里的成员可以递归查询
};


acl有几个默认的名称,常用的有:none(一个都没有)、any(所有)、localnet(本地机处在的网络)


如果要检查是否可以递归的方式进行查询,那就#dig +recuse -t 目标网址 @指定的dns服务器(这个服务器要能上互联网)。




 本文转自 苏幕遮618 51CTO博客,原文链接:http://blog.51cto.com/chenx1242/1752963

上一篇:Hive的数据管理


下一篇:YARN的日志聚集配置使用