在pfSense中配置ZeroTier网络

ZeroTier是一个分布式网络虚拟机管理程序,建立在加密安全的全球对等网络之上。它提供与企业 SDN 交换机同等的高级网络虚拟化和管理功能,而且可以跨本地和广域网并连接几乎任何类型的应用程序或设备。 在OPNsense中,ZeroTier已经做为一个插件提供,pfSense官方还没发布该插件,但ZeroTier有freeBSD平台的安装包,这为我们解决pfSense安装ZeroTier提供了途径。

一、安装软件包

使用Xshell等工具进入pfSense终端,以root用户运行以下命令:

pkg add https://pkg.freebsd.org/FreeBSD:12:amd64/quarterly/All/zerotier-1.6.2.txz

二、修改配置文件

在启动ZeroTier服务之前,需要手动修改两个文件。导航到防火墙>系统诊断>编辑文件。

打开etc>rc.conf文件,添加以下内容并保存:

zerotier_enable="YES"

打开etc>sysctl.conf,添加以下内容并保存:

net.link.tap.up_on_open=1

三、启动ZeroTier服务

转到防火墙>系统诊断>命令行(或终端下),输入以下命令:

service zerotier start

四、加入ZeroTier网络

导航到防火墙>系统诊断>命令行(或终端下),输入以下命令:

zerotier-cli join e5cd7a9e1c######

注:蓝色部分是你在ZeroTier网站上创建的网络ID。

五、添加路由

加入ZeroTier网络后,还必须在ZeroTier网站上进行授权,才能进行路由设定、网络互访。设置完成以后,可以在pfSense上ping其他路由的子网来测试网络是否连通。

重启防火墙后,必须重复第三、四步操作。

六、ZeroTier运行参数

在终端输入:zerotier-cli help,可以查看命令参数。
用法: zerotier-cli [-参数] <command/path> [<args>]

可用参数:
-h – 显示帮助信息
-v – 显示版本
-j – 显示完整的原始JSON输出
-D<path> -ZeroTier主路径,用于参数自动检测
-p<port> – HTTP端口 (默认: auto)
-T<token> – 认证令牌 (默认: auto)

可用命令:
info – 显示状态信息
listpeers – 显示所有的远程端
peers – 显示所有的远端连接 (列表)
listnetworks – 显示所有网络
join <network> – 加入一个网络
leave <network> – 离开一个网络
set <network> <setting> – 设置网络设置
get <network> <setting> – 获得网络设置
listmoons -显示moons (联合根集)
orbit <world ID> <seed> – 通过任意根成员加入moon
deorbit <world ID> – 离开一个moon

ZeroTier网络的详细设置,请参考这篇文章

七、已知问题

由于该插件不是为pfSense定制,在防火墙重启后服务将不能自动运行,需要手动运行一次命令。国外网友已经为pfSense开发了ZeroTier的Web界面的管理程序,只需安装到pfSense中就能使用。可能是没适配2.45-1版本的原因,我在测试时提示ZeroTier服务没启动,无法进行设置。插件在这里下载,安装视频请点击这里

根据pfSense的开发进度,ZeroTier将可能作为插件在2.5中提供。