我们有以下场景:
- 我们公司有一个内部 DNS& 一个外部 DNS服务器。
- 它们都拥有相同的域名 (example.com)。
- 我们的内部 DNS是无法访问 Internet 的 Windows Server,但已将“所有其他 DNS”设置为外部 DNS
- 我们需要为供应商的权威名称服务器 (ns1.vendor.com) 设置一个子域 (vendor.exmaple.com),并且供应商将为该子域提供 IP 地址。
并且,我们在我们的外部 DNS对于需要访问该名称 (vendor.example.com) 的互联网用户。
vendor IN NS ns1.outsider.com
这样当互联网用户查询子域名时
nslookup vendor.example.com
它返回我们供应商名称服务器 (ns1.vendor.com) 中定义的相应 IP 地址
现在,我们遇到了这样的问题:
如果我们把同样的设置应用到我们的内部 DNS服务器,当内部员工使用 'nslookup' 查询“vendor.example.com”时,我们收到“服务器失败”内部 DNS。
如果我使用 'dig' 和 '+nssearch' 从我的电脑查询到我们的内部 DNS,
C:\>dig +nssearch vendor.example.com
;; reply from unexpected source: <Our Proxy Server>#<Number>, expected <IP of ns1.vendor.com>#53
;; reply from unexpected source: <Our Proxy Server>#<Number>, expected <IP of ns1.vendor.com>#53
;; reply from unexpected source: <Our Proxy Server>#<Number>, expected <IP of ns1.vendor.com>#53
; <<>> DiG 9.9.5 <<>> +nssearch vendor.example.com
;; global options: +short +cmd
;; connection timed out; no servers could be reached
我们预计,当请求到达我们的内部 DNS,它会将请求转发给我们的外部 DNS并从供应商域名服务器获取IP地址。然后,响应我们公司网络内的PC。
有人能告诉我这哪里错了吗?我们如何才能正确解决这个问题?
答案1
据我了解,您可以尝试以下几种方法:
- 在 internalDNS 上创建一个 CNAME 条目 vendor.example.com,其中包含信息 externaldns.example.com。在 externaldns.example.com 上,您配置了 NS 条目,其中包含负责该区域的服务器。当计算机查询 internalDNS 时,它会将 DN 的解析委托给 externalDNS。此服务器将其委托给保存实际信息的 server.vendor.com。
- 以这种方式配置所有可以访问互联网的计算机(借助 GPO),使其 DNS 查询直接转到 externaldns.example.com。因此,您不需要在 internalDNS 上输入任何内容。
第二种可能性仅适用于内部计算机无法访问互联网的情况。如果不是这种情况,您应该重新考虑您的网络架构以及您拥有两个独立名称服务器的原因(您的描述中没有明确说明这一点)。
答案2
为此子域设置一个条件转发器,指向 ns1.vendor.com(假设 ns1.vendor.com 可在内部解析)