Blacksmith 如何使用 Tailscale Services 绕过 ISP 衰减

发布: (2025年12月18日 GMT+8 23:00)
3 min read

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

  1. Transparent Proxy

    • 以 Tailscale 服务的形式部署。
    • 拦截 runner 发出的 GitHub 出站流量。
  2. Direct Peering

    • 与 GitHub 网络建立专用对等连接。
    • 绕过典型的 ISP 路由。
  3. 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

  1. Deploy Blacksmith: 按照仓库中提供的 Terraform 模块进行部署。
  2. Enable Tailscale on Runners: 确保 runner 加入同一 Tailscale 网络。
  3. Verify Connectivity: 使用提供的健康检查脚本确认对等路径已激活。

Future Work

  • 将支持范围扩展到其他主要代码托管平台。
  • 为额外的安全层添加可选的 TLS 终止。
  • 提供实时流量分析的 UI 仪表盘。
Back to Blog

相关文章

阅读更多 »