Zerotier自建Planet服务器实现openwrt异地组网
Zerotier自建Planet服务器实现openwrt异地组网
前言
现在国内的ip已经很少有外网ip了,动态dns已经不行了,而zerotier目前自己服务器很不稳定,没有外网ip很难建立连接,本文通过Zerotier自建Planet服务器实现openwrt异地组网,在家就可以轻松访问办公室电脑,同样,在办公室,也可以轻松访问家里的NAS设备,提高办公效率,实现更好的办公环境。
Zerotier简介
ZeroTier是一款利用UDP 打洞来实现内网穿透的工具,相比其他工具成功率更高、部署更简单。 其基本工作原理是组建一个虚拟局域网,各个设备(NAS、Linux、Windows、OpenWrt、Mac、iOS、Android)安装了客户端、加入到这个虚拟局域网后,就会自动分配一个IP,从而实现局域网内各个设备及服务的相互访问。
链接建立后,各设备之间是直接连接的,并不通过服务器中转,所以,服务器带宽,流量并不重要,只要保证各设备间速度即可。比如两地都属于电信网络,或者都属于联通网络,速度会更好。看一下Zerotier的原理图:
zerotier的一些专有名词:
- PLANET 行星服务器,Zerotier 官方根服务器,在国外。免费版最大支持25个设备连接。
- MOON 卫星服务器,私有根服务器,可以利用带有公网IP的云服务器自己搭建,起到代理加速的作用
- LEAF 网络客户端,连接到根服务器的网络节点,如上述提到的NAS、群晖、Linux、Windows等
现在使用Zerotier的官方根服务器建,没有公网ip已经很难链接上了(ipv6也可以链接),而且有25设备的限制,所以,这里通过自建planet行星服务,来实现异地组网,部署简单快捷,全球都可以访问。
Server端安装
1、购买一台服务器,开放3443的tcp和9993的UDP
MOON | UDP | 9993 | all |
Planet | TCP | 3443 | all |
2、连接到服务器(root),一键构建server端。
脚本来自https://gitee.com/opopop880/zerotier_planet
centos redhat系列下载如下命令 root权限执行
wget https://gitee.com/opopop880/zerotier_planet/raw/master/zerotier_planet.sh && chmod +x zerotier_planet.sh && ./zerotier_planet.sh
debain ubuntu 系列则安装 root权限执行
wget https://gitee.com/opopop880/zerotier_planet/raw/master/zerotier_planet_debain.sh && chmod +x zerotier_planet_debain.sh && ./zerotier_planet_debain.sh
服务器安装完成后会在脚本执行的目录 例如/root下生成planet文件。下载下来,后续要用。
3、安装成功后,登录网页界面:
打开 https://xx.xxx.xx.xxx:3443, 用户名admin 密码 password
出现如下页面就算成功。与zerotier官方控制器的思路一致。记住ztncui里面的地址
在这里,需要改一下用户密码,把原来的password改成你需要的密码,注意安全性。
4、添加网络。
点击添加网络,创建一个新的网络。自己去一个名字,点击创建后,创建一个新的网络。
创建后,进入网络界面,记下网络id。
5.网络基本参数设置
点击网络名称,进入网络后,点击简易安装,选择一个IP范围,点击提交。如192.168.10.0/24,如图:
这样,我们就创建了一个IP范围是192.168.10.1到192.168.10.254的网络地址。记住,自己路由器的ip范围不能与这个范围的相同,如路由器ip范围可以为192.168.1.1~192.168.1.254.
Client端安装
Server端安装完成后,就可以进行用户端安装了。用户端有Windows,Linux,或者路由器(OpenWrt)端安装。
安装OpenWrt路由器端的好处是,安装完路由器后,路由器下所有的设备,都可以自由的访问其它局域网设备,路由器下不管Windows,还是Linux,还是手机,都不需要额外安装客户端,极大的简化异地组网流程。
这里首先介绍OpenWrt路由器端安装。
- OpenWrt路由器安装ZeroTier
通过命令行安装或者用户界面软件包安装均可,如命令行安装:
opkg update
opkg install zerotier luci-app-zerotier
安装完zerotier后,使用前面下载的planet文件,替换路由器默认的planet文件。路径为/etc/config/zero/planet。替换后,进入zerotier页面,加入网络,
2. OpenWrt路由器ZeroTier设置
2.1 添加一个新接口。
进入网络,接口,添加新接口。新接口名字任意,比如是 zerotier,协议DHCP,包括以下接口,选择你的接口。如图:
同时,在接口的防火墙页面,设置防火墙,如图:
修改防火墙(部分Zerotier版本不需要这部分工作),在防火墙 – 自定义规则里面,添加如下内容:(注意 ztmjffourt 为接口名称)
iptables -I FORWARD -i ztmjffourt -j ACCEPT
iptables -I FORWARD -o ztmjffourt -j ACCEPT
iptables -t nat -I POSTROUTING -o ztmjffourt -j MASQUERADE
重启防火墙。
至此,OpenWRT设置方面,全部完成。在Zerotier的luci界面,启动Zerotier.
2.3 Zerotier设置路由器转发参数,并允许设备
OpenWRT里面的Zerotier启动后,进入到自己搭建的Zerotier的服务器,进入创建的网络后,就会看到刚刚加入的OpenWRT。把经授权的下面的复选框打钩,这样,就可以把路由器加入到网络里来了。
可以在成员名称位置,自己设定一个名称,这样,如果有更多的设备加入进来,自己也会清楚是哪个设备。另外,在IP分配的地方,可以点击IP地址,进入IP设置页面,改成你想要的IP。如图,IP为192.168.10.50。注意,这个IP地址是其它局域网或者设备访问这个路由器的IP地址。
同时,在ip设置页面点击 管理的路由(或者在网络页面,点击路由),进入路由设置,添加路由:
目标192.168.1.0/24(路由器IP地址范围),网关192.168.10.50(路由器的Zerotier IP),提交。这样,在其它的局域网可以直接通过192.168.1.xxx访问这个OpenWRT路由器管理的电脑。
设置完后,其它局域网OpenWRT路由器,也安装Zerotier,但是,IP范围要区分,比如192.168.2.0/24,这样,就可以通过IP地址跨局域网互访了。
2. 电脑端安装ZeroTier
在网站https://www.zerotier.com/download/下载PC端(Windows或者Mac),下载安装后(可能需要替换Planet文件,替换Planet文件需要停止Zerotier服务,planet文件位置C:\ProgramData\ZeroTier\One),加入上面创建的网络ID,启动后,进入到自己搭建的Zerotier的服务器,在网络页面,就会看到刚刚加入的电脑。把经授权的下面的复选框打钩,这样,就可以把电脑加入到网络里来了。同样,也可以设置电脑的名称,IP地址。其它局域网可以通过这个IP地址直接访问这台电脑。
3. 手机/Linux端安装ZeroTier。
这些客户端的安装,也是同理,安装后,加入网络,Zerotier服务器给他们授权,就可以访问了。
两地局域网测试
下面,看一下不同局域网下的电脑ping值。
通过局域网A ping 局域网B的路由器外网IP,111.11.111.116, 16ms
通过局域网A ping 局域网B路由器下的内网IP,192.168.1.10, 8ms
通过局域网A ping Zerotier服务器IP,122.22.222.227, 52ms
局域网电脑ping值远低于Zerotier服务器ping值,由此可以看到,电脑链接并不通过我们假设的Zerotier服务器。
再看看局域网电脑的文件拷贝速度:
拷贝速度6.57MB,(局域网宽带上传速度50Mb,理论速度8.25MB),接近宽带上传速度,也没有通过Zerotier服务器中转。
另外,使用局域网B的内网IP,访问远程桌面,速度飞快。
结语
通过Zerotier这个方法,两地或者多地建立大局域网,速度仅仅受限于宽带运营商的宽带速度,不受限于Zerotier服务器带宽,配置,可以用最低配的电脑实现服务器搭建,并不影响两地局域网速度,不管是异地组网,还是远程办公,都是一个很好的办法。