iBetter Books
수정

TLS와 VPN

PART 06에서 HTTPS를 배울 때 TLS를 만났습니다. TLS는 HTTP 통신을 암호화해 기밀성, 무결성, 인증을 보장한다는 것, 핸드셰이크로 세션 키를 협상한다는 것을 배웠습니다. 이번 절에서는 그 TLS를 다시 출발점으로 삼아, 같은 원리를 네트워크 전체 트래픽에 적용하는 VPN까지 확장합니다.

TLS가 보호하는 것과 못하는 것

TLS는 두 점 사이의 페이로드를 암호화합니다. 브라우저와 웹 서버 사이에 TLS가 있다면, 중간을 지나는 ISP나 공용 WiFi 운영자는 패킷 내용을 읽을 수 없습니다. 인증서 덕분에 내가 연결한 서버가 진짜 그 서버인지도 검증됩니다.

하지만 TLS는 IP 헤더를 암호화하지 않습니다. 공격자는 내용은 못 읽어도 어떤 서버에 얼마나 자주 접속하는지는 알 수 있습니다. 트래픽 분석만으로도 행동 패턴을 파악할 수 있습니다.

VPN의 원리

VPN(Virtual Private Network)은 이 문제를 다른 방식으로 풉니다. 클라이언트와 VPN 서버 사이에 암호화된 터널을 만듭니다. 클라이언트의 모든 트래픽은 이 터널 안에 캡슐화되어 VPN 서버를 거쳐 나갑니다. 외부에서는 클라이언트가 VPN 서버와만 통신하는 것처럼 보입니다. 최종 목적지 IP도 숨겨집니다.

원격 근무자가 회사 내부 시스템에 접속할 때 VPN을 쓰는 이유도 같습니다. 인터넷이라는 공개 네트워크를 통해 마치 사내 네트워크에 직접 연결된 것처럼 통신할 수 있습니다.

WireGuard 간단 예시

OpenVPN, IPsec, WireGuard 등 다양한 VPN 프로토콜이 있습니다. WireGuard는 코드베이스가 작고 성능이 뛰어나 최근 주목받습니다. 서버에 피어를 추가하는 설정은 다음과 같습니다.

# 파일: 터미널# WireGuard 설정 파일 예시 (/etc/wireguard/wg0.conf)[Interface]PrivateKey = <서버 개인>Address = 10.0.0.1/24ListenPort = 51820[Peer]PublicKey = <클라이언트 공개>AllowedIPs = 10.0.0.2/32

TLS와 VPN의 관계

TLS는 애플리케이션 계층에서 특정 연결을 보호합니다. VPN은 네트워크 계층에서 모든 트래픽을 터널 안으로 감쌉니다. 둘은 경쟁하는 기술이 아니라 서로 다른 계층에서 동작하는 보완적인 수단입니다. VPN 터널 안을 흐르는 HTTPS 트래픽은 VPN 암호화와 TLS 암호화가 이중으로 적용됩니다. 다음 장에서는 네트워크 인프라 자체를 소프트웨어로 유연하게 만드는 현대 기술들을 살펴봅니다.