如果你是 Tailscale 的忠实用户,你一定爱上了它“零配置、安全可靠”的组网体验。它能轻松地将你散落在各地的设备(笔记本、服务器、手机)连接成一个安全的虚拟局域网。
但在某些特殊网络环境下,例如在严格的 NAT 或企业防火墙后,设备之间无法建立直接的点对点(P2P)连接。这时,Tailscale 会优雅地切换到中继模式,通过其官方的 DERP (Detoured Encrypted Routing Protocol) 服务器来转发流量。
DERP 的全称是 Detoured Encrypted Routing Protocol(绕道加密路由协议)。你可以把它想象成一个智能的“快递中转站”。
当你的两台设备(比如家里的电脑和公司的笔记本)想要通信时,Tailscale 会首先尝试各种 NAT 穿透技术,建立一条直接的 P2P 连接。这是最理想的情况,延迟最低,速度最快。
然而,当 NAT 类型过于复杂(如对称型 NAT 或运营商级的 CG-NAT)导致 P2P 连接失败时,DERP 就派上用场了。流量会被加密后发送到最近的 DERP 中转站,再由中转站转发给目标设备。
虽然这增加了一次转发,导致延迟略有上升,但它保证了在任何网络条件下,你的设备都能可靠地连接。
官方的DERP服务器大多在海外,实际体验下来延迟最低通常在200ms,而且带宽不到1MB,为了更好的体验低延迟的服务。尤其是家用NAS服务,我非常推荐搭建属于你自己的私有 DERP 中继服务器,购买一个本地的云服务器甚至可以将延迟降低到20ms,非常夸张啊。
sudo apt update sudo apt install -y wget git openssl curl sudo apt install golang-go
sudo vim /etc/profile # 将export PATH=$PATH:/usr/local/go/bin 写入最后一行
go env -w GO111MODULE=on go env -w GOPROXY=https://goproxy.cn,direct
go install tailscale.com/cmd/derper@latest sudo cp ~/go/bin/derper /usr/bin/
到目前为止DERP已经安装完毕,接下来就是配置证书
将DERP_IP的地址换成自己服务器的公网IP,除此之外记得关闭服务器的防火墙,或者需要打开TCP的80、443端口,UDP的3478端口
DERP_IP="x.x.x.x" openssl req -x509 -newkey rsa:4096 -sha256 -days 3650 -nodes -keyout ${DERP_IP}.key -out ${DERP_IP}.crt -subj "/CN=${DERP_IP}" -addext "subje
sudo derper --hostname="x.x.x.x" -certmode manual -certdir ./
打开tailscale的官网并登陆 将以下内容添加到访问控制的json中
"derpMap": { "OmitDefaultRegions": true, //加入这个会只用自己的节点 "Regions": { "901": { "RegionID": 901, "RegionCode": "song", "RegionName": "HW Cloud", "Nodes": [ { "Name": "901a", "RegionID": 901, "HostName": "eksoft", //这个随便写 "IPv4": "x.x.x.x", //改成自己的IP "InsecureForTests": true, }, ], }, }, },
完成后,便可以找一台连接上tailscale的电脑测试,输入:
tailscale netcheck
可以看到延迟非常低,近乎于本地
本文作者:James
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!