~/network/vpn
보안

VPN

Virtual Private Network

공용 네트워크나 통신사 백본 위에 논리적으로 분리된 사설망을 만들어, 떨어져 있는 사이트나 사용자가 마치 같은 내부망에 있는 것처럼 통신하게 해주는 기술이다.

일반적인 인터넷 기반 보안 VPN은 물리 전용선을 깔지 않고도 "사설망 느낌"을 내기 위해 패킷을 한 번 더 감싸고(터널링), 암호화와 인증으로 보호한다. 반면 MPLS L3VPN처럼 사업자망 기반 VPN은 암호화보다 VRF/MPLS 라벨을 통한 망 분리에 초점을 두며, 기본적으로 별도 암호화 터널을 만들지 않는다.

대표적인 사용 예:

  • 본사–지사 간 내부망 연결 (Site-to-Site)
  • 재택근무자가 외부에서 사내망 접근 (Remote Access)
  • 클라우드 VPC와 사내망 연결 (Hybrid Cloud)

왜 필요한가

전용선(Leased Line)이나 통신사 MPLS VPN은 품질과 망 분리를 제공하지만 비싸다. 거리가 멀어질수록, 사이트가 많아질수록 비용이 크게 늘어난다. 반면 인터넷은 어디서나 싸게 쓸 수 있지만 그 자체로는 공개망이라 보안 보장이 없다.

VPN은 이 둘의 중간에 있다.

  • 이미 깔린 인터넷 회선 위에서 동작 → 회선 비용 절감
  • 암호화·인증 으로 도청/위변조를 방지 → 구성에 따라 사설망과 비슷한 보안 수준
  • 터널링 으로 사설 IP 대역까지 그대로 전달 → 내부망 라우팅 유지

즉 인터넷 기반 VPN은 "비용은 인터넷 수준, 보안은 사설망 수준"을 목표로 한 절충안이다.

동작 원리

인터넷 기반 보안 VPN의 핵심 메커니즘은 보통 두 가지이다.

  1. 터널링(Tunneling): 원래 패킷을 다른 패킷 안에 캡슐화한다. 외부 라우터는 바깥쪽 VPN 게이트웨이 주소만 보고 전달한다.
  2. 암호화와 무결성(Encryption / Integrity): 페이로드를 암호화하고 변조 여부를 확인해 도청과 위변조를 어렵게 한다. AES-GCM, ChaCha20-Poly1305 같은 AEAD 방식이나 ESP의 암호화/무결성 조합을 사용한다.

여기에 더해 실제 VPN 프로토콜은 상대 VPN 장비나 사용자가 맞는지 확인하고 세션 키를 안전하게 협상하기 위해 인증/키 교환 절차를 함께 사용한다. IPsec에서는 IKE가 이 역할을 담당한다.

[내부 PC 10.0.0.10]
    │  원본 패킷: src=10.0.0.10  dst=10.1.0.20
[VPN GW A 공인IP: 1.1.1.1] ───── 인터넷 ─────  [VPN GW B 공인IP: 2.2.2.2]
    │                                                │
    └─ 캡슐화·암호화한 패킷:                          └─ 복호화·디캡슐화 후
       src=1.1.1.1  dst=2.2.2.2                         원본 패킷을 내부망으로
       payload = (암호화된 원본 패킷)                    src=10.0.0.10 → dst=10.1.0.20
                                                  [내부 서버 10.1.0.20]

암호화만으로는 사설 IP 대역을 공용 인터넷 너머로 운반하기 어렵고, 캡슐화만 있으면 GRE 같은 단순 터널처럼 내용이 노출될 수 있다. 그래서 인터넷 위에 만드는 보안 VPN은 보통 터널링과 암호화를 함께 쓴다.

다만 "VPN"이라는 이름이 항상 암호화 터널만 의미하는 것은 아니다. MPLS L3VPN은 통신사 백본 안에서 VRF와 라벨로 고객망을 분리하고, GET VPN은 전통적인 터널 없이 IPsec 암호화를 적용한다. 문맥에 따라 보안 터널 VPN인지 사업자망 기반 VPN인지 구분해야 한다.

IPsec ESP Tunnel Mode를 예로 들면, 원본 패킷(사설 IP 헤더 포함)을 ESP 페이로드로 넣고 새 외부 IP 헤더를 붙인다. 암호화를 사용하는 ESP SA라면 내부 패킷은 암호화되고, 무결성/인증 정보로 변조 여부를 확인한다.

[원본]         IP(10.0.0.10 → 10.1.0.20) | TCP | data
                          ▼ 캡슐화
[VPN 패킷]    IP(1.1.1.1 → 2.2.2.2) | ESP | { IP(10..→10..) | TCP | data }
                                              └─── 암호화된 영역 ───┘

인터넷 라우터는 바깥 공인 IP 헤더만 보고 라우팅하므로 정상 전달되고, 반대편 GW에서 바깥을 벗기면 원본 사설 IP 패킷이 복원된다. 주요 메커니즘의 역할은 다음과 같이 정리된다.

