클라우드 VPN 도입 - 100-hours-a-week/16-Hot6-wiki GitHub Wiki

wireguard vpn 도입

WireGuard VPN 도입 문서

목적

  • 개발자들이 GCP 프라이빗 서브넷(예: 10.10.10.0/24)에 보안된 방식으로 접근할 수 있도록 WireGuard VPN 도입
  • Bastion Host 없이 경량 VPN으로 비용 절감간단한 설정 가능

시스템 구성

항목 구성 내용
VPN 서버 위치 Shared Public Subnet (10.0.0.0/24) 내 Compute Engine
VPN 클라이언트 각 개발자 로컬 장비 (macOS/Linux/Windows)
VPN 방식 WireGuard (UDP 기반)
접근 가능한 영역 Dev Private Subnet (e.g. 10.10.10.0/24, 10.10.20.0/28)

⚙️ 설치 및 설정 절차

1. WireGuard 서버 설치 (GCP VM)

sudo apt update && sudo apt install wireguard -y

2. 키 생성

umask 077
wg genkey | tee privatekey | wg pubkey > publickey

3. 서버 설정 파일 /etc/wireguard/wg0.conf

[Interface]
PrivateKey = <서버_프라이빗키>
Address = 10.100.0.1/24
ListenPort = 51820
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

4. 포트 오픈 및 실행

sudo ufw allow 51820/udp
sudo systemctl enable wg-quick@wg0
sudo systemctl start wg-quick@wg0

🧑‍💻 클라이언트 설정 예시 (macOS 기준)

[Interface]
PrivateKey = <클라이언트_프라이빗키>
Address = 10.100.0.2/24
DNS = 8.8.8.8

[Peer]
PublicKey = <서버_퍼블릭키>
Endpoint = <서버_퍼블릭IP>:51820
AllowedIPs = 10.10.0.0/16
PersistentKeepalive = 25

테스트 및 결과

항목 결과
VPN 연결 성공 (WireGuard 로그 및 wg show 확인)
내부 서브넷 핑 테스트 성공 (e.g. ping 10.10.10.2)
Backend API 접근 정상 작동
Prometheus 대시보드 접근 성공

보안 고려사항

  • 서버 퍼블릭 IP에 대해 IP 제한 설정 검토 필요
  • WireGuard 구성 파일은 Git에 저장 금지
  • 자동 재시작 및 헬스체크 구성 고려

향후 계획 (Optional)

  • 연결 로그 및 접속 시간 Prometheus/AlertManager 연동
  • 클라이언트 등록 자동화 스크립트 작성
  • 동시 접속자 수 제한 설정

결과 페이지

alt text alt text

⚠️ **GitHub.com Fallback** ⚠️