Skip to main content

此版本的 GitHub Enterprise 已停止服务 2022-06-03. 即使针对重大安全问题,也不会发布补丁。 要获得更好的性能、改进的安全性和新功能,请升级到 GitHub Enterprise 的最新版本。 如需升级方面的帮助,请联系 GitHub Enterprise 支持

连接到专用网络

可以将 GitHub 托管的运行器连接到专用网络上的资源,包括包注册表、机密管理器和其他本地服务。

注: GitHub 托管的运行器目前在 GitHub Enterprise Server 上不受支持。 您可以在 GitHub 公共路线图 上查看有关未来支持计划的更多信息。

关于 GitHub 托管的运行器联网

默认情况下,GitHub 托管的运行器可以访问公共互联网。 但是,您可能还希望这些运行器访问专用网络上的资源,例如程序包注册表、机密管理器或其他本地服务。

GitHub 托管的运行器在所有 GitHub 客户之间共享,因此您需要一种方法,在运行器运行工作流程时,将您的专用网络仅连接到他们的运行器。 您可以采取几种不同的方法来配置此访问,每种方法都有不同的优点和缺点。

使用 WireGuard 创建网络覆盖

如果您不想为 API Gateway 维护单独的基础设施,则可以通过在两个地方运行 WireGuard,在运行器和专用网络中的服务之间创建一个覆盖网络。

这种方法有几个缺点:

  • 要访问在专用服务上运行的 WireGuard,需要工作流程可以引用的已知 IP 地址和端口:这可以是公共 IP 地址和端口、网络网关上的端口映射或动态更新 DNS 的服务。
  • WireGuard 不会开箱即用地处理 NAT 遍历,因此您需要确定一种提供此服务的方法。
  • 这种连接是一对一的,因此,如果需要高可用性或高吞吐量,则需要在WireGuard 之上构建它。
  • 您需要为运行器和私有服务生成并安全地存储密钥。 WireGuard 使用 UDP,因此您的网络必须支持 UDP 流量。

还有一些优点,因为您可以在现有的服务器上运行 WireGuard,所以你不必维护单独的基础设施,而且它在 GitHub 托管的运行器上得到了很好的支持。

示例:配置 WireGuard

此示例工作流程将 WireGuard 配置为连接到专用服务。

对于此示例,在专用网络中运行的 WireGuard 实例具有以下配置:

  • 192.168.1.1 的覆盖网络 IP 地址
  • 1.2.3.4:56789 的公共 IP 地址和端口
  • 公钥 examplepubkey1234...

GitHub Actions 运行器中的 WireGuard 实例具有以下配置:

  • 192.168.1.2 的覆盖网络 IP 地址
  • 私钥作为 GitHub Actions 机密存储在 WIREGUARD_PRIVATE_KEY
name: WireGuard example

on:
  workflow_dispatch:

jobs:
  wireguard_example:
    runs-on: ubuntu-latest
    steps:
      - run: sudo apt install wireguard

      - run: echo "$" > privatekey

      - run: sudo ip link add dev wg0 type wireguard

      - run: sudo ip address add dev wg0 192.168.1.2 peer 192.168.1.1

      - run: sudo wg set wg0 listen-port 48123 private-key privatekey peer examplepubkey1234... allowed-ips 0.0.0.0/0 endpoint 1.2.3.4:56789

      - run: sudo ip link set up dev wg0

      - run: curl -vvv http://192.168.1.1

有关更多信息,请参阅 WireGuard 快速入门,以及“加密机密”了解如何安全存储密钥。

使用 Tailscale 创建网络叠加

Tailscale 是建立在 WireGuard 之上的商业产品。 此选项与 WireGuard 非常相似,除了 Tailscale 更像是完整的产品体验,而不是开源组件。

它的缺点与 WireGuard 类似:连接是一对一的,因此您可能需要执行额外的工作以实现高可用性或高吞吐量。 您仍然需要生成并安全地存储密钥。 该协议仍然是 UDP,因此您的网络必须支持 UDP 流量。

但与 WireGuard 相比有一些优势:NAT 遍历是内置的,因此您无需向公共互联网公开端口。 到目前为止,它是这些选项中启动和运行最快的选项,因为 Tailscale 提供 GitHub Actions 工作流程,只需一步即可连接到覆盖网络。

更多信息请参阅 Tailscale GitHub Action,以及参阅“加密机密”,了解如何安全存储密钥。