ZeroTier是一个分布式网络虚拟机管理程序,建立在加密安全的全球对等网络之上。它提供与企业 SDN 交换机同等的高级网络虚拟化和管理功能,而且可以跨本地和广域网连接几乎任何类型的应用程序或设备。
OPNsense已集成ZeroTier插件,pfSense官方还没发布该插件,但ZeroTier有FreeBSD平台的安装包,这为我们在pfSense上安装ZeroTier提供了途径。
一、安装软件包
第一步,先安装Zerotier软件包。
方法一:使用Xshell等工具进入pfSense终端,以root用户运行以下命令:
pkg add -f https://pkg.freebsd.org/FreeBSD:13:amd64/latest/All/zerotier-1.10.4.pkg
方法二:下载zerotier-1.10.4.pkg,解压缩后上传到pfSense后台,然后在pfSense shell环境下执行以下安装命令:
pkg install zerotier-1.10.4.pkg
第二步,安装pfSense-pkg-zerotier软件包,这个软件包提供了在pfSense web界面管理zerotier网络的功能。
下载pfSense-pkg-zerotier-cn软件包,解压缩后上传到pfSense后台,然后在pfSense shell环境下执行以下安装命令:
pkg install pfSense-pkg-zerotier-cn.pkg
注意,这里必须用pkg install进行安装,如果是pkg add 会提示这个程序只能在FreeBSD 13下运行。
二、修改配置文件
在启动ZeroTier服务之前,需要手动修改两个文件。导航到防火墙>系统诊断>编辑文件。
打开etc>rc.conf文件,添加以下内容并保存:
zerotier_enable="YES"
打开etc>sysctl.conf,添加以下内容并保存:
net.link.tap.up_on_open=1
三、启动ZeroTier服务
导航到VPN>Zerotier>配置,选中启用。
service zerotier start
四、加入ZeroTier网络
导航到VPN>Zerotier>网络,点击添加,加入网络。
注:蓝色部分是你在ZeroTier网站上创建的网络ID。
五、添加路由
加入ZeroTier网络后,还必须在ZeroTier网站上进行授权,才能进行路由设定、网络互访。ZeroTier网络的详细设置,请参考这篇文章。
六、菜单设置
导航到VPN>zerotier,在网络选项卡,可以看到分配的IP地址。
在peers列表中,看到各节点信息。
七、分配接口
这里与OPNsense Zerotier网络配置示例教程一样,分配接口不是必须的,如果只是节点之间互相访问,只需启用网络即可。如果要访问防火墙后面的子网,就必须分配接口并添加规则。
注意:要给该节点分配接口,必须在Zerotier门户网站上将该节点IP地址的自动分配改为手动分配,如下图所示(引用在OPNsense中配置的图片,仅供参考):
然后导航到到”接口>”菜单项,单击分配。这里可以找到一个以zt
开头的新接口。单击+符号进行分配。打开新添加的接口并启用,可以将接口的“描述”更改为ZT,以方便记忆,IPv4地址填写在ZeroTier门户网站上手动分配的IP地址。
八、添加防火墙规则
给ZeroTier使用的接口添加一个any to any的规则。
将防火墙内部客户端所使用的默认网关修改为默认值(或Automatic)或指定接口。这一步非常重要,由于本人使用的是双线负载,在默认网关使用负载平衡功能时,发现内部客户端无法正常连接到ZeroTier网络中的其他节点,改为默认后访问正常。
网关修改为默认。
当然,解决办法也有,添加一条防火墙规则,将访问ZeroTier其他网络节点设置为使用默认网关或指定网关,并将规则放在多线负载规则的前面即可。如下图所示:
ZT是访问其他ZeroTier节点的网络地址别名。
九、测试
经过以上设置,ZeroTier网络的各个节点之间可以相互进行访问了。
在防火墙上ping另一个节点(OPENWRT):
从防火墙内部客户端ping OpenW r t后面连接的NAS服务器:
访问一切正常。
十、其他
近期作者对插件进行了更新,经过近半个月的测试,现在该插件已基本处于可以稳定使用的状态,重启以后也可以正常使用。由于插件仍处于开发阶段,还未被官方正式收录,在安装使用中,有可能会造成防火墙假死、无法访问网络、CPU占用增加等问题,建议只在试验环境中使用。该插件由国外网友ChanCM独立完成,文末已附上编译好的安装包且已汉化,测试视频请点击这里。
注意:在多WAN网络环境中,如果出站做了负载平衡策略,那么客户端可能不能连接远程网络。可以新建一个别名ZTNET,包含RFC1918网络或ZeroTier所使用的远程网络,指定某一个网关出站(或默认网关)并放在规则列表的前面。
十一、pfSense plus 23.01安装Zerotier方法
由于内核升级,ChanCM开发的插件无法在pfSense plus 23.01上安装运行,新版本只能通过命令行运行。下面介绍安装配置方法。
1、安装软件包
在防火墙shell环境下,运行以下命令并根据提示进行安装:
pkg add -f https://pkg.freebsd.org/FreeBSD:13:amd64/latest/All/zerotier-1.10.4.pkg
或下载后运行以下命令进行安装:
pkg install zerotier-1.10.4.pkg
2、修改防火墙配置文件
找到etc>rc.conf文件,添加以下内容:
zerotier_enable="YES"
找到etc>sysctl.conf,添加以下内容:
net.link.tap.up_on_open=1
3、启动zerotier
service zerotier start
重启命令:
service zerotier restart
停止命令:
service zerotier stop
4、加入zerotier
zerotier-cli join e7cd7a9e3cfdd712
如果提示命令出错,重启一下防火墙。
5、授权路由
进入zerotier网站,添加防火墙访问路由。
6、添加接口
导航到分配>接口,找到以zt字母开头的接口,添加一个新接口,静态地址输入Zerotier网站分配的地址,子网掩码为16,网关留空。
7、添加防火墙规则
导航到防火墙>规则策略,在新接口上添加一条any to any规则。
8、添加开机启动项
安装Shellcmd插件,添加以下启动命令,命令类型:shellcmd
service zerotier start
9、已知问题
防火墙后面的客户端访问远程客户端正常,远程可以正常访问防火墙,但无法访问防火墙后面的客户端。
附:zerotier-cli命令列表
可用的参数:
-h – 显示帮助信息
-v – 显示版本
-j – 显示完整的原始JSON输出
-D<path> – 用于参数自动检测的ZeroTier主路径
-p<port> – HTTP端口(默认:auto)
-T<token> – 认证令牌 (默认: auto)
可用的命令:
info – 显示状态
listpeers – 列出所有同行
peers – 列出所有同行(更漂亮的输出)
listnetworks – 列出所有网络
join <network ID> – 加入网络
leave <network ID> – 离开网络
set <network ID> <setting> – 网络设置
get <network ID> <setting> – 获取网络设置
listmoons – 列出moons (联合根集)
orbit <world ID> <seed> – 通过任意成员根加入moon
deorbit <world ID> – 离开moon
dump – 用于支持的调试设置转储