核心结论 Bonjour 服务是苹果推出的零配置网络发现协议,在 Windows 和 macOS 系统里都可以手动开启,开启之后同一局域网内的设备就能自动识别打印机共享文件夹这类支持 Bonjour 的设备,它本质不是独立的大型服务器程序,而是系统后台服务,开启前要确认局域网环境安全,因为该协议会向外广播本机设备信息,公网环境直接开启会有信息暴露风险,日常主要是家里或者办公室内网使用。这个协议默认在苹果 macOS 系统是预装启用状态,Windows 系统需要先安装对应的 Bonjour 打印服务组件,安装完成之后才会出现对应的后台服务项,很多用户找不到开启入口,就是因为没有安装这个组件,只在系统服务列表里搜索是看不到的,另外防火墙拦截也是开启之后仍然无法正常发现设备最常见的原因,就算服务已经启动,防火墙不放行 Bonjour 使用的 5353 端口组播流量,跨设备发现依旧会失效。
原理说明
Bonjour 使用 mDNS 多播域名解析,默认端口是 UDP 5353,依靠局域网组播包完成设备广播与发现,不需要手动填写 IP 地址,设备上线就自动推送自身名称服务类型地址信息,其他同网段设备收到广播之后就能识别到这台 Bonjour 服务器,它支持 AirPrint 打印机共享,苹果设备互联,部分第三方软件比如 iTunes 也会附带安装 Bonjour 组件。
Windows 系统开启步骤
1 先获取 Bonjour 组件,可以通过安装 iTunes,或者单独下载 Bonjour Print Services 安装包,运行安装程序,按照向导完成安装,安装完成之后系统才会生成 Bonjour Service 后台服务。
2 按下 Win 加 R 组合键,输入 services.msc 回车,打开系统服务管理器。
3 在服务列表找到 Bonjour Service,双击打开属性窗口。
4 把启动类型修改为自动,这样电脑开机就自动启动 Bonjour 服务器。
5 点击启动按钮,确认服务状态变成正在运行,点击应用保存。
6 打开 Windows 防火墙高级设置,添加入站规则,放行 UDP 5353 端口,允许组播通信,第三方安全软件也要同步放行该端口。
macOS 系统开启步骤
1 打开系统设置,进入通用,找到共享选项。
2 确认相关共享功能比如打印机共享,文件共享,开启之后会自动激活底层 Bonjour 服务,mac 一般不需要单独手动启动 Bonjour 主服务。
3 如果 Bonjour 发现异常,可以打开终端,输入 sudo launchctl load /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist 重启 mDNSResponder 后台进程,也就是 Bonjour 核心服务。
4 检查 mac 防火墙,确认没有拦截本地网络多播流量,必要时把局域网设备设置为允许接入。
常见异常排查
服务启动之后仍然无法发现设备,优先确认所有设备在同一个局域网同一个子网,跨 VLAN 跨路由器隔离的网络,mDNS 组播包默认无法穿透,这种情况需要路由器开启 mDNS 中继功能。另外电脑休眠之后 Bonjour 服务会暂停广播,需要把电源选项设置为不休眠,或者唤醒之后重新启动服务。
最终总结 Windows 需要先安装 Bonjour 组件再设置服务自动启动,macOS 依托共享功能自动启用底层 mDNS 服务,核心重点就是保证 UDP5353 组播流量可以在局域网正常通行,完成这些操作之后 Bonjour 服务器就可以正常工作,实现局域网设备自动发现。
【相关 FAQ】
问题 1 bonjour 服务器开启之后其他苹果设备搜不到打印机是什么原因
回答 1 bonjour 服务器虽然已经启动,但是大概率是防火墙拦截 UDP5353 组播包,或者设备不在同一个子网,也有可能打印机本身没有开启 AirPrint 支持,建议检查路由器是否隔离了组播流量,重新确认 bonjour 服务器服务保持运行状态。
问题 2 bonjour 服务器可以设置成开机不自动启动吗
回答 2 可以,打开服务属性窗口,把 bonjour 服务器对应的 Bonjour Service 启动类型改成手动,这样开机不会自动开启,需要使用的时候再手动点启动即可。
问题 3 卸载 iTunes 之后 bonjour 服务器还能继续运行吗
回答 2 卸载 iTunes 的时候如果没有保留 Bonjour 组件,bonjour 服务器对应的后台服务会一并移除,想要继续使用就需要单独重新安装 Bonjour Print Services 组件,之后再重新开启 bonjour 服务器。
【免责申明】
本文内容仅作为技术操作参考,开启 bonjour 服务器会在局域网广播本机信息,请仅在可信内网环境使用,操作前请自行备份系统,因操作失误网络配置错误带来的数据损失网络安全风险,由使用者自行承担,本文不承担相关责任。


