高手,我的DNS服务器配置出现问题,网络图如图所示:
问题表现如下:
有 2 台 DNS 服务器同时为内部和外部请求提供服务;第一个是域控制器,另一个是邮件和 Web 服务器;
为外部请求提供服务的服务器位于局域网内,地址为192.168.1.11;为了服务外网,路由器提供了地址到地址的静态NAT;
局域网内的客户端使用域控制器作为DNS服务器,它有对应的区域(对该区域有权威性),在该区域将名称解析为本地地址;
处理外部网络请求的服务器将名称解析为外部地址,它已从外部测试成功。如果从家里运行查询,例如
dig @8.8.8.8 mail.company com.
然后它就会给出正确的答案:
;; ANSWER SECTION: mail.company.com. 0 IN A 111.111.111.111
然而,进入局域网后,出现了奇怪的异常:
dig @8.8.8.8 mail.company.com.
;; ANSWER SECTION:
mail.company.com. 0 IN A 192.168.1.11
nslookup 的响应如下:
nslookup -type=A -class=IN mail.company.com. 8.8.8.8
Server: google-public-dns-a.google.com
Address: 8.8.8.8
Non-authoritative:
Name: mail.company.com
Address: 192.168.1.11
无论指定哪个外部服务器来服务 DNS 请求(Google DNS、Open DNS、ISP DNS),它们都会返回 LAN 地址。
对于 192.168.1.101(域控制器),这看起来没问题,但对于外部服务器则不行。清除解析器的缓存、更改客户端 PC 上的 DNS 服务器都无济于事:外部 DNS 服务器正在发回本地地址,这是不可行的。当从外部(从家里或其他办公室)请求时,相同的 DNS 服务器会返回正确的外部地址。
值得注意的是,当我向服务外部请求的服务器发送直接请求时,我得到了正确的答复:
Server: ns.company.com.
Address: 192.168.1.11
Name: mail.company.com.
Address: 111.111.111.111
实际上,我正在寻求帮助来帮助我解决问题。
答案1
因此,首先,当您查询外部 DNS 服务器时,请不要忘记它们正在缓存结果。区域 SOA 中的值之一就是缓存结果的时间。更好的测试方法是直接查询 DNS 服务器。
其次,请记住 8.8.8.8 是一个任播地址,因此您永远无法确定您正在访问哪个实际 DNS 服务器。
当您从 LAN 执行 dig @192.168.1.11 -tA mail.company.com 时,会发生什么情况
如果您得到了正确的响应,那么我认为您需要做的就是等待您一直在测试的外部 DNS 服务器的缓存过期。
祝你好运