![在同一台服务器上使用 DDNS 和第二个从属服务器进行 DNS 委派](https://linux22.com/image/567593/%E5%9C%A8%E5%90%8C%E4%B8%80%E5%8F%B0%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%B8%8A%E4%BD%BF%E7%94%A8%20DDNS%20%E5%92%8C%E7%AC%AC%E4%BA%8C%E4%B8%AA%E4%BB%8E%E5%B1%9E%E6%9C%8D%E5%8A%A1%E5%99%A8%E8%BF%9B%E8%A1%8C%20DNS%20%E5%A7%94%E6%B4%BE.png)
我有两台运行 BIND 的服务器,第一台设置为两个区域的主服务器,第二台设置为这些区域的从服务器。区域是 example.com 和 ddns.example.com。我运行 DDNS,并在 ddns.example.com 中动态创建了数千个设备条目。我想将 DDNS 与主 example.com 分开,因此我创建了一个单独的区域,DHCP 服务器会对其进行更新。
考虑到这些区域托管在同一台服务器上,是否可以将 example.com 委派到 ddns.example.com?例如,如果我的工作站的搜索域是 example.com,并且指向其 DNS 提供商的 10.1.10.1,我希望能够解析 hostname.ddns。事实上,我可以解析 hostname.ddns.example.com,但希望只能解析 hostname.ddns。
或者,如果工作站的搜索域是 ddns.example.com,我需要更改哪些设置才能解析 web、ftp 等,它们都是父级 example.com 区域中的主机?ddns.example.com 区域是否需要转发到 example.com 区域?同样,所有区域都设置在同一台服务器上,第二台服务器设置为从属服务器。
命名的.conf:
zone "example.com" IN {
type master;
file "example.com";
allow-update { none; };
}
zone "ddns.example.com" IN {
type master;
file "ddns.example.com";
allow-update { key dhcp-update; };
}
example.com 区域文件:
$ORIGIN .
$TTL 86400
example.com IN SOA ns1.example.com. hostmaster.example.com. (
serial, refresh, retry, etc.
)
NS ns1.example.com.
NS ns2.example.com.
$ORIGIN example.com.
ns1 A 10.1.10.1
ns2 A 10.1.10.2
web A 10.1.15.30
ftp A 10.1.15.31
host3 A 10.1.15.32
$ORIGIN ddns.example.com
NS ns1
NS ns2
ns1 A 10.1.10.1
ns2 A 10.1.10.2
答案1
您的问题似乎与 bind 本身或 DNS 服务器完全无关。不存在从子区域到父区域的“委托”或“转发”之类的事情。当然,您可以将 ftp 和 www 的 CNAME 添加到 ddns.example.com 区域,该区域将分别指向 ftp.example.com 和 www.example.com,我不确定这是否是您想要的。
您实际上需要做的就是在客户端计算机上正确配置域后缀搜索列表。如果是 Windows,您可以在 TCP/IP 属性中的某个位置列出 example.com 和 ddns.example.com。
答案2
根据您问题的描述,我看到两种可能的解决方案:
只需在搜索列表中列出两个域名即可。然而,这意味着“hostname.ddns.example.com”将仅从“hostname”解析,尽管显然“hostname.example.com”可能优先,具体取决于搜索列表中域名的顺序。
配置您的名称服务器,使其除了作为 example.com 的一部分提供服务外,还像 TLD 一样为 ddns 区域提供服务。使用同一个区域文件来实际服务多个区域非常简单 — 只需确保在文件本身内仅使用相对名称(如果您自动生成文件,而无法控制输入或不输入的内容,则可能会出现问题)。