Raspberry Pi 主机名在 macOS 上不可见

Raspberry Pi 主机名在 macOS 上不可见

我有一台 Raspberry Pi 机器,它通过有线连接到我的本地路由器。我的路由器连接监控实用程序表明该设备已连接到本地网络,并且网络上的其他设备可以看到该设备,设备名称/主机名位于raspberrypi0私有 IP 地址 192.168.1.2 下:

在此处输入图片描述

ping 192.168.1.2成功,没有数据包丢失,并且设备可以从该地址访问(并且可以通过 SSH 连接)。但是,无论是ping还是都nslookup无法解析路由器声称正在广播的实际主机名(这是在 macOS 上,因此.local在末尾有):

$ ping raspberrypi0.local
ping: cannot resolve raspberrypi0.local: Unknown host

$ nslookup 192.168.1.2
Server:     192.168.1.1
Address:    192.168.1.1#53

*** Can't find 2.1.168.192.in-addr.arpa.: No answer

我的网络路由器192.168.1.1是该机器使用的唯一 DNS 服务器:

在此处输入图片描述

那么为什么无法通过主机名访问该设备?

答案1

有几种不同的(不兼容的)方法来发现主机名称。当您在 macOS(以及支持它的其他操作系统)上使用 .local 名称时,您正在对多播 DNS (mDNS) 协议。这只能发现支持(并通过 mDNS 进行通告)mDNS 的其他主机;在 Linux(包括 Raspbian)上,这通常由阿瓦希

据我所知,Avahi 已在 Raspbian 中默认安装并运行(或者可能只是在完整安装中?)。您可以使用 进行检查ps -ax | grep [a]vahi-daemon。如果不是,您可能需要安装和/或设置它。

注意:nslookup不执行 mDNS,只执行常规 DNS。dig和 也一样hostping另一方面, 会使用操作系统解析器,因此如果系统设置为使用 mDNS,则会使用 mDNS。

我不确定路由器监视器上的列表使用什么将名称“RASPBERRYPI0”附加到您的 Pi,但我的猜测是它是 Pi 首次连接到网络时通过其 DHCP 请求发送的名称(本质上是,“嗨,我是 RASPBERRYPI0,有人能给我一个 IP 地址和设置以便在您的网络上使用吗?”)。路由器/DHCP 服务器可能会在其租约表中记录此信息(“我将地址 192.168.1.2 分配给名为 RASPBERRYPI0 的某个东西”),并在您查找客户端时显示它。但 DHCP 请求仅与 DHCP 服务器相关,租约表不适用于网络上的任何其他设备,因此仅仅因为路由器知道它的名称并不一定能帮助任何其他主机找到它。

嗯,除了一些路由器也为本地网络提供 DNS 服务,并且一些使用租约表中的名称来填充某种本地 DNS 名称。但是您的 Mac 使用本地路由器 (192.168.1.1) 作为其 DNS 服务器,并且查找 192.168.1.2 没有得到任何返回,因此您的路由器可能不会执行此操作。

还有其他方法可以通过名称查找本地计算机,例如NetBIOS 名称服务;如果本地网络上的其他计算机正在查找 Pi,它们可能会使用它。或者可能是其他东西,很难说。

相关内容