使用时间服务器校对系统时间,附时间服务器列表 北漂4周年
Dec 07
作者: 肖建彬 | 可以转载, 转载时务必以超链接形式标明文章原始出处和作者信息及版权声明
网址:http://www.xiaojb.com/archives/it/mydns-notify.shtml

MyDNS实现备份DNS服务器有2种方法:

  • 安装2台MyDNS服务器,数据通过MySQL同步实现;
  • 靠DNS-based zone transfers和Bind9同步。

我比较倾向第二种,但是第二种需要改造MyDNS,因为MyDNS的架构决定了它无法向slave发notify。有人出注意,给MySQL加一个触发器,我看了一下MySQL的文档,都是说触发MySQL语句,在MyDNS的maillist里边要了一个perl的程序实现给slave发notify,我用php改写了一下。

<?php
// Jianbin Xiao(xjb@xiaojb.com) 

        require_once('Net/DNS.php');
        $zone = 'abc.com';

        $res = new Net_DNS_Resolver();
        $res->nameservers = $slaves_ns;
        $packet = new Net_DNS_Packet();
        $packet->header = new Net_DNS_Header();
        $packet->header->id = $res->nextid();
        $packet->header->qr = 0;
        $packet->header->opcode = 'NS_NOTIFY_OP';
        $packet->question[0] = new Net_DNS_Question($zone, ‘SOA’, ‘IN’);

        $packet->header->qdcount = count($packet->question);

        $response = $res->send($packet, $packet->data());

        if (isset($response->header->rcode) && $response->header->rcode != “NOERROR”) {
                echo $response->header->rcode;
        }
?>

需要用到PearNet_DNS

补:根据网友的建议,做了修改,用$res->send函数替换$res->send_tcp,send函数可以根据packet的包大小,选择使用UDP协议还是TCP协议。

Tags: ,

One Response to “MyDNS和Bind9同步”

  1. bind-dlz–动态的dns Says:

    [...] mydns是一个类似产品。 [...]

Leave a Reply