network) VPN

VPN

Virtual Private Network (가상 사설망)

  • "멀리 떨어진 네트워크를 마치 같은 네트워크인 것처럼 연결하는 기술"

개념

  • VPN 터널 (인터넷): "가상 랜선"
    • 실제론 공용 인터넷을 그대로 사용하지만 암호화 되어 외부에서 볼 수 없고,
      논리적으로 분리된 사설 네트워크처럼 동작
  • "중계기"
터널링

원본 패킷을 "다른 패킷 안에" 넣어서 전송

패킷 흐름

  • 원본 패킷
    • Src: VPN IP
      • VPN 네트워크의 가상 IP 할당
      • ⚠️ 라우팅 테이블을 먼저 확인하여 송신 인터페이스에 따라 Src IP 를 할당
    • Dst: 목표 서버
  • 라우팅 규칙에 따라 가상 인터페이스(WireGuard 가상 인터페이스) 로 전송
  • 패킷 전체를 암호화
  • 새 IP 헤더를 추가
    • Src: 집 공인 IP
    • Dst: VPN 서버 공인 IP
      • VPN 모듈(WireGuard 커널 모듈) 이 알고 있음 (설정 파일에서 읽어옴)
  • UDP 전송
    • 원본 패킷은 TCP 이기 때문에 연결 보장
  • 라우팅 규칙에 따라 물리 인터페이스(eth0) 로 전송
  • VPN 서버에서 패킷을 복호화 하여 원본 패킷 추출
  • 목적지로 TCP 전송
    • 목적지가 VPN 네트워크에 등록된 내부망의 경우: 원본 패킷 그대로 전송
    • 목적지가 외부인 경우: Src 만 VPN 서버 공인 IP 로 변경(NAT 처리)하여 전송
사설 IP 대역
  • 10/8
  • 172.16/12: 172.16.0.0 ~ 172.31.255.255
  • 192.168/16

WireGuard

VPN 프로토콜

  • 암호화된 터널을 만드는 "규칙"
  • Network Layer 3 에서 동작
    • 모든 네트워크 트래픽을 암호화

특징

  • 최신 암호화 사용
    • ChaCha20
      • 소프트웨어에서 최적화됨
      • AES보다 모바일에서 빠름
      • 하드웨어 가속 불필요
    • Curve25519
      • RSA보다 훨씬 빠름
      • 작은 키 사이즈 (32바이트)
      • 양자 내성 연구 중
  • 키 기반 인증
    • 사전에 교환한 공개키로 서로 같은 비밀 값을 만들어(ECDH 계산)
      이를 통해 세션 키를 생성하여 통신
      • ECDH: 내 비밀키 × 상대 공개키 = 공유 비밀
    • 핸드셰이크마다 임시 키도 만들어 ECDH 계산
      • 임시키도 사용하여 여러 공유 비밀을 가지고 키를 만들고
        이를 또 가공하여 세션 키 생성

포스트
카테고리
시리즈