为什么我的无线路由器搞砸了主机名查找?

为什么我的无线路由器搞砸了主机名查找?

问题:我的无线网络中有两台计算机(域名为“serenity”,地址为 192.168.1.1),主机名为“jayne”(Arch Linux,地址为 192.168.1.108)和“mal”(Mac OS X,地址为 192.168.1.101)。当我尝试让两台计算机进行通信时,发生了以下情况:

jayne$ ping mal
PING mal.serenity (184.106.31.161) ... [pings go through to weird IP]

mal$ ping jayne
PING jayne.serenity (184.106.31.161) ...

但是,ping 路由器可以成功:

jayne or mal$ ping serenity
PING serenity.serenity (192.168.1.1) ...

然后事情变得奇怪了:

jayne or mal$ ping google
PING google.serenity (184.106.31.161) ... [same IP as before]

jayne or mal$ ping google.com
PING google.com (74.125.115.106) ... [works as expected]

jayne$ ping 192.168.1.101
PING  192.168.1.101 (192.168.1.101) ... [works as expected]

那么为什么 mal 和 jayne 不能见面呢?

问题:serenity 当前已连接到另一个预先存在的路由器(它没有域名),它是互联网的主要网关,位于 192.168.0.1。我设置了一条静态 DHCP 规则,始终将 serenity 映射到 192.168.0.2。

现在,我注意到,当我在浏览器中访问一个不存在的 URL 时,我会被重定向到我的 ISP 的“在互联网上搜索 *”页面,因此我认为 ping 解析到的奇怪 IP 地址可能属于 ISP 上处理该 IP 地址的服务器,因此我将 .0.1 路由器上的 DNS 服务器更改为Google 的公共 DNS服务。

现在,ping mal或者ping jayne根本无法解析(“ping:未知主机 mal”,“ping:无法解析 jayne:未知主机”),即使使用“完整”名称(如“mal.serenity”),但我仍然可以成功ping serenity

那么为什么 mal 和 jayne 不能见面呢?

我并不是一个真正的网络人,所以可能只是某个地方的设置有误,但同时我正在使用hosts文件来解决这个问题,通过手动将主机名映射到 IP 地址,但这只是修复症状,而不是问题。

答案1

我可能会根据您对上述评论/问题的回答修改或删除此内容。

我认为这就是正在发生的事情,它可能会对您有所帮助。第一部分很简单:您正在尝试使用 DNS 来 ping 未在任何地方的 DNS 中注册的工作站,并且您的路由器/DNS 服务器正在返回其外部 IP 地址(我相信,您对上述问题的回答将证实这一点)。

第二部分是,如果您比较两个 Windows 工作站,当它们未注册到本地 DNS 服务器时,它们会使用 TCP/IP 上的 NetBIOS 来查找对方。就您而言,我不确定您是否有类似的产品可以使用,因为我不是 Linux 或 Mac 用户,如果您有,目前还没有使用。

我可以说的是,你可以将你的 Linux 机器设置为 DNS 服务器,托管你自己的 DNS,并在该服务器上注册你的计算机;或者你可以继续使用 HOSTS 文件。最后,很可能有人会提出另一个答案,告诉你如何让 Linux 和 Mac 在不使用 DNS 的情况下进行通信,类似于 TCP/IP 上的 NetBIOS。

如果有人没有提出类似于 TCP/IP 上的 NetBIOS 概念的东西,那么我个人的意见是,使用 HOSTS 文件就可以了,这就是可行的方法。

答案2

“.serenity”位可能已作为 DNS 搜索域附加。这可以通过 DHCP 自动配置,因此您可能从那里获取它。在路由器的 DHCP 设置中清除所有搜索域字段(如果有)。

如果仍然看到它,请在 Windows 下转到您的 TCP/IP 设置,单击“高级”,然后在 DNS 选项卡下:

  • 清除“此连接的 DNS 后缀”框
  • 选择“附加这些 DNS 后缀”,并确保列表中没有任何内容

您可能必须对 IPv4 和 IPv6 都执行此操作。

在 Mac 上,转到“系统偏好设置”中的“网络”。单击连接的“高级”按钮,然后在“DNS”选项卡下,单击“+”按钮以添加一个空白条目。(您应该会看到来自 DHCP 的虚假条目呈灰色,因此您只能通过这种方式将其删除。)

在 Mac 和 Linux 上,您可能还需要检查/etc/resolve.conf以确保搜索域不在其中。


至于神秘的 DNS 结果,我猜这是您的 DNS 提供商正在使用的某种“全部捕获”或“域名更正”服务。通常他们会为所有不存在的域返回此结果,以便从您那里获得一些广告收入。OpenDNS 和许多 ISP 都这样做。

附加了搜索域的主机名不再是有效的本地主机名,而是看起来像是操作系统的正确 FQDN,因此后者会将其发送到 DNS 服务器,而不是咨询 NetBIOS。如果您没有此“全部捕获”服务,您的操作系统最终会意识到这不是正确的域,并返回到 NetBIOS 或其他名称解析机制。

相关内容