메커니즘해결하는 문제빠지면 생기는 일
캡슐화 (터널링)사설 IP를 공용망 너머로 운반사설 주소가 공용망에서 라우팅되지 않거나 별도 도달성 설계가 필요
암호화/무결성도청·변조 방지평문 노출 — GRE 같은 단순 터널과 동급

VPN 유형

VPN은 누가 누구를 연결하는가에 따라 두 부류로 나뉜다.

구분Site-to-Site VPNRemote Access VPN
연결 단위네트워크 ↔ 네트워크단말 ↔ 네트워크
양 끝단VPN 게이트웨이(라우터/방화벽)클라이언트 SW ↔ VPN 게이트웨이
사용자 인식사용자는 VPN 존재를 모름사용자가 직접 연결/해제
대표 용도본사–지사, 사내망–VPC 연결재택근무, 출장 시 사내망 접근
주요 프로토콜IPsec, GRE+IPsec, DMVPNSSL/TLS VPN, IPsec/IKEv2, WireGuard

Site-to-Site VPN

두 사이트의 VPN 게이트웨이(보통 라우터나 방화벽)가 터널을 유지한다. 사이트 안의 단말들은 별다른 설정 없이 평소처럼 통신하면, 게이트웨이가 알아서 캡슐화·암호화해서 보낸다.

  • Cisco DMVPN: 허브 스포크 토폴로지에서 스포크 간 동적 터널을 형성 (mGRE + NHRP + IPsec)
  • GET VPN: Point-to-Point 터널 없이 그룹 단위 키와 IPsec으로 트래픽을 보호하는 방식. 사설 WAN/MPLS 위에서 자주 사용
  • 방화벽 기반 IPsec: ASA, FortiGate, Palo Alto 같은 방화벽/보안 장비가 일반적으로 제공

Remote Access VPN

사용자가 PC/스마트폰의 VPN 클라이언트를 켜고 인증을 거치면, 단말에서 사내망으로 향하는 트래픽이 VPN 터널로 라우팅된다. 전체 트래픽을 터널로 보내는 Full Tunnel과 사내망 대역만 보내는 Split Tunnel 구성이 모두 가능하다.

  • SSL/TLS VPN: Cisco Secure Client(AnyConnect), Palo Alto GlobalProtect, FortiClient 등. TLS 기반 접속을 사용하며, 제품에 따라 DTLS나 IPsec을 데이터 터널로 함께 사용
  • IPsec/IKEv2 클라이언트: 모바일에서 잘 동작 (네트워크 전환 시 재연결 빠름)
  • WireGuard: 상대적으로 단순한 경량 프로토콜. 설정이 단순하고 성능이 좋음

VPN 프로토콜

IPsec (IP Security)

가장 표준적이고 폭넓게 쓰이는 VPN 프로토콜 모음. L3에서 동작하며 IP 계층의 트래픽을 보호한다. 보호 범위는 Transport Mode와 Tunnel Mode에 따라 달라진다.

구성 요소

  • AH(Authentication Header): 무결성/인증만 제공, 암호화 없음. NAT와 잘 맞지 않고 현실에서는 거의 안 씀
  • ESP(Encapsulating Security Payload): 암호화, 무결성, 인증, 재전송 방지 같은 서비스를 제공. 실제 트래픽 보호에 주로 사용
  • IKE(Internet Key Exchange): 키 교환·세션 협상 담당. v1과 v2가 있으며 현재는 IKEv2 권장

두 가지 모드

모드캡슐화 방식사용처
Transport Mode원본 IP 헤더 유지, 상위 계층 페이로드를 보호호스트 ↔ 호스트, L2TP/IPsec 조합 등
Tunnel Mode원본 IP 패킷 전체를 새 IP 헤더로 감쌈Site-to-Site, IPsec Remote Access

ESP 패킷 구조 (Tunnel Mode)

[ 새 IP 헤더 | ESP 헤더 | (암호화 영역: 원본 IP 헤더 + 페이로드 + ESP 트레일러) | ICV/인증 태그 ]

장단점

  • 표준이라 벤더 간 호환성이 좋음
  • L3 동작이라 단말 OS 입장에서 투명함
  • NAT 환경에서는 ESP가 포트 정보를 갖지 않아 추적이 어렵고, AH는 IP 헤더 변경 때문에 깨질 수 있다. 보통 NAT-T(NAT Traversal) 로 ESP를 UDP 4500에 캡슐화해 우회함
  • 설정이 복잡하고 협상 단계가 많음 (IKEv1에서는 Phase 1/Phase 2, IKEv2에서는 IKE SA/Child SA)

SSL/TLS VPN

웹 브라우저나 전용 클라이언트가 TLS 기반 세션을 맺고 그 안으로 사내망 트래픽을 흘려보낸다. 초기 접속과 제어 채널은 TCP 443을 쓰는 경우가 많지만, 데이터 터널은 제품에 따라 DTLS(UDP)나 IPsec을 함께 사용하기도 한다.

  • TCP 443(HTTPS)으로 동작 → 카페·호텔 같은 공용 WiFi에서도 일반 HTTPS 트래픽과 구분이 어려워 방화벽에 차단되지 않고 잘 연결됨
  • 접속 방식이 두 가지로 나뉜다 — Clientless 모드는 브라우저로 바로 접속해 설치 부담이 거의 없고, Client 모드는 전용 클라이언트와 가상 어댑터를 설치해야 하지만 사내망 전체에 OS 레벨로 접근할 수 있다
  • IPsec보다 사용자 배포와 포털 연동이 쉬운 경우가 많아 Remote Access에서 널리 사용
  • 대표 제품: Cisco AnyConnect, Palo Alto GlobalProtect, F5 BIG-IP APM

WireGuard

Linux 5.6(2020)에 메인라인 커널로 들어간 비교적 최신 VPN 프로토콜. 단순함과 성능을 목표로 설계되었다.

  • 구현이 작고 단순한 편이라 보안 감사가 상대적으로 쉬움
  • UDP 기반, 항상 켜져 있는 듯한 사용 경험 (handshake가 가벼움)
  • 고정된 최신 암호 구성 사용 (ChaCha20-Poly1305, Curve25519, BLAKE2s, SipHash24, HKDF 등)
  • 다만 공개키 기반 피어 설정이 핵심이라, 사용자 계정 관리·MFA·세밀한 접근 제어 같은 기업 기능은 별도로 붙여야 함

기타 / Legacy

프로토콜상태비고
PPTP사용 중단 권고MS-CHAPv2 등 보안 취약점 때문에 신규 사용 부적합
L2TP/IPsec레거시/호환성 용도L2TP는 캡슐화만, 암호화는 IPsec이 담당. 이중 캡슐화로 오버헤드가 큼
OpenVPN널리 사용오픈소스, TLS로 인증/키 교환을 수행하고 UDP/TCP 터널을 지원
GRE보안 VPN은 아님단순 캡슐화 프로토콜. IPsec과 조합하여 사용

MPLS VPN과의 관계

기업망에서 "VPN"이라고 하면 통신사가 제공하는 MPLS L3VPN을 가리키는 경우가 많다.

구분IPsec/SSL VPNMPLS L3VPN
동작 위치공용 인터넷이나 기존 IP망 위 (오버레이)통신사 백본 안
암호화보안 VPN에서는 핵심 기능기본적으로 없음 (고객망 분리/격리 중심)
회선일반 인터넷 회선통신사 전용 회선
비용저렴비쌈
품질Best-effortSLA 보장
격리 방식암호 터널VRF + MPLS 라벨

MPLS VPN은 통신사 인프라 안에서 VRF로 고객별 라우팅 테이블을 분리하기 때문에 그 자체로는 암호화하지 않는다. 보안이 추가로 필요하면 그 위에 IPsec을 한 번 더 씌우기도 한다.

한계와 주의점

  • 성능 오버헤드: 캡슐화 + 암호화로 인해 CPU 부하와 약간의 지연이 추가된다. 게이트웨이는 보통 암호화 가속(AES-NI, 전용 ASIC)을 사용
  • MTU 문제: 캡슐화 헤더 때문에 원본 패킷이 MTU를 넘기면 단편화가 발생한다. PMTUD가 막혀 있으면 블랙홀이 생기므로, MSS clamping이나 MTU 조정이 필요
  • NAT 통과: ESP를 그대로 쓰면 포트 개념이 없어 NAT 환경에서 깨지기 쉽다. NAT-T로 UDP 캡슐화 필요
  • 분실/탈취 단말: Remote Access에서 단말이 탈취되면 사내망 진입로가 노출된다. 인증서, MFA, EDR과 함께 운용해야 함
  • Implicit trust 모델의 한계: 전통적인 VPN을 네트워크 단위로 넓게 열어두면, 한 번 접속한 계정/단말이 내부에서 lateral movement를 시도하기 쉽다. 이 한계를 줄이기 위해 ACL, 세그멘테이션, MFA, 단말 보안과 함께 ZTNA(Zero Trust Network Access) 같은 접근 모델을 도입하기도 한다

정리

  • 인터넷 기반 보안 VPN은 공용망 위에 가상 사설망을 만들기 위해 터널링 + 암호화/무결성을 조합한다
  • 용도에 따라 Site-to-Site(네트워크↔네트워크)와 Remote Access(단말↔네트워크)로 나뉜다
  • 프로토콜은 IPsec, SSL/TLS, WireGuard, OpenVPN이 주로 사용되며 L2TP/IPsec은 레거시 호환성 용도로 남아 있다
  • 통신사 MPLS L3VPN은 인터넷 기반 VPN과 달리 통신사 백본 안에서 VRF와 MPLS 라벨로 망을 분리한다
  • VPN을 내부망 진입 수단으로만 쓰면 Implicit Trust Zone이 지나치게 커지므로, 세그멘테이션과 ZTNA 같은 접근 제어를 함께 고려해야 한다