当前位置: 首页 > news >正文

自建 Derp 中继节点

第一次搞的时候很久都不通,最近618腾讯云搞活动弄了一台机器,再搭建一次好像又挺简单的了,没几分钟就搞定了。这里还是记录一下操作过程。

安装 Golang

还好我们平时就是Go语言开发,这一步驾轻就熟了。不过要注意国内比较难直接从官方下载Golang安装包。可以从阿里云的镜像上拉取。

我安装的是 1.24 最新版:https://mirrors.aliyun.com/golang/go1.24.3.linux-amd64.tar.gz

下载后,是一个 tar.gz 压缩包。解压一下。

tar -xzvf go1.24.3.linux-amd64.tar.gz

然后,把Go加到环境变量,修改.bashrc

export GO_HOME="~/go1.24.3"
export PATH=$PATH:"$GO_HOME/bin"

⚠️ 注意:因为解压后默认目录名是 go,容易和默认的GOPATH重合,所以我改了一下名字是go1.24.3

安装Derp

go install tailscale.com/cmd/derper@main

这一步没啥可说的。

生成自签名证书

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

最好把生成的这两个文件放到一个单独目录中,例如~/derp/下。

运行服务

sudo /home/ubuntu/go/bin/derper --hostname="12.12.12.12" -c derp.conf -a :18476 -certmode manual -certdir ./
  • hostname 用于指定绑定的域名,现在新版本的derper也支持绑定IP了
  • c:用于指定derper的配置文件,如果配置文件不存在,会自动生成一个默认的,所以这一步可以不用预先生成;但必须指定文件
  • a:指定derper绑定的地址,这里主要用于修改端口为自定义端口
  • certmode:设置为 manual 用于手动指定证书
  • certdir:证书目录位置,因为我是在证书目录下执行的,所以直接./

⚠️ 注意:必须使用 sudo 权限才能运行,否则会报权限不足。

配置防火墙

一般现在的云服务厂商都会有类似「安全组策略」或者「防火墙」之类的功能,只允许指定的端口访问。这里我们开了一个自定义的 18476 端口,就必须配置 18476 端口允许外部进行访问才行。

以腾讯云为例:

Tailscale 配置

去到 Tailscale 的 admin 控制台网页,修改 Access control。https://login.tailscale.com/admin/acls/file

在 acls 的下方增加 derpMap 配置:

// Example/default ACLs for unrestricted connections.
{// 省略部分默认配置……"acls": [// 省略部分默认配置……],"derpMap": {"OmitDefaultRegions": true,"Regions": {// 这里的 901 从 900 开始随便取数字"901": {// RegionID 和上面的相等"RegionID": 901,// RegionCode 自己取个易于自己名字"RegionCode": "tencent","RegionName": "Guangzhou","Nodes": [{"Name":             "custom","RegionID":         901,"HostName":         "12.12.12.12","DERPPort":         18476,"InsecureForTests": true,},],},},},// 省略部分默认配置……
}

验证

去到客户端执行 tailscale netcheck

tailscale netcheckReport:* Time: 2025-06-05T09:34:53.161265896Z* UDP: false* IPv4: (no addr found)* IPv6: no, but OS has support* MappingVariesByDestIP: * PortMapping: * CaptivePortal: false* Nearest DERP: Guangzhou* DERP latency:- tencent: 7.8ms   (Guangzhou)

我发现windows、linux上安装的 tailscale 默认都会带 tailsacle 的命令行工具。唯独 MacOS 上没有。

后经我研究发现 MacOS 上的 tailscale 也是可以有命令行模式的:

/Applications/Tailscale.app/Contents/MacOS/Tailscale netcheck

Derp 服务化

默认你只能在当前 Shell 运行命令启动 derper,不方便运维。总不能一直开着 shell,或者一重启机器就要重新人工执行命令。

最好的方案是将 Derp 制作成 Ubuntu 的 Service,然后设置开机启动。

生成服务配置文件:/etc/systemd/system/derp.service

[Unit]
Description=TS Derper
After=network.target
Wants=network.target[Service]
User=root
Restart=always
ExecStart=/home/ubuntu/go/bin/derper --hostname="12.12.12.12" -c /home/ubuntu/derp/derp.conf -a :18443 -certmode manual -certdir /home/ubuntu/derp/
RestartPreventExitStatus=1[Install]
WantedBy=multi-user.target

⚠️ 注意:这里不再是在derp目录下执行了,所以-c-certdir指定的路径都必须是绝对路径。

然后执行如下命令:

# 开机启动
sudo systemctl enable derp
# 现在立即启动
sudo systemctl start derp

去到客户端执行 tailscale netcheck

tailscale netcheckReport:* Time: 2025-06-05T09:58:17.150311805Z* UDP: false* IPv4: (no addr found)* IPv6: no, but OS has support* MappingVariesByDestIP: * PortMapping: * CaptivePortal: false* Nearest DERP: Guangzhou* DERP latency:- tencent: 7.5ms   (Guangzhou)
http://www.lqws.cn/news/158851.html

相关文章:

  • [蓝桥杯]航班时间
  • RK3588 InsightFace人脸识别移植及精度测试全解析
  • UE Learning Record
  • 在嵌入式中C语言中static修饰的变量常量和字符串常量存储位置
  • EFI(x64)简易开发环境
  • 优化Docker容器化安装与配置的最佳实践
  • 将图形可视化工具的 Python 脚本打包为 Windows 应用程序
  • Java线程安全集合类
  • 贪心,回溯,动态规划
  • HTV 3.3 | 秒播无卡顿 直播源每天维护更新
  • 【定昌linux开发板】关闭ssh 端口 22
  • Rocketmq消息队列 消息模型 详解
  • 虚拟机网络配置
  • css实现文字颜色渐变
  • 深入理解汇编语言子程序设计与系统调用
  • 第十三节:第四部分:集合框架:HashMap、LinkedHashMap、TreeMap
  • MCP通信方式之Streamable HTTP
  • 开始在本地部署自己的 Gitea 服务器
  • 在 Windows 系统安装 Git
  • [Git] 分布式版本控制 远程仓库协作
  • 右值引用和移动语义
  • 基于WSL搭建Ubnutu 20.04.6 LTS(二)-部署Docker环境
  • uniapp中使用aixos 报错
  • echarts在uniapp中使用安卓真机运行时无法显示的问题
  • SSL/TLS握手全流程拆解:从“Hello“到“安全通道“的每一个字节
  • Excel处理控件Aspose.Cells教程:使用 C# 从 Excel 进行邮件合并
  • uniappx插件nutpi-idcard 开发与使用指南(适配鸿蒙)
  • Linux免杀方案汇总(C语言)
  • 工业火焰探测器市场:现状、趋势与发展策略
  • JAVASCRIPT 简化版数据库--智能编程——仙盟创梦IDE