在传统的网络思维里,访问内网设备需要复杂的 DDNS 或暴露风险极高的端口转发。异地组网 (SD-WAN) 彻底颠覆了这一模式:它通过加密隧道将分散在世界各地的设备拉进同一个虚拟局域网。即使你的 VPS 在伦敦,NAS 在上海,手机在路边,它们也能像连在同一台交换机上一样互相访问。
🌐 什么是异地组网?
异地组网的核心在于虚拟网卡。每台加入网络的设备都会获得一个私有的 IP 地址(如 100.64.x.x)。这些设备之间通过基于 WireGuard 的加密协议直接通信(P2P 打洞)。如果两台设备由于复杂的防火墙无法直连,系统会自动通过中继服务器(Relay)进行转发。
⚖️ 方案选型:四大组网工具对比
2026 年主流的组网方案已经相当丰富,按需求选择:
| 工具 | 底层协议 | 自托管 | 配置难度 | 适合场景 |
|---|---|---|---|---|
| Tailscale ⭐ | WireGuard | Headscale 替代 | ⭐ 极简 | 个人/团队首选,一键组网,功能最丰富 |
| ZeroTier | 自研(L2层) | ZTNet 自托管 | ⭐⭐ 简单 | 需要二层透明组网、SMB/Bonjour局域网发现 |
| Netbird | WireGuard | 完全支持 | ⭐⭐ 简单 | 企业/团队,需要 SSO 登录和完全自托管 |
| WireGuard 原生 | WireGuard | 完全自控 | ⭐⭐⭐ 手动 | 极简两点互联,追求轻量无依赖 |
🦖 实战:Tailscale 极速组网
Tailscale 是目前公认体验最好的组网工具。它几乎不需要任何配置,且由于基于 WireGuard,性能极其彪悍。免费版支持 100 台设备 / 3 个用户,对个人完全够用。
# 1. 一键安装脚本 (官方支持绝大部分 Linux)
curl -fsSL https://tailscale.com/install.sh | sh
# 2. 启动并执行授权 (终端会给出登录 URL)
sudo tailscale up
# 3. 验证当前组网内的设备状态
tailscale status
# 4. 查看本机的 Tailscale IP
tailscale ip -4 运行后点击终端给出的链接,使用 Google/GitHub 账号登录即可完成认证。此时,你的 VPS 已经拥有了一个永久不变的内网 IP(100.64.x.x 段)。
✨ Tailscale 核心特性速览
🏠 进阶:Subnet Router 子网路由
Subnet Router 是 Tailscale 最实用的功能之一:在家庭局域网的一台设备上运行,可以让整个家庭局域网(如 192.168.1.0/24)对组网内所有设备可见,无需在每台设备上安装 Tailscale。
# ── Subnet Router:将整个局域网接入 Tailscale 网络 ──────────────────────────
# 在家庭局域网网关机(如树莓派/NAS/路由器)上执行
# 1. 开启 IP 转发
echo 'net.ipv4.ip_forward = 1' | sudo tee -a /etc/sysctl.d/99-tailscale.conf
sudo sysctl -p /etc/sysctl.d/99-tailscale.conf
# 2. 广播子网路由(将 192.168.1.0/24 替换为你的局域网网段)
sudo tailscale up --advertise-routes=192.168.1.0/24
# 如果有多个子网:
sudo tailscale up --advertise-routes=192.168.1.0/24,10.0.0.0/24
# 3. 在 Tailscale 管理后台审批路由
# https://login.tailscale.com/admin/machines → Edit route settings → 勾选子网
# 4. 其他组网设备开启"Accept Routes"
sudo tailscale up --accept-routes
# 5. 验证:在任意组网设备上 ping 家里局域网的内网 IP
ping 192.168.1.100 # 应该能 ping 通,就像人在家里一样 🔒 进阶:ACL 访问控制策略
默认情况下,Tailscale 组网内的所有设备可以互相访问所有端口(零信任但全开放)。在多人共用或服务器较多时,建议配置 ACL 策略:按标签(Tag)定义设备角色,精确控制"谁能访问谁的哪些端口"。
// Tailscale ACL 策略文件(HuJSON 格式,在管理后台 Access Controls 页面编辑)
// 文档:https://tailscale.com/kb/1018/acls
{
// 定义标签(打标签后可以按标签而非设备名控制访问)
"tagOwners": {
"tag:server": ["autogroup:admin"], // 服务器类设备
"tag:client": ["autogroup:admin"], // 客户端设备(手机/电脑)
"tag:monitor": ["autogroup:admin"], // 监控设备
},
// 访问控制规则(默认全部拒绝,需显式允许)
"acls": [
// 1. 管理员可以访问所有设备
{
"action": "accept",
"src": ["autogroup:admin"],
"dst": ["*:*"],
},
// 2. 客户端只能访问服务器的特定端口
{
"action": "accept",
"src": ["tag:client"],
"dst": ["tag:server:22,80,443,3000-9999"], // SSH + Web 服务端口
},
// 3. 服务器之间可以互相通信(用于数据库复制/备份等)
{
"action": "accept",
"src": ["tag:server"],
"dst": ["tag:server:*"],
},
// 4. 监控节点只能访问各设备的监控端口
{
"action": "accept",
"src": ["tag:monitor"],
"dst": ["*:9100"], // Node Exporter 端口
},
],
// SSH 配置:允许通过 Tailscale SSH 访问(不需要密钥文件)
"ssh": [
{
"action": "accept",
"src": ["autogroup:admin"],
"dst": ["tag:server"],
"users": ["autogroup:nonroot", "root"],
},
],
} ⚙️ 高阶:Exit Node 与 DERP 自建
1. 出口节点 (Exit Node)
这是一个极其强大的功能:你可以将这台 VPS 设为"出口节点"。这样,当你在星巴克使用不安全的公共 WiFi 时,可以一键让手机的所有流量都经过这台 VPS 转发,瞬间实现全域网络加密。
# 1. 开启系统 IP 转发功能
echo 'net.ipv4.ip_forward = 1' | sudo tee -a /etc/sysctl.d/99-tailscale.conf
echo 'net.ipv6.conf.all.forwarding = 1' | sudo tee -a /etc/sysctl.d/99-tailscale.conf
sudo sysctl -p /etc/sysctl.d/99-tailscale.conf
# 2. 启动时声明自己为出口节点
sudo tailscale up --advertise-exit-node
# 3. 在 Tailscale 管理后台审批该设备的 Exit Node 权限
# 访问 https://login.tailscale.com/admin/machines → 找到设备 → Edit route settings
# 4. 客户端连接时选择出口节点
tailscale up --exit-node=<exit-node-IP> # 命令行
# 或在手机/电脑的 Tailscale App 里图形化选择 2. 自建 DERP 中继服务器(国内加速)
国内网络环境复杂,P2P 打洞成功率有时不理想。Tailscale 官方节点在海外,延迟较高。进阶玩家通常会在国内 VPS 上部署 DERP 节点,强制让组网流量通过自己的国内服务器中继,将延迟从 300ms 降至 30ms。
# ── 在国内 VPS 上自建 DERP 中继节点 ─────────────────────────────────────────
# 1. 安装 Go 环境(DERP 用 Go 编写)
apt install golang-go -y
# 或者用官方最新版:
wget https://go.dev/dl/go1.22.linux-amd64.tar.gz
tar -C /usr/local -xzf go1.22.linux-amd64.tar.gz
export PATH=$PATH:/usr/local/go/bin
# 2. 安装 derper(Tailscale DERP 服务端)
go install tailscale.com/cmd/derper@latest
# 3. 申请 SSL 证书(DERP 需要 HTTPS)
certbot certonly --standalone -d derp.yourdomain.com
# 4. 创建 systemd 服务文件
cat > /etc/systemd/system/derper.service << 'EOF'
[Unit]
Description=Tailscale DERP Server
After=network.target
[Service]
Type=simple
User=root
ExecStart=/root/go/bin/derper --hostname=derp.yourdomain.com --certmode=manual --certdir=/etc/letsencrypt/live/derp.yourdomain.com --stun --verify-clients
Restart=always
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl enable --now derper
# 5. 在 Tailscale 管理后台配置自定义 DERP
# 访问 https://login.tailscale.com/admin/dnsplit
# 或在 ACL 策略中添加:
# "derpMap": {
# "OmitDefaultRegions": false, // 保留官方节点作为备份
# "Regions": {
# "900": {
# "RegionID": 900,
# "RegionCode": "cn-custom",
# "RegionName": "China Custom DERP",
# "Nodes": [{
# "Name": "1",
# "RegionID": 900,
# "HostName": "derp.yourdomain.com",
# "DERPPort": 443,
# "STUNPort": 3478
# }]
# }
# }
# }
# 6. 验证 DERP 节点可用
tailscale netcheck 🖥️ 完全自托管:Headscale 控制器
Headscale 是 Tailscale 控制平面(Coordination Server)的开源实现,100% 兼容 Tailscale 官方客户端,但控制权完全在自己手中。优势:无设备数量限制、数据不经过 Tailscale 服务器、控制服务器可以部署在国内(解决登录被墙问题)。
无设备限制
官方免费版限 100 台,Headscale 无限制
数据完全自控
控制平面数据不经过 Tailscale 服务器
解决国内访问
控制服务器部署在国内,登录认证不被墙
安装 Headscale
# ── Headscale:完全开源的 Tailscale 自托管控制服务器 ────────────────────────
# 官方文档:https://headscale.net
# 1. 下载最新版 Headscale
VERSION=$(curl -s https://api.github.com/repos/juanfont/headscale/releases/latest | grep '"tag_name"' | cut -d'"' -f4)
wget "https://github.com/juanfont/headscale/releases/download/${VERSION}/headscale_linux_amd64" -O /usr/local/bin/headscale
chmod +x /usr/local/bin/headscale
# 2. 创建配置目录和用户
mkdir -p /etc/headscale /var/lib/headscale
useradd -r -d /var/lib/headscale -s /bin/false headscale
# 3. 生成默认配置文件
headscale generate config > /etc/headscale/config.yaml 关键配置项
# 文件路径:/etc/headscale/config.yaml(关键配置项)
# 服务器地址(必须是 HTTPS,客户端用此地址连接)
server_url: https://headscale.yourdomain.com:443
# 监听地址
listen_addr: 0.0.0.0:8080
# 分配给设备的虚拟 IP 段
ip_prefixes:
- fd7a:115c:a1e0::/48
- 100.64.0.0/10
# DNS 配置(MagicDNS)
dns_config:
magic_dns: true
base_domain: headscale.internal # 设备通过此域名互访
nameservers:
- 1.1.1.1
- 8.8.8.8
# 数据库(默认 SQLite,生产可改为 PostgreSQL)
db_type: sqlite3
db_path: /var/lib/headscale/db.sqlite
# DERP 配置(可接入自建 DERP)
derp:
server:
enabled: false
urls:
- https://controlplane.tailscale.com/derpmap/default 日常管理命令
# ── Headscale 日常管理命令 ──────────────────────────────────────────────────
# 创建用户命名空间(相当于 Tailscale 的 Tailnet)
headscale users create myuser
# 生成设备注册 Key(用于新设备加入)
headscale preauthkeys create --user myuser --reusable --expiration 24h
# 查看已注册设备
headscale nodes list
# 删除设备
headscale nodes delete --identifier <node-id>
# 客户端连接 Headscale(替换官方控制服务器地址)
sudo tailscale up --login-server=https://headscale.yourdomain.com --authkey=<上面生成的PreAuthKey>
# 查看路由
headscale routes list
headscale routes enable --route <route-id> 🌍 实战:ZeroTier 经典组网
如果您更倾向于完全自主控制网络(不依赖第三方 OAuth 登录),或者需要处理更复杂的二层网络(Layer 2)协议(如 SMB 网上邻居、游戏局域网联机),ZeroTier 是更好的选择。
# 1. 一键安装 ZeroTier
curl -s https://install.zerotier.com | sudo bash
# 2. 加入虚拟网络 (将 NETWORK_ID 替换为控制台生成的 16 位 ID)
sudo zerotier-cli join NETWORK_ID
# 3. 检查连接状态
sudo zerotier-cli listnetworks
# 4. 查看当前节点信息
sudo zerotier-cli info ⚠️ 核心提示: 加入网络后,必须登录 ZeroTier Central 控制台,手动勾选新加入设备的 Auth 复选框,设备才能获得 IP 并通信。这是新手最容易卡住的地方。
🌙 进阶:ZeroTier Moon 国内加速节点
ZeroTier 的 P2P 失败时会通过官方 Root Server 中继,但官方节点在海外,国内延迟很高。Moon 节点是用户自建的私有 Root Server,部署在国内 VPS 上后,P2P 失败时优先走国内 Moon 中继,延迟从 200ms+ 降至 30-50ms。
# ── ZeroTier Moon 节点:国内 VPS 加速中继 ───────────────────────────────────
# 在国内低延迟 VPS 上执行以下步骤
# 1. 安装 ZeroTier(同普通节点)
curl -s https://install.zerotier.com | sudo bash
# 2. 获取当前节点 ID
sudo zerotier-cli info
# 输出格式:200 info <节点ID> <版本> ONLINE
# 记录下 10位 节点ID,如:abcdef1234
# 3. 生成 Moon 配置文件
cd /var/lib/zerotier-one
sudo zerotier-idtool initmoon identity.public > moon.json
# 4. 编辑 moon.json,添加服务器 IP 信息
# 找到 "stableEndpoints" 字段,修改为:
# "stableEndpoints": ["你的VPS公网IP/9993"]
# 例如:
# "stableEndpoints": ["123.45.67.89/9993"]
# 5. 生成 Moon 文件(生成 .moon 后缀的文件)
sudo zerotier-idtool genmoon moon.json
# 会生成一个类似 000000abcdef1234.moon 的文件
# 6. 将 .moon 文件放到 moons.d 目录
sudo mkdir -p /var/lib/zerotier-one/moons.d
sudo cp *.moon /var/lib/zerotier-one/moons.d/
sudo systemctl restart zerotier-one
# 7. 在所有其他设备上加入 Moon(执行两次是正确的)
sudo zerotier-cli orbit <节点ID> <节点ID>
# 例如:sudo zerotier-cli orbit abcdef1234 abcdef1234
# 8. 验证 Moon 连接
sudo zerotier-cli listpeers | grep MOON
# 看到 MOON 字样说明成功
# 9. 防火墙开放 ZeroTier 端口
ufw allow 9993/udp 🐦 新兴:Netbird 全自托管组网
Netbird 是 2023-2026 年快速崛起的开源 Mesh VPN,基于 WireGuard,对标 Tailscale 但完全支持自托管(包括控制平面)。支持 SSO 登录(Google/GitHub/Okta/自建 IDP),自带 Web 管理界面,非常适合需要团队协作且不想依赖 Tailscale 官方服务器的场景。
# ── Netbird:完全开源、可自托管的现代 Mesh VPN ──────────────────────────────
# GitHub: https://github.com/netbirdio/netbird (2025-2026 快速增长)
# 特点:完全兼容 WireGuard,支持 SSO 登录,自带 Web 管理界面
# ── 方案一:使用 Netbird 官方云服务(最简单)────────────────────────────────
# 在 app.netbird.io 注册账号,支持 Google/GitHub/微软 SSO 登录
# 免费版:5台设备,无限流量
# 安装客户端(Linux)
curl -fsSL https://pkgs.netbird.io/install.sh | sh
# 登录(自动打开浏览器授权)
netbird up
# 查看组网状态
netbird status
# ── 方案二:完全自托管(Netbird Self-Hosted)────────────────────────────────
# 前提:一台有公网 IP 的 VPS + Docker
# 1. 下载 Netbird 自托管部署脚本
curl -o docker-compose.yml https://raw.githubusercontent.com/netbirdio/netbird/main/infrastructure_files/docker-compose.yml
# 2. 下载环境变量示例文件
curl -o setup.env https://raw.githubusercontent.com/netbirdio/netbird/main/infrastructure_files/setup.env
# 3. 修改 setup.env 中的关键配置:
# NETBIRD_DOMAIN=vpn.yourdomain.com
# NETBIRD_LETSENCRYPT_EMAIL=your@email.com
# 4. 一键启动(自动申请 SSL 证书)
docker compose up -d
# 5. 客户端连接自托管服务器
netbird up --management-url https://vpn.yourdomain.com:443 🔧 极简:WireGuard 原生两点组网
Tailscale/ZeroTier/Netbird 都是基于 WireGuard 的上层封装,提供了自动发现和控制平面。如果您只需要固定两台机器互联,不需要多设备管理界面,可以直接使用 WireGuard 原生——配置文件只有十几行,无任何第三方依赖,内核级加密性能最高。
# ── WireGuard 原生两点组网(最轻量,手动配置)──────────────────────────────
# 适用场景:固定两台机器互联,不需要多设备管理界面,追求极简
# ── 服务端(VPS,有公网IP)────────────────────────────────────────────────
apt install wireguard -y
# 生成服务端密钥对
wg genkey | tee /etc/wireguard/server_private.key | wg pubkey > /etc/wireguard/server_public.key
chmod 600 /etc/wireguard/server_private.key
# 查看生成的密钥(记录下来)
cat /etc/wireguard/server_private.key # 服务端私钥
cat /etc/wireguard/server_public.key # 服务端公钥
# 创建服务端配置文件
cat > /etc/wireguard/wg0.conf << 'WGEOF'
[Interface]
Address = 10.10.0.1/24 # VPN 内网地址
ListenPort = 51820 # 监听端口
PrivateKey = <服务端私钥>
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
[Peer]
PublicKey = <客户端公钥> # 稍后填写
AllowedIPs = 10.10.0.2/32 # 客户端的 VPN 内网地址
WGEOF
# 开放防火墙端口
ufw allow 51820/udp
# ── 客户端(家庭/办公网络,可以没有公网IP)──────────────────────────────────
apt install wireguard -y
# 生成客户端密钥对
wg genkey | tee /etc/wireguard/client_private.key | wg pubkey > /etc/wireguard/client_public.key
# 创建客户端配置文件
cat > /etc/wireguard/wg0.conf << 'WGEOF'
[Interface]
Address = 10.10.0.2/24 # 客户端 VPN 内网地址
PrivateKey = <客户端私钥>
[Peer]
PublicKey = <服务端公钥> # 服务端公钥
Endpoint = <服务端公网IP>:51820 # 服务端地址和端口
AllowedIPs = 10.10.0.0/24 # 允许路由的网段(只走 VPN 内网)
# AllowedIPs = 0.0.0.0/0 # 全流量走 VPN(改成这个相当于 Exit Node)
PersistentKeepalive = 25 # 保持连接(NAT 穿透)
WGEOF
# ── 双方互相填写对方公钥后启动 ────────────────────────────────────────────
# 将客户端公钥填入服务端 wg0.conf 的 [Peer] PublicKey
# 将服务端公钥填入客户端 wg0.conf 的 [Peer] PublicKey
# 启动并设置开机自启
wg-quick up wg0
systemctl enable wg-quick@wg0
# 验证连接
wg show # 查看握手状态
ping 10.10.0.1 # 客户端 ping 服务端(应该通) 📊 架构对比:SD-WAN vs 内网穿透
| 维度 | FRP / 内网穿透 | Tailscale / SD-WAN |
|---|---|---|
| 安全性 | 需暴露端口到公网,易被扫描 | 完全不开放入站端口,零信任架构 |
| 配置难度 | 需要手动配置服务端和客户端 | 几乎零配置,一键登录 |
| 流量路径 | 所有流量必须经过 VPS 中转 | 优先 P2P 直连,速度不受 VPS 带宽限制 |
| 适用场景 | 将单个内网服务对外暴露(如 NAS 远程访问) | 多设备互联、访问内网全部资源 |
| 需要 VPS | 必须,且 VPS 带宽决定速度上限 | 可选(仅 DERP/Moon 中继时需要) |
| 管理界面 | 需自建或无 | Tailscale/Netbird 提供 Web 控制台 |
❓ 常见问题解答
Tailscale 和 ZeroTier 怎么选?有什么核心区别?
两者的核心差异:Tailscale 基于 WireGuard,配置极简(一键登录),P2P 打洞能力最强,个人免费版支持 3 个用户 / 100 台设备,最适合快速搭建、无需深度定制的场景。ZeroTier 工作在二层(Layer 2),能模拟真实以太网,支持广播/组播协议(如 SMB 网上邻居、Bonjour 局域网发现),更适合需要局域网级别透明互通(如 NAS 发现、游戏联机)的场景;控制权完全在自己手中,可完全自托管(ZeroTier Self-Hosted)。2026 年推荐选择:大多数人用 Tailscale 就够了;如果需要二层透明组网或企业级自托管控制,选 ZeroTier;如果需要 SSO + 完全自托管,考虑 Netbird;只需两点互联且追求极简,直接用 WireGuard 原生。
Tailscale 组网后两台机器延迟很高,如何判断是 P2P 直连还是中继?
执行 tailscale status,在输出中找到对方设备,查看连接状态:direct 表示 P2P 直连(延迟等于物理延迟),relay 表示通过 DERP 中继(延迟 = 物理延迟 × 2 + 中继节点延迟)。更详细的诊断用 tailscale netcheck,它会列出所有 DERP 节点的延迟并显示 UDP 打洞是否可用。打洞失败的常见原因:① 双方都在对称 NAT 后面(企业网络/运营商 NAT);② 防火墙拦截了 UDP 41641 端口;③ IPv6 未正确配置。解决方案:在延迟低的国内 VPS 上自建 DERP 节点,将中继延迟从 200-300ms 降至 30-50ms,即使无法直连也能有较好体验。
如何将整个局域网(而非单台机器)接入 Tailscale 网络?
使用 Subnet Router(子网路由器)功能(见本文章节):在局域网中选一台安装了 Tailscale 的设备(如 NAS 或树莓派),以该设备为网关,让整个子网的流量通过它路由到 Tailscale 网络中。步骤:① 开启 IP 转发;② 执行 sudo tailscale up --advertise-routes=192.168.1.0/24(替换为你的局域网网段);③ 在 Tailscale 管理后台审批该子网路由;④ 其他组网设备在"设置"中开启"使用子网路由"(--accept-routes)。完成后,您在世界任何地方都可以直接访问家里局域网内的设备(如 192.168.1.100),就像人在家一样。
Tailscale 免费版有什么限制?超过限制怎么办?
Tailscale 免费版(Personal):100 台设备、3 个用户(共享同一 Tailnet)、1 个子网路由器、无 ACL 策略限制。对个人用户来说完全够用。超出限制的方案:① 付费升级:Personal Pro $6/月,支持更多用户和高级功能;② Headscale(开源替代品)(见本文章节):完全兼容 Tailscale 协议的自托管控制服务器,无任何设备数量限制。在一台 VPS 上部署 Headscale 后,客户端将控制服务器指向自建服务器而非 Tailscale 官方,所有设备数据不经过 Tailscale 服务器,适合对隐私有高要求或需要 100+ 设备组网的场景;③ 改用 ZeroTier 自托管:ZeroTier 的 Moon 节点 + 自托管控制器,完全开源且无设备限制。
组网后如何访问组网内其他设备上的 Docker 容器?
直接用 Tailscale IP + 容器映射的端口访问即可。例如对方 Tailscale IP 是 100.64.1.2,容器端口映射为 -p 8080:80,则访问 http://100.64.1.2:8080。注意:容器端口必须绑定到 0.0.0.0(默认)而非 127.0.0.1,否则只监听本机。进阶用法:在对方机器上部署 Nginx 反代,将各容器服务统一用子域名暴露(如 nextcloud.internal.yourdomain.com),并在 Tailscale 网络内的 AdGuard Home(见第26篇)配置 DNS 重写,实现组网内的 DNS 服务发现——无需记忆端口号。
ZeroTier 加入网络后一直显示 REQUESTING_CONFIGURATION,无法获得 IP?
这是 ZeroTier 新手最常见的问题。ZeroTier 默认网络是私有网络,新设备加入后需要管理员手动授权,否则设备永远处于等待状态。解决步骤:① 登录 my.zerotier.com;② 点击您的网络 Network ID;③ 下滑到 Members 列表,找到新加入的设备(通过 Node ID 识别);④ 勾选该设备行左侧的 Auth 复选框;⑤ 稍等几秒,设备会自动获得分配的 IP 地址。如果自动分配的 IP 不在您期望的网段,在 Advanced → Managed Routes 中修改 IP 分配范围。
异地组网和 VPN 有什么区别?能替代 VPN 吗?
技术上,Tailscale/ZeroTier 本质上也是 VPN(虚拟私有网络)的一种形式,但使用场景不同:传统 VPN(OpenVPN/WireGuard 原生)通常是将所有流量通过一台 VPS 出口,用于翻墙或企业远程接入;异地组网(Mesh VPN)的设计目标是多设备互联,流量优先 P2P 直连,不走单一出口节点(除非开启 Exit Node)。能否替代传统 VPN?部分场景可以:通过 Exit Node 功能,Tailscale 可以实现"全流量走 VPS 出口",效果类似传统 VPN;但 Tailscale 和 ZeroTier 本身并不具备流量混淆能力,在 GFW 面前容易被识别和封锁,不适合作为翻墙工具(需要用第25篇的代理工具)。
组网设备之间的流量有加密吗?安全性如何?
Tailscale:基于 WireGuard 协议,所有流量使用 ChaCha20-Poly1305 加密,密钥交换用 Curve25519 椭圆曲线,每次会话密钥唯一,安全性极高(军用级别)。即使流量经过 DERP 中继服务器,Tailscale 的服务器也无法解密内容(端对端加密)。ZeroTier:使用 Salsa20/Poly1305 加密,也是端对端加密。ZeroTier 的控制平面走中央服务器,流量平面是端对端加密,两者分离。WireGuard 原生:同样是 ChaCha20-Poly1305 + Curve25519,由于没有中间服务器介入,隐私性理论上最高。Headscale 自托管将控制平面也纳入自己掌控,隐私程度最高。
Tailscale 在国内连接很慢甚至无法使用,有没有解决方案?
Tailscale 在国内的主要问题是:① 控制平面(login.tailscale.com)有时被墙,导致设备无法完成注册授权;② DERP 中继节点在海外,P2P 打洞失败时延迟极高。解决方案组合:① 自建 DERP 节点(见本文章节):在国内 VPS 上部署 DERP,在 Tailscale ACL 配置中将其设为优先 DERP 区域,打洞失败时走国内中继,延迟大幅下降;② 迁移到 Headscale(见本文章节):自托管控制服务器,访问控制平面变为访问自己的 VPS,彻底规避 Tailscale 官方域名被墙的问题;③ 使用 ZeroTier + Moon 节点(见本文章节):在国内 VPS 上搭建 ZeroTier Moon 节点,P2P 失败时优先走国内节点中继。
完成异地组网后,下一步应该做什么?
组网完成后,您的设备形成了一个安全的私密网络,按 30 篇路径的自然延伸:① 代理服务器搭建(第25篇):组网提供内网互通,代理解决出站流量问题,两者是互补关系——VPS 上的代理可以设置为只允许 Tailscale 内网 IP 访问,安全性大幅提升,参见代理服务器搭建;② 私有 DNS 服务(第26篇):在组网内的某台 VPS 上部署 AdGuard Home,为所有组网设备提供去广告、防污染的 DNS 解析,通过 Tailscale 的 Magic DNS 功能还能实现组网内的服务发现,参见DNS 服务器搭建;③ 监控组网节点状态:在 Uptime Kuma 中添加各组网节点的内网 IP 监控,实时掌握所有机器的在线状态,参见服务器监控指南。