1. headscale 是 controller / collaboration server ,不需要的话可以不建
2. derper 是 relay server ,用于中转流量
3. 在开始之前请仔细阅读官方 derper 文档
https://pkg.go.dev/[email protected]/cmd/derper#section-readme 和其中指向的官方 kb
4. tailscale 最近启用了 peer relay, 可以看看
https://tailscale.com/kb/1591/peer-relays ,不一定要 derper
5. 国内的云厂商带域名的流量都会过 DPI ( TLS SNI 和 HTTP Host ),这部分检查生效是滞后的,因此如果没备案/备案没有接入对应厂商,不要用域名访问,尤其是 80/443/8080/8443
6. 完整的 derp 在控制台的配置参数可以参考
https://pkg.go.dev/tailscale.com/tailcfg#DERPNode ,不要 80 就 `CanPort80=false` 就行
最后的控制台的配置大概长这样:
```json
{"derpMap":{"regions":{"1":null,"2":null,"4":null,"5":null,"6":null,"8":null,"9":null,"10":null,"11":null,"12":null,"13":null,"14":null,"15":null,"16":null,"17":null,"18":null,"19":null,"21":null,"22":null,"23":null,"24":null,"25":null,"26":null,"27":null,"28":null,"29":null,"30":null,"31":null,"32":null,"999":{"RegionID":999,"RegionCode":"shd","RegionName":"SELF-Hosted Derp","Nodes":[{"Name":"my-derp-server-example","RegionID":999,"HostName":"server-ip","DERPPort":自定义端口(int),"STUNPort":自定义端口(int),"CanPort80":false,"CertName":"sha256-raw:证书 fingerprint"}]}}}}
```
Node 那部分会由 derper 程序直接给出,你照搬就行。我设了 region = null 的那些是不想用官方的 derp 服务器,因为实在太慢。
利益无关 tips:只需要 derp 服务的话,可以试试微林的 hosted derp ,我没用过,但是之前他家还叫 vxTrans 的时候用着还不错。