#
Tailscale 2026-06-12

自建 Tailscale DERP 中继节点

By io 159 Views 9 MIN READ 0 Comments
自建 DERP 中继节点,解决 Tailscale 在国内直连不稳定、依赖海外中继的问题。
本文以 腾讯云 服务器为例,适用于任意有公网 IP 的 Linux 服务器。

1. 安装 Go 并编译 derper

# 安装 Go(Debian/Ubuntu)
apt-get update && apt-get install -y golang-go

# 编译 derper(默认产物路径 ~/go/bin/derper)
go install tailscale.com/cmd/derper@latest

2. 创建 systemd 服务

cat > /etc/systemd/system/derper.service << 'EOF'
[Unit]
Description=Tailscale DERP Relay
After=network.target tailscaled.service
Requires=tailscaled.service

[Service]
Type=simple
ExecStart=/root/go/bin/derper -a ':12345' --stun-port=3478 --verify-clients
Restart=on-failure
RestartSec=5
Environment=PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/go/bin
LimitNOFILE=65536

[Install]
WantedBy=multi-user.target
EOF

systemctl daemon-reload && systemctl enable --now derper
说明: --verify-clients 要求客户端通过 Tailscale 身份验证才能使用中继,防止被滥用。

3. 防火墙放行

3.1 云服务器安全组(控制台)

方向类型协议端口来源
入方向TCPTCP123450.0.0.0/0
入方向UDPUDP34780.0.0.0/0
  • TCP 12345:DERP 中继通信
  • UDP 3478:STUN NAT 探测
腾讯云用户: 登录控制台 → 实例 → 安全组 → 添加入站规则。

3.2 系统内防火墙

ufw allow 12345/tcp
ufw allow 3478/udp

如果使用 iptables

iptables -A INPUT -p tcp --dport 12345 -j ACCEPT
iptables -A INPUT -p udp --dport 3478 -j ACCEPT

4. 服务端验证

# 检查 derper 运行状态
systemctl status derper

# 本地验证
curl http://localhost:12345/
# 应返回 derper HTML 页面

# 从其他 Tailnet 设备验证(替换 <服务器TailscaleIP>)
curl http://<服务器TailscaleIP>:12345/
注意: 如果本地正常但外部访问超时,100% 是云服务器安全组未放行端口。

5. 客户端配置

5.1 检查连接状态

# 查看当前连接方式
tailscale status

# 检查中继列表
tailscale netcheck

5.2 配置 DERP Map

在 Tailscale 管理后台(https://login.tailscale.com/admin/acls)的 ACL 规则中添加 derpMap

"derpMap": {
  "OmitDefaultRegions": false,
  "Regions": {
    "901": {
      "RegionID": 901,
      "RegionCode": "myderp",
      "RegionName": "自建DERP",
      "Nodes": [
        {
          "Name": "node1",
          "RegionID": 901,
          "HostName": "<你的服务器公网IP>",
          "DERPPort": 12345,
          "STUNPort": 3478,
          "IPv4": "<你的服务器公网IP>"
        }
      ]
    }
  }
}

参数说明:

  • OmitDefaultRegions: false — 保留 Tailscale 官方默认中继,自建节点作为补充
  • RegionID: 901 — 自定义区域 ID,取值范围 900–999
  • HostName / IPv4 — 替换为你的服务器公网 IP
  • DERPPort — DERP 端口,与 derper -a 参数一致

配置生效后,在任意 Tailnet 设备运行 tailscale netcheck,若能看到 自建DERP 节点且延迟正常,即表示搭建成功。


6. 常见问题

问题原因解决
netcheck 显示 000 超时云安全组未放行端口检查控制台安全组规则
客户端无法连接系统防火墙拦截ufw allowiptables 放行
systemctl status derper 显示失败端口被占用或权限不足检查端口占用,确认以 root 运行
不想暴露给未认证客户端未加 --verify-clients在 ExecStart 中补充该参数

本文由 io 原创

采用 CC BY-NC-SA 4.0 协议进行许可

转载请注明出处:https://godd.asia/index.php/archives/33/

TAGS: Tailscale

相关推荐

  • 暂无相关推荐,看看别的吧。

0 评论

发表评论