【实践记录】重新部署 Tailscale DERP 并解决阿里云环境下HTTP reset问题
在我的个人网络体系中,Tailscale 一直占据着核心位置。随着使用时间的增长,其在跨网络访问、远程开发、内网服务暴露等场景中的作用愈发明显。
将近两年前,我曾在华为云环境部署过自定义 DERP 中继节点(自部署Tailscale DERP中继服务器实践分享 | 光溯星河),以改善复杂网络条件下的连接质量。但随着服务器到期,该节点也随之下线,之后一段时间内未再维护相关设施。
去年趁阿里云99计划加了台新的轻量,但一直有其他的事情就放着没管。后来尝试了几次部署DERP都以失败告终,遇到的问题我会在后文讲,总之诸多文章都指向阿里云部署Tailscale存在诸多问题,我找了很多方案也没有真正解决的。直到这次在Codex的帮助下才完成问题排查和部署。
环境介绍
- 云厂商:阿里云
- 系统:Debian 11 x86_64
- Tailscale版本:1.62.x
- Go环境版本:1.22.x
部署流程
1. 安装 Tailscale
curl -fsSL https://tailscale.com/install.sh | sh
tailscale up
2. 安装 Go
wget https://go.dev/dl/go1.22.x.linux-amd64.tar.gz
tar -C /usr/local -xzf go1.22.x.linux-amd64.tar.gz
3. 安装 DERPer
go install tailscale.com/cmd/derper@latest
go build -o /usr/local/bin/derper tailscale.com/cmd/derper
4. 服务配置
[Unit]
Description=Tailscale DERP Server
After=network.target
[Service]
ExecStart=/usr/local/bin/derper -hostname <your-domain-or-ip> -a :<port>
Restart=always
User=root
[Install]
WantedBy=multi-user.target
核心问题:443 端口连接被重置(RESET)
1. 问题表现
- HTTPS 访问直接被 reset
- curl 报错 SSL_connect reset
- DERP 无法建立 TLS
该问题与“域名 + 443”强相关,反复排查后强烈怀疑阿里云防火墙或其它拦截机制导致的问题,对于已经备案的域名也会导致该问题。
由此导致标准方案失效:
- Let's Encrypt 不可用
- 标准 HTTPS DERP 不可用
2. 解决方案(折中)
放弃继续排查 443 问题,优先保证系统可用性。
使用 IP + 自定义端口
derper -a :8443
使用自签证书
openssl req -x509 ...
DERP Map 使用 IP
"HostName": "<server-ip>",
"DERPPort": 8443
网络问题排查
经典环节,不多讲。避免直接删除 iptables,应使用:
tailscale up --accept-routes=false
配置 DERP Map
tailslcale控制台配置。
"derpMap": {
"OmitDefaultRegions": false,
"Regions": {
"901": {
"RegionID": 901,
"Nodes": [
{
"HostName": "<ip>",
"DERPPort": 8443
}
]
}
}
}
验证生效。
参考阅读
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 光溯星河
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果