检查ZONE的序列号一致性

某个域的DNS服务器通常有多台,保证这多台DNS的数据同步非常重要,避免因为数据不一致而造成解析上的失误。写了一个小Perl模块DNS::SerialNumber::Check用来验证这个一致性,在我的CPAN目录里:

http://search.cpan.org/~yhpeng/

用法很简单:

  1. use DNS::SerialNumber::Check;
  2. my $sn = DNS::SerialNumber::Check->new;
  3. my $re = $sn->check(“dnsbed.com”);

在Perl脚本里,第一句加载这个模块,第二句创建一个对象,第三句调用对象的check方法,它的参数是要检查的域名例如dnsbed.com。方法的作用是检查某个域名的各个权威服务器的ZONE序列号是否一致。

也可以指定域名的NS服务器名字或IP进行检查:

  1. $re = $sn->check(“dnsbed.com”,[‘ns1.dnsbed.com’,’ns2.dnsbed.com’]);

显示检查的结果:

  1. print $re->status;

如果打印1,则说明各NS服务器的序列号都一致,如果是0,就说明不一致。

  1. use Data::Dumper;
  2. print Dumper $re->info;

最后,这个$re->info返回参考信息,包含各NS服务器的名字以及它们对应的序列号。

一个用途是用这个模块写一个Nagios插件,检查ZONE的序列号一致性,有问题就触发报警。

此条目发表在Common分类目录,贴了, 标签。将固定链接加入收藏夹。