🍱Tailscale & OpenWrt — 轻量组网与路由器固件的实用组合
约 2131 字大约 7 分钟
NetworkVPNTailscaleOpenWrt
2026-07-28
Tailscale 不是传统 VPN。它是一个基于 WireGuard 的零配置 mesh 组网工具,让设备像在同一个局域网一样互通。 配合 OpenWrt,能把这个能力铺到整个局域网,不需要每个设备都装客户端。
Tailscale 是什么
Tailscale 是一种 WireGuard-based mesh VPN 服务。它用协调服务器做控制面,设备之间建立直接的 P2P 加密隧道。
用户不需要理解证书分发、NAT 打洞或路由配置——一次登录,所有设备自动互通。
控制面只负责握手和设备发现,数据流不经过 Tailscale 服务器(除非 NAT 无法打穿,降级到 DERP 中继)。
与传统 VPN 的对比
| 特性 | 传统 VPN (OpenVPN/WireGuard 手动) | Tailscale |
|---|---|---|
| 拓扑 | 客户端 → 中心服务器(星型) | 点对点 Mesh |
| 配置 | 手动生成证书、配置路由 | 零配置,OAuth/SSO 登录即用 |
| NAT 穿透 | 需暴露公网端口 | 自动打洞(STUN + DERP 保底) |
| 密钥管理 | 手动分发 | 协调服务器自动签名,30天轮换 |
| ACL | 防火墙规则 / iptables | 声明式 JSON 策略 |
关键概念
Tailnet — 你的私人网络。所有通过同一个 Tailscale 账号授权的设备组成一个 tailnet,彼此用 Tailscale IP(100.x.x.x 段)互通。
DERP (Detour Encrypted Routing Protocol) — Tailscale 的全球中继层。当两个设备完全无法建立 P2P 连接时,流量自动降级到最近的 DERP 节点中转,全程加密。DERP 可自建。
MagicDNS — 每个设备获得 hostname.tailnet-name.ts.net 域名。不再需要记 IP。
ACL (Access Control Lists) — 声明式策略。用 JSON 定义谁可以访问谁的什么端口:
{
"acls": [
{"action": "accept", "src": ["tag:dev"], "dst": ["tag:prod:22"]}
]
}Tailscale SSH — 基于 SSH CA 的身份认证,不用单独配 SSH Key。Tailnet 内的设备可以用 tailscale ssh user@hostname 直接登录。
Taildrop — 设备间 P2P 文件传输,不走云盘。
Serve / Funnel — 将本地服务暴露到 tailnet(Serve)或公网(Funnel)。
使用场景与实例
场景 1:打通两台 VPS
两台云服务器,一台在香港(web),一台在新加坡(db)。传统做法是配 WireGuard 互相加 peer。
用 Tailscale:
两台机器分别装 Tailscale、登录
curl -fsSL https://tailscale.com/install.sh | sh sudo tailscale up浏览器跳转登录后自动加入同一 tailnet。
直接用 MagicDNS 或 Tailscale IP 互访
# 香港机器访问新加坡的数据库 psql -h sg-db.tailnet-name.ts.net -U appACL 只允许 web 访问 db 的 5432 端口
{"action": "accept", "src": ["100.x.x.2"], "dst": ["100.x.x.3:5432"]}
不需要任何端口开放、不需要 WireGuard config 文件。
场景 2:远程回家访问 NAS
家里是 Tailscale + OpenWrt 组合(详见下文)。出门在外,手机/笔记本连回家:
- iOS/Android 装 Tailscale 客户端,登录同一账号
- 打开 App,启用 VPN 开关
- 直接访问
192.168.1.x段的 NAS、摄像头、Home Assistant
为什么用 Tailscale
零配置是最核心的价值。传统 WireGuard 的问题从来不是加密强度,而是密钥分发、路由声明、NAT 打洞的全链路手动操作。
Tailscale 把这一切抽象成一次登录:
- 设备加入 tailnet:
tailscale up - 设备自动发现、自动建连
- 密钥 30 天自动轮换
- 服务端不需要任何开放端口
| 平台 | 安装方式 |
|---|---|
| Linux | curl -fsSL https://tailscale.com/install.sh | sh |
| macOS / Windows | 官网下载安装包 |
| iOS / Android | 应用商店 |
| OpenWrt | opkg install tailscale |
| Docker | docker run tailscale/tailscale |
免费层:最多 3 个用户、100 台设备,个人和小团队基本够用。
Tailscale 的架构细节
Tailscale 的 NAT 穿透流程:
- 设备 A 向协调服务器查询设备 B 的地址信息
- 设备 A 尝试直接连接 B(STUN 打洞)
- 如果失败,自动切换到最近的 DERP 中继节点
- 中继流量全程加密,Tailscale 公司看不到内容
- 打洞成功后,后续通信回归 P2P 直连
OpenWrt 作为补充
OpenWrt 是一个面向嵌入式设备的 Linux 路由器发行版,广泛用于替代消费级路由器的原厂固件。
为什么在路由器上装 Tailscale
消费级路由器固件通常功能有限且不开放扩展。OpenWrt 提供完整的 Linux 网络栈 + 包管理器,安装 Tailscale 后:
不需要客户端的三层接入。把 Tailscale 装到路由器上,所有连接这个路由器的设备(手机、笔记本、电视、IoT)自动获得 tailnet 可达性。
安装步骤
安装 Tailscale 包
opkg update opkg install tailscale启动服务并加入 tailnet
/etc/init.d/tailscale start tailscale up终端会打印一个 URL,浏览器打开后登录你的 Tailscale 账号。
配置开机自启
/etc/init.d/tailscale enable
子网路由:让 tailnet 访问整个局域网
默认只装了客户端,tailnet 里的设备只能访问路由器自己。要让它们访问整个 LAN 段:
tailscale up --advertise-routes=192.168.1.0/24 --accept-dns=false然后在 Tailscale Admin Console 批准这个路由声明。
之后任何 tailnet 设备都能直接访问 192.168.1.x 的设备,像在同一个局域网一样。
Exit Node:通过路由器出网
tailscale up --advertise-exit-node在 Admin Console 批准后,tailnet 设备可以把路由器设为出口节点,所有流量通过家庭宽带出去。适合公共 WiFi 或需要固定 IP 出网的场景。
完整组合拓扑
所有设备通过 Tailscale mesh 直连。VPS 可以访问家庭局域网 NAS,不需要 frp 或端口转发。
注意事项
- 闪存空间 — OpenWrt 的 overlay 空间有限,Tailscale + 依赖(ca-bundle, kmod-tun)约 5-8MB。小闪存机型可能需要 extroot。
- CPU 性能 — Tailscale 的加密在 MIPS 或低端 ARM 上有压力。千兆场景建议 ARM Cortex-A7 以上。
- 防火墙 — Tailscale 自动添加防火墙规则,但自定义策略要额外配置。
- 重启后路由丢失 — 子网路由参数要加在
/etc/config/tailscale或/etc/init.d/tailscale中持久化。
参考来源
以下为本文涉及的工具和文档的官方链接:
官方知识库,涵盖安装、ACL、子网路由、DERP 等全部功能
Tailscale 的背景与公司信息
开源路由器固件的官方项目主页
官方文档:在 OpenWrt 上安装配置 Tailscale
Tailscale 的开源兼容协调服务器实现
提示
如果有自建基础设施的癖好,还可以研究 Tailscale 的 自建 DERP(derper 项目)和 Headscale 自建控制面,实现完全不依赖 Tailscale Inc. 的私有组网方案。
