Tailscale + Clash + VPS 中继方案
Tailscale + Clash + VPS 中继方案
该方案是 个人网站与知识库 的网络基础设施扩展:Tailscale 负责可信节点互联,Clash / Mihomo 负责流量分流,VPS 提供代理出口、订阅和服务入口。
当前服务入口
linbo.lol 由 VPS 上的 Nginx 提供统一导航,目前包含:
note.linbo.lol知识库;- OpenDelivery 工作台;
- Clash / Mihomo 订阅;
- 3X-UI 管理;
- Headscale / Headplane 管理。
导航页负责发现服务;Nginx、认证层和各服务自身负责实际访问控制。
一句话概览
- 直连订阅(direct):设备直接使用 VPS 作为代理出口;
- 中继订阅(relay):Tailscale 节点先经过性能更强的中继主机,再从 VPS 出口访问外部网络;
- 规则复用:两类订阅共用分流规则,只替换代理出口。
架构
VPS
┌─────────┴─────────┐
│ │
Headscale Xray / 3X-UI
│ ▲
│ │
Tailscale 网络 │
│ │
┌───────┴────────┐ │
│ │ │
Laptop ══════ 中继主机 ─────────┘
│ P2P Clash
Clash
流量路径
Tailscale 节点
内网 / 本地服务
Laptop → Clash → DIRECT
需要代理的外部网络
Laptop → Clash → Tailscale → 中继主机 → Clash → VPS → Internet
中继主机与普通设备
内网 / 本地服务 → DIRECT
需要代理的外部网络 → VPS → Internet
订阅设计
VPS 对外提供两种逻辑订阅。实际地址和访问凭证不记录在公开笔记中:
https://<subscription-domain>/direct/<token>
https://<subscription-domain>/relay/<token>
| 订阅 | 使用对象 | 代理路径 |
|---|---|---|
direct |
中继主机、手机、非 Tailscale 设备、普通 Clash 客户端 | 设备 → VPS → Internet |
relay |
Laptop 及其他需要中继加速的 Tailscale 节点 | 设备 → 中继主机 → VPS → Internet |
设计原则
不依赖 hostname 或公网 IP 自动判断设备角色。客户端通过订阅地址明确选择路径,行为更可预测,也更容易排障。
配置组织
rules/
├── private.yaml
├── china.yaml
└── reject.yaml
templates/
├── direct.yaml
└── relay.yaml
公共规则保持一致,模板只指定不同的 PROXY:
direct: PROXY = VPS
relay: PROXY = 中继主机
职责边界
| 组件 | 职责 |
|---|---|
| Tailscale / Headscale | 可信设备组网和节点管理 |
| Clash / Mihomo | 按规则选择 DIRECT 或代理链路 |
| 中继主机 | 为 relay 客户端提供转发和加速 |
| Xray / 3X-UI | 管理 VPS 代理入站、客户端和流量 |
| Nginx | linbo.lol 服务导航和必要的反向代理 |
| Vercel | 独立承载 note.linbo.lol 静态知识库 |
安全边界
- 公开文档只记录架构,不记录真实 token、私钥和管理密码;
- Headscale、3X-UI 等管理端必须启用认证;
- 能走 Tailscale 私网的管理服务,不额外暴露公网端口;
- fine-grained GitHub Token 只授权单一仓库;
- 定期轮换订阅 token、GitHub Token 和服务凭证;
- Nginx 日志中避免记录带 token 的完整订阅 URL。
结论
使用“一套规则 + direct / relay 两个模板”兼顾普通设备和 Tailscale 节点。linbo.lol 作为统一入口,网络管理、代理出口和知识库仍保持独立部署与访问控制,便于维护和排障。