Blacksmith 如何使用 Tailscale Services 绕过 ISP 衰减
发布: (2025年12月18日 GMT+8 23:00)
3 min read
原文: Tailscale Blog
Source: Tailscale Blog
TL;DR
我们构建了一个透明代理,将 GitHub 流量通过具有直接 GitHub 对等连接的备用网络路径进行路由,为我们的 runner 提供针对 ISP 路由故障的深度防御。客户无需进行代码更改——GitHub Actions 与 GitHub 的交互方式保持不变。该代理名为 Blacksmith,作为 Tailscale 服务运行,并在直接对等路径不可用时自动切换到公共互联网。
Background
- Problem: ISP 路由故障可能导致依赖 GitHub 的 CI/CD 流水线出现间歇性连接问题。
- Goal: 提供可靠、透明的网络路径,无需更改现有的 GitHub Actions 工作流。
Design Overview
-
Transparent Proxy
- 以 Tailscale 服务的形式部署。
- 拦截 runner 发出的 GitHub 出站流量。
-
Direct Peering
- 与 GitHub 网络建立专用对等连接。
- 绕过典型的 ISP 路由。
-
Failover Mechanism
- 监控对等链接的健康状态。
- 当对等链接出现退化时,自动回退到公共互联网。
Implementation Details
- Tailscale Service: 在与 runner 同一 VPC 内的轻量级 VM 上运行。
- IP Routing: 使用
iptables规则将指向github.com的流量重定向到代理。 - Health Checks: 对 GitHub 端点进行周期性 TCP 探测,以判断链路健康。
- Configuration: runner 的
.github/workflows文件无需任何更改;代理对 CI 作业是透明的。
Benefits
- Zero Code Changes: 现有流水线无需修改即可继续运行。
- Improved Reliability: 减少 ISP 级别路由问题的影响。
- Observability: Tailscale 管理控制台提供代理健康和流量的度量指标。
Getting Started
- Deploy Blacksmith: 按照仓库中提供的 Terraform 模块进行部署。
- Enable Tailscale on Runners: 确保 runner 加入同一 Tailscale 网络。
- Verify Connectivity: 使用提供的健康检查脚本确认对等路径已激活。
Future Work
- 将支持范围扩展到其他主要代码托管平台。
- 为额外的安全层添加可选的 TLS 终止。
- 提供实时流量分析的 UI 仪表盘。