某个域的DNS服务器通常有多台,保证这多台DNS的数据同步非常重要,避免因为数据不一致而造成解析上的失误。写了一个小Perl模块DNS::SerialNumber::Check用来验证这个一致性,在我的CPAN目录里:
http://search.cpan.org/~yhpeng/
用法很简单:
- use DNS::SerialNumber::Check;
- my $sn = DNS::SerialNumber::Check->new;
- my $re = $sn->check(“dnsbed.com”);
在Perl脚本里,第一句加载这个模块,第二句创建一个对象,第三句调用对象的check方法,它的参数是要检查的域名例如dnsbed.com。方法的作用是检查某个域名的各个权威服务器的ZONE序列号是否一致。
也可以指定域名的NS服务器名字或IP进行检查:
- $re = $sn->check(“dnsbed.com”,[‘ns1.dnsbed.com’,’ns2.dnsbed.com’]);
显示检查的结果:
- print $re->status;
如果打印1,则说明各NS服务器的序列号都一致,如果是0,就说明不一致。
- use Data::Dumper;
- print Dumper $re->info;
最后,这个$re->info返回参考信息,包含各NS服务器的名字以及它们对应的序列号。
一个用途是用这个模块写一个Nagios插件,检查ZONE的序列号一致性,有问题就触发报警。