ZeroTier 内网穿透在 Linux 下的高效部署与实战技巧

news2026/4/29 23:42:37
1. 环境准备与基础安装想在家里访问公司服务器上的文件或者远程管理老家父母的NAS又或者和异地的小伙伴组个游戏私服这些需求听起来很美好但现实往往是路由器防火墙、运营商NAT这些“拦路虎”把设备隔开了。这时候内网穿透工具就成了刚需。在众多工具里我折腾了一圈最后发现ZeroTier是那个最省心、最像“真内网”的选择。它不像一些工具需要复杂的端口映射而是直接给你组建一个虚拟的局域网所有加入的设备就像在一个真实的交换机下面用起来特别自然。今天我就以自己用了好几年的经验手把手带你在 Linux 系统上把 ZeroTier 部署起来并且分享一些实战中摸索出来的、能让网络更稳更快的技巧。整个过程我会尽量用大白话讲清楚哪怕你刚接触 Linux 也能跟着操作。1.1 系统检查与依赖安装在动手安装任何软件之前先看看自己的“地基”稳不稳这是个好习惯。ZeroTier 对 Linux 发行版的支持非常广泛主流的 Ubuntu、Debian、CentOS、Fedora、Raspberry Pi OS 都没问题。你只需要一个具有sudo权限的账户就行因为安装和启动服务都需要管理员权限。第一步咱们先把系统的软件包列表更新到最新。这就像去超市前先看看最新的商品目录避免拿到过期的货。打开你的终端根据你的系统类型执行对应的命令对于 Ubuntu、Debian 这类基于 APT 的系统sudo apt update sudo apt upgrade -y对于 CentOS、Fedora、RHEL 这类基于 YUM 或 DNF 的系统# CentOS 7 或更早版本 sudo yum update -y # CentOS 8 / Fedora / RHEL 8 sudo dnf update -y这个操作可能会花点时间取决于你系统更新的内容多少。更新完成后我们还需要一个工具curl。ZeroTier 官方的安装脚本是通过 curl 来下载的。检查一下你的系统有没有安装 curl很简单在终端输入curl --version看看有没有输出信息。如果没有就安装它APT 系统sudo apt install curl -yYUM/DNF 系统# CentOS 7 sudo yum install curl -y # CentOS 8/Fedora sudo dnf install curl -y这些准备工作做完我们的系统就 ready 了。这里我多说一句很多教程会直接让你运行安装脚本但先更新系统和安装 curl 这两步能避免至少80%因环境缺失导致的安装失败尤其是那些 minimal最小化安装的服务器系统。1.2 一键安装与服务管理基础打好了安装 ZeroTier 本身反而简单得惊人。官方提供了一个非常智能的一键安装脚本它能自动检测你的系统类型并安装正确的软件包。在终端里输入下面这条命令curl -s https://install.zerotier.com | sudo bash这条命令的意思是通过 curl 安静地-s 参数获取安装脚本的内容然后通过管道|传递给 sudo bash 来执行。整个过程中你会看到脚本在自动下载和安装相关的包。我实测在 Ubuntu 22.04 和 CentOS Stream 9 上都非常顺利大概十几秒就完事了。安装完成后ZeroTier 会以一个系统服务zerotier-one的形式存在。我们需要启动它并设置成开机自启这样就算服务器重启了虚拟网络也能自动连上。启动服务sudo systemctl start zerotier-one设置开机自启sudo systemctl enable zerotier-one怎么验证安装成功了呢用 ZeroTier 自带的命令行工具查一下信息sudo zerotier-cli info如果一切正常你会看到类似这样的输出200 info 1a2b3c4d5e 1.10.6 ONLINE这里的1a2b3c4d5e是你这台设备的唯一节点 IDNode ID后面是 ZeroTier 的版本号ONLINE状态表示服务运行正常且已准备好连接网络。看到这个恭喜你ZeroTier 客户端已经成功在你的 Linux 系统上安家了。这个节点 ID 非常重要等下在网页控制台授权设备时就是靠它来识别你这台机器的。2. 网络创建与精细化管理装好客户端只是第一步就像你买了部手机还得办张电话卡加入一个网络才能打电话。ZeroTier 的网络管理是通过一个中央控制平台Controller进行的官方提供了免费的云端控制器对于个人和小团队来说完全够用这也是它省心的地方。2.1 注册与网络创建首先你需要去 ZeroTier 的官网注册一个账户。这个过程和注册普通网站没什么区别用邮箱就能完成。注册登录后你会进入一个名为 “My Networks” 的控制台页面。点击那个醒目的“Create a Network”按钮。啪的一下很快啊一个全新的虚拟网络就创建好了。页面中间会生成一串 16 位的十六进制字符串比如a0b1c2d3e4f5g6h7这个就是你的网络 IDNetwork ID是这个世界里你专属虚拟局域网的“门牌号”任何设备想加入这个网络都必须知道这个 ID。你可以点击这个网络 ID 或者旁边的 “Manage” 按钮进入详细的网络配置页面。在这里我强烈建议你做两件事第一给网络起个自己能记住的名字Name比如 “Home-Server-Cluster” 或 “Game-Friends”第二把网络的访问控制模式Access Control设置为“Private”私密。这意味着新设备加入后必须由你网络管理员在控制台手动点击授权Auth勾选它才能真正接入网络并获取IP。这能有效防止别人误打误撞或者恶意加入你的内网安全性高很多。2.2 高级网络配置详解很多教程点到即止但要想网络好用这些高级配置值得琢磨。在网络管理页面你会看到几个重要的设置项IPv4 Auto-Assign这是 ZeroTier 自动分配 IP 地址的池子。默认是从10.147.17.*或192.168.196.*这样的段里分一个给你。你可以自定义一个你喜欢的网段比如172.28.0.0/16。我个人的习惯是用一个和自己物理局域网比如家里是192.168.1.0/24完全不同的网段避免路由混淆。IPv6 Auto-Assign如果你有 IPv6 的需求可以在这里配置 NDP 或 SLAAC 来自动分配 IPv6 地址。对于纯 IPv4 环境可以先不管。Easily Operated Network这个选项如果开启ZeroTier 的根服务器会帮你做流量中转。在你设备之间无法直接建立 P2P 连接时也就是打洞失败流量会走这个“中转通道”。对于绝大多数在 NAT 后的设备建议保持开启这是保证连通性的最后保障。Bridge这个功能慎用。它允许你的 ZeroTier 虚拟网卡桥接到物理网络让同一物理局域网内的其他设备也能通过这台桥接设备访问虚拟网络。配置相对复杂且需要系统支持新手可以先跳过。配置完这些点击页面下方的 “Save Changes” 保存。一个配置得当的网络是后续稳定使用的基础。我自己的经验是网段规划清晰私密模式打开中转功能开启这个组合拳下来网络既安全又可靠。3. 加入网络与设备授权网络在云端配置好了接下来就是让我们的 Linux 设备“入户”了。这个过程分为两步客户端发起加入请求管理员在云端批准。3.1 使用命令行加入网络回到你的 Linux 终端使用zerotier-cli join命令后面跟上你那串 16 位的网络 ID。假设我的网络 ID 是a0b1c2d3e4f5g6h7那么命令就是sudo zerotier-cli join a0b1c2d3e4f5g6h7执行后如果成功会返回200 join OK。这条命令的本质是向 ZeroTier 的根服务器注册并申请加入指定网络。此时你的设备会出现在网络控制台的 “Members” 成员列表里但它的前面是没有勾选“Auth”授权框的状态可能是 “REQUESTING_CONFIGURATION”请求配置。3.2 在控制台完成授权现在刷新你的 ZeroTier 官网控制台页面在对应网络的成员列表里你应该能看到一个新设备。怎么认出它呢主要看两列“Address” 列显示的就是我们之前用zerotier-cli info看到的那个节点 ID“Name” 列可能为空或者是一串默认名。为了管理方便我强烈建议你立刻做两件事在 “Name” 列给这个设备起个名比如 “My-Ubuntu-Server”、“Office-NAS”一目了然。勾选这个设备前面的 “Auth” 复选框。一旦勾选授权ZeroTier 控制器就会将网络的配置信息比如分配的 IP 地址段、路由规则等推送给这台设备。稍等几秒钟你回到 Linux 终端再次输入sudo zerotier-cli listnetworks这次你应该能看到详细的网络信息了类似200 listnetworks a0b1c2d3e4f5g6h7 Home-Server-Cluster PRIVATE zt0 172.28.147.93/16 OK这里172.28.147.93就是 ZeroTier 自动分配给这台设备的虚拟局域网 IP 地址zt0是虚拟网卡接口名。看到状态是OK并且有具体的 IP 地址就说明设备已经正式成为虚拟网络的一员了。你可以用ip addr show zt0或ifconfig zt0命令来查看这块虚拟网卡的详细信息。4. 连接测试与基础优化设备都上线了接下来就是检验成果的时刻。我们需要测试虚拟网络内的设备是否能互相通信并了解一些影响体验的关键因素。4.1 跨设备连通性测试假设你有另一台设备比如家里的 Windows 电脑也加入了同一个 ZeroTier 网络并获得了 IP172.28.22.101。现在在你的 Linux 服务器上就可以直接 ping 这个 IPping 172.28.22.101如果能看到正常的 ping 通回复那么恭喜最基本的虚拟局域网已经打通了你可以像在真实局域网里一样用这个 IP 进行 SSH 连接、访问共享文件夹Samba/NFS、连接数据库等操作。例如 SSH 连接ssh username172.28.22.101这种体验非常奇妙无论这两台设备实际相隔多远身处哪个运营商网络下现在它们就像在同一个路由器下面一样。4.2 理解连接模式与优化思路这里有一个非常重要的概念ZeroTier 会尽力在设备间建立P2P点对点直连。如果直连成功延迟和速度就取决于你设备各自的宽带上传下载速度通常是最优的。你可以通过以下命令查看某个对端设备的连接状态sudo zerotier-cli listpeers在输出列表中找到对应节点的 ID查看 “PATH” 列。如果显示的是对方设备的公网 IP 和端口那说明是 P2P 直连。如果显示的是 ZeroTier 的根服务器地址比如104.194.182.xxx那就说明直连失败当前流量正在通过官方的“中转服务器”Moon/Planet进行转发。中转虽然保证了连通性但会引入额外的延迟速度也受限于中转服务器的带宽。所以我们的优化目标就是尽可能促成 P2P 直连。影响直连成功的常见因素有对称型 NATCarrier-Grade NAT这是很多家庭宽带和移动网络的现状打洞极其困难。防火墙规则设备本地或网关上的防火墙阻止了 ZeroTier 使用的 UDP 端口默认是 9993。多层 NAT比如设备在路由器后面而路由器又在运营商的大 NAT 后面。对于防火墙问题解决方案相对明确确保 UDP 9993 端口在本地防火墙如ufw或firewalld和路由器如果设备在内网上是放行的。例如在 Ubuntu 使用 UFW 时sudo ufw allow 9993/udp sudo ufw reload对于顽固的对称型 NAT 导致的无法直连一个进阶的优化手段是自建 Moon 服务器。Moon 是用户自己搭建的“锚点”服务器它拥有公网 IP 和开放的端口可以帮助位于复杂 NAT 后的设备进行中介和引荐显著提高 P2P 连接的成功率。由于搭建 Moon 涉及在公网服务器上安装配置 ZeroTier 并开放端口步骤稍多但效果显著是追求极致网络质量的必由之路。5. 实战技巧与故障排查用了这么多年 ZeroTier光会安装和 ping 通是远远不够的。下面这些实战中积累的技巧和踩过的坑可能才是让你网络真正“好用”的关键。5.1 路由配置与访问物理局域网默认情况下ZeroTier 虚拟网络是独立的。也就是说你通过 ZeroTier IP 只能访问其他也加入了该虚拟网络的设备。但有时候我们需要一个“跳板”功能比如通过一台位于公司内网的 Linux 服务器加入了ZeroTier去访问公司内网的其他物理设备如打印机192.168.5.100。这就需要配置Managed Routes托管路由。在 ZeroTier 网络控制台的 “Advanced” 设置里找到 “Managed Routes” 部分。你可以添加这样的路由规则Target目标网络:192.168.5.0/24这是公司物理局域网网段Via经由:172.28.147.93这是你那台公司 Linux 服务器在 ZeroTier 内的 IP添加并保存后网络内的其他 ZeroTier 设备比如你家里的电脑在访问192.168.5.100时流量就会先通过 ZeroTier 虚拟网络走到公司那台服务器172.28.147.93再由那台服务器转发到公司物理网络。这相当于给你的虚拟网络开了一条通往特定物理网络的“专用隧道”。配置时务必确保作为网关的那台 Linux 服务器开启了系统的 IP 转发功能net.ipv4.ip_forward 1。5.2 服务自启与状态监控我们之前用systemctl enable设置了服务自启但有时候系统更新或其他服务冲突可能导致 ZeroTier 启动失败。一个加强健壮性的小技巧是使用 systemd 的Restart策略。你可以为 zerotier-one 服务创建一个 drop-in 配置文件如果默认没有的话sudo systemctl edit zerotier-one在打开的编辑器中加入以下内容[Service] Restarton-failure RestartSec10保存退出。这样当 ZeroTier 服务异常退出时systemd 会在 10 秒后自动重启它。对于长期运行的服务这个设置很实用。监控方面除了systemctl status zerotier-one还可以定期用zerotier-cli listnetworks检查网络状态。如果发现状态不是OK比如变成了ACCESS_DENIED被取消授权或者PORT_ERROR端口错误就能快速定位问题。5.3 常见问题与解决方案问题zerotier-cli join后在控制台一直看不到设备。排查首先确认 join 命令输入的网络 ID 是否正确。然后检查 Linux 主机的网络是否能正常访问互联网特别是能否访问 ZeroTier 的服务器如api.zerotier.com。可以尝试sudo systemctl restart zerotier-one重启服务再重新 join。问题设备已授权Auth打勾但listnetworks显示状态为REQUESTING_CONFIGURATION且没有 IP。排查这通常是 ZeroTier 控制器和客户端之间的配置同步稍有延迟。等待一两分钟通常会自动解决。也可以尝试在客户端执行sudo zerotier-cli leave network_id然后重新 join强制刷新配置。问题能 ping 通其他 ZeroTier 设备 IP但无法通过 IP 访问其上的服务如SSH、Web。排查这极大概率是目标设备本地的防火墙没有放行对应服务端口。比如你的 Linux 服务器上开了 SSH22端口但防火墙只允许本地局域网访问。你需要修改防火墙规则允许来自 ZeroTier 虚拟网卡zt0的流量或者直接允许来自 ZeroTier 整个网段如172.28.0.0/16的流量。例如用 UFWsudo ufw allow from 172.28.0.0/16 to any port 22。问题连接速度慢延迟高。排查先用zerotier-cli listpeers查看连接是否是 P2P 直连。如果走的是中转Relay速度慢是正常的。可以尝试优化网络环境确保两端设备的 UDP 9993 端口在路由器上已做转发如果设备在内网考虑为网络部署自建的 Moon 服务器来改善中继效率检查本地是否有其他占用大量上传带宽的程序。6. 命令速查与进阶资源最后我把最常用的 ZeroTier 命令行整理一下方便你随时查阅。这些命令覆盖了日常管理和故障排查的大部分场景。# 核心信息查询 sudo zerotier-cli info # 查看客户端信息和状态 sudo zerotier-cli listnetworks # 列出已加入的所有网络及详情 sudo zerotier-cli listpeers # 列出已知的对等节点及其连接路径 # 网络管理 sudo zerotier-cli join 网络ID # 申请加入一个网络 sudo zerotier-cli leave 网络ID # 离开一个网络 sudo zerotier-cli orbit 节点ID 节点ID # 让客户端知晓并连接至 Moon 节点 # 服务控制 sudo systemctl start zerotier-one # 启动服务 sudo systemctl stop zerotier-one # 停止服务 sudo systemctl restart zerotier-one # 重启服务常用 sudo systemctl status zerotier-one # 查看服务运行状态 sudo journalctl -u zerotier-one -f # 实时查看服务日志调试神器 # 网络诊断 ping ZeroTier_IP # 测试到另一台ZeroTier设备的连通性 traceroute ZeroTier_IP # 追踪到目标IP的路由路径 ip addr show zt0 # 查看ZeroTier虚拟网卡的详细配置当你熟练掌握了基础部署后如果想进一步深入可以研究两个方向一是自建 Moon/根服务器这能极大提升在复杂网络环境下的连接成功率和自主性二是结合iptables/nftables设置更精细的流量控制策略比如只允许虚拟网络访问特定的物理内网服务提升安全性。这些进阶内容需要更多的网络知识但能让你对 ZeroTier 的掌控力再上一个台阶。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2411885.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…

网络编程(Modbus进阶)

思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…