Tailscale 组网:三台设备的零配置内网

为什么不用传统方案

之前试过端口映射、WireGuard 手动配置、ZeroTier,都有各种痛点:端口映射不安全,WireGuard 配置繁琐要手动分发密钥,ZeroTier 偶尔打洞失败。

Tailscale 基于 WireGuard 但完全托管,装上登录就能用,NAT 穿透成功率极高。

我的网络拓扑

Mac (100.109.192.10)   ← 日常开发机
solar (100.118.12.82)  ← 远程开发服务器
ivory (100.67.174.27)  ← Docker 容器服务器
         ↕
    Tailscale Mesh
         ↕
  阿里云 DERP 中继 (derp.felixfeng.online:443)

三台设备通过 Tailscale 全互联,任何一台都能直接 SSH 到另一台,不需要公网 IP。

安装

每台设备上跑一行命令:

curl -fsSL https://tailscale.com/install.sh | sh
sudo tailscale up

用同一个账号登录,三台机器自动组网。装完之后:

# 从 Mac SSH 到 solar
ssh user@100.118.12.82

# 从 solar ping ivory
ping 100.67.174.27

# 查看所有节点
tailscale status

自建 DERP 中继

Tailscale 默认用官方 DERP 中继做穿透中转,但国内延迟偏高。自建一个阿里云 DERP 节点:

  1. 阿里云 ECS 上部署 DERP 服务
  2. 配置 TLS 证书(derp.felixfeng.online:443)
  3. 在 Tailscale Admin 后台添加自定义 DERP

自建 DERP 延迟从 200ms+ 降到 50ms 以内,体验好很多。

实际用途

组网之后,所有服务都走内网:

  • SSH:统一用 Tailscale IP,不用记端口
  • Django 开发服务器:solar:8000 直接访问
  • 监控 Agent:每台机器跑一个,互相通过内网采集数据
  • 文件传输:scp 走内网,速度跑满带宽
  • frp 穿透:solar 的服务通过 frp 隧道暴露到公网

小技巧

  1. MagicDNS:开启后可以用主机名访问,ssh solar 而不是 ssh 100.118.12.82
  2. 子网路由:可以把整个局域网段暴露给其他节点,适合访问路由器后台
  3. Exit Node:把某台机器设为出口节点,出门在外用家里网络
  4. ACL 策略:可以精细控制谁能访问谁,不过个人用默认全通就行

唯一的坑

Tailscale 免费版支持 3 个用户、100 台设备,个人完全够用。但偶尔会出现节点掉线需要重新 tailscale up 的情况,设个 systemd 自动重连就行。

用了半年,三台设备零配置互通,再也不用折腾端口映射和防火墙了。