ZeroTier内网穿透
1. 背景
本来是使用FRP服务器来提供对外的网站服务的,但是FRP都是通过转发来实现,受到云服务器带宽的限制,如果想要远程看家里NAS里的视频就没法实现了,所以通过ZeroTier组建虚拟局域网,通过P2P进行连接,有效提高网速。
1.1 概念
本次使用ZeroTier需要在官网进行注册,然后需要准备一个公网服务器充当Moon服务器。这里说一下几个概念,本次搭建使用ZeroTier和Moon服务器。
PLANET 行星服务器,Zerotier 根服务器
MOON 卫星服务器,用户自建的私有根服务器,起到代理加速的作用
LEAF网络客户端,就是每台连接到网络节点
ZeroTier Moon 是一种辅助节点,充当中继点(但并不是中央服务器),通过配置 Moon 后,所有节点会优先尝试通过 Moon 节点建立直接连接,适用于需要内网穿透,且希望优化设备间连接的场景。
1.1 搭建条件
- 一台拥有公网 IP 的服务器(例如云服务器)。
- 已安装 ZeroTier 并完成基本配置。
2. 搭建
首先需要注册服务器,进入如下网站进行注册:
https://my.zerotier.com/
正常点击下一步就可以注册,注册完毕以后,记录NETWORK ID。

2.1 服务器安装Moon节点
2.1.1 安装ZeroTier
登录公网服务器,使用命令行:
curl -s https://install.zerotier.com/ | sudo bash
安装后显示Success则表示安装成功,输入如下指令,表示设置开机启动,并启动ZeroTier服务。
# 设置开机启动并使能
sudo systemctl start zerotier-one.service
sudo systemctl enable zerotier-one.service
# 查看程序状态
sudo systemctl status zerotier-one.service
如果显示Executing: /lib/systemd/systemd-sysv-install enable zerotier-one表示启动成功,则加入ZeroTier网络,这里的网络就是在ZeroTier的官网的网络。
sudo zerotier-cli join 你的网络ID
如果显示200 join OK表示加入成功。
2.1.2 配置Moon节点
首先生成moon文件:
cd /var/lib/zerotier-one
sudo zerotier-idtool initmoon identity.public > moon.json
编辑Moon.json的文件:
sudo vi moon.json
将 stableEndpoints 修改为服务器的 IP 地址,并添加对应的端口号,默认端口号9993。
请注意,端口号必须是在防火墙添加可以对外提供的
"stableEndpoints": ["服务器IP地址/9993"]
然后生成签名文件:
sudo zerotier-idtool genmoon moon.json
显示wrote 000000xxxxxxx.moon (signed world with timestamp xxxxxxxx),表示执行成功。
2.1.3 加入Moon节点
执行以下命令:
sudo mkdir moons.d
sudo mv 000000xxxxxxx.moon moons.d/
然后重启服务器 zerotier:
sudo systemctl restart zerotier-one
2.1.4 配置服务器安全组
在共有云服务器中的安全组允许如下规则:
- 协议:UDP
- 端口范围:
9993 - 来源:
0.0.0.0/0或指定可信设备的 IP 范围。
注意:是要允许UDP策略
3. OpenWrt配置
因为 OpenWrt var 目录是一个内存虚拟的临时目录,重启后原有配置不会保留。ssh 连接 OpenWrt,执行命令 vi /etc/init.d/zerotier,在 add_join() { 上方插入两行代码:
mkdir -p $CONFIG_PATH/moons.d
cp /root/moons.d/* $CONFIG_PATH/moons.d/
修改完成后在 /root 目录下创建 moons.d 文件夹,并将 000000xxxxxxx.moon 上传到该文件夹下,然后在 Web 界面重启 Zerotier ,然后重新查看
ls /var/lib/zerotier-one/moons.d/000000xxxxxxx.moon
/var/lib/zerotier-one/moons.d/
如果能看到对应的000000xxxxxxx.moon说明程序启动,可以通过以下命令验证:
# 查看zerotier是否正确启动
zerotier-cli info
# 查看openwrt是否加入Moon节点
zerotier-cli orbit 000000xxxxxxx.moon 000000xxxxxxx.moon
# 查看zerotier的节点信息
zerotier-cli listpeers
4. IOS配置
- 在 App Store 搜索 ZeroTier One,下载安装。
- 打开 ZeroTier 应用,登录后点击右上角的加号。
- 输入 ZeroTier 网络的 Network ID(可以在 ZeroTier 控制台查看)。
- 点击加入网络后,等待分配虚拟 IP。
- 在 ZeroTier 应用中,检查是否已分配到虚拟 IP(如
192.168.192.x)。- 确认与家里设备分配的虚拟 IP 在同一个网段。
这个时候虽然添加了对应的Network ID,但是点开服务器,会看到Status的状态是Access Denied,说明没有在ZeroTier加白。
- 确认与家里设备分配的虚拟 IP 在同一个网段。
5. ZeroTier根服务器配置
5.1 加白配置
登录 ZeroTier 官方控制台:https://my.zerotier.com,选择你正在使用的 ZeroTier 网络 ID,选择对应的ID进行授权。

5.2 允许客户端内网NAT
首先要在路由器上打开允许客户端NAT访问内网的开关,然后在ZeroTier的高级设置中添加对应的路由表。

Target: 192.168.1.0/24
Via: 155.144.40.4
192.168.1.0/24是 OpenWRT 的内网地址段。155.144.40.4是 OpenWRT 在 ZeroTier 网络中的虚拟 IP。
本文发布于2024年12月15日19:28,已经过了378天,若内容或图片失效,请留言反馈 -
obsidian修改字体间距
背景 我的方案是使用云盘进行obsidian的文件同步的,各端都使用云盘进行数据的同步。最近刚买了macmini,配置在obsidian同步的时候,macos不知道为什么".obsidian"隐藏文件...
2024/11/18
-
优必选小方头刷小智机器人
1. 背景 最近在调研看智能萌宠机器人,正好看到网上有人买了优必选的小方头机器来刷目前的小智,所以买来试试。小方头机器人在2019年9月20日发布,售价1099元,现在咸鱼100块钱就能买到;小智机器...
2025/03/27
-
【2】emlog&obsidan同步
因为我一开始是使用的hexo来做博客,但是编写文章一直都是使用obsidian来进行编写的,然后通过obsidian的git推送到云端,触发云端git仓库的钩子,将obsidian的文档同步到对应的文...
2025/10/31
-
【5】emlog增加微信、抖音
1. 添加个人信息 更新最新的github代码,因为数据库里没有微信等信息,需要更新数据库信息。 bash 登录 sudo mysql -u root -p 查看数据库 SHOW DATABASES;...
2025/11/01
求索空间
apostle9891
360视觉云
360智慧生活
gitea
导航
hoppscotch
暂无评论