重磅,Tailscale的Derp服务器原生支持自签发证书

重磅,Tailscale 的 Derp 服务器原生支持自签发证书

最近比较忙,鸽了很久 😄。如题的功能已经出了比较长的时间了。本篇文章简单讲讲有啥新的调整。

背景

在官方支持之前,大家普遍通过修改源码来支持的,也有不少大佬提供相关镜像。可能大家会有疑问,为啥会有这类需求?受限于部分网络环境下 LetsEncrypt 是被禁用的;还有一些场景,使用域名的方式需要 ICP 许可,跨云 IDC 会比较麻烦。

开源作者讨论 tailscale#issues/11776
相关 PR tailscale#pull/15208

新版本好处

  • • 不需要域名
  • • 不需要 ICP 许可/接入
  • • 不需要证书

新版本部署

编译或下载二进制

如果你有 Go 的环境,可以使用如下命令

go install tailscale.com/cmd/derper@latest

当然也可以使用我编译好的二进制文件

wget https://c.ysicing.net/oss/tiga/linux/amd64/derper

将相关二进制复制到 /usr/bin/derper, 并赋予执行权限

cp -a derper /usr/bin/derper
chmod +x /usr/bin/derper

手动签发 IP 证书

示例是你的 derper 公网 ip

export DERP_IP="1.1.1.1"
mkdir /etc/derper
openssl req -x509 -newkey rsa:4096 -sha256 -days 3650 -nodes -keyout /etc/derper/${DERP_IP}.key -out /etc/derper/${DERP_IP}.crt -subj "/CN=${DERP_IP}" -addext "subjectAltName=IP:${DERP_IP}"

手动启动 derper

derper --hostname="1.1.1.1"  -certmode manual -certdir /etc/derper

启动完成会提示如下信息

2025/04/05 20:00:25 Using self-signed certificate for IP address "1.1.1.1". Configure it in DERPMap using: (https://tailscale.com/s/custom-derp)
  {"Name":"custom","RegionID":900,"HostName":"1.1.1.1","CertName":"sha256-raw:970d3fae5ccd1480ad5e1017597c91f33d4bf0ef5bbeb5f54a2c20c0156ca081"}

然后可以打开浏览器访问这个网址看看,需要放行 804433478, 其中 3478 是 UDP 端口。

配置 ACL

方便显示,格式化如下:

{
    "RegionID": 910,
    "RegionCode": "yxvm",
    "RegionName": "yxvm",
    "Nodes": [
        {
            "Name": "yxvm",
            "RegionID": 910,
            "HostName": "46.x.x.x",
            "IPv4": "46.x.x.x",
            "CertName":"sha256-raw:8a81f6658a7e1830fbaf363b72427f975d1f033d1616bf603cec3defa7e52391",
            "InsecureForTests": true 
        }
    ]
}

保存之后,使用 tailscale netcheck 测试

* DERP latency:
        - yxvm: 118.8ms (yxvm)

总结

如果你之前就使用自签证书的话,更新一下二进制就行

Sponsor

Like this article? $1 reward

Comments