Tailscale完全指南:从入门到高阶玩法
- Published on
- ...
- Authors

- Name
- Huashan
- @herohuashan
一、背景介绍
Tailscale 是一款基于 WireGuard 的现代化组网工具,可以帮助你在任何网络环境下安全地连接所有设备。无论你是想远程访问家里的 NAS、连接办公室的开发环境,还是在多个云服务器之间建立私有网络,Tailscale 都能简单高效地完成。
最近随着 vibe coding 的大行其道,越来越多开发者希望在外也能直接连回自己的主力电脑,调用本地开发环境、模型和自动化脚本。这个场景让「稳定、安全、跨网络」的远程连接需求迅速放大,也让 Tailscale 的关注度明显升温。
然而,在中国大陆使用时,由于官方 DERP 服务器位于海外,连接速度通常很慢。本指南将从基础到高阶,全面介绍 Tailscale 的使用方法,包括自建 DERP 服务器优化连接速度。
💡 延伸阅读: 如果你想了解如何将 Mac Mini 作为家庭云服务器并配合 Tailscale 使用,可以参考 Mac Mini 上云:打造属于自己的私有云工作站。关于在 VPS 上部署更多服务,可以参考 阿里云VPS打造家庭网络中枢。
二、Tailscale 核心概念
2.1 什么是 Tailnet?
Tailnet 是你的私有 Tailscale 网络,所有加入同一 Tailnet 的设备都可以相互访问。每个设备会获得一个 100.x.x.x 段的唯一 IP 地址。
2.2 连接类型说明
Tailscale 连接通常有四种方式(按优先级):
- 直接连接(Direct): 设备间直接建立 P2P 连接,速度最快
- STUN 打洞: 通过 STUN 协议穿透 NAT 实现 P2P 连接
- Peer Relay: 无法直连时的 UDP 中继,通常优先于 DERP
- DERP 中继: 最后回退路径,通过 DERP 服务器中继连接
2.3 什么是 DERP?
DERP (Designated Encrypted Relay for Packets) 是 Tailscale 使用的中继服务器。特点如下:
- 处理 NAT 穿透失败的情况
- 提供 STUN 服务协助 P2P 连接建立
- 中继数据采用端到端加密,服务器无法解密
- 提高连接成功率和稳定性
三、各平台安装指南
3.1 macOS 安装
有三种方式安装 Tailscale:
推荐方式:从官网下载
# 访问 https://tailscale.com/download 下载 Mac 安装包App Store 安装:
在 Mac App Store 搜索 "Tailscale" 并安装命令行安装(高级用户):
brew install tailscale
安装后,点击菜单栏图标并登录你的 Tailscale 账户。
3.2 iOS/iPadOS 安装
- 在 App Store 中搜索 "Tailscale"
- 安装后打开应用
- 点击 "Get Started"
- 允许 VPN 配置安装
- 使用 SSO 身份提供商登录
3.3 Android 安装
- 在 Google Play Store 中搜索 "Tailscale"
- 安装后打开应用
- 点击 "Get Started"
- 允许 VPN 配置安装
- 使用 Google 账号或其他 SSO 身份提供商登录
3.4 Windows 安装
- 访问 Tailscale 下载页面下载 Windows 安装程序
- 运行 .exe 安装文件
- 安装完成后,点击系统托盘中的 Tailscale 图标
- 点击 "Log in" 并使用 SSO 身份提供商登录
3.5 Linux 安装
# 一键安装脚本
curl -fsSL https://tailscale.com/install.sh | sh
# 启动并登录
sudo tailscale up
四、自建 DERP 服务器(中国用户必备)
4.1 为什么需要自建 DERP?
Tailscale 官方的 DERP 服务器大多位于海外,对于中国大陆用户来说延迟很高(通常 200ms+)。通过在国内服务器上自建 DERP,可以将延迟降低到 30ms 以内。
4.2 准备工作
- 一台拥有公网 IP 的国内服务器(阿里云、腾讯云等轻量级 VPS 即可)
- 基本的 Linux 命令操作能力
- 远程连接工具(SSH)
4.3 Docker 部署 DERP
# 登录服务器
ssh root@你的服务器IP
# 安装 Docker(如已安装可跳过)
curl -fsSL https://get.docker.com | sh
systemctl start docker
systemctl enable docker
# 拉取并运行 DERP 容器(专为纯 IP 部署优化)
docker pull ghcr.io/yangchuansheng/ip_derper:latest
docker run --restart always \
--name derper \
-d \
-p 59443:443 \
-p 3478:3478/udp \
ghcr.io/yangchuansheng/ip_derper:latest
# 检查服务状态
docker ps
docker logs derper
curl -k https://localhost:59443
4.4 配置服务器防火墙
确保以下端口已开放:
| 端口 | 协议 | 用途 |
|---|---|---|
| 59443 | TCP | DERP 主端口 |
| 3478 | UDP | STUN 端口 |
如果使用阿里云/腾讯云,需要在控制台的安全组中添加相应规则。
4.5 配置 Tailscale 使用自建 DERP
访问 Tailscale 管理控制台,进入 "Access Controls" 页面
在 ACL 配置文件中添加以下内容:
"derpMap": {
"OmitDefaultRegions": false,
"Regions": {
"901": {
"RegionID": 901,
"RegionCode": "sh",
"RegionName": "Shanghai Aliyun",
"Nodes": [{
"Name": "901",
"RegionID": 901,
"HostName": "你的服务器IP",
"DERPPort": 59443,
"IPv4": "你的服务器IP",
"STUNPort": 3478
}]
}
}
}
配置说明:
- 将
"你的服务器IP"替换为实际公网 IP OmitDefaultRegions: false保留官方 DERP 作为备用- 如果只想使用自建 DERP,可以将官方区域设为
null(如"1": null) - 建议优先使用域名 + 有效证书;
InsecureForTests仅用于临时测试,不建议长期开启 - 2026 之后如果启用了 Peer Relay,实际走 DERP 的流量通常会明显减少
- 重启所有设备上的 Tailscale 客户端使配置生效
五、子网路由(Subnet Router)
子网路由允许 Tailscale 网络中的设备访问你本地局域网中的其他设备,即使这些设备没有安装 Tailscale。
5.1 配置 Mac Mini 作为子网路由器
# 启用 IP 转发
sudo sysctl -w net.inet.ip.forwarding=1
echo "net.inet.ip.forwarding=1" | sudo tee -a /etc/sysctl.conf
# 首次登录或重新认证(只需一次)
/Applications/Tailscale.app/Contents/MacOS/Tailscale up
# 设置 Tailscale 子网路由(将 192.168.31.0/24 替换为你的局域网网段)
/Applications/Tailscale.app/Contents/MacOS/Tailscale set --advertise-routes=192.168.31.0/24
# 如需接收其它节点宣告的路由
/Applications/Tailscale.app/Contents/MacOS/Tailscale set --accept-routes=true
5.2 Linux 服务器作为子网路由器
# 启用 IP 转发
echo 'net.ipv4.ip_forward = 1' | sudo tee -a /etc/sysctl.d/99-tailscale.conf
echo 'net.ipv6.conf.all.forwarding = 1' | sudo tee -a /etc/sysctl.d/99-tailscale.conf
sudo sysctl -p /etc/sysctl.d/99-tailscale.conf
# 设置子网路由
sudo tailscale set --advertise-routes=192.168.1.0/24 --accept-routes=true
5.3 在控制台批准路由
- 登录 Tailscale 管理控制台
- 进入 "Machines" 页面
- 找到子网路由设备
- 点击 "...",选择 "Edit route settings"
- 批准相应的子网路由
5.4 典型使用场景
- 🏠 在外访问家庭 NAS:家里的 Mac Mini 作为子网路由,远程访问群晖 NAS
- 🏢 访问办公室内网:办公室 Linux 服务器作为子网路由,在家访问内网资源
- 🔧 IoT 设备管理:远程管理智能家居设备
六、Exit Node 出口节点
出口节点允许你将设备的所有互联网流量通过 Tailscale 网络中的另一台设备发送。
6.1 典型使用场景
- 🌏 科学上网:将境外服务器设为出口节点
- 🔒 公共 WiFi 安全:使用家里的网络作为出口
- 📺 访问地区限制内容:通过特定地区的服务器访问受限服务
6.2 配置出口节点(Linux 服务器)
# 启用 IP 转发
echo 'net.ipv4.ip_forward = 1' | sudo tee -a /etc/sysctl.d/99-tailscale.conf
sudo sysctl -p /etc/sysctl.d/99-tailscale.conf
# 将服务器设置为 Exit Node
sudo tailscale set --advertise-exit-node=true
6.3 在控制台批准 Exit Node
- 登录 Tailscale 管理控制台
- 找到该服务器
- 点击 "...",选择 "Edit..."
- 勾选 "Use as exit node"
- 点击 "Save"
6.4 在客户端使用 Exit Node
macOS:
# 命令行设置
/Applications/Tailscale.app/Contents/MacOS/Tailscale set --exit-node=<出口节点名称>
# 同时允许访问本地网络
/Applications/Tailscale.app/Contents/MacOS/Tailscale set --exit-node=<出口节点名称> --exit-node-allow-lan-access=true
提示:日常修改单个选项时,优先使用
tailscale set,避免反复tailscale up覆盖其它已启用参数。
也可以通过 GUI 设置:点击菜单栏 Tailscale 图标 → Settings → Use Exit Node
iOS/Android:
- 打开 Tailscale 应用
- 进入 "Settings"
- 点击 "Exit Node"
- 选择你配置的出口节点
七、MagicDNS(魔法域名)
MagicDNS 让你可以使用易记的设备名称而不是 IP 地址来访问设备。
7.1 启用 MagicDNS
- 登录 Tailscale 管理控制台
- 在 DNS 设置页面启用 "MagicDNS"
- 配置完成后,可以直接使用设备名访问
7.2 使用示例
# 使用设备名而不是 IP
ssh username@my-macbook
ping my-nas
curl http://my-server:8080
7.3 自定义搜索域
你可以配置自定义的搜索域,例如设置 home 作为后缀:
my-macbook.homemy-nas.home
八、Tailscale SSH(推荐)
Tailscale SSH 让你无需管理 SSH 密钥,直接使用 Tailscale 身份进行 SSH 认证。
8.1 优势
- 🔑 无需管理密钥:使用 Tailscale 身份认证
- 🔒 更安全:基于 WireGuard 加密
- 🌐 无需端口转发:NAT 穿透自动处理
- 📋 会话记录:可在控制台查看 SSH 会话
8.2 在服务器上启用 Tailscale SSH
# Linux
sudo tailscale set --ssh=true
# macOS
/Applications/Tailscale.app/Contents/MacOS/Tailscale set --ssh=true
8.3 配置 ACL 规则
在 Tailscale 控制台的 ACL 中添加 SSH 规则:
{
"ssh": [
{
"action": "accept",
"src": ["autogroup:members"],
"dst": ["autogroup:self"],
"users": ["autogroup:nonroot"]
}
]
}
8.4 连接 SSH
# 使用 tailscale ssh 命令
tailscale ssh username@device-name
# 或者使用普通 ssh 命令
ssh username@device-name
8.5 SSH Console(浏览器访问)
Tailscale 还提供了浏览器版 SSH 控制台,无需本地 SSH 客户端:
- 登录 Tailscale 管理控制台
- 进入 "Machines" 页面
- 点击目标设备右侧的 "..." → "SSH Console"
九、Funnel 和 Serve(服务分享)
9.1 Serve:内网服务分享
Serve 允许你将本地服务分享给 Tailnet 内的其他设备。
# 分享本地 3000 端口的开发服务器
tailscale serve 3000
# 分享文件目录
tailscale serve /path/to/directory
# 查看当前分享状态
tailscale serve status
9.2 Funnel:公网服务暴露
Funnel 可以将本地服务安全地暴露到公网,无需公网 IP!
启用步骤:
- 在 DNS 设置中启用 MagicDNS 和 HTTPS
- 在 ACL 中启用 Funnel 权限
- 运行 Funnel 命令
# 将本地 8080 端口暴露到公网
tailscale funnel 8080
# 后台运行
tailscale funnel --bg 8080
运行后,你会得到一个类似 https://your-device.your-tailnet.ts.net 的公网 URL。
9.3 使用场景
- 🛠️ 临时演示:向客户展示本地开发的网站
- 🔗 Webhook 接收:接收第三方服务的回调
- 📱 本地开发测试:在手机上测试本地开发的应用
十、Taildrop(文件传输)
Taildrop 是 Tailscale 的点对点文件传输功能,简单快速。
10.1 启用 Taildrop
在 Tailscale 管理控制台中启用 Taildrop 功能。
10.2 发送文件
macOS/iOS/Android/Windows:
- 右键文件 → 分享
- 选择 Tailscale
- 选择目标设备
Linux 命令行:
tailscale file cp myfile.txt device-name:
10.3 接收文件
文件通常会保存到下载文件夹。Linux 上可以指定接收目录:
# 配置接收目录
tailscaled --statedir=/var/lib/tailscale --tun=userspace-networking
十一、ACL 访问控制
ACL(Access Control Lists)让你精细控制 Tailnet 中设备间的访问权限。
11.1 基本概念
- Groups:用户分组(如
group:admins) - Tags:设备标签(如
tag:servers) - default-deny:默认拒绝所有连接
11.2 示例配置
{
"groups": {
"group:admins": ["[email protected]"],
"group:devs": ["[email protected]", "[email protected]"]
},
"tagOwners": {
"tag:server": ["group:admins"],
"tag:dev": ["group:devs"]
},
"acls": [
// 管理员可访问所有设备
{"action": "accept", "src": ["group:admins"], "dst": ["*:*"]},
// 开发者只能访问 dev 标签的设备
{"action": "accept", "src": ["group:devs"], "dst": ["tag:dev:*"]},
// 所有人可以访问 22 端口(SSH)
{"action": "accept", "src": ["*"], "dst": ["*:22"]}
]
}
十二、Mullvad VPN 集成
Tailscale 与 Mullvad VPN 有官方集成,可以使用 Mullvad 的全球服务器作为出口节点。
12.1 启用 Mullvad 集成
- 在 Tailscale 控制台的 "General settings" 中找到 "Mullvad VPN"
- 点击 "Configure" 并购买许可证(约 $5/月,最多 5 设备)
- 为设备授权 Mullvad 访问权限
12.2 使用 Mullvad 出口节点
# 列出可用的 Mullvad 出口节点
tailscale exit-node list
# 使用指定的 Mullvad 出口节点
tailscale set --exit-node=<mullvad-node-name>
十三、Mac Mini + Surge 作为家庭网关
这是我的实际使用场景:用 Mac Mini 配合 Surge 作为家庭网络中枢。
13.1 架构说明
┌──────────────┐ ┌─────────────────┐ ┌──────────────┐
│ 外网设备 │───▶│ 阿里云 VPS │◀───│ Mac Mini │
│ (手机/笔记本) │ │ (DERP/中转) │ │ (子网路由) │
└──────────────┘ └─────────────────┘ └──────────────┘
│
┌──────┴──────┐
│ 家庭局域网 │
│ NAS/IoT设备 │
└─────────────┘
13.2 Surge DHCP 服务器设置
- 打开 Surge for Mac
- 点击菜单栏图标 → "更多功能" → "网关模式"
- 配置 DHCP:
- 启用 "DHCP 服务器"
- 设置 IP 范围(如 192.168.31.100 - 192.168.31.200)
- 设置网关 IP(Mac mini 的 IP)
- 设置 DNS 服务器(198.18.0.2)
13.3 Surge 规则配置
# 允许 Tailscale 流量直连
IP-CIDR,100.64.0.0/10,DIRECT
IP-CIDR,192.168.31.0/24,DIRECT
十四、故障排查
14.1 检查连接状态
# 查看所有设备状态
tailscale status
# 检查与特定设备的连接
tailscale ping 100.x.x.x
# 运行网络诊断
tailscale netcheck
14.2 常见问题
问题:连接慢或不稳定
# 检查是否使用了 DERP 中继
tailscale netcheck
# 如果延迟高,考虑自建 DERP
问题:子网路由无法访问
- 检查 IP 转发是否启用:
sysctl net.ipv4.ip_forward - 确认路由已在控制台批准
- 检查防火墙规则
问题:DERP 容器启动失败
docker logs derper
# 检查端口是否被占用
ss -ltnup | grep -E '59443|3478'
十五、优化建议
- 选择合适的服务器位置:DERP 服务器尽量选择靠近你的区域
- 调整 MTU 值:如果连接不稳定,可尝试
--mtu=1280参数 - 多节点部署:在不同区域部署多个 DERP 节点,提高可用性
- 定期更新:保持 Tailscale 客户端和 DERP 服务更新到最新版本
- 监控服务:使用 Uptime Kuma 等工具监控 DERP 服务可用性
十六、参考资料
- Tailscale 官方文档
- DERP 服务器文档
- Exit Nodes 文档
- Subnet Routers 文档
- MagicDNS 文档
- Tailscale SSH 文档
- Funnel 文档
- GitHub: ip_derper
祝你使用愉快!如有问题,欢迎在评论区讨论。