Tailscale完全指南:从自建DERP服务器到Mac子网路由
背景介绍
Tailscale是一款优秀的组网工具,但在中国大陆使用时,由于官方DERP服务器位于海外,连接速度通常很慢,甚至不稳定。通过自建DERP服务器,可以大幅提升Tailscale的连接速度和稳定性。此外,配合Mac mini和Surge设置DHCP服务,可以为整个家庭网络提供路由功能。
本指南将详细介绍如何在国内服务器上部署DERP服务器,配置Mac mini作为路由器,以及在各平台上安装和使用Tailscale。
什么是DERP?
DERP (Designated Encrypted Relay for Packets) 是Tailscale使用的中继服务器。当两个设备无法直接进行P2P连接时,流量会通过DERP服务器中转。特点如下:
- 处理NAT穿透失败的情况
- 提供STUN服务协助P2P连接建立
- 中继数据采用端到端加密,服务器无法解密
- 提高连接成功率和稳定性
连接类型说明
Tailscale连接有三种方式:
- 直接连接: 设备间直接建立P2P连接,速度最快
- STUN打洞: 通过STUN协议打洞实现P2P连接
- DERP中继: 当上述方式失败时,通过DERP服务器中继连接
各平台Tailscale安装指南
macOS安装
有三种方式安装Tailscale到macOS:
推荐方式:从Tailscale官网下载安装包
1
访问 https://tailscale.com/download 下载Mac安装包
App Store安装:
1
在Mac App Store搜索"Tailscale"并安装
命令行安装(高级用户):
1 2
# 使用Homebrew安装 brew install tailscale
安装后,点击菜单栏图标并登录您的Tailscale账户。
iOS/iPadOS安装
- 在App Store中搜索"Tailscale"
- 安装后打开应用
- 点击"Get Started"
- 允许VPN配置安装
- 使用SSO身份提供商登录
Android安装
- 在Google Play Store中搜索"Tailscale"
- 安装后打开应用
- 点击"Get Started"
- 允许VPN配置安装
- 使用Google账号或其他SSO身份提供商登录
Windows安装
- 访问Tailscale下载页面下载Windows安装程序
- 运行.exe安装文件
- 安装完成后,点击系统托盘中的Tailscale图标
- 点击"Log in"并使用SSO身份提供商登录
自建DERP服务器
准备工作
部署自建DERP服务器需要:
- 一台拥有公网IP的服务器(阿里云、腾讯云等)
- 基本的Linux命令操作能力
- 远程连接工具(SSH)
部署步骤
1. 登录服务器
|
|
2. 安装Docker
如果服务器已安装Docker,可以跳过此步骤。
|
|
3. 拉取并运行DERP容器
我们使用专为纯IP部署优化的Docker镜像:
|
|
4. 检查服务状态
|
|
正常情况下,你应该看到DERP欢迎页面。
5. 配置服务器防火墙
确保以下端口已开放:
- TCP 59443(DERP主端口)
- UDP 3478(STUN端口)
如果使用阿里云/腾讯云,需要在控制台的安全组中添加相应规则。
配置Tailscale使用自建DERP
1. 登录Tailscale管理控制台
访问 Tailscale管理控制台,进入"Access Controls"页面。
2. 修改ACL配置
在ACL配置文件中添加以下内容(注意JSON格式和逗号位置):
|
|
重要提示:
- 将
"你的服务器IP"
替换为你的服务器实际公网IP - IP地址必须用双引号括起来
- 确保JSON格式正确,特别是逗号的位置
3. 重启Tailscale客户端
配置修改后,需要在所有设备上重启Tailscale客户端:
在Mac上:
|
|
在手机上:
- 打开设置 -> 应用 -> Tailscale -> 强制停止
- 重新启动Tailscale应用
Mac Mini + Surge作为网关和DHCP服务器
Surge DHCP服务器设置
Surge是一款强大的网络工具,它可以配合Mac mini作为家庭网络的DHCP服务器和网关。
1. 设置Surge作为DHCP服务器
- 打开Surge for Mac
- 点击菜单栏中的Surge图标
- 选择"更多功能" -> “网关模式”
- 点击"打开设置"
- 在网关模式面板中:
- 启用"DHCP服务器"
- 设置DHCP IP范围(例如:192.168.31.100 - 192.168.31.200)
- 设置网关IP(Mac mini的IP地址,例如:192.168.31.1)
- 设置DNS服务器(通常为Surge的内部DNS:198.18.0.2)
2. 配置Mac网络设置
- 给Mac mini设置静态IP(与上面设置的网关IP一致):
- 打开系统设置 -> 网络
- 选择主要网络连接(以太网或Wi-Fi)
- 配置IPv4:手动
- 设置IP地址(例如:192.168.31.1)
- 设置子网掩码(通常为:255.255.255.0)
- 设置路由器地址(上级路由器的IP)
3. 启用IP转发
在Mac终端中执行:
|
|
配置Mac Mini作为Tailscale子网路由器
1. 设置Tailscale子网路由
|
|
2. 在Tailscale管理控制台批准路由
- 登录Tailscale管理控制台
- 进入"Machines"页面
- 找到Mac mini设备
- 点击"…",选择"Edit route settings"
- 批准192.168.31.0/24子网路由
3. 确保Surge配置正确
在Surge配置中添加规则,允许Tailscale流量:
|
|
设置出口节点(Exit Node)
Tailscale可以将特定设备设置为出口节点,使其他设备的流量通过该节点访问互联网。
1. 在境外服务器上配置Exit Node
Linux服务器设置
安装Tailscale:
1
curl -fsSL https://tailscale.com/install.sh | sh
启用IP转发:
1 2 3
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
将服务器设置为Exit Node:
1
sudo tailscale up --advertise-exit-node
在控制台允许Exit Node
- 登录Tailscale管理控制台
- 找到该服务器
- 点击"…",选择"Edit…"
- 勾选"Use as exit node"
- 点击"Save"
2. 在其他设备上使用Exit Node
macOS
|
|
也可以通过图形界面设置:
- 点击菜单栏Tailscale图标
- 选择"Settings"
- 找到"Use Exit Node"选项
- 选择你的出口节点
iOS/Android
- 打开Tailscale应用
- 进入"Settings"
- 点击"Exit Node"
- 选择你配置的出口节点
- 如需访问本地网络,启用"Allow LAN access"
Windows
- 右键点击系统托盘中的Tailscale图标
- 选择"Settings"
- 在"Exit Node"下拉菜单中选择出口节点
检查连接和排障
1. 检查设备是否直连
|
|
直连显示为"direct",中继显示为"relay"或"via DERP"。
2. 网络环境检查
|
|
这会显示NAT类型、可用的DERP服务器及延迟信息。
3. 常见故障排除
容器启动失败
|
|
连接仍然很慢
|
|
端口被占用
|
|
子网路由无法访问
- 检查IP转发是否启用
- 确认路由已在控制台批准
- 检查防火墙规则
- 在Surge中确认规则配置正确
优化建议
- 选择合适的服务器位置:尽量选择靠近你实际位置的服务器
- 调整MTU值:如果连接不稳定,可尝试
--mtu=1280
参数 - 多节点部署:在不同区域部署多个DERP节点,提高可用性
- 监控服务:定期检查DERP服务是否正常运行
- 组合使用出口节点:在不同地区部署多个出口节点,根据需要切换
参考资料
- Tailscale官方文档:DERP服务器
- Tailscale官方文档:Exit Nodes
- Tailscale官方文档:Subnet Routers
- GitHub: yangchuansheng/ip_derper
- Tailscale网络原理
祝你使用愉快!如有问题,欢迎在社区讨论。