适用于 pfSense 的 ZeroTier 插件

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.conf JSON 配置
  • 自动为运行时产生的 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 服务。

启用 ZeroTier 客户端

2、加入网络

进入 VPN > ZeroTier VPN,切换到 网络(Networks)选项卡,点击右侧的加入(Join)按钮,输入由 16 个十六进制字符组成的 ZeroTier Network ID,然后保存。

加入 ZeroTier 网络

首次加入网络时,由于节点尚未在控制台授权,网络通常会显示为拒绝访问或等待授权状态。

3、添加授权

打开浏览器访问 ZeroTier Central,进入相应网络,在成员(Members)列表中找到等待授权的新节点。

ZeroTier Central 成员授权

根据需要完成以下设置:

  • 勾选 Authorized
  • 填写便于识别的节点名称
  • 指定或确认 ZeroTier 虚拟 IP 地址
  • 保存设置

授权完成后,返回 pfSense 的网络页面,状态应显示为 OK,同时可以看到 ZeroTier 分配的虚拟地址和动态接口名称。

ZeroTier 网络状态

4、管理路由

如果需要从 ZeroTier 网络访问 pfSense 后面的局域网,应在 ZeroTier Central 的 Managed Routes 中添加指向 pfSense LAN 网段的路由:

  • Destination(目标网络):填写 pfSense 的 LAN 网段,例如 192.168.10.0/24
  • Via(下一跳):填写 pfSense 获得的 ZeroTier 虚拟地址

其他站点也需要发布各自的局域网路由。必须保证两端 LAN 网段不重叠,同时终端的默认网关及主机防火墙允许相关通信。

ZeroTier Managed Routes

5、查看节点

进入 VPN > ZeroTier VPN > Peers,可以查看当前节点以及所连接根节点、直接节点和中继节点的地址、版本、延迟、角色和连接路径等信息。

ZeroTier 节点列表

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 社区插件仓库:

https://github.com/Opnwall/pfSense-repo

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