Headscale下篇-自定义中转derper

💡 原文中文,约2400字,阅读约需6分钟。
📝

内容提要

derper是tailscale的中转服务,可以自己搭建或使用tailscale提供的节点。搭建过程需要申请域名和证书,可以使用acme.sh工具。启动derper需要使用docker命令,并修改headscale和derper的配置文件。

🔎

延伸解读

自建 derper 的适用场景与权衡

文章指出,使用 Tailscale 官方 derper 节点在晚高峰可能较卡,自建可改善体验,但配置比基础设置更复杂。自建需要域名、证书和额外服务维护,适合对网络质量有要求且愿意投入时间的技术用户。若仅偶尔使用或对延迟不敏感,官方节点可能更省事。

证书申请中的关键细节

使用 acme.sh 申请证书时,可通过 webroot 或 DNS 认证。若用 DNSPod 的 DNS 认证,需使用其原有的 API Token,而非腾讯云统一凭证。证书生成后需将 .cer 文件改为 .crt,且文件名必须与域名完全一致,如 xxx.hello.com.crt,否则 derper 可能无法识别。

安全验证机制与启动检查

derper 本身缺乏认证逻辑,因此启动时通过映射本机 tailscaled.sock 并设置 DERP_VERIFY_CLIENTS=true,让同一 headscale 服务的客户端进程验证加入中转的节点。启动后可用 docker logs 查看日志,但更直接的验证方式是访问域名加端口,若显示特定页面则代表服务正常。

headscale 配置的要点

在 headscale 配置中,需定义 regions 和 nodes。regionid 表示区域 ID,一个区域可包含多个 node,node 的 name 是唯一识别码。ipv4 可留空,有 hostname 即可。stunonly 设为 false 表示同时支持 STUN 和 DERP。最后需注释掉原有的 urls,并添加 derper 配置文件的路径。

❓

Q&A

什么是derper,它的主要功能是什么?

derper是tailscale的中转服务,可以自建或使用tailscale提供的节点。

搭建derper需要哪些步骤?

搭建derper需要申请域名和证书,使用acme.sh工具,并通过docker命令启动服务。

如何申请证书以搭建derper?

可以通过webroot或dns认证方式申请证书,使用acme.sh工具进行操作。

使用dnspod进行dns认证时需要注意什么?

需要使用dnspod原来的api token进行验证,并将其设置为环境变量。

如何确保derper与tailscale客户端的安全连接?

需要在本机运行tailscale客户端,并将其进程映射到docker中,以验证同一headscale服务的节点。

如何检查derper服务是否正常启动?

可以通过访问域名加端口的地址来检查,如果能正常显示则代表服务已启动。

➡️

继续阅读