adsense

글 목록

공인 IP와 사설 IP를 변환하기 위한 NAT, NAPT의 개념 및 변환 목적 이해하기

NAT(Network Address Translation)
OSI 3계층인 네트워크 계층에서 공인 IP와 사설 IP를 변환하는 역할을 한다.
 
NAT를 사용하는 목적
공인 IP 주소 절약(사설 IP 주소 가진 여러 단말이 하나의 공인 IP 주소를 통해 인터넷 연결)
외부로부터의 침입 차단
 
NAT 종류
Basic NAT, NAPT(Network Address Port Translation) 이 두 개를 총칭하여 Traditional NAT(RFC 3022)라고 한다.
일반적으로 NAT라고 하면 NAPT를 말한다. (모든 유무선 공유기는 NAPT 방식 지원)
기존 NAT에서 IP 주소만을 변환했다면 NAPTIPPort를 같이 묶어서 좀 더 효율적으로 사용한다.
(NAT - 1:1 주소 변환 방식, NAPT - :1 주소 변환 방식)
 
여기까지가 단순한 내용 설명
아래서부터는 조금 디테일한 내용이다.
 





---------------------------------------------------------------------------------------------------



Basic NAT(Network Address Translation)

목적
기업망에서 보안 목적으로 사용


private IP 주소 수만큼 Public IP 가지고 인터넷 연결 1:1 translation


Translation 규칙
1:1 translation (1 = Public IP, 1 = Private IP)
 
 
Translation되는 패킷 정보
- Outbound Traffic: Translation {Private Source IP Address} to {Pubilc source IP Address}
- Inbound Traffic: Translation {Public Destination IP Address} to {Private Destination IP Address}
 

Translation 수행 시 변경되는 패킷 정보
 
- Outbound Traffic: Source IP Address, IP Header Checksum
- Inbound Traffic: Destination IP Address, IP Header Checksum
 



Translation 3 단계

1. Address Binding
Private IP Address를 가진 단말이 보낸 Outbound Traffic에 대해 Basic NAT 장비가 {Private IP Address}에 대한 {Public IP Address}를 결정하고(1:1 mapping) NAT Binding Table에 세션 엔트리 생성

2. Address Lookup and Translation
- 이후 Outbound 방향으로(단말에서 NAT 장비로) 패킷이 수신되면 NAT Binding Table을 참조하여 {Private Source IP Address}{Public Source IP Address}로 변환하여 인터넷으로 전송
- Inbound 방향으로(인터넷에서 NAT 장비로) 패킷 수신 시 NAT Binding Table을 참조하여 {Public Destination IP Address}를 단말의 IP , {Private Destination IP Address}로 변환하여 단말로 전송

3. Address Unbinding
NAT Binding Table의 해당 엔트리에 대해 일정 시간(NAT 장비마다 다름)동안 패킷이 흐르지 않으면 세션 엔트리를 삭제


 



NAPT (Network Address Port Translation)


목적
Public IP 주소 절약을 목적으로, Private IP 주소를 가지는 여러대의 단말이 하나의 Public IP 주소를 통해 인터넷과 연결되는 방식

Translation 규칙
1:N translation (1 = Public IP, N = Private IP)
 
Translation되는 패킷 정보 
- Outbound Traffic: Translation {Private Source IP Address, Local TU Source Port} tuple to {Pubilc Source IP Address, Registered TU Source Port} tuple
- Inbound Traffic: Translation {Public Destination IP Address, Registered TU Destination Port} tuple to {Private Destination IP Address, Local TU Destination Port}
 

Translation 수행 시 변경되는 패킷 정보
 
- Outbound Traffic: Source IP Address, IP Header Checksum, TU Source Port, TCP/UDP Header Checksum
- Inbound Traffic: Destination IP Address, IP Header Checksum, TU Destination Port, TCP/UDP Header Checksum


Translation 3 단계

1. Address Binding
Private IP Address를 가진 단말이 보낸 Outbound Traffic에 대해 NAPT 장비가 Private IP AddressTU Source Port에 대한 Public IP Address TU Source Port를 결정하고(1:N mapping) NAT Binding Table에 세션 엔트리 생성

2. Address Lookup and Translation
- 이후 Outbound 방향으로(단말에서 NAT 장비로) 패킷이 수신되면 NAT Binding Table을 참조하여 {Private Source IP Address, Local TU Source Port}{Public Source IP Address, Registered TU Source Port}로 변환하여 인터넷으로 전송 (RegisteredNAT 장비가 할당한 Port 값을 의미함. Local TU Source PortInternal Port, Registered TU Source PortExternal Port라고도 부름)
- Inbound 방향으로(인터넷에서 NAT 장비로) 패킷 수신 시 NAT Binding Table을 참조하여 {Public Destination IP Address, Registered TU Destination Port}를 단말의 IP Port 정보 즉, {Private Destination IP Address, Local TU Destination Port}로 변환하여 단말로 전송

3. Address Unbinding
NAT Binding Table의 해당 엔트리에 대해 일정 시간(NAT 장비마다 다름)동안 패킷이 흐르지 않으면 세션 엔트리를 삭제




네트워크 공부를 하고자 할 때 여기 사이트가 정말 큰 도움이 된다.(여기서 퍼옴)





-----------------------------------------------------------------------





세세하게 설명이 잘 되어 있어 이것만 좀 자세히 보면 다 이해할 수 있다고 본다.
굳이 이걸 좀 단순하고 쉽게 보고자 바인딩 테이블만 떼어내서 보면 다음과 같다.
 


NAT의 바인딩 테이블을 보면 각 내부 IP당 외부 IP1:1로 매핑하는 것을 알 수 있다.








NAPT의 바인딩 테이블에서는 IP와 포트 단위로 묶어서 동일한 외부 IP에 포트 번호만 바꿔서 매핑하고 있다. 이렇게 :1 형태로 매핑하니 보다 효율적으로 IP를 사용한다고 볼 수 있겠다.