Skip to main content

WireGuard를 사용하여 네트워크 오버레이 만들기

러너와 프라이빗 네트워크의 서비스 사이에 오버레이 네트워크를 만들 수 있습니다.

WireGuard를 사용하여 네트워크 오버레이 만들기

API 게이트웨이에 대한 별도의 인프라를 유지 관리하지 않으려면 두 위치에서 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 주소 오버레이
  • 프라이빗 키는 WIREGUARD_PRIVATE_KEY 아래에 GitHub Actions 비밀로 저장됩니다.
name: WireGuard example

on:
  workflow_dispatch:

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

      - run: echo "${{ secrets.WIREGUARD_PRIVATE_KEY }}" > 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 빠른 시작과 키를 안전하게 저장하는 방법에 대한 "GitHub Actions에서 비밀 사용"을 참조하세요.

Tailscale을 사용하여 네트워크 오버레이 만들기

Tailscale은 WireGuard를 기반으로 제작된 상업용 제품입니다. Tailscale이 오픈 소스 구성 요소 대신 완전한 제품 환경이라는 점을 제외하면 이 옵션은 WireGuard와 매우 유사합니다.

단점은 WireGuard와 비슷합니다: 연결이 일대일로 이루어지므로 고가용성 또는 높은 처리량을 위해 추가 작업을 수행해야 할 수 있습니다.리량을 위해 추가 작업을 수행해야 할 수 있습니다. 여전히 키를 생성하고 안전하게 저장해야 합니다. 프로토콜은 여전히 UDP이므로 네트워크에서 UDP 트래픽을 지원해야 합니다.

그러나 WireGuard에 비해 몇 가지 장점이 있습니다. NAT 통과가 기본 제공되므로 퍼블릭 인터넷에 포트를 노출할 필요가 없습니다. Tailscale은 오버레이 네트워크에 연결하는 단일 단계로 GitHub Actions 워크플로를 제공하므로 이러한 옵션 중 가장 빠르게 시작하고 실행할 수 있습니다.

자세한 내용은 Tailscale GitHub 작업과 키를 안전하게 저장하는 방법에 대한 "GitHub Actions에서 비밀 사용"을 참조하세요.