zerotier 内网穿透实用教程

发表于:2024-11-25 16:23:17 技术整活 4002

<br /> <br />

整活背景

  1. 没有在论坛看到比较好的zerotier异地组网教程;
  2. zerotier 异地组网没有带宽限制,在没有公网IP的情况下,基本可以跑满上行带宽。而且免费,很稳定(已稳定使用两年多);
  3. zerotier 一次配置成功后,基本无需调整,还是比较推荐使用的。

异地组网目前可以解决的问题如下:

  1. 设备不在局域网内,通过异地组网可以直接IP访问NAS设备;
  2. 通过zerotier nas配置转发,异地设备可以通过IP访问局域网内的所有设备;
  3. NAS设备仅有公网IPV6,无公网IPV4,已通过DNNS绑定了域名情况下。但是外部环境没有IPV6环境的情况下,无法通过域名访问NAS设备,此时可以将IPV4局域网地址解析到DNS,即便没有公网IPV4,也可通过域名访问。

Zerotier 部署安装

  1. 前往zerotier官网,注册账号,并创建一个network。免费版一个network 最多支持17个设备,基本上也够用了。创建好之后如下图:

    image.png

  2. 安装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
  3. 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}
  4. 第三步执行结束后,进入zetotier官网,进如network详情页面。

    在members列表中会出现一个新的设备

    image.png

    点击编辑图标,进入配置页面,勾选授权,记住虚拟网络IP地址,最后点击保存即可。返回到members列表中,Auth列为绿色时,则授权成功。

    image.png

  5. 其他设备可以直接下载对应平台的软件安装即可,此处不再赘述。最终都需要加入networkID,以及在members列表中授权。

    windows或mac系统中,安装zerotier后自动注册系统服务。无需每次开机启动

  6. 至此所有在members 列表中的设备可以通过虚拟网络中的IP互相访问。

zerotier 路由转发

如果家里设备比较多的情况下,推荐开启路由转发。这样的话所有加入虚拟网络的设备,可以直接通过局域网IP访问,nas设备所再网络的所有设备(如路由器、主机等)

  1. 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虚拟网口)

    image.png

  2. 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
  3. nas 主机开启IPV4 IPV6的转发

    通过ssh连接到nas服务器,在命令行中执行如下命令:

    sudo sysctl net.ipv4.ip_forward=1
    sudo sysctl net.ipv6.conf.all.forwarding=1
  4. 配置路由规则 通过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
  5. 飞牛系统每次更新后会丢失第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
    • 保存rc.local 脚本,并授予可执行权限 sudo chmod +x /etc/rc.local
    • 最后启动debian自带的rc.local服务即可:
    • sudo systemctl enable --now rc-local
  6. 至此,所有加入虚拟网络的设备,都可以通过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 开机启动问题 - 烧饼博客

收藏
送赞 4
分享

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

发表回复

评论列表(27)

