我的 VPS 域名解析出现了一个奇怪的问题。问题是,当我执行 ping 或 telnet 到不存在的域名,则“.com”顶级域名将自动附加到原始域名之后。
1)nslookup 测试
[root@myhost etc]# nslookup www.dhjfdghfgdhafgdh.com
Server: 168.144.1.130
Address: 168.144.1.130#53
** server can't find www.dhjfdghfgdhafgdh.com: NXDOMAIN
OK - 预期结果
2)ping 测试
[root@myhost etc]# ping -v www.dhjfdghfgdhafgdh.com
PING www.dhjfdghfgdhafgdh.com.com (208.73.211.69) 56(84) bytes of data.
64 bytes from 208.73.211.69: icmp_seq=1 ttl=238 time=78.2 ms
64 bytes from 208.73.211.69: icmp_seq=2 ttl=238 time=74.5 ms
64 bytes from 208.73.211.69: icmp_seq=3 ttl=238 time=76.4 ms
^C
--- www.dhjfdghfgdhafgdh.com.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2427ms
rtt min/avg/max/mdev = 74.594/76.431/78.264/1.498 ms
NOK – 不存在的域名被解析为“.com”,并以某种奇迹般的方式附加到原始域名。com.com 是一个注册域名,因此我可以 ping 它,但我 ping 的域名与我想要的域名不同。
3)telnet测试
[root@myhost etc]# telnet www.dhjfdghfgdhafgdh.com 80
Trying 208.73.211.69...
Connected to www.dhjfdghfgdhafgdh.com.
Escape character is '^]'.
NOK – 与 ping 相同。但这次,telnet 并没有告诉我我实际上已连接到 com.com 主机。我只能通过 IP 地址来判断。
这是我的 /etc/resolv.conf:
nameserver 168.144.1.130
nameserver 108.59.242.6
谢谢任何提示。
答案1
添加到James Polley 的回答,通常可以通过明确指定名称解析应从 DNS 根区域开始来覆盖搜索行为。这可以通过在.
完全限定主机名后附加 1 来实现。
因此,abc.server.example.com
您应该使用而不是abc.server.example.com.
。 extra.
指示解析器仅尝试此名称,而不使用任何配置的搜索域。
答案2
这是一个功能,而不是一个错误。
假设您的本地域是example.com
,并且您有一台名为 的机器server
。能够ping server
并且拥有您所需的一切 Just Know(TM)真是太好了server.example.com
。
为了实现这一点,可以配置几个设置。这些设置可以位于您的本地计算机上(如果有 dhcp 服务器,则可能由它设置);或者它们可以位于某个上游名称服务器上,这样当您的系统询问上游“服务器的地址是什么?”时,它得到的答案是“傻瓜,您的意思是 server.example.com,顺便说一下,它是 1.2.3.4”。
控制此查找的两个因素是名为“ndots”的设置;如果主机名有“ndots”个点,则不会应用此有用的额外查找。通常 ndots 设置为 1 - 这样server
会得到额外的帮助,但server.local
不会。在您的情况下,听起来 ndots 至少设置为 2 - 看起来www.blah.com
仍在进行额外的查找。
另一个功能是search
列表 - 附加到主机名以尝试查找匹配项的域列表。通常情况下,这将是“example.com”。就您而言,听起来好像“com”已出现在列表中 - 我猜这样人们就可以输入“yahoo”并返回“yahoo.com”。
再次强调,这可能是由您的 DHCP 服务器在发放租约时设置的。如果您在本地计算机上配置了该设置,则可能会在 /etc/resolv.conf 中列出。
答案3
要禁用此行为,请添加
search .
options ndots:1
到您的/etc/resolv.conf
文件中。
答案4
我也遇到了这个问题。按以下方法修复:
我的主机名是 qifeiye.com。然后我将其更改为 qifeiye。您可以在 /etc/hostname 中更改主机名。
并运行命令:
hostname qifeiye
然后重启服务器。问题消失。
我认为这是由于系统自动在主机名中查找 .com 并认为所有未知域名都在 .com 域中造成的。