WireGuard MTU 최적화로 속도 개선하기
WireGuard VPN에서 MTU 값을 체계적으로 분석하고 최적화해 패킷 분할과 지연을 줄인 네트워크 성능 개선과 안정적 연결을 위한 설정
목차
개요
WireGuard는 단순하고 빠른 VPN 프로토콜이다. 그러나 네트워크 경로의 MTU 설정이 부적절하면 오히려 속도 저하와 패킷 분할(fragmentation)이 발생한다. 본문에서는 MTU의 개념부터 측정 방법, 최적화 절차까지 실무 관점에서 설명한다. 처음 접하는 사람도 이해하기 쉬운 흐름으로 구성되어 있다.
MTU가 성능에 미치는 영향
MTU란
MTU(Maximum Transmission Unit)는 한 번에 전송 가능한 최대 패킷 크기이다. MTU가 너무 크면 중간 장치에서 분할이 일어나고, 너무 작으면 오버헤드가 커진다. 따라서 최적 MTU는 성능과 안정성 사이의 균형점이다.
WireGuard와 MTU 상호작용
WireGuard는 암호화 오버헤드가 추가된다. 실제 전송되는 패킷은 암호화에 따라 더 길어지므로 인터페이스 MTU를 낮춰야 할 때가 많다. 잘못된 MTU는 재전송 증가와 지연을 유발한다.
문제 원인과 징후
- 웹 페이지 로딩 지연이나 대용량 전송 중 속도 저하
- MTU 초과로 인한 ICMP Fragmentation Needed 메시지
- VPN 터널 내에서만 발생하는 패킷 손실
- 네트워크 트레이스에서의 불필요한 분할 확인
최적 MTU 측정 절차
최적 MTU 찾기는 반복 측정과 확인 과정이 필요하다. 대표적인 절차는 다음과 같다.
- 현재 인터페이스의 MTU 확인
- 경로별로 최대 데이터 크기 테스트
- WireGuard 인터페이스에 적용 후 안정성 재확인
현재 MTU 확인
ip link show wg0
# 또는
ip addr show dev wg0
경로 MTU 탐색 예시
Linux에서는 ping을 이용해 Path MTU를 탐지할 수 있다. 아래 예시는 DF(Do not Fragment)를 지정해 일정 크기까지 전송을 시도하는 방식이다.
ping -M do -s 1420 8.8.8.8
# 성공하면 사이즈 증가, 실패하면 감소해 최적값을 찾음
WireGuard에 MTU 적용하기
WireGuard 설정 파일에 직접 MTU 값을 넣어 인터페이스를 제어할 수 있다. 일반적으로 1420~1380 범위에서 테스트가 이루어진다. 환경에 따라 값이 달라진다.
wg-quick 예시
[Interface]
Address = 10.0.0.1/24
PrivateKey =
MTU = 1420
[Peer]
PublicKey =
AllowedIPs = 0.0.0.0/0
위 구성은 MTU를 1420으로 제한한다. 적절한 값은 앞서 설명한 ping 테스트와 트래픽 관찰을 통해 조정한다.
런타임에서 적용
ip link set dev wg0 mtu 1420
런타임 설정은 일시적이므로 wg-quick 설정에도 반영하는 것이 권장된다.
검증과 모니터링
MTU 값을 바꾼 뒤에는 다음 항목을 확인한다.
- 웹 서비스 접근 및 파일 전송 속도
- 패킷 분할과 ICMP 오류 여부
- 연결 안정성(재연결, 타임아웃 등)
추가로 tcpdump나 wireshark로 캡처해 분할이나 재전송을 직접 확인하면 근본 원인을 파악하는 데 도움이 된다.
주의사항
- MTU를 과도하게 낮추면 프로토콜 오버헤드가 커져 성능이 떨어질 수 있다.
- 중간 네트워크 장비가 ICMP를 차단하면 Path MTU 탐지가 실패할 수 있다.
- 모바일 네트워크나 복잡한 경로에서는 여러 값으로 테스트해 평균적인 안정값 선택 필요.
결론
WireGuard MTU 설정은 작은 조정으로 큰 성능 개선을 만들 수 있다. MTU 최적화 WireGuard 작업은 측정, 적용, 검증의 반복 과정이다. 시스템 특성과 경로 상태를 고려해 신중하게 값을 선택하면 WireGuard 속도 개선 MTU 효과를 실감할 수 있다.