.title[Fully Self-hosted Tailscale] .subtitle[A naive solution to overlay network] .author[Yongfu Wang] --- # Overlay Network - 运行在其他网络上的网络 - ~~谁不想拥有一个遍布全球的大内网~~ --- # 现有解决方案 ## 静态配置 VPN e.g. IKEv2, SSTP, GRE - 配置繁琐 - 没有 NAT 穿透能力 - 预定义的静态路径 ## Hub and Spoke e.g. DMVPN, WGSD - 难以穿透 NAT - 本质是个自动配置的 VPN ## Mesh VPN e.g. Tinc - 需要同步配置 - 加节点非常麻烦 ## Managed Mesh VPN e.g. ZeroTier, Tailscale - ~~要钱~~ --- # Tailscale 的优势 - Full Mesh,缓解带宽瓶颈和 SPoF - 自动打洞,可以应对恶劣的网络环境 - 可以自建中继节点 - Based on WireGuard --- # Phase #1: 开箱即用 Tailscale ## Steps 1. 在 `https://login.tailscale.com/start` 注册帐号,创建网络 2. 下载客户端,加入网络 3. Done # Cons - 免费版最多 20 个设备 - 中继节点都在境外,打洞不成功的话连接性较差 --- # Phase #2: Self-hosted Login Server - Headscale 实现了 Tailscale Login Server 协议,可以用来自建 Login Server 绕过相关限制 详见 `https://github.com/juanfont/headscale/blob/main/docs/running-headscale-linux.md` 1. 下载 Headscale 2. 按 `https://github.com/juanfont/headscale/blob/main/docs/running-headscale-linux.md` 配置 3. 加入网络 `tailscale up --login-server
` --- # Phase #3: Self-hosted Login Server and DERP ## [Self-hosted DERP](https://tailscale.com/kb/1118/custom-derp-servers/) - DERP Server: 用于中继 UDP 打洞失败的主机间的流量 - 先决条件:Stable Endpoint:公网 IP 上的一个 TCP 端口 ```shell go install tailscale.com/cmd/derper@main sudo derper --hostname=your-hostname.com ``` --- # Phase #3: Self-hosted Login Server and DERP ## Pros - 完全与 Tailscale 官方网络隔离 - 享受更近更快的中继节点 - 免费 ## Cons - 需要在每一个节点上指定 Login Server - 无法加入官方 Tailscale 上的网络 --- # Phase #3: Self-hosted Login Server and DERP! ## 半隔离方案 - 在 Headscale 配置文件中加入 Tailscale 的 DERP Map - 这样既能使用 Tailscale 的 DERP Server, 又能使用自建的 DERP Server,适合全球建网 --- # Demo --- # Thanks!