라우터에 WireGuard VPN 게이트웨이 통합하기
WireGuard를 라우터에 통합해 VPN 게이트웨이를 구성하는 전체 흐름을 설명하며 설치·키 관리·인터페이스 설정·라우팅·NAT·보안 권장사항 및 운영 절차
목차
개요
WireGuard를 라우터에 통합하면 단일 장비로 내부망을 외부 네트워크와 안전하게 연결하는 VPN 게이트웨이를 만들 수 있다. 본문은 라우터 WireGuard 게이트웨이 구성의 핵심 개념, 필요한 준비물, 단계별 설정 예시와 보안 권장사항을 쉽게 이해할 수 있도록 정리한다.
준비물 및 전제조건
우선 라우터 펌웨어가 WireGuard를 지원해야 한다. OpenWrt, RouterOS, 또는 커널 모듈을 가진 리눅스 기반 라우터에서 구현 가능하다. CPU 성능과 메모리, 공개 키/비밀 키 관리를 위한 안전한 환경이 필요하다. 또한 외부에서 접속할 경우 고정 IP 또는 DDNS가 있으면 편리하다.
설계 개념
라우터를 VPN 게이트웨이로 구성할 때 주요 개념은 다음과 같다.
- 터널 인터페이스: WireGuard는 가상 인터페이스(wg0 등)를 생성한다.
- 라우팅: 내부망 트래픽을 터널로 보내거나 터널을 통해 특정 대상만 우회하도록 정책을 적용한다.
- NAT/포워딩: 라우터가 내부 클라이언트의 소스 주소를 변환하거나 포워딩 규칙을 적용한다.
- 방화벽: 허용된 피어와 포트만 열어 최소 권한 원칙을 지킨다.
단계별 설정
1) WireGuard 패키지 설치
OpenWrt의 예: opkg로 설치하거나 RouterOS의 패키지 매니저를 사용한다. 설치 후 모듈을 로드하고 서비스가 실행되는지 확인한다.
2) 키 생성 및 인터페이스 구성
서버(라우터)에서 키를 생성하고 인터페이스를 설정한다. 예시 구성은 간단한 wg0.conf 형태로 아래와 같다.
[Interface]
PrivateKey = SERVER_PRIVATE_KEY
Address = 10.0.0.1/24
ListenPort = 51820
[Peer]
PublicKey = CLIENT_PUBLIC_KEY
AllowedIPs = 10.0.0.2/32
위 예시는 라우터가 10.0.0.1/24 네트워크의 게이트웨이 역할을 하며, 특정 클라이언트 피어(10.0.0.2)만 허용하는 기본 설정이다.
3) 라우팅과 NAT 설정
라우터에서 내부망을 터널로 보내려면 라우팅 테이블과 NAT 규칙을 추가한다. 내부 서브넷(예: 192.168.1.0/24)을 WireGuard를 통해 인터넷으로 내보내는 iptables 예시는 다음과 같다.
# 내부에서 터널을 통해 인터넷으로 나가는 NAT
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o wg0 -j MASQUERADE
# 포워딩 허용
iptables -A FORWARD -i br-lan -o wg0 -j ACCEPT
iptables -A FORWARD -i wg0 -o br-lan -m state --state RELATED,ESTABLISHED -j ACCEPT
정책 기반 라우팅을 적용할 경우 소스 기반 규칙을 추가해 특정 호스트만 터널을 사용하게 할 수 있다.
4) 클라이언트 구성 예시
클라이언트는 라우터의 PublicKey와 엔드포인트 정보를 사용한다. 간단한 클라이언트 구성 예시는 아래와 같다.
[Interface]
PrivateKey = CLIENT_PRIVATE_KEY
Address = 10.0.0.2/32
[Peer]
PublicKey = SERVER_PUBLIC_KEY
Endpoint = your.router.example.com:51820
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 25
AllowedIPs를 0.0.0.0/0로 설정하면 클라이언트 전체 트래픽이 라우터 WireGuard 게이트웨이로 흐른다. 특정 대상만 우회하려면 해당 네트워크만 나열하면 된다.
5) 자동화 및 시작 스크립트
라우터 부팅 시 WireGuard와 iptables 규칙이 자동으로 적용되도록 스크립트나 펌웨어의 네트워크 설정에 등록한다. OpenWrt에서는 /etc/config/network와 /etc/config/firewall에 항목을 추가하거나 hotplug 스크립트를 사용한다.
트러블슈팅
- 연결 안됨: 라우터에서 포트가 열려 있는지, 방화벽 규칙이 허용하는지 확인한다.
- 라우팅 문제: 라우팅 테이블과 AllowedIPs가 충돌하는지 점검한다.
- 속도 저하: CPU 부하가 높은 경우 하드웨어 가속 또는 더 강한 CPU가 필요할 수 있다.
- DNS 문제: 클라이언트에 적절한 DNS를 할당하거나 라우터에서 DNS 포워딩을 설정한다.
보안 권장사항
비밀키는 외부에 노출되지 않도록 보호한다. 관리 포트는 가능한 외부에 공개하지 않고, 모니터링과 로깅을 통해 비정상 연결을 탐지한다. 패치와 펌웨어 업데이트를 정기적으로 적용하고, 불필요한 포트는 차단한다.
결론
WireGuard 라우터 통합은 성능과 보안, 관리 측면에서 효율적이다. 핵심은 올바른 인터페이스 구성과 라우팅 설계, 그리고 방화벽 정책이다. 위 단계와 예시를 통해 기본적인 WireGuard 게이트웨이 구성과 운영 방식을 파악할 수 있으며, 필요에 따라 정책 기반 라우팅이나 고가용성 설계로 확장하면 좋다.