Linux ping 和 telnet 自动将 .com 添加到不存在的域名

Linux ping 和 telnet 自动将 .com 添加到不存在的域名

我的 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 域中造成的。

相关内容