参考:https://blog.csdn.net/god_sword_/article/details/129353427
Fork Tailscale 代码到自己仓库※
https://github.com/tailscale/tailscale
注释服务端证书验证※
查找getCertificate方法,注释前面的域名检查
func (m *manualCertManager) getCertificate(hi *tls.ClientHelloInfo) (*tls.Certificate, error) {
//if hi.ServerName != m.hostname {
// return nil, fmt.Errorf("cert mismatch with hostname: %q", hi.ServerName)
//}
return m.cert, nil
}编写创建自签名证书※
通过以下build_cert.sh脚本
编写 Dockerfile※
将 MODIFIED_DERPER_GIT 的设置为自己的tailscale代码仓库git地址,BRANCH设置为代码分支
构建docker镜像※
构建镜像可能需要科学上网,下载一些依赖包。
!!!注意build_cert.sh和Dockerfile应该在在同一目录下
进入Dockerfile所在目录下执行构建镜像命
docker buildx build --platform linux/amd64 --no-cache -t derper:V1.0 .导出镜像※
docker save -o derper.tar derper:V1.0上传到服务器※
scp derper.tar tencentSh:~/导入镜像※
docker load -i derper.tar编写docker-compose.yml※
version: '3.8'
services:
derper:
image: derper:V1.0
container_name: derper
ports:
- "4435:443"
- "3478:3478/udp"
restart: always启动※
docker compose up查看启动是否有报错,正常启动应该是会有这些提示
2024/08/12 15:58:57 STUN server listening on [::]:3478
2024/08/12 15:58:57 derper: serving on :443 with TLS配置tailscale客户端※
在tailscale页面的Access Controls,配置添加的节点
"901": {
// RegionID 和上面的相等
"RegionID": 901,
// RegionCode 自己取个易于自己名字
"RegionCode": "tencentSh",
"RegionName": "tencent shanghai",
"Nodes": [
{
// Name
"Name": "tencentSh-1",
// 这个也和 RegionID 一样
"RegionID": 901,
// 域名
"HostName": "1.1.1.1",
// 端口号
"DERPPort": 4435,
"InsecureForTests": true,
},
],
}记得InsecureForTests要设置成true