方案说明
ABC三地,通过中心节点进行异地组网互相访问,且不影响其他访问方式;
现状
中心节点:debian24.02,独立IP,开放9993端口*(如果私有化部署就是必须的,通过Zerotier官方节点连接可以忽略)*
A地:内网openWrt路由
B地:PPPoE拨号上网,下接openWRT路由器
C地:openWRT路由器通过光猫拨号上网
目的
ABC三地openWRT路由器下的所有设备均可以访问其他几台openWRT路由器下的设备服务;
实现方法
1.账号注册
先到Zerotier注册SignUp账号;
注册登录后会Create A Network创建一个网络,复制下NETWORK ID备用;假设为000000aaaaaabbbbbb
创建完成点击ID进入管理页面,开始部署中心MOON节点;
2.中心节点
参考 ZeroTier 内网穿透,并搭建 moon 中转服务器
Linux(DEB/RPM)
curl -s https://install.zerotier.com | sudo bash
If you have GPG installed, a more secure option is available:
curl -s 'https://raw.githubusercontent.com/zerotier/ZeroTierOne/main/doc/contact%40zerotier.com.gpg' | gpg --import && \
if z=$(curl -s 'https://install.zerotier.com/' | gpg); then echo "$z" | sudo bash; fi
安装完成之后运行
zerotier-cli join 000000aaaaaabbbbbb #刚才复制的网络ID
之后进入管理页面,可以看到新加入的设备,Auth对加入的中心服务器进行授权;即可获取到IP,这里假设是 10.0.0.200
授权完成后服务器运行 以查看节点情况
zerotier-cli listpeers
余下步骤一样,参考上面的原文,另外我没有生成moon.json,因为在openwrt里做了开机启动脚本,下面会说
至此,中心节点部署完毕,准备openWRT的部署;
3.三地openWRT路由器的zerotier部署
可以在luci页面软件包安装zerotier,也可以命令行安装
opkg install zerotier #安装命令
安装完成后需要启用zerotier
vi /etc/config/zerotier enable 改为1
# vi /etc/config/zerotier
config zerotier 'sample_config'
option enabled '1'
option secret 'aaa222ccc:0:6b70d39a43b*****'
# wq!
启用和运行zerotier
/etc/init.d/zerotier enable
/etc/init.d/zerotier start
#查看状态
zerotier-cli info #查询信息
200 info ********** 1.12.1 ONLINE
#200 后面跟的是设备网络id,记住中心节点的就好,记不住就到网站管理页面看
#id后是版本以及在线状态
#zerotier-cli listpeers
200 listpeers 0cccb752f7 36.209.227.146/21028;30252;30062 190 1.14.1 LEAF
200 listpeers 2769b5f146 36.151.73.58/42225;22;810 19 1.10.2 LEAF
200 listpeers 4fbcd1ae88 2409:8a3c:1d0a:6c90::2/37856;824;13311 28 1.10.2 LEAF
...
#这里看到的是官方公共节点,但是没有moon节点下面将加入moon节点
先加入自己的网络
zerotier-cli join 000000aaaaaabbbbbb
将此设备加入到自己创建的网络,这时候需要去网页端去Auth授权下该设备,授权时顺手复制下中心节点的id,也就是Address那里,假设是2769AAAAA6
回到命令行,输入
zerotier-cli orbit 2769AAAAA6 2769AAAAA6
#特别注意,这里是需要输入两次中心节点的AddressID的
#之后查看连接情况
zerotier-cli listpeers
#如果中心服务器的后缀显示为 MOON则表示正常
zerotier-cli listnetworks
查看连接是否正常,如果后面有IP地址了,则正常
其他两台openWRT路由器相同方式部署,现在需要调通异地组网之间设备的连接
异地组网设备间的互相访问
防火墙设置端口转发
openwrt路由器设置端口转发的方法就不细说了,配置好,保证转发正常;
openWRT自动加入网络设置节点以及基于iptables的转发生效
openwrt登陆后设置启动项,配置本地启动脚本如下:
# Put your custom commands here that should be executed once
# the system init finished. By default this file does nothing.
#假设网络id是 0000AAAABB 中心节点ADDRESS ID是2769AAAAA6
zerotier-cli join 0000AAAABB && zerotier-cli orbit 2769AAAAA6 2769AAAAA6
#开启转发,这里假设zerotier的虚拟网卡名称为ztlaaa888x
iptables -I FORWARD -i ztlaaa888x -j ACCEPT && iptables -I FORWARD -o ztlaaa888x -j ACCEPT && iptables -t nat -I POSTROUTING -o ztlaaa888x -j MASQUERADE
exit 0
这里可以在openwrt的终端里opkg install curl 后对其他openwrt节点进行访问测试;
对于做好转发的openwrt节点,可以curl URL:端口进行测试
这就表示ABC三地的openwrt路由器节点和下面的设备之间是通的了,至于路由器怎么做转发以及防火墙就自行搜索吧
如果一切都没问题可以重启下openwrt路由器再进行一次测试,祝顺利
B点访问A点飞牛影视的测试: