[Daily morning study] VPN 동작 원리와 터널링 프로토콜

#daily morning study

Image


VPN이란

VPN(Virtual Private Network)은 공용 인터넷 위에 논리적인 전용 통신 터널을 만드는 기술이다.

물리적으로는 인터넷이라는 공개된 망을 쓰지만, 패킷을 암호화하고 캡슐화해서 마치 전용 회선처럼 안전하게 통신할 수 있게 해준다.

기업 내부 네트워크에 외부에서 안전하게 접근하거나, 지리적으로 떨어진 지사 간 망을 연결하는 용도로 주로 쓰인다.


핵심 개념: 터널링

터널링(Tunneling)은 VPN의 핵심 메커니즘이다.

원본 패킷을 새로운 패킷 안에 캡슐화(encapsulation)해서 전송하고, 목적지 측에서 이를 해제(decapsulation)하는 방식이다.

[ 클라이언트 ] ──암호화된 터널──▶ [ VPN 서버 ] ──▶ [ 내부망 / 인터넷 ]
     ↑                                  ↑
  패킷 캡슐화 + 암호화              패킷 복호화 + 전달

외부에서 보면 VPN 서버와 주고받는 암호화된 패킷만 보이고, 실제 내용이나 목적지는 알 수 없다.


VPN의 두 가지 유형

Remote Access VPN

개인 사용자가 원격에서 기업 내부망에 접속하는 형태다.

  • 재택근무 시 회사 내부 시스템에 접근
  • 클라이언트 소프트웨어(VPN 클라이언트)를 설치해서 사용
  • SSL/TLS 기반 VPN이 많이 쓰임

Site-to-Site VPN

두 개 이상의 고정된 네트워크를 연결하는 형태다.

  • 본사 ↔ 지사 네트워크 연결
  • 라우터나 VPN 게이트웨이 장비가 터널의 양 끝단을 담당
  • IPSec 기반이 일반적

주요 터널링 프로토콜

IPSec (Internet Protocol Security)

네트워크 레이어(L3)에서 동작하는 보안 프로토콜 모음이다.

두 가지 모드가 있다:

모드설명
Transport ModeIP 헤더는 그대로 두고 페이로드만 암호화
Tunnel ModeIP 헤더 포함 패킷 전체를 암호화하고 새 IP 헤더 추가

Site-to-Site VPN에서 Tunnel Mode를 주로 쓴다.

두 가지 프로토콜로 구성된다:

  • AH(Authentication Header): 무결성과 인증만 제공 (암호화 없음)
  • ESP(Encapsulating Security Payload): 암호화 + 무결성 + 인증 모두 제공

실제 VPN에서는 대부분 ESP를 쓴다.

SSL/TLS VPN

TLS 프로토콜 위에서 동작하는 VPN이다.

별도 클라이언트 없이 웹 브라우저만으로 접근 가능한 경우도 있고, 경량 클라이언트를 설치해 쓰는 경우도 있다.

방화벽에서 HTTPS(443포트)를 허용하면 되기 때문에 방화벽 통과가 쉽다는 장점이 있다.

OpenVPN이 SSL/TLS 기반 대표 구현체다.

OpenVPN

오픈소스 VPN 솔루션으로, TLS를 기반으로 하며 UDP나 TCP 위에서 동작한다.

  • 유연성이 높고 다양한 플랫폼 지원
  • 설정이 다소 복잡하지만 기업 환경에서 많이 씀
  • UDP 443 또는 TCP 443을 주로 사용

WireGuard

최근 각광받는 모던 VPN 프로토콜이다.

코드가 약 4,000줄 수준으로 기존 IPSec(약 40만 줄)에 비해 극도로 간결하다. 코드가 적을수록 보안 취약점이 생길 여지가 줄어든다.

특징:

  • UDP만 사용 (기본 포트 51820)
  • ChaCha20 암호화 + Poly1305 인증 사용
  • 커널 레벨에서 동작해 성능이 빠름
  • Linux 5.6 커널부터 공식 포함

비교적 새로운 프로토콜이라 기업 환경에서는 도입이 신중하지만, 성능과 단순성 면에서 우수하다.

L2TP/IPSec

L2TP(Layer 2 Tunneling Protocol)는 자체 암호화 기능이 없어서 IPSec과 함께 묶어 쓴다.

L2TP로 터널을 만들고 IPSec으로 암호화하는 구조다. 운영체제 기본 지원이 넓지만, 방화벽 통과가 까다롭고 성능이 다소 낮다. 요즘은 WireGuard나 OpenVPN에 밀리는 편이다.


VPN의 암호화 흐름

1. 클라이언트가 VPN 서버와 TLS/IPSec 핸드셰이크로 키 교환
2. 세션 키(대칭키) 협상 완료
3. 송신 측: 원본 패킷을 대칭키로 암호화 + 캡슐화
4. 암호화된 패킷이 인터넷을 통해 VPN 서버로 전달
5. VPN 서버: 복호화 후 내부 네트워크로 패킷 전달

초기 키 교환에는 비대칭 암호화(RSA, ECDH 등)를 쓰고, 실제 데이터 전송에는 속도가 빠른 대칭 암호화(AES, ChaCha20 등)를 쓴다.


Split Tunneling

VPN 사용 시 모든 트래픽을 VPN 터널로 보낼지, 일부만 보낼지 선택할 수 있다.

  • Full Tunnel: 모든 트래픽을 VPN 서버 경유 → 보안은 높지만 VPN 서버에 부하 집중
  • Split Tunnel: 내부망 대상 트래픽만 VPN 터널 사용, 나머지는 직접 인터넷으로 → 효율적이지만 보안 위험 상존

기업 환경에서는 내부 시스템 접근 시만 VPN을 태우는 Split Tunnel을 많이 채택한다.


정리

항목IPSecSSL/TLS VPNWireGuard
동작 레이어L3L4~L7L3
주요 용도Site-to-SiteRemote Access범용
방화벽 통과어려움쉬움(443)보통(UDP)
성능중간중간빠름
설정 복잡도높음중간낮음

VPN의 핵심은 결국 터널링(캡슐화) + 암호화다. 어느 레이어에서 어떤 방식으로 이 두 가지를 구현하느냐에 따라 프로토콜이 나뉜다.