我想通过主机名(我调用它们ComputerName
)从我的 Android 10 和 12 设备访问我的 Win 10 计算机(我们称之为ping ComputerName
),但它们找不到它并返回:
DNS error, Unknown host ComputerName
。
以下是我认为可能有帮助的所有信息:
- 计算机未指定 IP 和 DNS,并且设置为 DHCP。
- 在路由器上,DNS设置为8.8.8.8和8.8.4.4。
- 我的设置非常简单,一个带有 Win 10 build 19044 的路由器和两个 Android 设备(v10 和 12)都通过 DHCP 获取 IP。
- 我确实安装了 5 个 VPN,但它们的(TAN)适配器全部被禁用(它们的应用程序未打开)。
- 我想提供我的
hosts
文件但它是空的(所有#
评论)。 - 调制解调器型号是Tp-Link W8961N。
- 所有设备均通过 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):
- 更改计算机名称并重新启动。
- 重新启动计算机上的 DNS 服务。
- 刷新 DNS 和其他相关命令
- 重置 Android 设备上的网络配置。据我所知,我无法从调制解调器重置 DNS 池。
- 在计算机上设置静态 IP(然后又恢复为 DHCP,但这两种方法都不起作用)
- 可能还有更多我忘记了,抱歉。
我不想编辑我的主机文件来包含 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 name
和DNS search suffix list
都是空的。也许情况确实如此,但我找不到如何修复它。我实际上确实找到了如何在后缀中添加冒号来强制执行某些操作,并且它对人们有用,但我希望我的其他设备能够找到这台计算机,而不是相反。
感谢您的时间。
此致。
答案1
有两种方法可以进行本地主机名查找:
使用本地 DNS 服务器 - 通常是您的路由器,它从 DHCP 租约请求中收集设备主机名。这与 nslookup 兼容,但对您不起作用,因为您已手动配置了不同的 DNS 服务器 (8.8.8.8),因此所有单播 DNS 查询都发送到该服务器。
(禁用 DHCP 只会增加其不起作用的另一个原因,因为除非您将其作为 DHCP 请求的一部分发送,否则路由器不知道您的主机名。)
运行
nslookup ComputerName 192.168.1.1
以检查路由器是否已将您的主机名添加到其内部 DNS。请记住,并非所有路由器都具有此功能。(如果路由器上设置的“域搜索后缀”为空,则有时会禁用此功能。)使用某种 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.local
mDNS 可以正常工作。(这也意味着 .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。
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