에듀테크 프로젝트 대시보드
VPN과 터널링
카페 와이파이처럼 누구나 접속하는 네트워크에서는, 같은 와이파이에 있는 사람이 특수 도구 없이도
지나가는 패킷을 엿볼 수 있다. VPN은 내 기기와 VPN 게이트웨이 사이에 암호화된 가상 통로,
즉 터널을 만들어 그 구간의 도청을 막는다. 핵심은 캡슐화(Encapsulation)다 —
원래 패킷 전체(진짜 목적지 포함)를 암호화해서, 새 패킷의 데이터(payload) 안에 통째로 집어넣는다.
그래서 중간의 도청자는 "누가 어디로 가는 트래픽인지"는커녕 암호문 덩어리만 보게 되고,
오직 VPN 게이트웨이의 IP만 목적지로 드러난다.
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 ... ← 목적지 서버는 원래 요청을 그대로 받음
| 프로토콜 | 계층 / 특징 | 비고 |
|---|---|---|
| WireGuard | 최신, 코드량 적음, ChaCha20 암호화 | 속도 빠름, 설정 간단(공개키 한 줄) |
| IPsec | 네트워크 계층(L3), ESP로 IP 패킷 통째 캡슐화 | 기업 사이트-투-사이트 VPN에 표준 |
| OpenVPN | TLS 기반, UDP/TCP 위에서 동작 | 범용적, 방화벽 우회 잘 됨(443 포트 위장 가능) |
| TLS(HTTPS) | 전송 계층 위, 앱 하나만 암호화 | VPN과 달리 트래픽 전체가 아닌 그 연결만 보호 |
HTTPS도 암호화를 하지만 그 웹사이트로 가는 연결 하나만 보호한다. VPN은 그보다 아래 계층에서 기기가 내보내는 모든 트래픽을 하나의 터널로 묶어 보낸다는 점이 다르다.
# /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 # 이 범위로 가는 트래픽은 전부 터널로