在复杂的网络环境下,Tailscale 的点对点(P2P)连接有时会失败。此时,一个低延迟的自建 DERP (Designated Encrypted Relay for Packets) 中转服务器就成了保证远程桌面、文件传输顺滑的关键。
本文将带你从零开始编译 DERP,并实施一套足以抵御 99% 公网扫描的 VPS 加固方案。
一、 VPS 基础环境配置
建议使用 Ubuntu 22.04+ 或 Debian 11+ 系统。
1. 安装 Go 语言环境
DERP 由 Go 编写,我们直接从仓库安装最新版:
Bash
sudo apt update && sudo apt install golang-go -y
# 验证安装
go version
2. 准备自签名证书目录
为了避开域名申请和备案的麻烦,我们采用“手动证书模式”:
Bash
mkdir -p /root/derp/certs
二、 编译与部署 DERP 服务端
由于 Docker 镜像可能存在拉取故障,源码编译是最稳妥且高效的方式。
1. 编译安装
Bash
# 将 derper 安装至 /root/go/bin/
go install tailscale.com/cmd/derper@main
2. 启动服务
建议避开常用的 80/443 端口,改用自定义高位端口。
- 中转端口 (TCP):建议选择
30000-60000之间的数字(如34443)。 - 穿透协助端口 (UDP):建议选择
30000-60000之间的数字(如33478)。
启动命令示例:
Bash
nohup /root/go/bin/derper -hostname <您的服务器公网IP> \
-a :34443 -stun-port 33478 \
-certmode manual -certdir /root/derp/certs > /var/log/derp.log 2>&1 &
3. 配置开机自启
通过 crontab -e 实现重启自动拉起服务:
Bash
@reboot nohup /root/go/bin/derper -hostname <您的服务器公网IP> -a :34443 -stun-port 33478 -certmode manual -certdir /root/derp/certs > /var/log/derp.log 2>&1 &
三、 Tailscale 控制台配置 (ACL)
登录 Tailscale 管理后台,在 Access Control 中填入以下 JSON 配置,让客户端识别你的中转站。
JSON
"derpMap": {
"OmitDefaultRegions": false,
"Regions": {
"901": {
"RegionID": 901,
"RegionCode": "my-custom-relay",
"RegionName": "My Private Relay Server",
"Nodes": [
{
"Name": "1",
"RegionID": 901,
"DERPPort": 34443,
"IPv4": "<您的服务器公网IP>",
"InsecureForTests": true
}
]
}
}
}
四、 VPS 终极安全加固
一旦 VPS 拥有公网 IP,每秒都会遭遇数以千计的暴力破解尝试。以下步骤能让你的服务器从黑客雷达上“消失”。
1. 修改 SSH 默认端口 (隐身术)
将 SSH 端口从 22 改为随机高位端口(如 52222):
- 编辑配置:
sudo nano /etc/ssh/sshd_config。 - 修改:
Port 52222。 - 重启服务:
sudo systemctl restart ssh。
2. 部署 UFW 精准防火墙
原则: 除了业务端口,关掉一切。
Bash
# 默认拒绝所有入站,允许所有出站
sudo ufw default deny incoming
sudo ufw default allow outgoing
# 必须放行的业务端口
sudo ufw allow 34443/tcp # DERP
sudo ufw allow 33478/udp # STUN
# SSH 安全访问方案(选其一):
# 方案 A:允许新端口访问(方便但仍会被扫)
sudo ufw allow 52222/tcp
# 方案 B:仅允许 Tailscale 内部节点访问(极度安全,推荐)
sudo ufw allow from 100.64.0.0/10 to any port 52222 proto tcp
# 启用防火墙
sudo ufw enable
3. 安装 Fail2Ban (自动门禁)
对于那些依然能摸到你端口的恶意 IP,开启自动封禁。
Bash
sudo apt install fail2ban -y
sudo systemctl enable fail2ban
sudo systemctl start fail2ban
五、 常用维护指令表
| 任务 | 命令 |
| 查看 DERP 是否运行 | `ps -ef |
| 查看黑客暴力破解日志 | `sudo lastb |
| 检查 Tailscale 延迟 | tailscale netcheck |
| 查看被防火墙拦截的 IP | sudo fail2ban-client status sshd |
六、 总结与最佳实践
- 子网转发:若需访问家里的设备,请在家里路由器运行
tailscale up --advertise-routes=192.168.x.0/24,并在后台点选Approve。 - 防止白嫖:若希望只有自己的设备能用中转,请在 VPS 安装 Tailscale 客户端并
up登录,随后在derper启动命令末尾加上--verify-clients。 - 双重验证:建议禁用 SSH 密码登录,改用 SSH Key(公私钥)登录。
这篇文章旨在提供一种平衡便利性与安全性的组网方案。在享受 30ms 低延迟的同时,请务必保持防火墙处于开启状态。