我已配置 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
将 委托给您的名称服务器,则您的名称服务器应该拥有这个特定区域(至少SOA
和NS
位于区域的顶点),而不仅仅是某个父区域(例如.
)。
此配置的错误包括对 的查询的响应NS
(即,它将声称没有 的名称服务器example.com
)以及所有否定响应(否定响应将SOA
针对错误的区域)。
如果您想以尽可能正确的行为来执行此操作,但不指定所有区域(这对于正确性来说是最好的),我认为您可能需要研究一些高度可脚本化的名称服务器软件,它可以回答就好像它具有与某种模式匹配的相关区域(可能基于公共后缀列表?)。