【问题标题】:Distributed DNS system with API带有 API 的分布式 DNS 系统
【发布时间】:2023-04-09 23:23:01
【问题描述】:

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

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

此 DNS 系统理想情况下:

  • 相当轻量级
  • 分发。主/从模型会很好,可能会在主节点离线时进行主节点故障转移或只读。
  • 支持通过漂亮的 API 进行更改(主要是创建/删除 A 条目)
  • 立即应用更改(了解 DNS 需要时间来传播)
  • 在 Linux 上运行

有什么很棒的东西适合这个描述吗?

谢谢:-)

【问题讨论】:

  • 如上所述,既离题又不可能。 DNS 不会立即传播更改。
  • 已编辑。我的意思是说 applies 立即更改,而不是每小时应用一次更改。如果这不存在,我会感到惊讶——这似乎是一件相当普遍的事情。

标签: dns distributed


【解决方案1】:

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

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

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

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

  2. 配置绑定以允许此键更改区域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 在看到空行之前不会向服务器发送任何内容。

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

【讨论】:

  • 如果可以的话,我会给 +2。我只能补充一点,如果您想以编程方式执行此操作,您还可以使用一些 DNS 库,例如 PHP 的 NET_DNS2,而不是 nsupdate。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-01-05
  • 2013-04-02
  • 1970-01-01
  • 2011-11-05
  • 1970-01-01
  • 1970-01-01
  • 2014-02-18
相关资源
最近更新 更多