本地 DNS 查找在 Win 10 上不起作用(无法从其他设备找到主机名)

本地 DNS 查找在 Win 10 上不起作用(无法从其他设备找到主机名)

我想通过主机名(我调用它们ComputerName)从我的 Android 10 和 12 设备访问我的 Win 10 计算机(我们称之为ping ComputerName),但它们找不到它并返回: DNS error, Unknown host ComputerName

以下是我认为可能有帮助的所有信息:

  1. 计算机未指定 IP 和 DNS,并且设置为 DHCP。
  2. 在路由器上,DNS设置为8.8.8.8和8.8.4.4。
  3. 我的设置非常简单,一个带有 Win 10 build 19044 的路由器和两个 Android 设备(v10 和 12)都通过 DHCP 获取 IP。
  4. 我确实安装了 5 个 VPN,但它们的(TAN)适配器全部被禁用(它们的应用程序未打开)。
  5. 我想提供我的hosts文件但它是空的(所有#评论)。
  6. 调制解调器型号是Tp-Link W8961N。
  7. 所有设备均通过 Wi-Fi(2.4 Ghz)连接。

nslookup ComputerName即使在同一台计算机上以提升的命令提示符运行,它也会显示:

Server:  dns.google
Address:  8.8.8.8

*** dns.google can't find Laptop1: Non-existent domain

为什么要求助于那些外部 DNS?它不是应该先在 LAN 中搜索吗?我考虑过将路由器的 IP 设置为第一个 DNS 服务器,但根据我的经验和我读过的所有指南,我从未见过有人这样做,在我看来,这应该是显而易见的。

但是当我“ping ComputerName”时它返回:

Pinging ComputerName[::1] with 32 bytes of data:
Reply from ::1: time<1ms
Reply from ::1: time<1ms
Reply from ::1: time<1ms
Reply from ::1: time<1ms

Ping statistics for ::1:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 0ms, Maximum = 0ms, Average = 0ms

(为什么它指的是::1:,这不是 IP6 吗?我到处都读到要禁用它,哈哈。)

到目前为止我已经尝试过(IIRC):

  1. 更改计算机名称并重新启动。
  2. 重新启动计算机上的 DNS 服务。
  3. 刷新 DNS 和其他相关命令
  4. 重置 Android 设备上的网络配置。据我所知,我无法从调制解调器重置 DNS 池。
  5. 在计算机上设置静态 IP(然后又恢复为 DHCP,但这两种方法都不起作用)
  6. 可能还有更多我忘记了,抱歉。

我不想编辑我的主机文件来包含 IP,因为这一切的重点是与 DHCP 一起工作。

命令结果如下ipconfig /all

Windows IP Configuration

   Host Name . . . . . . . . . . . . : ComputerName
   Primary Dns Suffix  . . . . . . . :
   Node Type . . . . . . . . . . . . : Hybrid
   IP Routing Enabled. . . . . . . . : No
   WINS Proxy Enabled. . . . . . . . : No

   [Removed all VPN's infos, they are all Media disconnected]

Wireless LAN adapter Wi-Fi:

   Connection-specific DNS Suffix  . :
   Description . . . . . . . . . . . : Intel(R) Wireless-AC 9560 160MHz
   Physical Address. . . . . . . . . : [Removed]
   DHCP Enabled. . . . . . . . . . . : Yes
   Autoconfiguration Enabled . . . . : Yes
   IPv4 Address. . . . . . . . . . . : 192.168.1.101(Preferred)
   Subnet Mask . . . . . . . . . . . : 255.255.255.0
   Lease Obtained. . . . . . . . . . : Thursday, November 17, 2022 7:08:29 AM
   Lease Expires . . . . . . . . . . : Sunday, November 20, 2022 7:08:28 AM
   Default Gateway . . . . . . . . . : 192.168.1.1
   DHCP Server . . . . . . . . . . . : 192.168.1.1
   DNS Servers . . . . . . . . . . . : 8.8.8.8
                                       8.8.4.4
   NetBIOS over Tcpip. . . . . . . . : Enabled

到目前为止,我唯一的猜测是我找到了答案这里,其中写道:

如果我查看网络属性(开始菜单 -> “查看网络属性”),我发现“问题”计算机缺少 DNS 域名和 DNS 后缀属性,而我的工作计算机并不缺少这些属性。

并且该页面中的DNS domain nameDNS search suffix list都是空的。也许情况确实如此,但我找不到如何修复它。我实际上确实找到了如何在后缀中添加冒号来强制执行某些操作,并且它对人们有用,但我希望我的其他设备能够找到这台计算机,而不是相反。

感谢您的时间。

此致。

答案1

有两种方法可以进行本地主机名查找:

  1. 使用本地 DNS 服务器 - 通常是您的路由器,它从 DHCP 租约请求中收集设备主机名。这与 nslookup 兼容,但对您不起作用,因为您已手动配置了不同的 DNS 服务器 (8.8.8.8),因此所有单播 DNS 查询都发送到该服务器。

    (禁用 DHCP 只会增加其不起作用的另一个原因,因为除非您将其作为 DHCP 请求的一部分发送,否则路由器不知道您的主机名。)

    运行nslookup ComputerName 192.168.1.1以检查路由器是否已将您的主机名添加到其内部 DNS。请记住,并非所有路由器都具有此功能。(如果路由器上设置的“域搜索后缀”为空,则有时会禁用此功能。)

  2. 使用某种 LAN 范围(基于多播)的名称查找协议。Windows 支持三种协议 - NBNS(已过时,SMBv1 已禁用);LLMNR;和 mDNS。

    为了使计算机能够通过 LLMNR 或 mDNS 被发现,防火墙规则需要允许入站 UDP 发现数据包(分别在端口 5355 和 5353 上)——通常 Windows 防火墙允许它们用于“私有”网络,但如果您打开,wf.msc您可以找到名为“网络发现(LLMNR-UDP-In)”和“mDNS(UDP-In)”的规则。启用两者。

    (NetBIOS 使用 UDP 端口 137 和 138。只有在古老的系统中才需要它。)

请注意,mDNS 名称始终用作.local后缀。如果您仅查询“ComputerName”,Windows 会自动添加它,但其他使用 mDNS 的系统(Android、iOS、macOS、Linux)要求要指定的名称,以便ComputerName.localmDNS 可以正常工作。(这也意味着 .local 不应用作路由器中本地 DNS 的后缀,因为如果操作系统检测到冲突,它将禁用 mDNS。)

为什么要使用那些外部 DNS?它不是应该先在 LAN 中搜索吗?

不会 — 即使操作系统的其余部分这样做,nslookup也不会。它严格来说是一个单播 DNS 客户端,只会与操作系统中配置的 DNS 服务器通信。

(nslookup可以查询路由器的内部 DNS 服务器,但您的配置告诉它不要这样做。)

Resolve-DnsName如果您除了 DNS 之外还想测试 mDNS/LLMNR,请使用 PowerShell 。

我考虑将路由器的 IP 设置为第一个 DNS 服务器,但根据我的经验和我读过的所有指南,我从未见过有人这样做,而且在我看来,这应该是显而易见的。

你从来没见过有人这么做,因为那是已经默认大多数家用路由器中的配置——路由器自己的地址通过 DHCP 作为唯一的“DNS 服务器”进行分配,以便所有设备使用路由器的内置 DNS 缓存(通常具有托管本地 DNS 域的功能)。

当人们想要手动选择服务器时,这是因为他们不再想使用路由器(路由器本身会转发到 ISP),而是更喜欢第三方服务。如果他们想重新使用路由器作为 DNS 服务器,只需切换回“自动获取 DNS 服务器”即可。

(为什么它指的是::1:,这不是IP6吗?

是的。Windows 会解析其自己的主机名(无需询问网络上的任何内容),返回 IPv4 和 IPv6 环回地址(即127.0.0.1::1)。

答案2

对于 Windows;检查活动网络适配器属性并禁用 IPv6。

在基于 GNU/BSD/Linux 的系统中,由于 Avahi 是可配置的,因此更容易。如果不完全禁用 IPv6,我在 Windows 中找不到类似的方法。


远程传输

我的设置也遇到了类似的问题

  • 5 台电脑(远程位置有 2 台 Win10,本地有 1 台 Win10 + 1 台 Mac + 1 台 Ubuntu)
  • 所有防火墙设置,重新验证
  • 这两个位置位于不同的子网 192.168.xx
  • 所有机器都是使用 ZeroTier 的二级子网的一部分(192.168.xx 中的第三个子网也是如此)

我使用 NoMachine 连接远程 PC。NoMachine 检测具有.local域的主机,但无法仅使用 IP 直接连接到它们。令人惊讶的是,所有本地机器都存在同样的问题。

所以我尝试用ping命令进行调试

C:\Users\user>ping 192.168.168.12

Pinging 192.168.168.12 with 32 bytes of data:
Reply from 192.168.168.12: bytes=32 time=62ms TTL=128
Reply from 192.168.168.12: bytes=32 time=52ms TTL=128
Reply from 192.168.168.12: bytes=32 time=62ms TTL=128

Ping statistics for 192.168.168.12:
    Packets: Sent = 3, Received = 3, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 52ms, Maximum = 62ms, Average = 58ms
Control-C
^C
C:\Users\user>ping cv4t

Pinging CV4T.local [fe80::fa33:d123:2eb3:1628%7] with 32 bytes of data:
Reply from fe80::fa33:d123:2eb3:1628%7: time=52ms
Reply from fe80::fa33:d123:2eb3:1628%7: time=55ms
Reply from fe80::fa33:d123:2eb3:1628%7: time=54ms
Reply from fe80::fa33:d123:2eb3:1628%7: time=59ms

Ping statistics for fe80::fa33:d123:2eb3:1628%7:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 52ms, Maximum = 59ms, Average = 55ms

C:\Users\user>ping cv4t.local

Pinging CV4T.local [fe80::fa33:d123:2eb3:1628%7] with 32 bytes of data:
Reply from fe80::fa33:d123:2eb3:1628%7: time=52ms
Reply from fe80::fa33:d123:2eb3:1628%7: time=61ms
Reply from fe80::fa33:d123:2eb3:1628%7: time=52ms
Reply from fe80::fa33:d123:2eb3:1628%7: time=52ms

Ping statistics for fe80::fa33:d123:2eb3:1628%7:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 52ms, Maximum = 61ms, Average = 54ms

mDNS 和主机名(可能是 netbios)解析为 IPv6。

在活动适配器(我的情况是 ZeroTier VPN)中禁用 IPv6 后。两者都解析为 IPv4。

适配器属性中的 IPv6 - Windows 10

C:\Users\user>ping cv4t.local

Pinging CV4T.local [192.168.168.17] with 32 bytes of data:
Reply from 192.168.168.17: bytes=32 time=52ms TTL=128
Reply from 192.168.168.17: bytes=32 time=50ms TTL=128
Reply from 192.168.168.17: bytes=32 time=62ms TTL=128
Reply from 192.168.168.17: bytes=32 time=51ms TTL=128

Ping statistics for 192.168.168.17:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 50ms, Maximum = 62ms, Average = 53ms

C:\Users\user>ping cv4t

Pinging CV4T.local [192.168.168.17] with 32 bytes of data:
Reply from 192.168.168.17: bytes=32 time=52ms TTL=128
Reply from 192.168.168.17: bytes=32 time=62ms TTL=128
Reply from 192.168.168.17: bytes=32 time=56ms TTL=128
Reply from 192.168.168.17: bytes=32 time=78ms TTL=128

Ping statistics for 192.168.168.17:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 52ms, Maximum = 78ms, Average = 62ms

相关内容