Tailscale 是开源的,也很好用,就是其中转节点(DERP) 都在国外,所以速度还是慢了点。
有台闲置的国内主机,想着利用起来,搭个DERP,加快Tailscale的访问速度。
搭完后发现目前网上搭建DERP的教程过于繁琐,一些关键之处也没有说清楚,于是记录一下过程。
DERP 的工作方式
DERP 提供了中转和STUN两种服务,STUN是可选的,有配置项可以关闭,如果需要开启,就得占用一个UDP端口; 而中转服务的传输层是websocket,只需放在常见的nginx等代理服务之后即可,无需在防火墙开启端口。
建议最好开启STUN,这里观察到的现象是,如果没有开启,在tailscale netcheck
里自建节点的 ping 值是不显示的。
安装、配置、运行
- 安装
go install tailscale.com/cmd/derper@main
cp ~/go/bin/derper /usr/local/bin
- 运行
/usr/local/bin/derper -a=:1234 -stun-port=12345 -c=/var/lib/derper/derper.key
- nginx 的部分配置
location / {
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_set_header Host $http_host;
proxy_pass http://127.0.0.1:1234;
}
记得配好https
添加DERP节点
在浏览器打开 Tailscale 管理页面,切换到 Access Controls
,添加如下配置,
"derpMap" 和 "groups", "hosts" 等同一级。
"derpMap": {
"Regions": {
"900": {
"RegionID": 900,
"RegionCode": "myderp",
"RegionName": "国内01-shanghai",
"Nodes": [
{
"Name": "1",
"RegionID": 900,
"HostName": "derp.xxx.com",
"STUNPort": 12345,
},
],
},
},
},
验证
添加完DERP后,用 tailscale netcheck
就能看到,等待片刻,或者尝试重启 tailscaled ,Tailscale 就
会自动选取ping值最低的DERP节点。
也可以使用 derpprobe
去验证,若没有报错,说明配置是正确的。