ZeroTierOne P2P 组网快速指南:3 条命令让异地设备连进同一内网,解决 NAT 穿透
【免费下载链接】ZeroTierOneA Smart Ethernet Switch for Earth项目地址: https://gitcode.com/GitHub_Trending/ze/ZeroTierOne
用 ZeroTierOne P2P 组网,异地设备可以互访、联机延迟问题也能缓解,前提是你得先把 NAT 这层墙捅穿。家庭网络都躲在 NAT 路由器后面,端口随机分配、入站 UDP 默认被拦,异地设备互相找不到,这才是联机卡、内网互访失败的真正原因。下面从安装到验证连通性,一次讲完。
它是怎么做到的
家庭和办公网络都在 NAT 后面:对外端口每次连接随机分配,入站 UDP 被默认拦截,所以两地设备无法直接互相寻址。ZeroTierOne 给每个设备分配一个 10 位唯一 ID,两个节点需要通信时先做 UDP 打洞尝试直连 NAT,打洞失败则自动改走公共中继保持可达。中继路径更慢,但至少保证能用。全部流量端到端加密,谁可以加入网络由网络所有者授权。你可以把它理解为:ZeroTierOne 把几台不同位置的电脑接进了"同一根网线"里,也就是一个虚拟二层网络,每台设备分到的 IP 在同网内任何地方都能 ping 通。
上手三步走
第一步:环境准备并安装服务
Linux 下用发行版软件包最省事,特定平台需要源码编译时,构建说明可参考 Makefile 和 doc/。
sudo dnf install -y zerotier-one这条命令从软件仓库安装 zerotier-one 服务,Debian 系把包名换成 apt 安装即可。
验证:
sudo zerotier-one --version能打印版本号,说明安装成功。
第二步:启动服务并验证节点身份
sudo systemctl enable --now zerotier-one这条命令启动服务并设为开机自启。
然后验证节点身份:
sudo zerotier-cli info能看到 10 位节点 ID 和服务状态即运行正常,记下这个 ID,后面授权要用。
第三步:创建网络并加入
在 Web 管理后台创建一个私有网络,拿到 16 位 NetworkID,建议勾选 Private 让网络只接受授权节点。然后执行:
sudo zerotier-cli join 80xxxxxxxxxxxxxx把占位符换成你的 NetworkID,这条命令让本机加入该 P2P 组网。
验证:
sudo zerotier-cli listnetworks等输出里 MANAGED 列出现 192.168.192.x 地址,说明授权完成、地址已分配,授权动作就是网络所有者在后台给你的节点勾选 Authorize。
效果验证与调优
同一网络的两台设备互 ping 对方的 ZeroTier IP,看平均延迟和丢包:
ping -c 10 192.168.192.x替换为对端设备地址;实测数值取决于两地距离和当时公网质量,这里只给方法不承诺数字。
两个可选调优项:
- ⚠️ 运行
sudo zerotier-cli listpeers看连接类型列:DIRECT 表示 P2P 直连,RELAYED 表示流量走了公共中继,延迟会更高,通常意味着某端 UDP 被拦截 - 想要更稳定的直连,可在路由器上手动把 zerotier-one 监听的 UDP 端口映射到你所在机器(先用
sudo ss -ulnp查端口,这条命令列出进程监听的 UDP 端口)
新手常见坑
- join 后状态显示 ACCESS_DENIED:授权没做。网络所有者要在后台给你的 10 位节点 ID 勾选 Authorize,细节见 doc/zerotier-cli.1.md
- 提示需要 sudo 或 root:控制本地服务默认要管理员权限,文档里也提供了复制授权令牌到用户目录的替代方案
- 连上了但联机延迟没降:先确认 listpeers 里是否 RELAYED,若是说明两端打洞失败走了中继,试试路由器 UDP 映射;对称 NAT 严格时走中继就是常态代价
适用边界:直连成立时延迟接近物理网络水平,两端 NAT 严格只能走中继时会明显偏高。下一步建议先用 listpeers 确认直连/中继状态,再决定要不要配路由器端口映射。
【免费下载链接】ZeroTierOneA Smart Ethernet Switch for Earth项目地址: https://gitcode.com/GitHub_Trending/ze/ZeroTierOne
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考