WireGuard · 2026-03-20

WireGuard로 멀티 사이트 자동 복구 VPN 구성

여러 지사와 데이터센터를 WireGuard로 연결하면서 장애 발생 시 자동으로 복구되도록 구성하는 원리와 실무 설정 예제, 운영 시 고려사항을 정리한 기술자료

작성일 : 2026-03-20 ㆍ 작성자 : 관리자
post
목차

개요

멀티 사이트 환경에서 VPN 연결 문제는 업무 중단으로 이어진다. WireGuard는 경량성과 성능으로 널리 쓰인다. 다만 장애 발생 때 자동 복구가 없다면 수동 대응이 필요하다. 본문은 WireGuard 자동 복구 구성의 개념, 아키텍처, 구현 예제와 운영 검증 절차를 초보자도 이해하기 쉽게 설명한다.

필요 조건 및 용어

필수 요소

  • 각 사이트에 WireGuard 설치된 리눅스 서버
  • 공인 IP 또는 안정적인 역방향 터널(포트 포워딩) 환경
  • 간단한 헬스 체크 스크립트와 systemd 서비스 사용 권장

주요 용어

  • Peer: WireGuard 터널의 한쪽 끝
  • Endpoint: 원격 Peer의 IP:포트 정보
  • Keepalive: NAT 트래버설을 위한 지속 신호
  • Failover: 대체 경로로 전환하는 동작

아키텍처 개념

멀티 사이트 연결은 여러 Peer들을 메시나 스타 토폴로 구성할 수 있다. 자동 복구 목적은 다음 두 가지다.

  • 로컬 인터페이스 이상 시 서비스 재시작
  • 특정 Peer 장애 시 대체 Peer로 경로 전환

핵심은 상태 감시(헬스 체크)와 자동화 스크립트다. 헬스 체크는 단순 ICMP, TCP 포트 확인, 혹은 실제 경로를 통한 패킷 전송으로 구현할 수 있다. 감지 시 WireGuard 인터페이스를 재시작하거나, 라우팅 우선순위를 수정해 트래픽을 다른 Peer로 유도한다.

구성 순서

  1. 기본 WireGuard 인터페이스 생성 및 Peer 설정
  2. 헬스 체크 스크립트 작성
  3. systemd 서비스 또는 cron으로 주기 실행 및 이벤트 처리
  4. 라우트 우선순위 관리(Policy-based routing 필요 시 별도 구성)
  5. 테스트와 모니터링 설정

예제 설정

1) 기본 wg0 설정 예

[Interface]
PrivateKey = 
Address = 10.0.0.1/24
ListenPort = 51820

[Peer]
PublicKey = 
Endpoint = 203.0.113.10:51820
AllowedIPs = 10.0.0.0/24
PersistentKeepalive = 25

위 예제는 단일 Peer 연결이다. 멀티 사이트라면 여러 Peer 블록을 추가하거나 별도 인터페이스로 분리한다.

2) 간단 헬스 체크 스크립트

#!/bin/bash
# wg-healthcheck.sh
WG_IF=wg0
TARGET=8.8.8.8
PING_COUNT=3

if ping -c ${PING_COUNT} -I ${WG_IF} ${TARGET} >/dev/null 2>&1; then
  exit 0
else
  logger -t wg-health "ping failed on ${WG_IF}, restarting"
  /usr/bin/systemctl restart wg-quick@${WG_IF}
  sleep 5
fi

이 스크립트는 인터페이스를 통해 외부로 핑이 가능한지 확인한다. 실패하면 wg-quick 서비스를 재시작해 인터페이스를 재생성한다.

3) Peer 장애 시 라우팅 전환 예

복수 Peer를 사용할 때는 우선순위가 낮은 라우트를 준비해 두고, 주 Peer 장애 시 우선순위를 변경한다. 예를 들어 테이블을 분리해 정책 라우팅을 적용한다.

# 우선순위 테이블 추가 예
ip rule add from 10.0.0.1 table 100
ip route add default via 10.0.0.2 dev wg0 table 100

# 장애 시 다른 Peer로 전환
ip route replace default via 10.0.0.3 dev wg1 table 100

운영과 모니터링

운영 중에는 다음 항목을 점검한다.

  • PersistentKeepalive 값으로 NAT 유지 여부
  • 로그: systemd와 logger로 재시작 횟수와 실패 원인 기록
  • 모니터링: Prometheus exporter 또는 간단한 상태 페이지로 연결 상태 수집

특히 자동 복구는 과도한 재시작 루프를 일으킬 수 있다. 재시작 횟수에 대한 임계값을 두고, 반복 실패 시 알람을 발생시키는 정책을 권장한다.

테스트 절차

  1. 정상 상태에서 라우트와 핑 통과 확인
  2. 주 Peer의 엔드포인트 차단(네트워크 차단)으로 장애 유도
  3. 헬스 체크가 실패하는지 확인
  4. 자동 복구 동작(인터페이스 재시작 또는 라우팅 전환) 확인
  5. 서비스 복구 후 정상 복귀 여부 확인

문제 발생 시 점검 포인트

  • 키와 엔드포인트 정보 불일치 여부
  • NAT 경로가 변경되어 Keepalive가 차단되는 경우
  • 라우팅 테이블 충돌으로 트래픽이 잘못 전달되는 경우
  • 헬스 체크 대상이 올바른지(내부 vs 외부) 확인

정리

WireGuard 자동 복구 구성은 헬스 체크와 자동화가 핵심이다. 단순 인터페이스 재시작부터 라우팅 전환까지 여러 방법을 조합하면 멀티 사이트 환경에서 높은 가용성을 확보할 수 있다. 구현 시에는 재시작 루프 방지와 로그 기반 알람 체계를 함께 설계하는 것이 바람직하다.

WireGuard 자동 복구 설정 WireGuard 장애 복구 WireGuard HA 구성 멀티사이트 VPN 자동 장애조치 WireGuard 설정 예제 VPN 모니터링 Linux 네트워크 운영