<br />
<br />
整活背景
- 没有在论坛看到比较好的zerotier异地组网教程;
- zerotier 异地组网没有带宽限制,在没有公网IP的情况下,基本可以跑满上行带宽。而且免费,很稳定(已稳定使用两年多);
- zerotier 一次配置成功后,基本无需调整,还是比较推荐使用的。
异地组网目前可以解决的问题如下:
- 设备不在局域网内,通过异地组网可以直接IP访问NAS设备;
- 通过zerotier nas配置转发,异地设备可以通过IP访问局域网内的所有设备;
- NAS设备仅有公网IPV6,无公网IPV4,已通过DNNS绑定了域名情况下。但是外部环境没有IPV6环境的情况下,无法通过域名访问NAS设备,此时可以将IPV4局域网地址解析到DNS,即便没有公网IPV4,也可通过域名访问。
Zerotier 部署安装
-
前往zerotier官网,注册账号,并创建一个network。免费版一个network 最多支持17个设备,基本上也够用了。创建好之后如下图:
-
安装zerotier
通过ssh连接到nas服务器,在命令行中执行zerotier安装命令
curl -s https://install.zerotier.com | sudo bash
后续升级zerotier可使用如下命令:
sudo apt-get upgrade zerotier-one
配置zerotier开机自动启动:
sudo systemctl enable zerotier-one
-
zerotier 加入networkID
3.1 先启动zerotier容器;通过ssh连接到nas服务器,在命令行中执行如下命令:
sudo systemctl start zerotier-one
3.2 通过ssh连接到nas服务器,在命令行中执行命令加入networkID(第一步创建的network_id),请注意,下面的命令行中 {networkID} 请替换为第一步创建的networkID
sudo zerotier-cli join {networkID}
-
第三步执行结束后,进入zetotier官网,进如network详情页面。
在members列表中会出现一个新的设备
点击编辑图标,进入配置页面,勾选授权,记住虚拟网络IP地址,最后点击保存即可。返回到members列表中,Auth列为绿色时,则授权成功。
-
其他设备可以直接下载对应平台的软件安装即可,此处不再赘述。最终都需要加入networkID,以及在members列表中授权。
windows或mac系统中,安装zerotier后自动注册系统服务。无需每次开机启动
-
至此所有在members 列表中的设备可以通过虚拟网络中的IP互相访问。
zerotier 路由转发
如果家里设备比较多的情况下,推荐开启路由转发。这样的话所有加入虚拟网络的设备,可以直接通过局域网IP访问,nas设备所再网络的所有设备(如路由器、主机等)
-
zerotier配置路由规则
在Advanced配置页面,配置路由规则。
比如我家里的NAS 局域网IP地址为 192.168.1.2 zerotier虚拟网络地址为 10.147.17.4
那么需要在路由中,添加 Destination:192.168.1.0/24 Via:10.147.17.4
(大概的意思是将所有 192.168.1.*网段的请求转发至 10.147.17.4 这个网络即NAS主机zerotier虚拟网口)
-
nas zeroteir开启转发配置
通过ssh连接到nas服务器,在命令行中执行如下命令:(networkID 需要替换为第一步创建的networdID)
sudo zerotier-cli set {networkID} allowGlobal=1
sudo zerotier-cli set {networkID} allowDefault=1
sudo zerotier-cli set {networkID} allowDNS=1
-
nas 主机开启IPV4 IPV6的转发
通过ssh连接到nas服务器,在命令行中执行如下命令:
sudo sysctl net.ipv4.ip_forward=1
sudo sysctl net.ipv6.conf.all.forwarding=1
-
配置路由规则
通过ssh连接到nas服务器,在命令行中输入如下命令,注意修改网卡名称。
(通过输入 ip addr 可以获取所有的网卡信息,一般zt开头的即为zeroteir虚拟网卡名称 真是网卡名称直接通过飞牛网络配置页面获取即可)
sudo iptables -I FORWARD -i ztbto252yi(zero网卡) -j ACCEPT
sudo iptables -I FORWARD -o ztbto252yi(zero网卡) -j ACCEPT
sudo iptables -t nat -I POSTROUTING -o ztbto252yi (zero网卡)-j MASQUERADE
sudo iptables -t nat -A POSTROUTING -o vmbr0(真实网卡1) -j MASQUERADE
-
飞牛系统每次更新后会丢失第4步配置的路由规则,将命令放到shell脚本中,通过开机自启任务,每次开机去执行即可。
- 命令行输入: sudo vi /etc/init.d/zerotier-forward.sh
- 将第4步的命令复制到 zerotier-forward.sh 脚本中
- 保存zerotier-forward.sh 并赋予可执行权限 sudo chmod +x /etc/init.d/zerotier-forward.sh
- 命令行输入: sudo vi /etc/rc.local并写入如下脚本
#!/bin/sh -e
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
/etc/init.d/zerotier-forward.sh
exit 0
EOF
-
至此,所有加入虚拟网络的设备,都可以通过NAS的局域网IP去访问NAS了。并且电脑通过局域网IP挂在了共享位置,只要再有网的环境均可以访问NAS共享位置。
DNNS 域名解析配置
在NAS主机没有公网IPV4的情况下,并且已经配置了路由转发,可以再DNNS中IPV4地址通过网卡来获取。这样一来,即便电脑在没有IPV6的网络环境中,通过域名也能获取到局域网IP地址,最终通过路由转发也能通过内网穿透够访问到NAS。
参考资料
Linux/Ubuntu 中安装 ZeroTier,实现内网穿透,2分钟搞定_zerotier ubuntu-CSDN博客
zerotier进行net流量转发(内网访问) - 哔哩哔哩
Debian 12 解决 /etc/rc.local 开机启动问题 - 烧饼博客 |