Tailscale 可以说是我的互联网基建,每次有了新设备都会第一时间安装 Tailscale,但是如果异地网络条件不好的话就不能稳定打洞。
以前都是同城在家里和工位打洞,体感一直都还不错,然而上周想和朋友联机玩玩游戏,跨省打洞失败,流量得走官方的 hk 中继绕一圈,延迟400ms+基本是不可用状态。于是只能自建中继服务器了。
以前自建中继服务器很麻烦,需要配置域名和证书,众所周知国内域名备案又很不便。但是在某次更新中 Tailscale 官方发布了纯 ip 自签证书部署 derp 服务器的功能,省去了域名和证书的麻烦,下面记录一下具体的部署步骤。
部署步骤
1. 安装 derper
首先安装 derper 中继服务器程序:
go install tailscale.com/cmd/derper@latest |
2. 安装并配置 Tailscale
安装 Tailscale 客户端:
curl -fsSL https://tailscale.com/install.sh | sh |
安装成功后申请 auth_key 并登录
sudo tailscale up --authkey <your_auth_key> |
运行后台程序 tailscaled
sudo systemctl enable tailscaled |
3. 启动 derper 服务
启动 derper,将 <ip> 替换为自己的 VPS 公网 IP。这里修改了 derp 和 stun 的默认端口,需要在 VPS 的防火墙放行 40007(TCP)和 40008(UDP) 端口。执行后自动在当前目录下生成证书。
derper --hostname="<ip>" -certmode manual -certdir ./ -http-port -1 -a :40007 -stun-port 40008 -verify-clients |
这个命令会生成一系列信息,用于下一步填入 Access controls。
4. 配置 Access controls
在 tailscale 的控制界面->Access controls 添加如下内容:
配置说明:
OmitDefaultRegions: 设置为true将禁用所有 Tailscale 官方中继(可选)RegionID: 自定义区域 ID,官方建议从 900 到 999 之间选择RegionCode: 自定义名称,会显示在 netcheck 中HostName: 你的中继服务器公网 IP 地址CertName: 粘贴上一步获取的证书名称
{ |
如需部署多个地区的中继,可添加 “901”: { … } 等配置
5. 验证配置
使用以下命令查看 derp 服务器延时:
tailscale netcheck |
如果配置正确,你应该能看到自己部署的 derp 服务器信息以及延迟情况。
最后
因为每个中继都得装 go 环境,比较麻烦,所以我打包了一个 docker 镜像可以直接使用
仓库地址:Tailscale DERP 中继服务器 Docker 镜像
和朋友两天玩了快20h泰拉瑞亚,累死哩