한양과학기술고등학교

에듀테크 프로젝트 대시보드

VPN과 터널링

VPN과 터널링 (Tunneling)

카페 와이파이처럼 누구나 접속하는 네트워크에서는, 같은 와이파이에 있는 사람이 특수 도구 없이도 지나가는 패킷을 엿볼 수 있다. VPN은 내 기기와 VPN 게이트웨이 사이에 암호화된 가상 통로, 즉 터널을 만들어 그 구간의 도청을 막는다. 핵심은 캡슐화(Encapsulation)다 — 원래 패킷 전체(진짜 목적지 포함)를 암호화해서, 새 패킷의 데이터(payload) 안에 통째로 집어넣는다. 그래서 중간의 도청자는 "누가 어디로 가는 트래픽인지"는커녕 암호문 덩어리만 보게 되고, 오직 VPN 게이트웨이의 IP만 목적지로 드러난다.

터널 시뮬레이터 — 카페 와이파이 도청자 옆을 지나가기

VPN 터널 ON
내 노트북
카페 와이파이 (안전하지 않음)
목적지 서버
로그인 요청 보내기를 눌러 패킷이 어떻게 흘러가는지 확인하세요.

캡슐화 — 패킷 속의 패킷

VPN이 켜지면 원래 패킷은 사라지지 않는다. 암호화된 채로 다른 패킷 안에 그대로 들어갈 뿐이다.

# VPN 없이 — 누구나 읽을 수 있는 평문
src 내노트북:51514  dst bank.example.com:443
payload: GET /login?user=giovanni&pass=1234 ...   ← 와이파이 도청자가 그대로 읽음

# VPN 터널 — 원래 패킷 전체가 암호화되어 새 패킷의 payload가 됨
src 내노트북:51514  dst vpn-gateway:51820   # 겉 헤더 = 나 → VPN 게이트웨이 뿐
payload: 7f3a9c1e...(암호문)...            # 도청자에게는 의미 없는 바이트
    │
    ▼ 게이트웨이가 복호화 → 원래 패킷을 꺼내 진짜 목적지로 재전송
src vpn-gateway:40001  dst bank.example.com:443
payload: GET /login?user=giovanni&pass=1234 ...   ← 목적지 서버는 원래 요청을 그대로 받음
  • 겉 헤더(Outer header)는 오직 "나 ↔ VPN 게이트웨이"만 말해준다. 도청자는 최종 목적지를 알 수 없다.
  • 속 헤더(Inner header)는 암호화된 채로 원래의 출발지·목적지·데이터를 그대로 담고 있다. 게이트웨이만 열어볼 수 있다.
  • 목적지 서버 입장에서는 요청이 게이트웨이의 IP에서 온 것처럼 보인다 — 그래서 VPN이 지역 우회에도 쓰인다.

대표 터널링 프로토콜 비교

프로토콜계층 / 특징비고
WireGuard최신, 코드량 적음, ChaCha20 암호화속도 빠름, 설정 간단(공개키 한 줄)
IPsec네트워크 계층(L3), ESP로 IP 패킷 통째 캡슐화기업 사이트-투-사이트 VPN에 표준
OpenVPNTLS 기반, UDP/TCP 위에서 동작범용적, 방화벽 우회 잘 됨(443 포트 위장 가능)
TLS(HTTPS)전송 계층 위, 앱 하나만 암호화VPN과 달리 트래픽 전체가 아닌 그 연결만 보호

HTTPS도 암호화를 하지만 그 웹사이트로 가는 연결 하나만 보호한다. VPN은 그보다 아래 계층에서 기기가 내보내는 모든 트래픽을 하나의 터널로 묶어 보낸다는 점이 다르다.

WireGuard 설정 예시

# /etc/wireguard/wg0.conf — 클라이언트
[Interface]
PrivateKey = cIv0k3...(내 개인키)
Address    = 10.8.0.2/24          # 터널 안에서 쓰는 가상 IP

[Peer]
PublicKey  = Gk9mP2...(게이트웨이 공개키)
Endpoint   = vpn-gateway.example.com:51820
AllowedIPs = 0.0.0.0/0              # 이 범위로 가는 트래픽은 전부 터널로