摘要
Tailscale Funnel(公网 HTTPS 暴露)和 SSH(ts ssh Tailscale 托管 SSH)是两种核心公网暴露机制。Funnel 通过 --funnel CLI 实现公网反代,自动 Let’s Encrypt 证书;SSH 利用 Node Key 绕过传统公钥认证,依赖 ACL/Grants 细粒度控制。零信任原则:默认拒绝,ACL/Grants 显式授权。
1. Tailscale Funnel:公网 HTTPS 暴露核心
Funnel (tailscale funnel <target>) 将本地服务/文件暴露至公网 HTTPS,TLS 终止于 Tailscale Daemon。关键约束:
- 端口限制:仅 443/8443/10000。
- Target 类型:
| 类型 | 示例 | 行为 |
|---|---|---|
| HTTP 反代 | tailscale funnel localhost:3000 |
公网 → ts.net → 127.0.0.1:3000 (HTTP) |
| 文件/目录 | tailscale funnel /path/to/dir |
目录列表 + 文件服务 |
| 静态文本 | tailscale funnel 'text:Hello World' |
纯文本响应 |
| TLS 终止 TCP | --tls-terminated-tcp=443 localhost:8443 |
TCP 转发 + TLS 卸载 |
- CLI 示例(持久化
--bg): - DNS:稳定
node.ts.net子域,自动 CNAME 管理。 - PROXY Protocol:
--proxy-protocol=2保留客户端真实 IP(后端可见原 IP/端口)。
2. Tailscale Serve vs Funnel:内部 vs 公网对比
| 维度 | Serve (tailscale serve) |
Funnel (tailscale funnel) |
|---|---|---|
| 范围 | Tailnet 内(MagicDNS/100.x IP) | 公网(ts.net HTTPS) |
| TLS | 可选 Let’s Encrypt | 强制,Daemon 自动颁发/续期 |
| 端口 | 任意本地端口转发 | 限 443/8443/10000 |
| 用例 | 内网调试/协作 | 临时公网 Demo/Webhook 测试 |
| 风险 | Tailnet ACL 隔离 | 公网暴露,强制 ACL + Lock |
3. Tailscale SSH:托管 SSH 机制
tailscale ssh [user@]host 利用 WireGuard Node Key 双层加密,绕过传统 ~/.ssh/authorized_keys:
-
流程:
- Tailscale 拦截 Tailnet IP:22 流量 → Daemon SSH Server。
- Node Key 认证(Control Plane 分发公钥)。
- ACL
ssh规则授权(accept/check)。 - SSH “none” 认证(已知身份,无需密码/钥)。
-
Check Mode(高危绕过防护):
强制浏览器 SSO 再认证(默认 12h,MFA 支持)。
4. ACL/Grants + Tags:授权与节点隔离
Funnel 授权(nodeattrs):
SSH 规则(默认保守):
Tags(服务节点身份):
- 非用户设备专用(
--advertise-tags=tag:prod)。 - Ownership:
tagOwners: { "tag:funnel": ["[email protected]"] }。
5. 证书管理
- 自动:Funnel/Serve/Cert CLI 使用 Let’s Encrypt(90 天,Daemon 续期)。
- Funnel 特有:稳定 ts.net CN,ACME Challenge via DERP Relay(无公网 IP 需求)。
6. 安全加固实践
核心:默认拒绝 + 多层验证。
- ACL Hardening:Grants 优先;Policy
tests验证。 - Tailnet Lock:Node Key 签名(
tailscale lock),防私钥泄露/重放。 - Shields Up:
--shields-up阻入站(个人设备)。 - Stateful Filtering:
--stateful-filtering(Subnet/Exit Node,反向包丢弃)。
风险矩阵:
| 暴露类型 | 威胁 | 缓解 |
|---|---|---|
| Funnel | DDoS/扫描 | ACL Tag + 端口限 + PROXY IP |
| SSH | BruteForce | Check Mode + Node Key |
| 通用 | Key 泄 | Tailnet Lock + 即时吊销 |
参考:Funnel、Tailscale SSH、ACL。