执行以下命令安装 Tailscale:
curl -fsSL https://tailscale.com/install.sh | sh安装完成后可检查版本:
tailscale versionDERP 服务需要使用 Go 编译安装。
下载 Go 1.26.5:
wget https://go.dev/dl/go1.26.5.linux-amd64.tar.gz删除旧版本:
rm -rf /usr/local/go解压到 /usr/local:
tar -C /usr/local -xzf go1.26.5.linux-amd64.tar.gz创建环境变量配置文件:
sudo tee /etc/profile.d/go.sh > /dev/null <<'EOF'
export PATH=$PATH:/usr/local/go/bin
export PATH="$PATH:$(go env GOPATH)/bin"
EOF立即生效:
source /etc/profile.d/go.sh检查 Go:
go version示例:
go version go1.26.5 linux/amd64
- 创建证书目录:
mkdir -p /usr/local/cert
cd /usr/local/cert- 生成私钥(RSA 4096):
openssl genrsa -out derper.key 4096生成后文件位于 /usr/local/cert/derper.key。
- 生成自签名证书:
openssl req -x509 -new -nodes \
-key derper.key \
-sha256 \
-days 3650 \
-out derper.crt过程中会询问以下项:
- Country Name (2 letter code) [XX]
- State or Province Name
- Locality Name
- Organization Name
- Common Name
其中 Common Name (CN) 建议填写设备的 IP 地址或域名。
设置国内 Go Module 镜像(可选):
go env -w GOPROXY=https://goproxy.cn,direct检查:
go env GOPROXY执行:
go install tailscale.com/cmd/derper@main安装完成后可在 $(go env GOPATH)/bin(通常为 /root/go/bin)找到 derper 可执行文件。
检查:
ls $(go env GOPATH)/bin文件:
/usr/local/bin/derper-run
内容示例:
#!/bin/sh
DERPER_DIR="$(go env GOPATH)/bin"
cd "$DERPER_DIR" || exit 1
if [ -f derper.pid ] && kill -0 "$(cat derper.pid)" 2>/dev/null; then
echo "derper is already running"
exit 1
fi
nohup ./derper \
-hostname {设备的IP地址} \
-c=derper.conf \
-a :56473 \
-http-port -1 \
-certmode manual \
-certdir /usr/local/cert \
-verify-clients \
-stun \
-stun-port 56474 \
> console.log 2>&1 &
echo $! > derper.pid添加执行权限:
chmod +x /usr/local/bin/derper-run文件:
/usr/local/bin/derper-stop
内容示例:
#!/bin/sh
DERPER_DIR="$(go env GOPATH)/bin"
PID_FILE="$DERPER_DIR/derper.pid"
if [ -f "$PID_FILE" ]; then
PID=$(cat "$PID_FILE")
if kill -0 "$PID" 2>/dev/null; then
kill "$PID"
echo "derper stopped"
else
echo "derper process not found"
fi
rm -f "$PID_FILE"
else
echo "pid file not found"
fi添加执行权限:
chmod +x /usr/local/bin/derper-stop创建服务文件:
sudo nano /etc/systemd/system/derper.service写入:
[Unit]
Description=Tailscale DERP Relay Server
After=network-online.target tailscaled.service
Wants=network-online.target
[Service]
Type=forking
ExecStart=/usr/local/bin/derper-run
ExecStop=/usr/local/bin/derper-stop
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target重新加载 systemd:
systemctl daemon-reload设置开机启动:
systemctl enable derper启动:
systemctl start derper查看状态:
systemctl status derper日志文件示例:
/root/go/bin/console.log
查看实时日志:
tail -f /root/go/bin/console.logDERP 需要开放以下端口:
| 端口 | 协议 | 用途 |
|---|---|---|
| 56473 | TCP | DERP Relay |
| 56474 | UDP | STUN 服务 |