WireGuard · 2025-12-22

GCP에서 WireGuard VPN 설치와 구성

Google Cloud Compute Engine에서 WireGuard VPN을 설치하고 네트워크·방화벽 설정, 클라이언트 구성 예제를 포함해 실무 적용 가능한 설정

작성일 : 2025-12-22 ㆍ 작성자 : 관리자
post
목차

개요

이 문서는 Google Cloud(GCP) 환경에서 WireGuard VPN을 Compute Engine 인스턴스에 배포하는 절차를 단계별로 설명한다. 처음 접하는 사용자도 이해할 수 있도록 사전 준비, 인스턴스 생성, WireGuard 설치·설정, 방화벽 규칙 적용, 클라이언트 구성 및 테스트까지 구체적인 예제를 포함한다.

사전 준비

시작 전에 확인할 항목은 다음과 같다.

  • 프로젝트와 결제 설정이 활성화된 GCP 계정
  • Compute Engine API 활성화 및 충분한 권한
  • 퍼블릭 IP를 할당할 VM 인스턴스(예: Ubuntu LTS 권장)
  • 기본적인 SSH 접속 및 루트 권한 사용 가능

1단계: Compute Engine 인스턴스 생성

인스턴스는 최소한 1 vCPU, 1GB 이상의 메모리를 권장한다. 운영체제로 Ubuntu 20.04/22.04를 사용하면 패키지 설치가 간편하다. 외부 접속을 위해 정적 퍼블릭 IP를 할당하고, 방화벽에서 UDP 포트(기본 51820)를 허용한다.

권장 인스턴스 설정

  • OS: Ubuntu 22.04 LTS
  • Machine type: e2-medium 또는 그 이상
  • 네트워크: 기본 VPC 또는 전용 VPC
  • 방화벽: UDP 51820 허용

2단계: WireGuard 설치

SSH로 VM에 접속한 뒤 패키지를 설치한다. Ubuntu 기준으로 apt를 사용하면 된다.

sudo apt update
sudo apt install -y wireguard wireguard-tools

3단계: 서버 키와 구성 파일 생성

서버에서는 키를 생성한 후 인터페이스 설정 파일을 만든다. 예제는 wg0로 진행한다.

umask 077
wg genkey | tee /etc/wireguard/server_private.key | wg pubkey > /etc/wireguard/server_public.key
SERVER_PRIV=$(cat /etc/wireguard/server_private.key)
SERVER_PUB=$(cat /etc/wireguard/server_public.key)

기본 서버 구성 예시는 다음과 같다. 프라이빗 네트워크는 10.10.0.0/24를 사용한다.

sudo tee /etc/wireguard/wg0.conf << 'EOF'
[Interface]
Address = 10.10.0.1/24
ListenPort = 51820
PrivateKey = SERVER_PRIVATE_KEY_PLACEHOLDER
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

# Peer entries will be added per client
EOF

위 파일에서 SERVER_PRIVATE_KEY_PLACEHOLDER를 생성한 키로 치환한다.

4단계: 방화벽과 라우팅 설정

GCP 콘솔 또는 gcloud CLI에서 인스턴스에 대한 방화벽 규칙을 추가한다. 예시는 UDP 51820을 허용하는 규칙이다.

gcloud compute firewall-rules create allow-wireguard-51820 \
  --direction=INGRESS --priority=1000 --network=default \
  --action=ALLOW --rules=udp:51820 --source-ranges=0.0.0.0/0

서버 내부에서는 IP 포워딩을 활성화한다.

sudo sysctl -w net.ipv4.ip_forward=1
# 영구 설정
echo 'net.ipv4.ip_forward=1' | sudo tee -a /etc/sysctl.conf

5단계: WireGuard 서비스 시작 및 자동화

wg-quick을 사용해 인터페이스를 올리고 systemd로 자동 시작 설정을 한다.

sudo systemctl enable wg-quick@wg0
sudo systemctl start wg-quick@wg0
sudo wg show

6단계: 클라이언트 구성 예제

클라이언트도 키를 생성하고 서버의 PublicKey와 AllowedIPs를 지정한다. 예시는 모바일 또는 다른 Linux 클라이언트를 위한 설정이다.

# 클라이언트 키 생성
wg genkey | tee client_private.key | wg pubkey > client_public.key

# 클라이언트 설정 (예: client.conf)
[Interface]
PrivateKey = CLIENT_PRIVATE_KEY
Address = 10.10.0.2/32
DNS = 1.1.1.1

[Peer]
PublicKey = SERVER_PUBLIC_KEY
Endpoint = SERVER_PUBLIC_IP:51820
AllowedIPs = 0.0.0.0/0, ::/0
PersistentKeepalive = 25

클라이언트의 PublicKey 값을 서버의 wg0.conf에 Peer로 추가하고, AllowedIPs에 클라이언트 주소를 넣는다.

7단계: 테스트 및 문제 해결

테스트는 다음 절차로 진행한다.

  • 서버에서 wg show로 피어 연결 상태 확인
  • 클라이언트에서 내부 IP(예: 10.10.0.1)로 핑 테스트
  • 퍼블릭 IP를 통한 인터넷 접속이 가능하면 NAT 설정 정상

문제가 발생하면 방화벽 규칙, ip_forward 설정, /etc/wireguard/wg0.conf의 키와 주소를 우선적으로 점검한다.

운영 고려사항

운영 시에는 다음 사항을 고려한다.

  • 키 관리: 주기적인 키 교체와 안전한 백업
  • 로그 및 모니터링: 접속 로그와 네트워크 사용량 점검
  • 확장성: 다수 클라이언트는 서브넷 설계와 동적 할당 정책 검토
  • 보안: 관리용 포트 접근 제어, 최소 권한 원칙 적용

결론

WireGuard는 구성과 성능 면에서 효율적인 VPN 솔루션이다. 이 문서의 절차를 따르면 GCP Compute Engine에 안정적으로 WireGuard를 배포하고 운영할 수 있다. 필요에 따라 인증 통합, 오토스케일링 또는 고가용성 구성을 추가해 보완하면 더욱 안전한 네트워크 환경을 유지할 수 있다.

GCP WireGuard 설정 Google Cloud WireGuard 설치 Compute Engine WireGuard WireGuard 설치 WireGuard 설정 GCP VPN Compute Engine VPN WireGuard 서버 구성