WireGuard + WG-easy로 사용자 관리 쉽게 하기
WireGuard와 WG-easy(WireGuard-UI)를 활용해 VPN 서버 설치부터 사용자 추가, 구성 파일 발급, 방화벽 및 백업까지 실무에 바로 적용 가능한 설정
목차
소개
WireGuard는 가볍고 빠른 VPN 엔진이다. 하지만 키 관리와 사용자 배포는 초보자에게 번거로울 수 있다. WG-easy는 웹 인터페이스를 제공해 사용자 생성, 구성 파일 발급, QR 코드 공유를 간편하게 만든다. 이 글은 WG-easy 설치와 운영에 필요한 핵심 절차를 단계별로 설명한다. 초보자도 따라 하기 쉬운 구성과 주의사항을 중심으로 정리한다.
사전 준비
설치 전에 다음 항목을 확인한다.
- 서버: Ubuntu 20.04 이상 또는 Docker가 동작하는 리눅스
- 포트: UDP 51820 기본 포트(필요시 변경)
- 도메인 또는 공인 IP: 원격 접속 및 HTTPS 적용 시 필요
- 기본 명령어 권한: sudo 권한
설치 방식 선택
WG-easy는 Docker 기반으로 간단히 설치 가능하다. Docker가 익숙하면 docker-compose를 사용한다. 단일 명령으로 실행하려면 docker run 방식도 사용 가능하다. 이 문서에서는 docker-compose 방식으로 설명한다.
환경 설정
먼저 Docker와 Docker Compose를 설치한다. 다음은 Ubuntu 기준 설치 절차 예시이다.
sudo apt update
sudo apt install -y docker.io docker-compose
sudo systemctl enable --now docker
docker-compose 파일 생성
프로젝트 폴더를 만들고 docker-compose.yml을 작성한다. 아래 예시는 기본 포트와 환경변수를 포함한다.
version: '3.8'
services:
wg-easy:
image: weejewel/wg-easy
container_name: wg-easy
restart: unless-stopped
ports:
- '51820:51820/udp'
- '51821:51821/tcp'
environment:
- WG_HOST=your.domain.or.ip
- PASSWORD=강력한비밀번호
- WG_DEFAULT_ADDRESS=10.13.13.1
- WG_DEFAULT_DNS=1.1.1.1
volumes:
- ./data:/etc/wireguard
cap_add:
- NET_ADMIN
- SYS_MODULE
sysctls:
net.ipv4.conf.all.src_valid_mark: 1
WG_HOST는 접속에 사용할 도메인이나 공인 IP로 교체한다. PASSWORD는 웹 UI 로그인 비밀번호다.
컨테이너 실행
docker-compose로 컨테이너를 띄운다.
sudo docker-compose up -d
실행 후 웹 브라우저에서 http://your.domain.or.ip:51821에 접속해 로그인한다. 로그인 후 사용자 추가, 구성 파일 생성, QR 코드 확인이 가능하다.
사용자 관리 (WireGuard 웹관리 WG-easy)
WG-easy는 직관적 인터페이스로 다음 작업을 지원한다.
- 사용자 추가/삭제
- 구성 파일(.conf) 즉시 다운로드
- QR 코드로 모바일 설정
- 클라이언트별 트래픽 및 할당 IP 확인
새 사용자를 만들 때는 이름과 만료일 등을 설정할 수 있다. 생성된 구성 파일을 클라이언트에 복사하거나 QR 스캔으로 즉시 연결한다.
방화벽 및 라우팅 설정
서버에서 NAT와 포워딩 설정을 해야 내부 네트워크 또는 인터넷 접근이 가능하다. 기본적인 iptables/NAT 예시는 다음과 같다.
sudo sysctl -w net.ipv4.ip_forward=1
sudo iptables -t nat -A POSTROUTING -s 10.13.13.0/24 -o eth0 -j MASQUERADE
eth0는 공인 네트워크 인터페이스 이름으로 변경한다. ufw를 쓰는 경우 포워딩 허용 및 NAT 규칙을 구성해야 한다.
HTTPS(선택)
관리 인터페이스에 공개 도메인을 연결하면 HTTPS 적용을 권장한다. 간단한 방법은 리버스 프록시(Nginx, Caddy)를 사용해 TLS를 종료하는 것이다. Caddy는 자동으로 인증서를 발급해 주므로 설정이 간편하다.
백업 및 복구
WireGuard 구성 파일과 키는 /etc/wireguard에 저장된다. 도커 볼륨이나 호스트 디렉터리를 정기적으로 백업한다. 예를 들어 다음과 같이 압축해 보관한다.
tar -czf wg-backup-$(date +%F).tar.gz ./data
복구 시 동일한 경로에 압축을 풀고 컨테이너를 재시작하면 된다.
문제 해결
연결이 안 될 때 확인할 항목.
- 컨테이너 로그: sudo docker logs wg-easy
- 포트 열림: UDP 51820이 외부에서 접근 가능한지 확인
- IP 포워딩: net.ipv4.ip_forward 설정 확인
- 클라이언트 구성: 서버 공개키와 엔드포인트가 올바른지 검증
보안 권장 사항
- 관리 비밀번호는 강력하게 설정하고 필요 시 2단계 인증 적용
- WG-easy 웹 인터페이스는 외부 공개 시 방화벽으로 접근 제어
- 정기적으로 사용자 목록을 검토해 불필요한 계정 삭제
- 백업을 암호화해 안전한 장소에 보관
결론
WG-easy를 쓰면 WireGuard의 키 관리와 사용자 배포가 크게 쉬워진다. WG-easy 설치 가이드를 참고해 Docker 환경에서 빠르게 배포하고, WireGuard UI 설치 후 웹에서 사용자 관리를 수행하면 운영 부담을 줄일 수 있다. 마지막으로 방화벽과 백업 정책을 마련해 안정적으로 서비스할 수 있는 환경을 유지한다.