ZeroTier 是一个建立在加密安全全球对等网络之上的分布式网络虚拟化平台。它提供了接近企业级 SDN 交换机的网络虚拟化与管理能力,可跨越局域网与广域网,将不同地点的设备和应用安全地连接在一起。
目前 pfSense 官方尚未提供 ZeroTier 插件。为了方便在 pfSense 上使用 ZeroTier,我编写了适用于 pfSense 的 ZeroTier Web 管理插件,可以直接在 pfSense WebGUI 中启停服务、加入或退出网络、查看节点和网络状态,并自动处理动态接口的防火墙规则。
支持以下系统:
- pfSense CE 2.8.1,FreeBSD 15 amd64
- pfSense CE 2.9.0,FreeBSD 16 amd64
- pfSense Plus 26.03 / 26.07,FreeBSD 16 amd64
插件功能
- 通过 pfSense WebGUI 启用、停止和重启 ZeroTier 服务
- 加入、编辑和退出 ZeroTier 网络
- 查看网络、虚拟地址、接口及对等节点状态
- 支持自定义
local.confJSON 配置 - 自动为运行时产生的
zt*动态接口添加 IPv4 放行规则 - 安装或升级时自动清理旧的 ZeroTier 接口分配,避免重启后 WAN、LAN 接口需要重新分配
- 卸载时清理 VPN 菜单、服务和软件包配置元数据,避免菜单残留
- 同一个安装包同时支持 FreeBSD 15 和 FreeBSD 16
安装插件
1、加入社区仓库
在 pfSense 终端中执行以下命令。
pfSense CE:
fetch -o /usr/local/etc/pkg/repos/opnwall.conf https://opnwall.github.io/pfSense-repo/pfsense-ce-opnwall.conf
pkg update -f
pfSense Plus:
fetch -o /usr/local/etc/pkg/repos/opnwall.conf https://opnwall.github.io/pfSense-repo/pfsense-plus-opnwall.conf
pkg update -f
如需在 pfSense 软件包管理器中显示社区插件,可以继续执行:
fetch -qo - https://opnwall.github.io/pfSense-repo/enable-opnwall-gui.sh | sh
然后在 pfSense 的软件包列表中查找 zerotier 并安装,或者在终端执行:
pkg install pfSense-pkg-zerotier
2、离线安装
访问 软件包仓库,下载适用于当前仓库的 pfSense-pkg-zerotier 安装包,然后执行:
pkg add pfSense-pkg-zerotier.pkg
安装完成后刷新浏览器,在 pfSense 顶部菜单中进入 VPN > ZeroTier VPN。
配置ZeroTier
1、启用服务
进入 VPN > ZeroTier VPN > 配置(Configuration),勾选 Enable Zerotier Client(启用 ZeroTier 客户端),然后保存。插件会同步设置开机启动状态并启动 ZeroTier 服务。
2、加入网络
进入 VPN > ZeroTier VPN,切换到 网络(Networks)选项卡,点击右侧的加入(Join)按钮,输入由 16 个十六进制字符组成的 ZeroTier Network ID,然后保存。
首次加入网络时,由于节点尚未在控制台授权,网络通常会显示为拒绝访问或等待授权状态。
3、添加授权
打开浏览器访问 ZeroTier Central,进入相应网络,在成员(Members)列表中找到等待授权的新节点。
根据需要完成以下设置:
- 勾选 Authorized
- 填写便于识别的节点名称
- 指定或确认 ZeroTier 虚拟 IP 地址
- 保存设置
授权完成后,返回 pfSense 的网络页面,状态应显示为 OK,同时可以看到 ZeroTier 分配的虚拟地址和动态接口名称。
4、管理路由
如果需要从 ZeroTier 网络访问 pfSense 后面的局域网,应在 ZeroTier Central 的 Managed Routes 中添加指向 pfSense LAN 网段的路由:
- Destination(目标网络):填写 pfSense 的 LAN 网段,例如
192.168.10.0/24 - Via(下一跳):填写 pfSense 获得的 ZeroTier 虚拟地址
其他站点也需要发布各自的局域网路由。必须保证两端 LAN 网段不重叠,同时终端的默认网关及主机防火墙允许相关通信。
5、查看节点
进入 VPN > ZeroTier VPN > Peers,可以查看当前节点以及所连接根节点、直接节点和中继节点的地址、版本、延迟、角色和连接路径等信息。
6、规则设置
ZeroTier 创建的是运行时动态接口,接口名称通常以 zt 开头,例如 ztxxxxxxxx。新版插件会监控当前活动的 zt* 接口,并为每个活动接口动态加载等效的 IPv4 放行规则:
pass in quick on zt* inet from any to any
这条规则用于让不同主机安装后可以直接进行组网测试。服务启动、停止、重启以及网络接口发生变化时,插件会重新同步 pfSense 防火墙规则。
不要在“接口 > 分配(Interfaces > Assignments)”中手工添加 ZeroTier 接口。动态接口在系统启动过程中出现的顺序并不固定,手工分配可能干扰 pfSense 的接口识别,造成重启后 WAN 和 LAN 需要重新设置。
安装程序会在安装或升级时清理历史遗留的 ZeroTier 接口分配,只保留由插件管理的运行时接口和防火墙规则。
如果正式环境不希望允许全部 IPv4 流量,可以在确认组网和路由正常后,根据实际网段和服务需求调整插件规则实现更严格的访问控制。
7、高级设置
配置页面中的 local.conf 用于填写可选的 ZeroTier 本地 JSON 配置。它可以控制端口映射、物理网络黑名单、TCP fallback、中继和其他节点运行参数。留空保存会删除现有的 local.conf。
例如,在多 WAN 或复杂防火墙环境中,可以用它限制物理网段或自动端口映射方式,避免不希望的局域网直连。修改后插件会验证 JSON 格式并重新加载服务。
具体参数可参考 ZeroTier 官方配置文档。
测试网络
配置完成后,可以依次进行以下测试:
- 从 pfSense 诊断页面或终端 ping 对端的 ZeroTier 虚拟地址
- ping 对端路由器的 LAN 地址
- ping 对端局域网内的客户端地址
- 使用
traceroute检查实际路由路径 - 测试 NAS、SSH、RDP 或 Web 管理页面等实际服务
如果只能访问对端路由器而不能访问其后方客户端,应重点检查 Managed Routes、对端 LAN 防火墙、客户端默认网关,以及两端局域网网段是否冲突。
卸载插件
可以在 pfSense 软件包管理器中卸载,也可以在终端执行:
pkg delete pfSense-pkg-zerotier
卸载脚本会停止 ZeroTier 服务,并清理 VPN 菜单、服务注册、软件包元数据、启动脚本和程序文件。卸载后刷新 WebGUI,VPN > ZeroTier VPN 菜单应一并消失。
注意事项
- 不要把动态
zt*接口添加为 pfSense 固定接口。 - 不要通过 Shellcmd 插件重复添加 ZeroTier 开机启动命令;安装包已经包含启动和服务管理逻辑。
- 升级旧版插件后建议检查一次“接口 > 分配”,确认没有遗留的 ZeroTier 固定接口。
- 文章中的
any to any规则便于部署和连通性测试;生产环境应按安全需求收紧。
项目地址
pfSense 社区插件仓库:





