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 节点:
- 阿里云 ECS 上部署 DERP 服务
- 配置 TLS 证书(derp.felixfeng.online:443)
- 在 Tailscale Admin 后台添加自定义 DERP
自建 DERP 延迟从 200ms+ 降到 50ms 以内,体验好很多。
实际用途
组网之后,所有服务都走内网:
- SSH:统一用 Tailscale IP,不用记端口
- Django 开发服务器:solar:8000 直接访问
- 监控 Agent:每台机器跑一个,互相通过内网采集数据
- 文件传输:scp 走内网,速度跑满带宽
- frp 穿透:solar 的服务通过 frp 隧道暴露到公网
小技巧
- MagicDNS:开启后可以用主机名访问,
ssh solar而不是ssh 100.118.12.82 - 子网路由:可以把整个局域网段暴露给其他节点,适合访问路由器后台
- Exit Node:把某台机器设为出口节点,出门在外用家里网络
- ACL 策略:可以精细控制谁能访问谁,不过个人用默认全通就行
唯一的坑
Tailscale 免费版支持 3 个用户、100 台设备,个人完全够用。但偶尔会出现节点掉线需要重新 tailscale up 的情况,设个 systemd 自动重连就行。
用了半年,三台设备零配置互通,再也不用折腾端口映射和防火墙了。