因此,我有一些 DNS,其中为我的域 yyy.com 设置了许多内部区域。我需要向提供商服务器(主机 - 带有要下载的配置文件,这不是像 googleDNS 8.8.8.8 这样的 DNS)添加记录。因为他的设备使用域名 xxx.5060.com 或 xxy.5060.com 请求配置。我认为这很容易(在 BIND8 中)。
因此我将配置添加到主区域文件:
xxx.5060.com. IN A a.b.c.d
xxy.5060.com. IN A a.b.c.d
但是 named-checkzone 返回警告:
ignoring out-of-zone data
当然 DNS 不想接收请求域名的 IP。因此我开始谷歌搜索并尝试新的配置,例如:
xxx.5060.com. IN CNAME helper
xxy.5060.com. IN CNAME helper
helper IN A a.b.c.d
警告是相同的,在谷歌中找到的另一个解决方案是编辑named.conf.local
并添加“区域”:
zone "xxx.5060.com" {
type forward;
forwarders {
a.b.c.d;
}
}
zone "xxx.5060.com" {
type forward;
forwarders {
a.b.c.d;
}
}
zone "yyy.com" {
type master;
file "/etc/bind/zones/db.yyy.com";
allow-transfer { 10.e.e.e;
10.e.e.f; };
...
但DNS没有反应。
哦……我尝试添加到上层配置forward only;
。同样的反应。
有谁能建议我做错了什么或做了什么设置吗?
答案1
仅前向区域应指向能够回答有关给定区域的请求的名称服务器地址。
因此,如果您希望您的名称服务器解析xxx.5060.com
,您需要指定一个指向的名称服务器的转发区域5060.com
,如下所示:
zone 5060.com {
type forward;
forward only;
forwarders {
172.247.252.11;
115.29.220.216;
};
};
这里有个小提示:我不知道该区域5060.com
是否只是一个例子,还是您尝试解析的实际域。如果它只是一个例子,那么您就倒霉了,因为它5060.com
确实存在,并且上面例子中的 IP 地址已注册为名称服务器。
如果您尝试解析的主机确实存在,则上述示例应该有效。如果不存在,那么这不是实现您想要的“好”方法。您不能将主机名“注入”到您不拥有的域中。您的选项如下:
您可以将您的名称服务器设置为 的主服务器5060.com
。
这样,您就可以在该区域中定义所需的任何主机。这有几个缺点:
- 您定义的主机仅对使用您的服务器(且仅此)作为 DNS 服务器的计算机可见。您的更改(自然)不会传播到其他 DNS 服务器。
- 区域文件中不存在的任何主机定义都将消失:您无法“添加”主机名并让您的 DNS 服务器向“真实”服务器询问其余部分。
- 如果您的服务器可以通过互联网访问,则必须注意不要将虚假配置传播给毫无戒心的客户端。
定义虚拟域
您还可以定义一个以 开头的虚拟域5060.com
,但实际上是您的内部域,例如5060.com.ismine
。定义您想要在此域中的主机,并将客户端计算机中的 DNS 搜索后缀设置为ismine
。这样,如果通过“官方”DNS 服务器找不到主机,客户端将尝试保留带有后缀的主机名.ismine
,并且您的 DNS 服务器可以向他们提供您想要的主机名。这种方法也有一些缺点:
- 与上一种方法一样,只有使用您的 DNS 服务器的客户端才能访问主机名。如果他们有备用 DNS,则此方法无效(至少当他们询问其他 DNS 服务器时无效)。
- 您无法重新定义主机名,因为客户端将首先尝试注册的名称服务器,并且仅在未找到主机名时才会尝试应用后缀。
- 您必须能够更改客户端的 DNS 解析配置。
- 如果您的服务器是可从互联网访问的 DNS 服务器,您可能不想将内部区域传播到外部客户端。
如果我理解您的帖子正确的话,您无法修改hosts
设备上的本地文件,因此如果上述方法对您不起作用,那么您或多或少是运气不佳。