logo
0
0
WeChat Login
chore: 添加 tailscale-derp-client-verifier 作为备份

DERP Server 部署指南

本文档介绍如何在 Alpine Linux 和 Debian 系统上部署 Tailscale DERP 服务器。

目录结构

/opt/derper/ ├── derper # DERP 服务器可执行文件 ├── certs/ # SSL 证书目录 │ ├── your-domain.crt │ └── your-domain.key └── log/ # 日志目录 ├── derper.log └── derper.err

参数说明

参数说明示例
--hostname服务器主机名或 IPyour.server.ip
--certmode证书模式manual
--certdir证书目录/opt/derper/certs
--aDERP 服务监听地址:15566
--stun-portSTUN 端口15567
--http-portHTTP 端口(-1 表示禁用)-1
--verify-clients是否验证客户端false
--verify-client-url客户端验证 URLhttps://verify.example.com
--verify-client-url-fail-open验证失败时是否允许连接false

命令行运行

./derper \ --hostname=your.server.ip \ --certmode=manual \ --certdir=./certs \ --a=:15566 \ --stun-port=15567 \ --http-port=-1 \ --verify-clients=false \ --verify-client-url=https://verify.example.com \ --verify-client-url-fail-open=false

后台运行:

nohup ./derper \ --hostname=your.server.ip \ --certmode=manual \ --certdir=./certs \ --a=:15566 \ --stun-port=15567 \ --http-port=-1 \ --verify-clients=false \ --verify-client-url=https://verify.example.com \ --verify-client-url-fail-open=false \ > derper.log 2>&1 &

Alpine Linux (OpenRC)

创建服务脚本

vi /etc/init.d/derper

写入以下内容:

#!/sbin/openrc-run name="derper" description="Tailscale DERP Server" command="/opt/derper/derper" command_args="--hostname=your.server.ip --certmode=manual --certdir=/opt/derper/certs --a=:15566 --stun-port=15567 --http-port=-1 --verify-clients=false --verify-client-url=https://verify.example.com --verify-client-url-fail-open=false" command_background="yes" pidfile="/run/${RC_SVCNAME}.pid" output_log="/opt/derper/log/derper.log" error_log="/opt/derper/log/derper.err" depend() { need net }

启动服务

# 添加执行权限 chmod +x /etc/init.d/derper # 启动服务 rc-service derper start # 设置开机自启 rc-update add derper default

管理命令

# 查看状态 rc-service derper status # 停止服务 rc-service derper stop # 重启服务 rc-service derper restart

Debian (Systemd)

创建服务文件

vim /etc/systemd/system/derper.service

写入以下内容:

[Unit] Description=Tailscale DERP Server After=network.target Documentation=https://tailscale.com/ [Service] WorkingDirectory=/opt/derper ExecStart=/opt/derper/derper \ --hostname=your.server.ip \ --certmode=manual \ --certdir=/opt/derper/certs \ --a=:15566 \ --stun-port=15567 \ --http-port=-1 \ --verify-clients=false \ --verify-client-url=https://verify.example.com \ --verify-client-url-fail-open=false Restart=always RestartSec=5 User=root StandardOutput=append:/opt/derper/log/derper.log StandardError=append:/opt/derper/log/derper.err [Install] WantedBy=multi-user.target

启动服务

# 重新加载配置 systemctl daemon-reload # 启动服务 systemctl start derper # 设置开机自启 systemctl enable derper

管理命令

# 查看服务状态 systemctl status derper # 停止服务 systemctl stop derper # 重启服务 systemctl restart derper # 查看实时日志 journalctl -u derper -f

证书配置

使用 --certmode=manual 时:

  • 如果证书目录为空:DERP 服务器会自动生成自签名证书
  • 如果已有证书:需放置以下文件
    • <hostname>.crt - SSL 证书文件
    • <hostname>.key - SSL 私钥文件

例如,如果 --hostname=derp.example.com

/opt/derper/certs/ ├── derp.example.com.crt └── derp.example.com.key

注意:自签名证书需要在客户端信任该证书,否则建议使用正规 CA 签发的证书。

防火墙配置

确保以下端口已开放:

端口协议说明
15566TCPDERP 服务端口
15567UDPSTUN 端口

Alpine Linux (iptables)

iptables -A INPUT -p tcp --dport 15566 -j ACCEPT iptables -A INPUT -p udp --dport 15567 -j ACCEPT

Debian (ufw)

ufw allow 15566/tcp ufw allow 15567/udp

客户端验证配置

使用 --verify-client-url 可以在不将 DERP 服务器添加为 Tailscale 节点的情况下验证客户端。

参考项目:tailscale-derp-client-verifier

步骤一:获取节点列表

在信任的 Tailscale 节点上获取节点列表,并同步到 DERP 服务器:

# 导出节点公钥列表 tailscale status --json | jq '[recurse | objects | with_entries(select(.key == "PublicKey")) | .[]] | sort' > nodes.json

nodes.json 同步到 DERP 服务器(可通过 S3、rclone、scp 等方式)。

步骤二:运行验证服务

在 DERP 服务器上运行 tailscale-derp-client-verifier:

本地文件模式:

./tailscale-derp-client-verifier -path /path/to/nodes.json

S3 存储模式:

# .env 文件 S3_ACCESS_KEY_ID=your_access_key S3_SECRET_ACCESS_KEY=your_secret_key S3_ENDPOINT=https://s3.example.com S3_REGION=us-east-1 S3_BUCKET=your_bucket S3_FILE=nodes.json S3_FORCE_PATH_STYLE=true # 运行 source .env && ./tailscale-derp-client-verifier

验证服务默认监听 http://127.0.0.1:3000

步骤三:配置 DERP 服务器

./derper \ --hostname=your.server.ip \ --certmode=manual \ --certdir=/opt/derper/certs \ --a=:15566 \ --stun-port=15567 \ --http-port=-1 \ --verify-clients=false \ --verify-client-url=http://127.0.0.1:3000 \ --verify-client-url-fail-open=false

参数说明

参数说明
--verify-clients=false不使用内置验证(需要 DERP 服务器加入 Tailscale 网络)
--verify-client-url外部验证服务地址
--verify-client-url-fail-open=false验证失败时拒绝连接(安全模式)

参考链接

About

No description, topics, or website provided.
Language
Go100%