我有一个反复出现的 DNS 问题,这个问题一直困扰着我们的用户,有时会导致他们的笔记本电脑将我们公司的域名附加到所有 DNS 查询的末尾。这个问题只发生在用户不在现场时,而且似乎是相当随机的。它会在某一天正常工作,然后突然显示无效条目。这主要影响 Windows XP 用户,但最近在 Vista 上也出现了这种情况。以下是使用 nslookup 的示例。
C:\Users\Username>nslookup www.yahoo.com
Server: Linksys
Address: 192.168.0.1
Non-authoritative answer:
Name: www.yahoo.com.EXAMPLE.COM
Address: 192.0.2.99
我已经用占位符替换了报告的 IP 地址,但我可以告诉你,它返回的是*.
我们网络解决方案配置中的默认条目。由于显然www.yahoo.com.EXAMPLE.COM
不存在,所以这是有道理的。我相信用户的内部设备运行正常。我们在内部运行 Windows 2k3 Active Directory,其中包含基于 Windows 的 DHCP 和 DNS 服务器。最终,问题通常会在几个小时或多次重启后自行解决。
以前有人见过这种行为吗?
答案1
如果您启动 nslookup 并打开调试,您会看到 Windows 总是首先尝试附加其后缀。
C:\>nslookup
Default Server: itads.example.com
Address: 0.0.0.0
> set debug=true
> www.yahoo.com
Server: itads.example.com
Address: 0.0.0.0
------------
Got answer:
HEADER:
opcode = QUERY, id = 2, rcode = NXDOMAIN
header flags: response, auth. answer, want recursion, recursion avail.
questions = 1, answers = 0, authority records = 1, additional = 0
QUESTIONS:
www.yahoo.com.example.com, type = A, class = IN
AUTHORITY RECORDS:
-> example.com
ttl = 3600 (1 hour)
primary name server = itads.example.com
responsible mail addr = itads.example.com
serial = 12532170
refresh = 1200 (20 mins)
retry = 600 (10 mins)
expire = 1209600 (14 days)
default TTL = 3600 (1 hour)
------------
------------
Got answer:
HEADER:
opcode = QUERY, id = 3, rcode = NOERROR
header flags: response, want recursion, recursion avail.
questions = 1, answers = 4, authority records = 0, additional = 0
QUESTIONS:
www.yahoo.com, type = A, class = IN
ANSWERS:
-> www.yahoo.com
canonical name = www.wa1.b.yahoo.com
ttl = 241 (4 mins 1 sec)
-> www.wa1.b.yahoo.com
canonical name = www-real.wa1.b.yahoo.com
ttl = 30 (30 secs)
-> www-real.wa1.b.yahoo.com
internet address = 209.131.36.158
ttl = 30 (30 secs)
-> www-real.wa1.b.yahoo.com
internet address = 209.191.93.52
ttl = 30 (30 secs)
------------
Non-authoritative answer:
Name: www-real.wa1.b.yahoo.com
Addresses: 209.131.36.158, 209.191.93.52
Aliases: www.yahoo.com, www.wa1.b.yahoo.com
如上所示,我的机器首先尝试查找 www.yahoo.com.example.com,DNS 服务器响应NXDOMAIN
(未找到条目)。您可以通过运行来确认这一点nslookup www.yahoo.com.
(请注意 .com 末尾的点!),然后您会看到它已正常解析。
发生的事情是你的外部的DNS 服务器响应说他们有一个“www.yahoo.com.example.com”条目,并返回您站点根目录的 IP 地址。我不确定您使用什么服务,但我猜您有一个通配符映射,它告诉您的服务器以有效响应响应任何未知查询,而不是返回。NXDOMAIN
您需要仔细检查服务器的设置,并确认它仅设置为响应它实际拥有的条目的查询(example.com
、、等)。www.example.com
mail.example.com
请记住,DNS 的工作方式是检查已配置的服务器并从那里向上进行。DNS 查询可以采用以下模式的路径(当然,这只是一个示例,可能不正确):计算机 -> 本地路由器 DNS(linksys)-> ISP DNS ->(第二个 ISP DNS?)-> 根服务器 DNS -> TLD DNS -> 您的外部 DNS 服务器。这条路径上的某个人说它www.yahoo.com.example.com
存在。很有可能它就是您的外部 DNS 服务器。
编辑
我想再补充一点关于您提到的随机性的信息。如果这种情况确实偶尔发生,则可能是您的外部 DNS 服务器配置错误,或者他们的 ISP 可能正在提供 DNS 劫持服务。不幸的是,我看到越来越多的住宅 ISP 提供无效域名的“搜索服务”。由于几乎所有最终用户都使用他们的 ISP DNS 服务器,因此 ISP 现在开始将无效域名条目重定向到搜索页面 - 该页面通常充斥着广告、不相关的链接和一小段“您是指 www.example.com 吗?”,其中的一些结果可能与域名相关,也可能不相关。我知道 Verizon 和 Comcast 正在开始这样做,我相信 Quest 也开始这样做了。另一种可能性是 OpenDNS,因为如果不存在相关域名,他们会提供相同的“搜索相关域名”(毕竟这是他们的收入)。
不过,我认为问题在于,你说它返回的是你的根记录的地址,而如果他们试图搜索它,这些都不会做,他们会给你一个他们的网络服务器的 IP 来处理搜索。
答案2
在醉酒后,我彻底解决了 Windows 7 tcpip 注册表设置问题,但仍然遇到同样的问题。在:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Tcpip\Parameters
确保您输入的域名与输入的 dhcpdomain 相同,然后就可以开始了。
答案3
我为同样的问题而苦恼,我的 Windows 在使用 nslookup 时会附加主域后缀。我找到的解决方案是,在请求中附加点可以阻止 Windows 执行此操作。因此,不要使用:
nslookup yahoo.com 192.168.0.1
使用
nslookup yahoo.com.192.168.0.1。
据消息来源称,其他请求不应该显示这种行为。
答案4
问题大多数时候与家用路由器的配置有关。在这些路由器的常规设置中,你会发现两个字段:系统名称和域名。
例如,如果您的 ISP 域名是 x.com,而您在该字段中输入的域名为 y.com。路由器仍将 WAN 和 LAN 接口中配置的 DNS 作为权威 DNS,但 y.com 将不具有权威性。