带API的分布式DNS系统

时间:2012-04-05 23:49:06

标签: dns distributed

当客户注册我的服务时,我想为他们创建一个 A DNS条目:

用户名 mydomain.tld 指向托管其网页的服务器的IPv4地址

理想情况下,此DNS系统:

  • 相当轻盈
  • 分发。主/从模型可以很好,可能是主故障转移,或者在主服务器脱机时进行只读。
  • 通过一个不错的API支持更改(主要是创建/删除A条目)
  • 立即应用更改(了解DNS需要时间传播)
  • 在Linux上运行

有什么令人敬畏的描述吗?

谢谢: - )

1 个答案:

答案 0 :(得分:1)

您可以使用动态DNS更新。这是一个非常基本的应用程序:

  1. 生成将由DNS服务器和更新客户端使用的共享对称密钥:

    dnssec-keygen -a HMAC-MD5 -b 512 -n HOST key.name.
    

    密钥名称是域名,但您可以使用任何您想要的东西:它或多或少只是密钥的名称。

  2. 配置bind以允许此密钥对区域 mydomain.tld 进行更改:

    key "key.name." {
        algorithm hmac-md5;
        secret "copy-the-base64-string-from-the-key-generated-above==" ;
    }
    
    zone "mydomain.tld" {
        ...
        allow-update { key key.name. ; };
        ...
    }
    
  3. 使用nsupdate进行更改:

    nsupdate -k <pathname-to-file-generated-by-dnssec-keygen>
    

    作为nsupdate命令的输入:

    server dns.master.server.name
    update delete username.mydomain.com
    update add username.mydomain.com a 1.2.3.4
    update add username.mydomain.com aaaa 2002:1234:5678::1
    

    请勿忘记update命令后的空白行。 nsupdate在发现空行之前不会向服务器发送任何内容。

  4. 与bind和其他DNS服务器一样,主服务器没有高可用性,但您可以拥有任意数量的从属服务器,如果他们获得增量更新(默认情况下应该是这样),那么更改将会快速传播您也可以选择使用隐形主服务器,其唯一的工作是接收和处理这些DDNS更新并将结果提供给从属服务器。