接上一章http://laoguang.blog.51cto.com/6013350/1035223
五:BIND主从协同作业
域:laoguang.me
ns:172.16.1.1 ##主DNS服务器 ns2:172.16.1.2 ##从DNS服务器 |
由于我们主DNS没有设置全局allow-transfer所以是允许所有请求同步的,这是既不安全的,我们以任何linux测试dig –t AXFR laoguang.me @127.0.0.1 如图:
我们所有的网络结构都暴露出来,所以我们得对其限制,将来我们只允许从服务器获得这些数据用来同步,我们在named.conf的options下加入allow-transfer { 172.16.1.2/16; };
options { directory "/var/named"; allow-transfer { 172.16.1.2/16; }; }; |
再重测试dig –t AXFR laoguang.me @127.0.0.1
1,下面我们基于这个也就是IP来配置主从同步服务器。
1)主服务器配置如上面那样,即可。
2)从服务器上编译安装bind(详见第一章)
3) 建立 /etc/named/named.conf如下 :
options { directory "/var/named"; ##同样还是数据目录 allow-transfer { none; }; ##从服务器禁止区域传出 acl "intranet" { type slave; }; view "wan" { |
需要新建的 named.ca localhost.zone 0.0.127.zone 从主DNS上复制即可,我们在/var/named/下建立slaves目录,用来存放同步的数据,权限属主属组得改。
scp –p 172.16.1.1:/var/named/{named.ca,localhost.zone,0.0.127.zone} /var/named mkdir /var/named/slaves; chmod 770 /var/named/slaves; chown root:named /var/named/slaves; |
一切就绪后启动named; named –u named;查看日志是否同步成功,或者查看slaves下有没有同步!
2,基于IP来传送是存在风险的,因为有人会知道从服务器的IP,然后以这个IP去获得网络结构,所以我们要基于一种更安全的机制去传输,这就是下面要说的TSIG(Transaction Signature)。
1)主DNS生成密钥;
cd /etc/named |
2)把这部分整理到named.conf中,如下:
|
3)由于从服务器的解析结构跟主服务器差别不大,为了方便把named.conf拷贝到从服务器上,并对其修改如下:
options { directory "/var/named"; allow-transfer { none; }; ##从服务器禁止区域传送 }; key "ns-ns2.key" { ##传输用到的Key,其它key已删除 algorithm hmac-md5; secret "IhHNoWiGUX5bVw3n3tlilLV6iRcO0dup/1bM3Ld9gIA="; }; server 172.16.1.1 { ##主服务器的IP keys { ns-ns2.key; }; }; acl "intranet" { 172.16.0.0/16; 127.0.0.1; }; view "lan" { match-clients { intranet; }; zone "." IN { type hint; file "named.ca"; }; zone "localhost" IN { type master; file "localhost.zone"; }; zone "0.0.127.in-addr.arpa" IN { type master; |
删除从DNS /var/named/slaves下的原来同步的数据,重启主DNS与从DNS,查看是否能进行同步,即查看slaves下能否生成新文件,并测试解析:以从服务器为DNS测试解析,关闭主DNS服务器重启从DNS继续测试解析!如果如下1图为172.16段解析,图2为192.168.0段申请解析地址:
这充分证明主从同步是完好的。
六:BIND子域授权
目标:建立laougang.me的子域linux.laoguang.me,交由ns.linux.laoguang.me管理解析,bbs.linux.laoguang.me是域下一个主机。
1,父域:在/var/laoguang.me.lan中加入linux.laoguang.me的NS记录与此NS的A记录即可;
/etc/named/named.conf : options { directory "/var/named/"; }; zone "linux.laoguang.me" IN { type master; file "linux.laoguang.me"; }; /var/named/linux.laoguang.me : $TTL 86400 @ IN SOA ns admin ( 2012102301 2H 5M 7D 2D ) IN NS ns ns IN A 172.16.100.1 bbs IN A 172.16.100.2 |
3,就这么简单子域也设置好了,我省略了 根域,localhost的正解与反解,因为这个对子域来说不一定需要,所以说他们是可以省略的。下面我们来测试子域运行吧,图一为在子域上测试,图二为测试父域看是否能解析子域:
好的子域授权我们说完了。。。
七:BIND实现域名的动态解析
目标:我们有一个www服务器,但是它的IP是不固定的,我们总不能因为它修改一个ip就改一次服务器中它的A记录吧,这样我们的压力会很大的,所以我们可以通过DDNS,让www的管理员自己更新它的IP。
1,生成一对密钥,我们的动态解析基于密钥来实现;
dnssec –keygen –a hmac –b 256 –n HOST dynamic |
2,把生成的密钥写到DNS服务器named.conf中,并允许laoguang.me更新www.laoguang.me的A记录,为了操作简便,我们把视图去掉,如图:
|
3,修改/var/named权限为660,属组named,因为更新记录会在里面建立文件作为,对原来资源记录的补充的,重启named,把这对密钥拷贝到www的主机上,用它们来更新记录。
chmod 660 /var/named; chown :named /var/named; killall named ; named –u named; |
4,我把那对密钥放到了/etc/named下,我们用它来更新www的A记录
5,测试dig –t A www.laoguang.me @172.16.1.1
修改成功了吧,你可以看看DNS的/var/named下会生成一个jnl的文件作为原来资源记录文件的补充。
补充:我们可以写一个脚本,让www根据自己的IP自动更新,这个大家自己写写吧。
八,BIND日志
对于任何服务来说,日志都是必要的且都是很重要的,所以我们bind也不例外,我们记录bind的错误日志,谁查询了我的记录(当然如果一个实际的dns记录这个话会很悲催的,因为你的日志文件马上就会爆掉你硬盘),以及别的应用。下面我们简单来说一下日志吧,就那记录谁查询我们的记录为例吧:
1,在DNS主配置文件/etc/named/named.conf中加入logging区块,如下
options { directory "/var/named"; allow-transfer { key "ns-ns2.key"; }; }; logging { channel "query" { ##定义一个channel file "query.log" versions 3 size 3; ##以文件形式存放 severity dynamic; ##动态的存储严重等级 print-time yes; ##打印时间 print-severity yes; ##打印严重等级 print-category yes; ##打印存储的种类 }; channel "secure" { }; |
severity等级有:critical error warning notice info debug [level] dynamic |
2,重启named,测试查询,看看有没有记录
到此,bind我们就介绍完了,谢谢收看。。。。。