异地组网全攻略:ZeroTier / Tailscale / Cloudflare 三大方案对比与实操教程

异地组网全攻略:ZeroTier / Tailscale / Cloudflare 三大方案对比与实操教程
luoli异地组网全攻略:ZeroTier / Tailscale / Cloudflare 三大方案
前言
你有没有遇到过这些问题?
- 人在公司或出差,想访问家里 NAS 里的文件、看监控,却要先折腾路由器端口映射;
- 想远程连接家里的电脑、内网里的打印机、摄像头,被公网 IP 和 NAT 卡住;
- 买了 VPS / 云服务器,想和家里的设备组成一个”局域网”,互相随意访问。
异地组网(也叫虚拟局域网、Mesh 组网 / VPN overlay)就是解决这些问题的钥匙:它把分散在不同地区、不同运营商网络里的设备,通过加密隧道”拉”进同一个虚拟局域网。之后你用家里的 IP(如 192.168.2.8)就能直接访问,不用再记一串公网 IP,也不用开放端口。
目前最主流的是三大方案:
| 方案 | 技术 | 适合人群 |
|---|---|---|
| ZeroTier | 自研 VL2 二层虚拟以太网 | 想自建网络、设备跨平台、免费额度大 |
| Tailscale | 基于 WireGuard 的现代组网 | 个人/小团队、追求简单零配置、免费设备不限 |
| Cloudflare | 企业级零信任 + Tunnel 内网穿透 | 已有 Cloudflare 账号、想把内网服务发布到公网 |
下面分别介绍原理、免费额度、以及最详细的实操步骤。
方案一:ZeroTier(全球可达的虚拟以太网)
简介与原理
ZeroTier 通过自研协议在公网上构建一个 Layer-2 虚拟以太网(overlay network),所有节点宛如连接在同一台交换机上。它核心的 P2P 架构没有”集中式瓶颈”——控制面用平台的协调服务器(my.zerotier.com)管理网络,数据面设备之间尽量直连(打洞穿透 NAT),打洞失败时自动走中继。
- 每个网络有一个 16 位十六进制 Network ID(如
8056c2e21c000001) - 每个设备加入后会获得一个 V4/V6 虚拟地址,网络内可自由互ping、互访端口
- 支持 Windows / macOS / Linux / Android / iOS / Docker / FreeBSD / OpenWRT 等几乎所有平台
- 官网:https://www.zerotier.com
免费额度
- 个人免费版:无限网络、每个网络最多 25 台设备,适合大多数个人家庭场景
- 更高需求走付费计划($179/月起的商业版等)
完整操作教程
第一步:注册并在网页创建网络
- 打开 my.zerotier.com,用邮箱/Google/GitHub 登录
- 点击 Create A Network(创建一个网络)
- 创建成功后,页面会显示一个 16 位 Network ID,复制保存备用
- 记下这个网络默认的 IP 段(如
10.244.x.x),这就是你虚拟局域网段的起点
第二步:在各类设备上安装客户端并加入网络
Linux(Debian/Ubuntu/CentOS 等),一行脚本安装:
1 | # 加载 ZeroTier 官方源并安装(纯静态编译,装完即用) |
Windows / macOS:到 下载页面 下载安装包,装好后在系统托盘找到 ZeroTier 图标 → Join Network → 粘贴 16 位 Network ID 即可。
手机(Android/iOS):应用商店安装 ZeroTier One,打开后点右上角 +,输入 Network ID 加入。加入后记得把系统的 VPN 开关打开,让隧道真正生效。
第三步:在后台授权(关键步骤,容易漏)
- 回到 my.zerotier.com 你的网络
- 在 Members(成员) 列表里,找到刚加入的设备
- 点击该成员行的 Auth 复选框(勾选变绿,即”通过认证”)
- 系统会自动给该设备分配一个虚拟 IP(如
10.244.x.x)
⚠️ 新设备加入网络默认是未授权状态,没有授权之前无法与网络内其他节点通信。必须手动勾选 Auth。这是 ZeroTier 新手最容易踩的坑。
第四步:验证连通
在某台设备上 ping 另一台的虚拟 IP,或直接 ssh zt用户@10.244.x.x 远程登录:
1 | ping 10.244.2.10 # 通说明组网成功 |
到这里,家里的 NAS、电脑、服务器的互相访问就打通了。
实用技巧
- 跨网段访问:如果想在虚拟网里直接访问真实局域网(如用
192.168.2.x访问家里所有设备),需要在某台 Linux 设备上开启 IPTables 转发 + NAT 并设置为路由设备,较复杂,家庭一般用虚拟 IP 直接访问即可。 - 网络隔离:可以给不同成员设置流控规则(Traffic Rules),实现只允许特定节点互通,保护内网安全。
方案二:Tailscale(基于 WireGuard,简单到极致)
简介与原理
Tailscale 基于开源的 WireGuard® 协议构建,但把最难的配置都自动化了:你在网页/后台做一次授权,客户端就用 密钥管理 + NAT 打洞(TURN/STUN)+ DERP 中继 自动建立 P2P 加密连接。设备之间的连接几乎总是直连,速度快、时延低。
- 设备就是你的”设备”(电脑、手机、服务器、NAS)
- 默认启用 MagicDNS:加入的设备自动获得
主机名.你的tailnet.ts.net这样的域名,不用记 IP - 支持 Windows / macOS / Linux / Android / iOS / 路由器(openwrt、Synology、OPNsense 等)
- 官网:https://tailscale.com
免费额度
Personal(个人免费版,非商业用途,永久免费):
- 设备数量无限
- 最多 3 个网络/账号(tailnet),每个最多 6 个用户
- 标记资源(服务器、子网路由等)50 个
- 用 Google / GitHub / 个人自定义域名注册即可,免费开箱即用
完整操作教程
第一步:注册并创建账号
打开 tailscale.com/login,用你的 Google / GitHub / Microsoft 等账号登录。首次登录会自动创建一个 tailnet(相当于你的私有组网空间),并分配一个子域名(如 my-xxx.ts.net)。
第二步:在设备上安装并登录
Linux:
1 | # 安装 |
执行 tailscale up 后终端会显示一个链接,用手机或电脑浏览器打开,登录你的账号并确认授权,回终端就会提示登录成功。
Windows / macOS:到 tailscale.com/download 下载安装,运行 App 后用账号登录即可。
手机:应用商店安装 Tailscale,登录同一账号,开启 VPN 开关。
第三步:查看设备与分配 IP
再次执行:
1 | tailscale status |
会看到类似输出,其中就包含每台设备的 100.x.y.z IP 和 MagicDNS 名称:
1 | # Health check: |
网上随便找一台设备 ping 你的主机名.ts.net 域名或 100.x IP,通了就成功。
实用技巧
① 子网路由(把整个家庭内网暴露给 Tailscale 网)
在 NAS / 路由器等 Linux 设备上,把家里局域网(如 192.168.2.0/24)”广播”给整个组网,这样你在外面直接用 192.168.2.8 访问家里所有设备:
1 | sudo tailscale up --advertise-routes=192.168.2.0/24 |
然后在后台 login.tailscale.com/admin → Machines → 找到这台设备 → Edit route settings → 勾选对应网段 → Save,宣告生效。
② 出口节点(Exit Node,全流量走它翻/统一出口)
把某台设备设为出口节点,手机上所有流量都经过它出去:
1 | sudo tailscale up --advertise-exit-node |
然后在手机 Tailscale App 里开启 Use exit node 选择该设备即可。
③ Tailscale SSH:tailscale ssh 主机名 免密登录,由 Tailscale 统一管理身份。
方案三:Cloudflare(企业级零信任 + Tunnel 内网穿透)
简介与原理
严格说,Cloudflare 和上面两个侧重点不完全一样。它提供一套 企业级零信任(Cloudflare Zero Trust) 体系,核心是 Cloudflare Tunnel(cloudflared):
- 在你的内网设备/服务器上跑一个轻量的
cloudflared守护进程 - 它主动向 Cloudflare 全球网络发起 出站(outbound-only)连接,无需公网 IP、不用在路由器开端口映射、不会被 NAT/防火墙阻挡
- Cloudflare 边缘节点再把请求”隧道”转发到你的内网服务
- 配合 Access 策略,实现”每个请求都需要身份验证”的零信任访问
- 官网:https://developers.cloudflare.com/cloudflare-one/
一句话对比:ZeroTier / Tailscale 偏重于”设备之间互联”(像 VPN),Cloudflare 更偏重于”把内网服务安全地发布给特定的人访问”(像内网穿透 + 访问控制)。
免费额度
- Cloudflare Zero Trust 免费版:最多 50 个用户
- 可创建多个 Tunnel,流量走 Cloudflare 免费 CDN
- 需要先有一个 Cloudflare 账号(可免费注册)并绑定一个域名做接入
完整操作教程(用 Tunnel 把内网服务发布出去)
第一步:注册 Cloudflare 并准备
- 打开 dash.cloudflare.com,注册账号
- 把一个域名接入 Cloudflare(在 Cloudflare 添加站点、改 NS 到 Cloudflare)
- 登录后左侧选你的站点,进入 Zero Trust(会引导你创建一个”团队域名”,如
myteam.cloudflareaccess.com,记住了以后访问用它)
实际上 Zero Trust 也可以不绑定域名直接开始试用,但要用 自定义域名 访问就必须先接入该域名。
第二步:安装 cloudflared 并创建隧道
在需要发布服务的内网 Linux 机器上:
1 | # Linux 安装 cloudflared |
登录成功后,自动把凭据写入到 ~/.cloudflared/cert.pem。
第三步:创建隧道并配置
1 | # 创建一条隧道,比如名字叫 home-elk |
编辑 ~/.cloudflared/config.yml:
1 | tunnel: <你的Tunnel-ID> |
第四步:运行隧道并绑定 DNS
1 | # 后台运行(生产建议用 systemd 托管开机自启) |
然后在 Cloudflare 后台给每个 hostname 加上一条 CNAME 记录:指向 <Tunnel-ID>.cfargotunnel.com(也可以用 cloudflared tunnel route dns home-elk nas.你的域名.com 一条命令自动添加)。
第五步:配置 Access 权限(零信任核心)
- 进入 Zero Trust → Access → Applications,添加一个 Self-hosted 应用
- 域名填
nas.你的域名.com - 在 Policies 里设置哪些身份可以访问(Gmail 邮箱、One-time PIN 邮箱、或 Allowlist 组织成员)
- 保存后,任何人访问
nas.你的域名.com都要先过 Cloudflare 的登录验证,验证通过才把请求隧道到你的内网服务
至此,你在公网任何地方,用浏览器登录 Cloudflare Access 后,就能安全访问家里 NAS 的 Web 界面了。
三方案对比速览
| 维度 | ZeroTier | Tailscale | Cloudflare Tunnel |
|---|---|---|---|
| 定位 | 虚拟以太网 / Mesh VPN | 现代 Mesh VPN(WireGuard) | 内网穿透 + 零信任访问控制 |
| 免费额度 | 每网 25 设备 | 设备无限、6 用户 | 最多 50 用户 |
| 数据层协议 | 自研 ZeroTier 协议 | WireGuard | cloudflared 加密隧道 |
| 是否要公网 IP | 否(打洞/中继) | 否(打洞/DERP) | 否(纯出站连接) |
| 是否需要绑定域名 | 不需要 | 不需要(有 ts.net 域名) | 需要(绑定后走自定义域名) |
| 最擅长的场景 | 设备间互联互通 | 设备互联 + 子网路由 + 出口 | 把内网 Web 服务安全发布 |
| 上手难度 | 中(需后台授权) | 低(最简单) | 中高(多一步 DNS/域名) |
| 平台覆盖 | 极广(含 OpenWRT/Docker) | 广 | 客户端为 cloudflared + WARP |
怎么选?
- 就想把自己的多台设备连在一起互相访问:首选 Tailscale,免费、几乎零配置、体验最好。
- 想自建网络、深度控制、设备类型特别多(含路由器/NAS 老设备):用 ZeroTier。
- 想把 NAS / 建站服务 / 内网 Web 应用暴露给信任的人访问,又要安全和管控:用 Cloudflare Tunnel + Access。
三者也可以混用:比如家里用 Tailscale 打通设备,再把其中的某台当作 Cloudflare 隧道入口发布给外部人员。
常见问题
Q:组网后速度慢是为什么?
A:多为 NAT 打洞失败走了中继(DERP / ZeroTier 中继)。开启 UDP 端口、减少设备前面的对称 NAT,通常能切回 P2P 直连,速度大幅提升。
Q:免费方案数据安全吗?
A:隧道都用现代加密(Tailscale 是 WireGuard,ZeroTier 是 VL2+加密),数据在传输中被加密。但要留意免费层通常是”控制面在厂商”——私网流量本身不经过厂商,只是打洞/中继的协调。
Q:在没网的环境(纯内网、无外网)能用吗?
A:不能直接用于完全离线环境;Tailscale/ZeroTier 首次握手依赖协调服务器,离线环境可用本地部署方案(Tailscale 有 self-hosted coordination 选项,Cloudflare 属云端)。普通有外网的家庭/办公场景无此问题。
Q:云服务器(VPS)也能加入组网吗?
A:完全可以。VPS 装客户端加入后,就成为虚拟局域网的一员,家里可以直接访问 VPS,反之 VPS 也能访问家里设备,方便做反向方向的服务。
Q:异地组网能代替公网 IP 吗?
A:对”设备间访问”(SSH、文件共享、远程桌面、访问 NAS Web)可以很好代替;对有严格公网入向要求的场景(比如给第三方发内网地址)则相对复杂,建议用 Cloudflare Tunnel 或纯公网。
参考资料
- ZeroTier 官网
- ZeroTier 下载(安装命令)
- Tailscale 定价(免费额度)
- Tailscale Linux 安装
- Tailscale 子网路由文档
- Cloudflare Zero Trust 文档












