CS/네트워크 - Top-down Approach + @

NAT

조금씩 차근차근 2025. 4. 17. 20:44

본 게시글은 그림으로 공부하는 TCP/IP 구조 도서를 참고하였습니다.

 

NAT는 Network Address Translation의 약자로, IP 주소를 변환하는 기술을 의미한다.
이는 부족한 글로벌 IP 주소의 절약 및 같은 네트워크 주소를 가진 시스템 사이 통신에 기여한다.

NAT는 변환 전후의 IP 주소나 포트 번호를 NAT 테이블이라는 메모리상의 테이블로 묶어서 관리하며, NAT는 이 NAT 테이블에 따라 동작한다.

  • 주의) 두가지 의미를 가지고 있다.
    • 넓은 의미의 NAT
      • 주소를 변환하는 기술 전부를 의미한다.
    • 좁은 의미의 NAT
      • 정적 NAT(1:1 NAT)

NAT의 종류 중 정적 NAT와 동적 NAT중 하나인 NAPT, 그리고 NAT를 위한 NAT Traversal에 대해 알아보자.

정적 NAT

정의

  • 내부와 외부의 IP 주소를 1:1로 묶어서 변환하는 기능을 의미한다.
  • 외부에 보여지는 IP와 내부에서 사용하는 IP를 분리하고 싶을 때 사용할 수 있다.

동작 방식

  • 미리 NAT 테이블에 내부 IP주소와 외부 IP주소를 유일하게 묶는 NAT 엔트리를 갖고 있다.

NAPT

일반적으로 가정 내 라우터/테더링에서 사용되는 NAT인 NAPT에 대해서 알아보자.

정의

  • Network Address Port Translation
  • 내부와 외부의 IP 주소를 n:1 로 연결해서 변환한다.
  • PAT(Port Address Translation)라고 부르기도 한다.

실제 NAT(NAPT) 의 동작 방식

  • Transport 계층 연결처럼, 송신지/수신지의 IP 주소와 포트 번호를 기록한 테이블을 이용해 내부 단말과 외부 단말을 연결한다.
  • 예시 - NAPT의 NAT 테이블 형태. IP와 포트 정보를 모두 갖고 있다.
프로토콜 Inside Local (내부 IP:포트) Inside Global (공인 IP:포트) Outside Local (원격지 IP:포트) Outside Global (원격지 IP:포트)
TCP 192.168.1.10:34567 203.0.113.5:40001 93.184.216.34:80 93.184.216.34:80
TCP 192.168.1.11:34568 203.0.113.5:40002 172.217.14.206:443 172.217.14.206:443
UDP 192.168.1.12:55000 203.0.113.5:50001 8.8.8.8:53 8.8.8.8:53
UDP 192.168.1.13:55001 203.0.113.5:50002 1.1.1.1:53 1.1.1.1:53
  • 어느 단말이 어느 포트번호를 이용하는가를 보고 패킷을 구분할 수 있어, n:1로 변환할 수 있다.

참고 - CGNAT

  • CGNAT는 NAPT를 통신 사업자나 ISP에서 사용할 수 있도록 확장한 기술이다.
  • 이 기술은 수십만에서 수백만 규모의 가입자를 효율적이고도 투명하게 인터넷에 연결할 수 있도록 설계되었다.
  • 일반적으로 스마트폰의 LTE 안테나와 외부 인터넷 사이에서 동작하고 있다.

NAT 트래버설

NAT 아래의 단말은 프라이빗 IP 주소만 갖고 있으므로, 인터넷을 경유해 직접 통신할 수는 없다. 따라서 NAT 기기를 뛰어넘어 단말끼리 직접 통신하도록 하기 위한 기술이 필요하다. 이를 NAT Traversal이라고 한다.

  • NAT Traversal의 구현 방식인 다음 네가지가 있다.
    • 포트 포워딩
    • UPnP
    • STUN
    • TURN
  • 애플리케이션은 이중 현재 가장 연결하기 쉬운 방식을 선택해서 사용한다.

각각의 방식에 대해 좀 더 자세히 알아보자.

포트 포워딩

포트 포워딩의 시퀀스 다이어그램.

  • 특정 IP주소/포트번호에 대한 통신을 미리 설정해둔 내부 단말로(정적으로) 전송하는 기능이다.
  • 내부(LAN)에 있는 서버를 외부(인터넷)에 공개할 때 등에 사용된다.

UPnP

UPnP의 시퀀스 다이어그램. 하단의 동작 방식과 함께 보면 좋다.

  • Universal Plug and Play
  • 단말로부터의 요청에 따라, 자동으로 포트포워딩을 수행할 수 있는 기능이다.

동작 방식

  • 단말은 네트워크에 접속하면 라우터를 탐색하고, 라우터에게 포트 포워딩을 요청한다.
  • 라우터는 그 요청에 따라 동적으로 포트 포워딩을 수행한다.

STUN

STUN의 시퀀스 다이어그램. 하단의 동작 방식과 함께보면 좋다.

  • Session Traversal Utilities for NATs
  • USP를 사용해 외부로부터 내부에 대한 통신을 허가하는 기능이다.
  • UDP Hole Punching 이라 부르기도 한다.

동작 방식

  • 라우터의 특성 중, 단말이 내부에서 외부에 UDP 패킷을 송신할 경우, 라우터는 응답 패킷을 위해 외부에서 내부로 이어지는 통신은 일정 시간동안 허가하는 특성을 응용한다.
  • 각 단말은 STUN 서버와 UDP로 통신해, 자신과 통신 상대의 글로벌 IPv4 주소와 포트 번호를 식별한다.
  • 라우터는 각각의 글로벌 IPv4 주소와 포트 번호에 대한 통신이 일정시간 동안 허가된다.
  • 각 단말은 서로의 글로벌 IPv4 주소와 포트 번호에 대해 액세스하면, 직접 통신할 수 있게 된다.

TURN

TURN의 시퀀스 다이어그램. 하단의 동작 방식과 함께 보면 좋다.

  • Traversal Using Relay around NAT
  • TURN 서버를 통한 통신 기능이다.

동작 방식

  • 각 단말은 TURN 서버에 액세스해, TURN 서버를 통해 서로 데이터를 교환한다.
  • 직접 통신이 아니므로, 통신 지연이 다소 발생하지만 STUN 보다 가벼운 점이 장점이다.

'CS > 네트워크 - Top-down Approach + @' 카테고리의 다른 글

UDP  (0) 2025.04.18
포트 번호  (0) 2025.04.17
IP 주소 할당 방법 - 정적 할당, 동적 할당(DHCP)  (0) 2025.04.17
IP 라우팅  (0) 2025.04.17
IPv4  (0) 2025.04.16