경량 VPN WireGuard는 기존의 VPN들과는 무엇이 다를까?

network

3 분 읽기

1. WireGuard란 무엇인가

1. Wireguard 소개

(1) Wireguard란?

WireGuard는 VPN(Virtual Private Network)을 구축하기 위한 경량 네트워크 터널링 프로토콜이다. 인터넷과 같은 신뢰할 수 없는 네트워크 상에서 두 장치 사이의 암호화된 전용 가상 네트워크 인터페이스를 만들고, 그 인터페이스를 통해 IP 패킷을 안전하게 주고 받는 원리로 동작한다.

네트워크 계층인 Layer 3에서 동작하며, 암호화된 전용 가상 네트워크 인터페이스란 쉽게 말해, 인터넷망을 통해 통신을 하되, 통신의 내용을 사전에 약속된 두 장치 사이의 암호화 방식을 통해 서로만 볼 수 있게 암호화 한다는 뜻이다. 이렇게 하면, 기존의 인터넷 망을 통해 통신할 수 있으면서도, 허락받지 않은 제 3자가 통신 내용을 열어볼 수 없게할 수 있다.

1
2
3
4
5
6
7
8
9
10
11
12
13
Client
192.168.x.x
   │
   │ 일반 인터넷
   ▼
┌──────────────────────┐
│   WireGuard Tunnel   │
│   암호화된 가상 통신 경로  │
└──────────────────────┘
   │
   ▼
Server
10.0.0.1

(2) WireGuard의 특징

특징 설명
경량 구조 설정과 프로토콜 구조가 매우 단순함
높은 성능 Linux Kernel 수준에서 동작 가능
암호화 기본 모든 WireGuard 통신은 암호화됨
Key 기반 인증 ID/PW 대신 Public/Private Key 사용
UDP 사용 기본적으로 UDP 기반으로 통신
Peer 기반 서버/클라이언트보다는 Peer 간 연결 구조
Cross Platform Linux, Windows, macOS, Android, iOS 지원

일반적으로 기본 포트로 다음을 많이 사용한다. (반드시 이 포트를 사용할 필요는 없으며, 외부에 포트를 노출시키는 경우 반드시 포트번호를 임의의 번호로 바꾸는 것을 권장함)

1
UDP 51820

(3) 다른 VPN과 비교한 WireGuard 의 특징

Wireguard는 기존 VPN 솔루션인 OpenVPN, IPsec에 비해 구조가 단순하고 설정 항목이 적으며, Linux Kernel에 통합되어 있어 높은 성능을 제공하는 것이 핵심적인 특징이다. 복잡한 인증서 체계나 설정 대신, 장치의 키 쌍과 네트워크 주소, 상대 Peer의 정보를 기반으로 구성하므로 설정 항목이 적고, 이해해야 할 요소가 상대적으로 분명하며, 장애 원인 추적도 수월하다.

성능 측면에서는 WireGuard가 Linux 환경에서 커널 네트워크 인터페이스로 동작하도록 설계되었다는 점이 중요하다. 기존의 VPN들은 대부분 사용자 공간(User Space)에서 동작하는데, 이 경우 VPN은 네트워크 패킷이 커널 공간과 사용자 공간 사이를 반복적으로 이동해야 하며, 이 과정에서 데이터 복사와 컨텍스트 전환 비용이 발생할 수 있다. 반면 WireGuard의 경우 Linux 커널에 통합되어 있어, 패킷 처리, 암·복호화 과정이 네트워크 처리 경로에 더 가깝게 배치된다. 그 결과 불필요한 패킷 복사와 데이터 전달을 줄일 수 있으며, CPU와 메모리 자원을 효율적으로 사용할 가능성이 높아진다.

Linux 커널에 통합되어 있다 : VPN의 네트워크 처리 로직이 사용자 공간(User Space)이 아닌, 시스템 최하단인 커널 공간(Kernel Space)에서 직접 실행됨. 패킷 암·복호화와 터널링 처리가 커널 내부에서 이루어지기 때문에, OpenVPN과 같은 user space 기반 VPN에서 발생하는 kernel space와 user space 사이의 반복적인 패킷 복사 및 데이터 전달 비용을 줄일 수 있음. 결과적으로 CPU 등 자원 소모를 최소화하는 결과를 가져온다.

WireGuard 논문

위 링크된 WireGuard 논문에서는 이 점을 특히 강조했는데, 역시 사용자 공간 TUN/TAP 기반으로 동작하는 OpenVPN의 성능 부담을 설명하면서, 패킷 변환을 가능한 한 제자리에서 수행해 복사를 피하는 설계 방향을 제시하고 있다. 다만 “커널에서 동작한다”는 사실만으로 모든 환경에서 항상 더 빠르다고 단정해서는 안 되며, 실제 성능은 하드웨어, 운영체제, 암호화 처리 능력, 네트워크 품질, MTU와 라우팅 설정 등 여러 요소의 영향을 받는 점을 알아둬야 한다.

또한 WireGuard는 ID와 비밀번호 대신 공개키 기반 인증을 사용한다. 사용자는 각 장치의 Private Key와 Public Key를 이용해 Peer 관계를 구성한다. Private Key는 장치 내부에 보관하고, 상대방에게는 Public Key만 전달하여, 인증서나 복잡한 계정 체계를 별도로 관리하지 않고도 장치 단위의 암호화된 연결을 구성할 수 있게 해준다.

(4) 또 하나의 특징, Peer

한 가지 더, WireGuard의 구조를 이해할 때 특히 중요한 점은 서버와 클라이언트가 별도로 나뉘지 않는다는 점이다. WireGuard의 실제 구성 단위는 Peer이며, 우리가 흔히 생각할 수 있는 서버도 Peer이고, 클라이언트도 Peer이다. 설정 파일 역시 ServerClient라는 항목 대신, 자신의 정보를 정의하는 [Interface]와 상대방 정보를 정의하는 [Peer] 영역으로 구성된다.

이 점은 추후 WireGuard를 사용할 때에도 필수적인 개념이기 때문에 반드시 알아둬야 한다. 나 또한 이 개념을 간과하고 그저 기존의 VPN과 같이 Server - Client 구조겠거니.. 하고 생각하다가 한참을 헤메기도 했다.

이 지점에서 WireGuard의 핵심은 다음과 같이 정리할 수 있다.

인터넷 위에 암호화된 가상 네트워크를 만들고, 각 장치를 키와 가상 IP로 식별하며, 필요한 트래픽만 명확한 규칙에 따라 Peer에게 전달하는 경량 VPN 프로토콜이다.

이제 이러한 개념을 바탕으로 실제 연결 구조를 살펴보면, 인터넷상의 주소인 Endpoint와 터널 내부 주소인 Address, 그리고 특정 트래픽을 어느 Peer로 보낼지 결정하는 AllowedIPs가 어떻게 서로 연결되는지 이해할 수 있다.

Reference

https://www.wireguard.com/

// reading compass

이 글과 이어지는 경로

시리즈, 카테고리, 태그 겹침, 최신도를 점수화해 가까운 글일수록 중심에 배치합니다.

hover nodes or cards · click a node to pin
Next reads 0

    댓글 남기기