Tailscale 多 Tailnet:管理多个组织与跨网络访问深度解析

引言 Tailscale 传统上在单一 tailnet(连接设备的安全私有网络)内运行。然而随着组织规模扩大,对多个隔离网络的需求日益增长。多 Tailnet 支持正是为此设计——允许单个 Tailscale 组织托管多个共享同一身份提供商(IdP)的 tailnet。这一功能解决了开发/预发布/生产环境隔离、客户服务隔离或沙箱测试等场景,且无需碎片化的身份管理。 本文深入解析多 tailnet 管理机制,并探讨跨 tailnet 访问的解决方案。 多 Tailnet 管理 启用多 Tailnet 多 tailnet 功能目前为 Alpha 阶段(截至 2026 年文档),需联系 Tailscale 销售团队启用: 提供显示名称(最多 65 个字符,支持字母、数字、空格、撇号、连字符)。 指定所有者(现有用户邮箱)。 选择是否"列出"(在登录选择器中可见)或未列出。 所有 tailnet 共享相同的域名和 IdP(例如 Google Workspace、Okta)。未来更新可能支持混合 IdP。 用户体验 登录选择器:用户登录时选择 tailnet。未加入的 tailnet 显示在底部(除非未列出)。 管理控制台切换:个人资料下拉菜单 → 选择 tailnet。 设备认证:OAuth 期间选择 tailnet 或使用各 tailnet 的认证密钥。 策略与配置 独立策略:ACL、标签、设备、设置均独立管理。 组同步:在一个 tailnet 启用后,可跨所有 tailnet 引用组(只读)。 用户审批:可限制加入。 ACL 示例(tailnet-policy 文件): // Tailnet 1: group1 访问预发布环境 { "acls": [ {"action": "accept", "src": ["[email protected]"], "dst": ["tag:staging:443"]} ], "tests": [ {"action": "check", "src": ["[email protected]"], "dst": ["tag:staging:443"], "expect": "deny"} ] } 可视化策略编辑器同样支持多 tailnet 配置。 ...

April 3, 2026

Tailscale ACL 策略管理深度解析

ACL 机制与策略结构 Tailscale ACL(Access Control Lists)在 tailnet policy file(huJSON)中定义,采用声明式 deny-by-default 模式。所有设备间连接均需显式授权。ACL 语法核心为 src(来源)和 dst(目标)规则,授权粒度精确到用户、组、标签和 CIDR。 基础语法结构 " ] a c { l s " " a : c t [ i o n " : " a c c e p t " , " s r c " : [ " u s e r : a l i c e @ e x a m p l e . c o m " ] , " d s t " : [ " t a g : s e r v e r : 2 2 " ] } action:accept(允许)或 drop(拒绝,隐式 deny)。 src/dst:支持 user:、group:、tag:、autogroup:、*。 端口协议:dst 格式为 [identity]:[port]/[proto],如 tag:prod:443/tcp。 Tags:服务节点身份体系 Tags(标签)是非用户设备专用身份标识,解决传统 IP-based ACL 的动态性问题。 ...

April 3, 2026

Tailscale Funnel 与 Tailscale SSH:公网暴露安全实践

摘要 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): s # # u d 状 关 o 态 闭 : : t a t t i a a l i i s l l c s s a c c l a a e l l e e f u f f n u u n n n e n n l e e l l - s 4 b t 4 g a 3 t u o - s f h f t t - p j s s = o 4 n 4 3 l o c a l h o s t : 8 0 8 0 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: ...

April 3, 2026

Tailscale Subnet Routers 与 Exit Nodes 实战部署与优化

引言 Tailscale 的 Subnet Routers 和 Exit Nodes 是构建零信任网络架构的核心组件,用于扩展 tailnet 访问本地子网或互联网流量。不同于 DERP(中继服务器,仅用于穿透 NAT 的 fallback),Tailscale 强调 WireGuard 内核级加密 + 策略路由,Subnet Routers 暴露物理子网路由(Layer 3 IP 转发),Exit Nodes 劫持默认路由(0.0.0.0/0),支持多跳拓扑和高性能内核模式。 部署基础:Flags 与系统预备 Subnet Router 部署 使用 tailscale up --advertise-routes=<CIDR> 广告路由,例如: s u d o t a i l s c a l e u p - a d v e r t i s e - r o u t e s = 1 9 2 . 1 6 8 . 1 . 0 / 2 4 , 1 0 . 0 . 0 . 0 / 8 前提:Linux/macOS/Windows,支持内核模式(Linux root)或用户空间(non-root/非 Linux)。 IP 转发启用(Linux 内核模式,必备): e e s c c u h h d o o o ' ' s n n y e e s t t c . . t i i l p p v v - 4 6 p . . i c p e _ n t f f c o . / r a s w l y a l s r . c d f t o l = r . w d 1 a / ' r 9 d 9 | i - n t s g a u i d = l o s 1 c t ' a e l e | e . - s c a u o d n / o f e t t c e / e s y - s a c t / l e . t d c / / 9 s 9 y - s t c a t i l l . s d c / a 9 l 9 e - . t c a o i n l f s c a l e . c o n f 未启用将导致路由黑洞。用户空间模式(--tun=userspace-networking)无需此步,但仅支持 TCP/UDP 重建。 Exit Node 部署 s u d o t a i l s c a l e u p - a d v e r t i s e - e x i t - n o d e 劫持客户端默认路由(0.0.0.0/0, ::/0),所有非 tailnet 流量经此节点上网。 客户端启用:tailscale up --exit-node=<TS-IP|hostname> 或 --exit-node=auto:any(自动选低延迟)。 LAN 访问:--exit-node-allow-lan-access 允许客户端保留本地网络(默认禁用,避免泄露)。 Admin 批准:Machines 页 Edit route settings → 启用 “Use as exit node” / “Use as subnet router”。 ...

April 3, 2026