谢谢楼主,这个很详细
2024-11-25 20:38:15 回复
我速度只有6,7M,正常吗,2边都是1000M的网线,zeroteir多出来的网络2状态是100M
2024-11-26 13:16:27 回复
这个要看NAS所在网络环境的上行带宽了 六七兆的话,上行带宽也就是50Mb左右,估计也大差不差了  详情 回复
2024-11-26 15:34
这个要看NAS所在网络环境的上行带宽了
六七兆的话,上行带宽也就是50Mb左右,估计也大差不差了
2024-11-26 15:34:40 回复
安全吗??速度有多快??
2024-11-26 19:38:39 回复
安全肯定是安全的,速度的话取决于你的宽带的上行带宽。  详情 回复
2024-11-26 20:16
安全肯定是安全的,速度的话取决于你的宽带的上行带宽。
2024-11-26 20:16:09 回复
这种属于局域网模式 随时外网也能访问 但是有时候特别慢 受制于外面的服务器
2024-11-27 01:59:03 回复
是的,在没有公网IPV4的情况下,是个不错的免费方案了  详情 回复
2024-11-27 08:39
是的,在没有公网IPV4的情况下,是个不错的免费方案了
2024-11-27 08:39:09 回复
这个没有ipv6也可以吗
2024-11-28 14:14:31 回复
是的,不需要IPV6  详情 回复
2024-11-28 15:35
是的,不需要IPV6
2024-11-28 15:35:09 回复
很不错,感谢大佬持续的输出,飞牛因你更精彩
2024-11-29 09:58:12 1 回复
你好!
请问一下如果在有IPV6的情况下有什么简单、稳定的方法吗?
2024-12-1 12:27:42 回复
有公网IPV6的话,可以直接绑定域名使用。 但是这要求远程的设备也需要有IPV6网络环境,所以需要配合内网穿透一起来用。  详情 回复
2024-12-2 09:36
有公网IPV6的话,可以直接绑定域名使用。
但是这要求远程的设备也需要有IPV6网络环境,所以需要配合内网穿透一起来用。
2024-12-2 09:36:43 回复
请问楼主,我的飞牛装了openwrt,穿透后怎么访问openwrt的后台呢
2024-12-12 14:24:37 回复
弄好了,感谢,就是文末开启转发功能  详情 回复
2024-12-12 15:09
弄好了,感谢,就是文末开启转发功能
2024-12-12 15:09:28 回复
太奇怪了,没开启转发之前,电脑和手机都能远程访问的nas,开启之后手机能访问,而且可以访问nas所在局域网中设备,但是电脑死活访问不了,电脑和手机用的同一个网,电脑是有线,手机是WiFi
2024-12-12 15:35:20 回复
进行zerotier网站,检查下电脑是否连上zerotier 不行就将电脑上的zerotier 断了重连看看,手机能访问那电脑应该也能访问才对。  详情 回复
2024-12-12 16:29
进行zerotier网站,检查下电脑是否连上zerotier
不行就将电脑上的zerotier 断了重连看看,手机能访问那电脑应该也能访问才对。
2024-12-12 16:29:06 回复
已经可以了,过了一会重新连就连上了  详情 回复
2024-12-13 08:34
已经可以了,过了一会重新连就连上了
2024-12-13 08:34:28 回复
好像不配置路由规则也能用?
2024-12-13 15:04:31 回复
不配置路由转发,可以通过虚拟IP访问NAS 配了路由转发,可以直接通过家里局域网IP 访问家里所有的设备  详情 回复
2024-12-13 15:07
不配置路由转发,可以通过虚拟IP访问NAS
配了路由转发,可以直接通过家里局域网IP 访问家里所有的设备
2024-12-13 15:07:16 回复
飞牛系统每次更新后会丢失第5步配置的路由规则,将命令放到shell脚本中,通过开机自启任务,每次开机去执行即可。

楼主,这步我没看懂,第五步是哪一步,是配置路由规则这步吗,脚本咋写的,求教
2024-12-26 09:02:38 回复
到这一步 内网穿透加路由转发都已经好了,不影响使用了。 如何加入开机自动启动任务,我来更新一下教程吧  详情 回复
2024-12-26 14:06
到这一步 内网穿透加路由转发都已经好了,不影响使用了。
如何加入开机自动启动任务,我来更新一下教程吧
2024-12-26 14:06:04 回复
不建议 使用重度使用 zerotier 看电影 上传文件,
zerotier 用 udp 流量,运营商会qos,然后就会疯狂掉线
用来访问下UI ,看下状态还是很香的
2025-1-8 18:10:28 回复
这个得看什么宽带服务商,以及当地的政策 重度使用的话,确实会被限制,轻度使用的话就还不错  详情 回复
2025-1-9 10:24
这个得看什么宽带服务商,以及当地的政策
重度使用的话,确实会被限制,轻度使用的话就还不错
2025-1-9 10:24:55 回复
怎么卸载 docker里面看不到,但是是在运行的
7 天前 回复
这种安装方式,是安装到操作系统上的,需要用命令行去卸载。 sudo apt-get remove zerotier-one sudo dpkg -P zerotier-one sudo rm -rf /var/lib/zerotier-one  详情 回复
6 天前
这种安装方式,是安装到操作系统上的,需要用命令行去卸载。
sudo apt-get remove zerotier-one
sudo dpkg -P zerotier-one
sudo rm -rf /var/lib/zerotier-one
6 天前 回复
大佬,加入虚拟网络成功但是控制台显示blocked怎么办啊
前天 15:13 回复
可有截图啥的  详情 回复
昨天 10:28
可有截图啥的
昨天 10:28 回复
话题