本地网络

在 Mac 上查找本地网络中的设备

macOS 有两种内置方式查看其他设备:ARP 表和 Bonjour。两者都不是对网络的完整扫描。

适用于:所有当前 macOS 版本。“本地网络”隐私设置适用于 macOS 15 Sequoia 及更高版本。核查日期:2026年10月29日

症状

  • 需要打印机、NAS 或其他设备的 IP 地址。
  • 想知道网络中有哪些设备。
  • 某个 App 找不到本地网络中的设备。

可能的原因

  • ARP 表只保存最近的设备。Mac 只有在与某台设备交换过流量后,才会列出它。
  • Bonjour 只显示广播服务的设备。不广播服务的设备不会出现。
  • 某个 App 的“本地网络”访问权限已关闭。在 macOS 15 Sequoia 及更高版本中,App 需要获得权限才能查找本地网络中的设备。
  • 网络开启了客户端隔离。一些访客网络和公共网络会阻止设备互相发现。

如何检查

  1. 显示 ARP 表。它列出 Mac 当前已知的 IP 地址和硬件(MAC)地址。

    arp -a
  2. 要跳过名称查询,加上 -n。

    arp -a -n
  3. 用 Bonjour 浏览广播服务的设备。这个例子查找打印机。按 Control-C 停止。

    dns-sd -B _ipp._tcp
  4. 浏览通过 SMB 共享文件的设备。

    dns-sd -B _smb._tcp
  5. 如果某个 App 找不到设备,打开“系统设置”>“隐私与安全性”>“本地网络”,在列表中查找该 App。

如何修复

  1. 如果该 App 在“本地网络”中处于关闭状态,将其打开。参阅“App 找不到本地网络中的设备”。

  2. 如果连接的是访客网络,改为连接主网络才能访问自己的设备。

  3. 要把某台设备加入 ARP 表,先 ping 它的地址,然后再次运行 arp -a。

    ping -c 2 192.168.1.20
  4. 在路由器设置中为重要设备分配固定地址,这样随时都能找到它们。

使用 Kilobat

  1. Kilobat 根据 ARP 邻居缓存,列出 Mac 最近通信过的设备。这不是完整扫描。

    kilobat devices
  2. 要包含 Bonjour 服务,加上 --bonjour。

    kilobat devices --bonjour
  3. 要给设备起一个 Kilobat 会记住的名称,使用它的硬件地址。

    kilobat devices name aa:bb:cc:dd:ee:ff "Printer"
  4. 要唤醒支持网络唤醒(Wake-on-LAN)的设备,发送唤醒数据包。Kilobat 无法确认设备是否已唤醒。

    kilobat wake aa:bb:cc:dd:ee:ff
  5. 仪表盘中的“设备”标签页需要 Pro 版。

常见问题

为什么 arp -a 没有显示所有设备?

ARP 表只列出最近与 Mac 交换过流量的设备。处于睡眠或静默状态的设备不会出现。

这些命令需要管理员密码吗?

不需要。任何用户都可以使用 arp -a 和 dns-sd -B。删除 ARP 条目需要管理员权限。

参考资料

参考资料核查于 2026年10月29日。man 手册页为 macOS 自带版本;在“终端”中用 man <name> 打开。