Tailscale-Derp节点安装配置教程
教程安装配置
概述
DERP (Designated Encrypted Relay for Packets) 是Tailscale的加密中继服务,用于在NAT穿透失败时提供备用的连接路径。
系统要求
- 操作系统: Linux (推荐Ubuntu 20.04+ 或 CentOS 7+)
- 内存: 至少512MB RAM
- 存储: 至少1GB可用空间
- 网络: 公网IP,开放端口33445、33446、3478
安装步骤
1. 下载Derp二进制文件并安装
# 更新软件包列表 & 升级系统
sudo apt update && sudo apt upgrade -y
# 安装基本依赖
sudo apt install -y wget git openssl curl
# 下载Golang,我使用的是x86_64版本,您也可以根据需要选择合适的版本 [All releases - The Go Programming Language](https://go.dev/dl/)
wget https://go.dev/dl/go1.22.3.linux-amd64.tar.gz
# 删除旧的Golang并解压新的内容
sudo rm -rf /usr/local/go && sudo tar -C /usr/local -xzf go1.22.3.linux-amd64.tar.gz
# 配置环境变量
export PATH=$PATH:/usr/local/go/bin
# 检查Golang是否安装成功
go version
# 配置Golang环境(国外服务器可跳过)
go env -w GO111MODULE=on
go env -w GOPROXY=https://goproxy.cn,direct
# 安装Tailscale Derper
go install tailscale.com/cmd/derper@main
# 创建 /etc/derp 文件夹并赋予权限,以便后续修改文件重新编译到这里
sudo mkdir -p /etc/derp/
sudo chmod 777 /etc/derp/
# 编译文件到指定文件夹(*是通配符,可指定具体版本目录)
cd ~/go/pkg/mod/tailscale.com@*/cmd/derper
# 编译文件到之前创建的文件夹
go build -o /etc/derp/derper
# 创建derp.service
sudo sh -c "cat > /etc/systemd/system/derp.service <<EOF
[Unit]
Description=TS Derper
After=network.target
Wants=network.target
[Service]
User=root
WorkingDirectory=/etc/derp
ExecStart=/etc/derp/derper \
-verify-clients \
-hostname derp.domain.com \
-a :33445 \
-http-port 33446 \
-certmode manual \
-certdir /etc/derp
Restart=always
RestartPreventExitStatus=1
[Install]
WantedBy=multi-user.target
EOF
"
# 自行把证书放到下面位置
# /etc/derp/derp.domain.com.crt
# /etc/derp/derp.domain.com.key
2. 安装tailscaled
derper 需要本地运行的 tailscaled
来验证客户端状态
# 如果你用的是 Linux x86_64,可以用官方脚本安装)
curl -fsSL https://tailscale.com/install.sh | sh
# 启动
systemctl enable --now tailscaled
systemctl status tailscaled
# 登录 tailscaled(让它加入你的 Tailscale 网络)
tailscale up
3. 启动derper
# 启动服务
systemctl restart derp
# 查看日志
journalctl -u derp -f
配置文件内容:
{
"version": "1",
"regions": {
"999": {
"regionID": 999,
"regionCode": "my-derp",
"regionName": "My DERP Server",
"nodes": [
{
"name": "derp1",
"regionID": 999,
"hostName": "your-server-ip",
"ipv4": "your-server-ip",
"derpPort": 33445,
"stunPort": 33446,
"stunOnly": false
}
]
}
}
}
3. 创建systemd服务文件
sudo nano /etc/systemd/system/derp.service
服务文件内容:
[Unit]
Description=DERP Server
After=network.target
[Service]
Type=simple
User=root
WorkingDirectory=/etc/derp
ExecStart=/etc/derp/derp -config=/etc/derp/derp.conf
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target
4. 启动服务
# 重新加载systemd配置
sudo systemctl daemon-reload
# 启用服务(开机自启)
sudo systemctl enable derp
# 启动服务
sudo systemctl start derp
# 检查服务状态
sudo systemctl status derp
- 注意开放端口 3478、33445、33446
配置Tailscale客户端
1. 在Tailscale管理后台配置
- 登录 Tailscale管理后台
- 在JSON editor里添加如下代码
"derpMap": {
"OmitDefaultRegions": true,
"Regions": {
"901": {
"RegionID": 901,
"RegionCode": "YuxuanMini",
"RegionName": "YuxuanMini Derper",
"Nodes": [
{
"Name": "901a",
"RegionID": 901,
"HostName": "derp.domain.com",
"DERPPort": 33445,
"IPv4": "your public ip",
"InsecureForTests": true
}
]
}
}
},
验证安装
1. 检查服务状态
# 查看服务状态
sudo systemctl status derp
# 查看日志
sudo journalctl -u derp -f
# 检查端口监听
sudo netstat -tlnp | grep derp
2. 测试连接
# 测试DERP端口
telnet your-server-ip 33445
# 测试STUN端口
nc -u your-server-ip 33446
故障排除
常见问题
1. 服务启动失败
# 查看详细日志
sudo journalctl -u derp -n 50
# 检查配置文件语法
/etc/derp/derp -config=/etc/derp/derp.conf -check
2. 端口被占用
# 查看端口占用
sudo netstat -tlnp | grep :33445
sudo netstat -tlnp | grep :33446
# 杀死占用进程
sudo kill -9 <PID>
3. 防火墙问题
# 检查防火墙状态
sudo ufw status
# 或
sudo firewall-cmd --list-all
总结
通过以上步骤,您就可以成功搭建一个DERP服务器,为Tailscale网络提供可靠的中继服务。记得定期维护和监控服务状态,确保网络的稳定性。