本地网络
在 Mac 上查找本地网络中的设备
macOS 有两种内置方式查看其他设备:ARP 表和 Bonjour。两者都不是对网络的完整扫描。
症状
- 需要打印机、NAS 或其他设备的 IP 地址。
- 想知道网络中有哪些设备。
- 某个 App 找不到本地网络中的设备。
可能的原因
- ARP 表只保存最近的设备。Mac 只有在与某台设备交换过流量后,才会列出它。
- Bonjour 只显示广播服务的设备。不广播服务的设备不会出现。
- 某个 App 的“本地网络”访问权限已关闭。在 macOS 15 Sequoia 及更高版本中,App 需要获得权限才能查找本地网络中的设备。
- 网络开启了客户端隔离。一些访客网络和公共网络会阻止设备互相发现。
如何检查
显示 ARP 表。它列出 Mac 当前已知的 IP 地址和硬件(MAC)地址。
arp -a要跳过名称查询,加上
-n。arp -a -n用 Bonjour 浏览广播服务的设备。这个例子查找打印机。按 Control-C 停止。
dns-sd -B _ipp._tcp浏览通过 SMB 共享文件的设备。
dns-sd -B _smb._tcp如果某个 App 找不到设备,打开“系统设置”>“隐私与安全性”>“本地网络”,在列表中查找该 App。
如何修复
如果该 App 在“本地网络”中处于关闭状态,将其打开。参阅“App 找不到本地网络中的设备”。
如果连接的是访客网络,改为连接主网络才能访问自己的设备。
要把某台设备加入 ARP 表,先 ping 它的地址,然后再次运行
arp -a。ping -c 2 192.168.1.20在路由器设置中为重要设备分配固定地址,这样随时都能找到它们。
使用 Kilobat
Kilobat 根据 ARP 邻居缓存,列出 Mac 最近通信过的设备。这不是完整扫描。
kilobat devices要包含 Bonjour 服务,加上
--bonjour。kilobat devices --bonjour要给设备起一个 Kilobat 会记住的名称,使用它的硬件地址。
kilobat devices name aa:bb:cc:dd:ee:ff "Printer"要唤醒支持网络唤醒(Wake-on-LAN)的设备,发送唤醒数据包。Kilobat 无法确认设备是否已唤醒。
kilobat wake aa:bb:cc:dd:ee:ff仪表盘中的“设备”标签页需要 Pro 版。
常见问题
为什么 arp -a 没有显示所有设备?
ARP 表只列出最近与 Mac 交换过流量的设备。处于睡眠或静默状态的设备不会出现。
这些命令需要管理员密码吗?
不需要。任何用户都可以使用 arp -a 和 dns-sd -B。删除 ARP 条目需要管理员权限。
参考资料
- arp(8),macOS 27.2 自带的 man 手册页
- dns-sd(1),macOS 27.2 自带的 man 手册页
- Apple 支持:在 Mac 上控制对本地网络的访问
参考资料核查于 2026年10月29日。man 手册页为 macOS 自带版本;在“终端”中用 man <name> 打开。