tailscale自建derp
时间: 2025-05-22 22:19:27 浏览: 29
<think>好的,我现在需要帮助用户了解如何自建Tailscale DERP服务器。首先,我应该回顾用户提供的参考引用内容,确保信息准确。用户提到了两个引用,其中引用[1]提到了在Ubuntu服务器上安装依赖、golang,以及无需域名的部署。引用[2]则涉及使用docker和snapd安装certbot,自定义端口的问题。
用户的需求是搭建自定义的DERP服务器,可能需要详细的步骤。我需要根据这些引用内容,整理出一个清晰的教程。同时,需要遵循系统级指令,比如使用正确的LaTeX格式,生成相关问题,并在引用处标注标识。
首先,步骤应该包括环境准备、安装依赖、配置DERP服务、设置SSL证书(如果需要)、启动服务以及测试配置。用户提到无需域名,所以SSL部分可能需要自签名证书或者使用其他方法。但引用[1]提到“无需域名的部署模式,可以直接使用IP”,可能需要特殊配置,比如关闭TLS验证或生成自签名证书。
然后,安装依赖部分,引用[1]和[2]都提到了安装snapd、certbot、golang等。但用户可能使用Docker,如引用[2]中的docker方法,所以可能需要两种方式:一种是直接安装,另一种是使用Docker。不过用户的问题可能更倾向于直接安装,因为引用[1]中的步骤更详细。
另外,配置方面,需要生成TLS证书,可能使用openssl创建自签名证书,因为不用域名。然后配置DERP的配置文件,设置HTTP服务器和TLS路径。引用[1]中提到需要修改Tailscale的配置以使用自定义DERP服务器,所以用户可能需要编辑derp.yaml文件,并确保服务正确运行。
还需要注意,用户可能需要开启防火墙端口,如3478/UDP,以及自定义的HTTP端口(如引用[2]中的自定义端口)。同时,测试部分可能需要使用curl检查服务是否运行,以及配置Tailscale客户端。
最后,生成相关问题,可能需要涉及如何配置TLS证书,如何优化DERP服务器,或者如何集成到Tailscale网络等。
现在需要组织这些信息,确保每个步骤清晰,并正确引用来源。同时,检查是否有遗漏的步骤,比如防火墙设置或服务启动命令。另外,注意用户可能对自签名证书的步骤不熟悉,需要详细说明openssl命令的使用。</think>### 自定义 Tailscale DERP 服务器搭建教程
#### 1. 环境准备
- **操作系统**: 推荐使用 Ubuntu 20.04/22.04
- **网络要求**: 开放端口 `3478/UDP`(STUN)和自定义 HTTP 端口(如 `8080`)[^1]
- **依赖安装**:
```bash
sudo apt update && sudo apt upgrade -y
sudo apt install -y wget git openssl curl snapd
```
#### 2. 安装 Golang 环境
Tailscale DERP 服务器基于 Go 语言实现,需安装 Go 1.16+:
```bash
wget https://go.dev/dl/go1.21.1.linux-amd64.tar.gz
sudo tar -C /usr/local -xzf go1.21.1.linux-amd64.tar.gz
echo 'export PATH=$PATH:/usr/local/go/bin' >> ~/.bashrc
source ~/.bashrc
```
验证安装:
$$ go version $$
#### 3. 部署 DERP 服务
1. **下载源码**:
```bash
git clone https://github.com/tailscale/tailscale.git
cd tailscale/cmd/derper
go build -o derper
```
2. **生成自签名证书**(无域名):
```bash
mkdir certs
openssl req -x509 -newkey rsa:4096 -sha256 -days 3650 -nodes \
-keyout certs/key.pem -out certs/cert.pem \
-subj "/CN=your-server-ip" -addext "subjectAltName=IP:your-server-ip"
```
3. **启动服务**:
```bash
./derper --hostname=your-server-ip --stun --verify-clients=true \
--certmode=manual --certdir=certs --a=:8080
```
- `--stun`: 启用 STUN 服务
- `--a=:8080`: 指定 HTTP 服务端口[^2]
#### 4. 配置 Tailscale 客户端
编辑 Tailscale 配置文件 `/etc/tailscale/tailscaled.conf`:
```yaml
# 添加自定义 DERP 服务器
DerpMap:
Regions:
"901":
RegionID: 901
RegionCode: my-derp
Nodes:
- Name: 1
RegionID: 901
HostName: your-server-ip
DERPPort: 8080
STUNPort: 3478
```
#### 5. 验证服务
- **检查端口监听**:
```bash
ss -tuln | grep -E '3478|8080'
```
- **测试 HTTP 服务**:
```bash
curl http://your-server-ip:8080
```
应返回 `DERP` 版本信息[^1]。
#### 6. 持久化运行(可选)
使用 `systemd` 创建服务:
```ini
# /etc/systemd/system/derper.service
[Unit]
Description=Tailscale DERP Server
After=network.target
[Service]
ExecStart=/path/to/derper --hostname=your-server-ip --stun --a=:8080
Restart=always
[Install]
WantedBy=multi-user.target
```
启动服务:
```bash
sudo systemctl enable --now derper
```
阅读全文
相关推荐


















