WireGuard 모바일 연결 안정화 방법
이 글은 WireGuard를 LTE·5G 모바일 네트워크 환경에서 안정적으로 운용하기 위한 실용적 설정, MTU 조정, 재접속 전략, 로그 점검 등 핵심 항목을 정리한 네트워크 안정성
목차
개요
모바일 네트워크(LTE/5G)는 지연과 전파 품질이 급변한다. 이 때문에 WireGuard 연결이 끊기거나 재연결 지연이 발생한다. 초보자도 이해할 수 있도록 핵심 원인과 해결책을 단계별로 설명한다. 목표는 모바일 WireGuard 안정화와 신속한 복구이다.
자주 발생하는 문제와 원인
세션 유지와 재귀성 문제
모바일 환경에서는 IP 변경과 NAT 타임아웃이 잦다. 이런 변화가 있으면 상대 피어의 상태가 오래 유효하지 않아 패킷이 차단된다. PersistentKeepalive와 재연결 정책이 필요하다.
MTU와 패킷 단편화
이동통신망의 경로 MTU가 작아지거나 ICMP 차단 시 단편화 문제가 발생한다. MTU가 적절하지 않으면 패킷이 손실되고 연결이 불안정해진다.
절전 모드 및 네트워크 전환
기기 절전으로 네트워크 인터페이스가 끊기거나, LTE↔5G 전환 시 라우팅이 변한다. 이 과정에서 WireGuard가 즉시 복구되지 않는 경우가 많다.
안정성 향상을 위한 권장 설정
1) PersistentKeepalive 설정
Peer 블록에 PersistentKeepalive(예: 20~25초)를 추가하면 NAT 매핑이 유지된다. 모바일 환경에서는 20~25초가 현실적 균형이다.
[Interface]
PrivateKey =
Address = 10.0.0.2/32
DNS = 1.1.1.1
[Peer]
PublicKey =
Endpoint = vpn.example.com:51820
AllowedIPs = 0.0.0.0/0, ::/0
PersistentKeepalive = 25
2) MTU 조정
기본 MTU(1420~1424)를 적용해 보면 안정성이 개선된다. MTU는 네트워크마다 다르므로 테스트 후 최적값을 선택한다.
# wg-quick 설정 예시
[Interface]
PrivateKey =
Address = 10.0.0.2/32
MTU = 1420
3) 재연결 자동화
짧은 스크립트나 systemd 유닛으로 연결 끊김을 감지하고 재시작한다. 아래 예시는 30초 간격으로 기본 라우팅을 확인해 WireGuard를 재시작하는 단순한 방법이다.
# /usr/local/bin/wg-monitor.sh
#!/bin/bash
PING_TARGET=8.8.8.8
WGIF=wg0
if ! ping -c 1 -W 2 $PING_TARGET >/dev/null; then
systemctl restart wg-quick@${WGIF}
fi
4) 라우팅과 DNS 처리
모바일 네트워크 전환 시 DNS 해상도가 꼬이는 경우가 있다. wg-quick의 PostUp/PostDown으로 DNS를 확실히 설정하거나 split-DNS를 활용한다. 필요하면 DNS 캐시를 비운다.
[Interface]
PostUp = resolvectl flush-caches
PostDown = resolvectl flush-caches
5) 로깅과 모니터링
로그는 문제 해결의 출발점이다. WireGuard 자체 로그와 시스템 로그를 함께 확인한다. 연결 이벤트, rekey 빈도, 패킷 손실 패턴을 기록하면 원인 파악이 쉬워진다.
테스트 및 검증 절차
연결 지속성 테스트
- 지속적인 ping(예: 1초 간격)으로 끊김과 재연결 시간을 측정한다.
- 이동 중(자동차, 지하철)과 정지 상태에서 각각 테스트한다.
IP 변경 시나리오
- 셀룰러 네트워크가 IP를 바꿀 때 세션이 유지되는지 확인한다.
- PersistentKeepalive 유무에 따른 차이를 비교한다.
MTU 검증
- 큰 파일 전송과 패킷 캡처로 단편화 여부를 점검한다.
- 필요 시 MTU 값을 1400~1424 범위에서 조절해 본다.
현장에서 유의할 점
모든 모바일 환경이 같지는 않다. 이동통신사, 기기 모델, OS 버전마다 동작이 달라진다. 따라서 변경은 단계적으로 적용하고, 로그와 모니터링 결과를 기반으로 조정한다. 과도한 재시작은 오히려 불안정을 초래하므로 재연결 로직은 신중히 설계한다.
요약
핵심은 세 가지다. 먼저 PersistentKeepalive로 NAT 타임아웃을 방지한다. 다음으로 MTU와 DNS 설정을 맞춰 패킷 손실을 줄인다. 마지막으로 재연결 자동화와 로깅으로 문제 발생 시 신속히 대응한다. 위 방법을 차근히 적용하면 모바일 WireGuard 안정화에 큰 도움이 된다.