无法使用 catchall 配置对绑定进行 NS 查询

无法使用 catchall 配置对绑定进行 NS 查询

我已配置 bind 来捕获所有域并为其返回相同的 IP(A 记录)。这适用于可能涉及数千个域的域名停放服务。

将 example.com 的名称服务器指向我的名称服务器后,我正确地显示了停放的托管页面。

唯一的问题是名称服务器查找不起作用。如果我dig NS example.com只返回 SOA 详细信息,而不是 NS 名称。尽管dig example.com确实返回了正确的 A 记录。

我花了几个小时尝试各种各样的事情,真的很感谢这方面的帮助。

它的配置:

named.conf.local

zone "." {
    type master;
    file "/etc/bind/zones/db.catchall";
};

db.catchall

$TTL    604800
@   IN  SOA ns1.mynameserver.com. hostmaster.mynameserver.com. (
             26     ; Serial
         604800     ; Refresh
          86400     ; Retry
        2419200     ; Expire
         604800 )   ; Negative Cache TTL

    IN  NS  ip.addr.for.ns1
    IN  NS  ip.addr.for.ns2 

*   IN  A   ip.addr.for.hosting

答案1

观察到的行为符合预期,并且对于您配置的内容而言是正确的。
即,您有一个声称对根区域具有权威性的名称服务器,并且它有一个A可以匹配以下任何内容的通配符记录。它没有NS除根区域之外的其他记录。

但是,对于应该对许多不同区域具有权威性的服务器,您配置的内容实际上并不正确。如果example.com将 委托给您的名称服务器,则您的名称服务器应该拥有这个特定区域(至少SOANS位于区域的顶点),而不仅仅是某个父区域(例如.)。
此配置的错误包括对 的查询的响应NS(即,它将声称没有 的名称服务器example.com)以及所有否定响应(否定响应将SOA针对错误的区域)。

如果您想以尽可能正确的行为来执行此操作,但不指定所有区域(这对于正确性来说是最好的),我认为您可能需要研究一些高度可脚本化的名称服务器软件,它可以回答就好像它具有与某种模式匹配的相关区域(可能基于公共后缀列表?)。

相关内容