WireGuard로 네트워크 오버레이 만들기
WireGuard로 네트워크 오버레이 만들기
러너와 사설 네트워크의 서비스 사이에 오버레이 네트워크를 만들 수 있어요. 두 곳 모두에서 WireGuard를 실행하면 별도의 API 게이트웨이 인프라를 유지하지 않고도 안전한 사설 네트워크 연결을 만들 수 있어요.
출처: 문서
본문
WireGuard로 네트워크 오버레이 만들기
API 게이트웨이를 위한 별도 인프라를 유지하고 싶지 않다면, 양쪽 모두에서 WireGuard를 실행해 러너와 사설 네트워크의 서비스 사이에 오버레이 네트워크를 만들 수 있어요.
이 접근 방식에는 다양한 단점이 있어요:
- 사설 서비스에서 실행 중인 WireGuard에 도달하려면 워크플로가 참조할 수 있는 잘 알려진 IP 주소와 포트가 필요해요: 공개 IP 주소와 포트, 네트워크 게이트웨이의 포트 매핑, 또는 DNS를 동적으로 업데이트하는 서비스가 될 수 있어요.
- WireGuard는 NAT 통과(NAT traversal)를 기본 지원하지 않으므로, 이 서비스를 제공할 방법을 직접 찾아야 해요.
- 이 연결은 일대일(one-to-one)이므로, 고가용성이나 고처리량이 필요하다면 WireGuard 위에 직접 구축해야 해요.
- 러너와 사설 서비스 양쪽의 키를 생성하고 안전하게 저장해야 해요. WireGuard는 UDP를 사용하므로 네트워크가 UDP 트래픽을 지원해야 해요.
장점도 있어요. 기존 서버에서 WireGuard를 실행할 수 있어 별도 인프라를 유지할 필요가 없고, GitHub 호스팅 러너에서 잘 지원돼요.
예제: WireGuard 구성하기
이 예제 워크플로는 사설 서비스에 연결하도록 WireGuard를 구성해요.
이 예제에서 사설 네트워크에서 실행되는 WireGuard 인스턴스의 구성은 다음과 같아요:
- 오버레이 네트워크 IP 주소
192.168.1.1 - 공개 IP 주소와 포트
1.2.3.4:56789 - 공개 키
examplepubkey1234...
GitHub Actions 러너의 WireGuard 인스턴스 구성은 다음과 같아요:
- 오버레이 네트워크 IP 주소
192.168.1.2 - 비밀 키는
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의 Quick Start와, 키를 안전하게 저장하는 방법은 GitHub Actions에서 시크릿 사용하기를 참고하세요.
Tailscale로 네트워크 오버레이 만들기
Tailscale은 WireGuard 위에 구축된 상용 제품이에요. 이 옵션은 WireGuard와 매우 비슷하지만, Tailscale은 오픈소스 컴포넌트보다 더 완전한 제품 경험에 가까워요.
단점도 WireGuard와 비슷해요: 연결이 일대일이라 고가용성이나 고처리량을 위해 추가 작업이 필요할 수 있어요. 키를 생성하고 안전하게 저장해야 해요. 프로토콜도 여전히 UDP이므로 네트워크가 UDP 트래픽을 지원해야 해요.
하지만 WireGuard에 비해 몇 가지 장점이 있어요: NAT 통과가 내장되어 있어 공개 인터넷에 포트를 노출할 필요가 없어요. Tailscale이 단일 단계로 오버레이 네트워크에 연결하는 GitHub Actions 워크플로를 제공하므로, 이 옵션들 중 가장 빠르게 실행할 수 있어요.
자세한 내용은 Tailscale GitHub Action과, 키를 안전하게 저장하는 방법은 GitHub Actions에서 시크릿 사용하기를 참고하세요.