NAT (Network Address Translation)

박진선·2024년 5월 31일

네트워크 주소 변환(network address translation, 줄여서 NAT)은 컴퓨터 네트워킹에서 쓰이는 용어로서, 패킷의 IP헤더의 TCP/UDP 포트 숫자와 소스 및 목적지의 IP 주소 등을 재기록하면서 라우터를 통해 네트워크 트래픽을 주고 받는 기술을 뜻하는데 쉽게 Network Address인 IP를 변환(Translation)하겠다는 뜻이다.

NAT를 이용하는 이유는 대개 사설 네트워크(Private Network)에 속한 여러 개의 호스트가 하나의 공인 IP 주소를 사용하여 인터넷에 접속하기 위함이다.

IP 주소에는 Public IP(공인 IP)와 Private IP(사설 IP)가 있다. IP를 굳이 두 종류로 나눈 이유를 간단히 말하자면 IPv4 주소의 낭비를 막고 공인 인터넷을 굳이 사용하지 않아도 되는 단말들에게 어느 망이든 중복 사용 가능한 IP를 주기 위함이다. (공인망에서는 공인 IP만이 유통)

NAT Table

Static NAT (1:1)

하나의 사설 IP 주소를 하나의 공인 IP 주소에 고정적으로 1:1로 매핑하는 방식이다.
즉, 내부 네트워크의 특정 장치가 외부와 통신할 때 항상 동일한 공인 IP 주소를 사용한다.
반대로 외부에서 그 공인 IP 주소로 접속하면, 항상 동일한 내부 장치로 연결된다.

Dynamic NAT

내부 사설 IP 주소가 외부와 통신할 때 NAT 장비가 보유한 공인 IP 주소 풀(Pool)에서 사용 가능한 공인 IP 주소를 동적으로 할당하여 매핑하는 방식이다.
통신이 끝나면 할당되었던 공인 IP 주소는 다시 풀로 반환되어 다른 내부 장비가 사용할 수 있게된다.

동작원리

NAT 장비에 여러 개의 공인 IP 주소로 구성된 풀(Pool)을 설정한다. 예를 들어, 203.0.113.20부터 203.0.113.29까지 10개의 공인 IP 주소 풀을 설정

내부에서 외부로의 통신
1. 내부 장비 A(192.168.1.100)가 외부로 패킷을 전송하면, 패킷은 NAT 장비에 도달한다.

  1. NAT 장비는 공인 IP 주소 풀에서 현재 사용 가능하고 할당되지 않은 공인 IP 주소(예: 203.0.113.20)를 선택하여 내부 장비 A의 사설 IP 주소와 동적으로 매핑한다.
    이 매핑 정보는 NAT 테이블에 일정 시간 동안 유지된다.

  2. 패킷의 출발지 IP 주소는 선택된 공인 IP 주소(203.0.113.20)로 변환되어 외부 인터넷으로 전송된다.

  3. 외부 서버가 응답 패킷을 공인 IP 주소 203.0.113.20으로 보내면, 패킷은 NAT 장비에 도달한다.

  4. NAT 장비는 NAT 테이블을 참조하여 203.0.113.20이 내부 장비 A(192.168.1.100)와 매핑되어 있음을 확인하고, 패킷의 목적지 IP 주소를 사설 IP 주소(192.168.1.100)로 변환한다.

  5. 변환된 패킷이 내부 장비 A로 전달된다.

  6. 내부 장비 A의 통신이 종료되거나 일정 시간 동안 통신이 없으면(타임아웃), NAT 장비는 203.0.113.20과 192.168.1.100 간의 매핑을 해제하고, 해당 공인 IP 주소(203.0.113.20)를 다시 공인 IP 주소 풀로 반환하여 다른 내부 장비가 사용할 수 있도록한다.

PAT (Port Address Translation) 또는 NAPT (Network Address Port Translation)

하나의 공인 IP 주소를 사용하여 여러 대의 내부 사설 IP 주소를 가진 장비들이 동시에 외부 인터넷에 접속할 수 있도록 하는 기술이다.
이를 위해 IP 주소뿐만 아니라 포트 번호까지 함께 변환합니다. NAT의 가장 일반적인 형태로, "NAT 오버로딩(NAT Overloading)" 또는 "IP 마스커레이드(IP Masquerade)"라고도 불린다.

동작원리

NAT 장비에 할당된 하나의 공인 IP 주소(또는 소수의 공인 IP 주소)를 설정한다.

  1. 내부 장비 A(192.168.1.100)가 특정 포트 번호(예: 10000)를 사용하여 외부 웹 서버(예: 203.0.113.80:80)로 패킷을 전송한다. 출발지 정보는 192.168.1.100:10000 이다.
    내부 장비 B(192.168.1.101)도 특정 포트 번호(예: 20000)를 사용하여 동일한 외부 웹 서버로 패킷을 전송한다. 출발지 정보는 192.168.1.101:20000 이다.

  2. 패킷들이 NAT 장비에 도달하면, NAT 장비는 다음과 같이 변환한다.
    장비 A의 패킷: 출발지 IP 주소를 공인 IP 주소(예: 203.0.113.50)로 변환하고, 출발지 포트 번호를 고유한 다른 포트 번호(예: 50001)로 변경한다.
    변환된 출발지 정보는 203.0.113.50:50001이 된다. 이 매핑 정보(192.168.1.100:10000 <-> 203.0.113.50:50001)를 NAT 테이블에 기록한다.

장비 B의 패킷: 출발지 IP 주소를 동일한 공인 IP 주소(203.0.113.50)로 변환하고, 출발지 포트 번호를 고유한 다른 포트 번호(예: 50002)로 변경한다. 변환된 출발지 정보는 203.0.113.50:50002가 된다. 이 매핑 정보(192.168.1.101:20000 <-> 203.0.113.50:50002)를 NAT 테이블에 기록한다.
변환된 패킷들이 외부 인터넷으로 전송된다.

  1. 외부 웹 서버가 응답 패킷을 보낸다.
    장비 A로의 응답: 목적지 정보는 203.0.113.50:50001
    장비 B로의 응답: 목적지 정보는 203.0.113.50:50002

  2. 응답 패킷들이 NAT 장비에 도달하면, NAT 장비는 NAT 테이블을 참조한다.
    목적지가 203.0.113.50:50001인 패킷: 매핑 정보에 따라 목적지 IP 주소를 192.168.1.100으로, 목적지 포트 번호를 10000으로 변환하여 내부 장비 A로 전달한다.
    목적지가 203.0.113.50:50002인 패킷: 매핑 정보에 따라 목적지 IP 주소를 192.168.1.101으로, 목적지 포트 번호를 20000으로 변환하여 내부 장비 B로 전달한다.

  3. 통신이 종료되거나 타임아웃되면 해당 매핑 정보가 NAT 테이블에서 삭제된다.

특징

하나의 공인 IP 주소와 여러 개의 포트 번호 조합을 통해 수많은 내부 장비들이 동시에 외부 인터넷 접속을 할 수 있으므로 공인 IP 주소 절약 효과가 매우크다.
하나의 IP 주소는 이론적으로 약 65,535개의 포트를 가질 수 있지만, 실제로는 예약된 포트 등을 제외하고 약 4,000~60,000개 정도의 동시 세션을 지원할 수 있다.

profile
주니어 개발자 입니다

0개의 댓글