2011년 4월 14일 목요일

Network address translation (NAT) 개념 정리

Network address translation (NAT) 그림 모음
NAT, UDP Tunnel과 관련된 그림









 

Cascaded mode

======================== NAT 관련 책 소개 ===========================

네트워크 주소 변환 기술에 대한 고찰
저자: 이광희   2004년 03월 22일

단순하게 텍스트 문서나 메일을 전송하기 위해 구축된 초창기 인터넷은 WWW의 등장과 다양한 인터넷 응용의 등장으로 비약적인 성장을 거듭해왔다. 2002년 2월에 이미 1.6억개의 호스트가 인터넷에 접속되어 있으며 2010년에는 인터넷 접속 호스트의 수는 현재 인터넷의 데이터 전달 프로토콜인 IP의 주소 지정 능력을 넘어서 IP 주소는 고갈될 것으로 예측되고 있다. IP 주소의 비효율적인 할당과 사용으로 인해 대두된 IP 주소 부족 문제는 현재 IPv4 주소체계의 인터넷에서 홈 네트워킹, 인터넷 정보 가전, 유비쿼터스 네트워킹 등 다양한 응용들의 출현에 심각한 위협이 되었다. 주소 부족 문제를 해결하기 위한 방법은 크게 장기적인 관점과 단기적인 관점의 해결책이 있다. 장기적인 해결책으로 IPv4-to-IPv6로의 전이는 현재 IPv4의 문제점인 IP Security, 멀티캐스트, IP 주소 부족 문제를 해결하는 가장 좋은 방법이지만, 현재 구축되어 있는 IPv4의 모든 네트워크 장비와 호스트를 수정해야 하므로 많은 시간과 비용이 필요하다. 현재 IPv4-to-IPv6의 전이에 대해 많은 연구가 수행 중이며 이미 실험망이 구축되어 있으나 실제 완전한 IPv6 인터넷은 정확하게 언제 이루어질지 누구도 알지 못한다. 따라서 현재 시급한 IP 주소 부족 문제를 해결하기 위해 가장 보편적으로 이용하고 있는 기술이 네트워크 주소 변환 기술(NAT, Network Address Translation)이다.

네트워크 주소 변환 기술은 로컬 네트워크에서 사설 IP 주소를 이용하고 로컬 네트워크의 호스트가 글로벌 네트워크와 통신하려 할 때 호스트에서 생성된 패킷의 발신지 주소/발신지 포트를 변환하여 통신을 지원한다. 이러한 네트워크 주소 변환 기술은 발신지 사설 IP 주소만을 변환하는 Basic NAT가 있다. 또한 발신지 주소, 발신지 포트 번호를 변환하는 NAPT(Network Address Port Translation)로 나누어 볼 수 있다. NAT는 변환 테이블이 간단하고 발신지 주소 변환만을 수행하므로 단순하고 쉽게 구현할 수 있다. 그러나 IP 주소 재사용률은 떨어진다. NAPT는 발신지 주소와 발신지 포트를 변환하므로 NAT 기술보다는 우수한 IP 주소 재사용률을 제공하므로 현재 대부분의 네트워크 주소 변환 기술은 NAPT로 이루어져 있다. 네트워크 주소 변환 기술은 주로 로컬 네트워크의 게이트웨이나 에지 라우터에서 수행된다.

여기서는 네트워크 주소 변환 기술들을 살펴보고 각 기술의 장단점을 파악하고 NAT/NAPT의 새로운 대안으로써 출현한 RSIP(Realm Specific IP)에 대해서 살펴보고자 한다.


■ Basic NAT
Basic NAT는 로컬 네트워크와 글로벌 네트워크 경계에 존재하는 라우터에서 동작하며 Layer 3의 정보인 IP 주소 변환을 수행한다. 이 방식은 현존하는 다양한 네트워크 주소 변환 방법들 중 가장 간단하며, 양방향 네트워크 주소 변환을 지원한다. 또한, 주소 변환이 네트워크 계층에서만 일어나므로 주소 변환 속도도 빠르고 인터넷에서 사용되는 다양한 서비스를 지원할 수 있다.



[Figure 1 : Basic NAT]


로컬 네트워크의 한 호스트가 글로벌 네트워크의 호스트와 통신하려 할 때 로컬 네트워크의 호스트는 자신에게 할당된 로컬 IP 주소를 발신지 주소로 사용하여 통신을 한다. 로컬 IP 주소는 글로벌 네트워크에서는 의미가 없는 주소 체계이므로 Basic NAT에서 주소 변환을 수행해야 한다. 이때 주소 변환을 위해 Basic NAT에 할당되어 있는 글로벌 IP 주소가 사용되며 이러한 글로벌 IP는 Pool로 관리되며 하나 이상의 IP 주소를 가진다. 로컬에서 외부로 데이터가 전송할 때(outgoing)는 패킷의 발신지 주소를 글로벌 IP 주소로 변환해야 하며, 글로벌에서 로컬 네트워크로의 데이터 전송(incoming)은 패킷의 목적지 주소를 로컬 IP 주소로 변환해야 한다.


[Figure 1 : Basic NAT]


로컬 네트워크의 한 호스트가 글로벌 네트워크의 호스트와 통신하려 할 때 로컬 네트워크의 호스트는 자신에게 할당된 로컬 IP 주소를 발신지 주소로 사용하여 통신을 한다. 로컬 IP 주소는 글로벌 네트워크에서는 의미가 없는 주소 체계이므로 Basic NAT에서 주소 변환을 수행해야 한다. 이때 주소 변환을 위해 Basic NAT에 할당되어 있는 글로벌 IP 주소가 사용되며 이러한 글로벌 IP는 Pool로 관리되며 하나 이상의 IP 주소를 가진다. 로컬에서 외부로 데이터가 전송할 때(outgoing)는 패킷의 발신지 주소를 글로벌 IP 주소로 변환해야 하며, 글로벌에서 로컬 네트워크로의 데이터 전송(incoming)은 패킷의 목적지 주소를 로컬 IP 주소로 변환해야 한다.


■ NAPT
NAPT 기법은 Basic NAT 기법의 가장 큰 문제점인 Low IP Utilization을 극복하기 위해 나온 네트워크 주소 변환 방법이며 현재 가장 많이 사용되고 있는 기법이다.
NAPT 기법은 IP 주소 하나를 로컬 네트워크의 여러 호스트가 공유하여 동시에 글로벌 네트워크와 통신할 수 있는 네트워크 주소 변환 방법이며 TCP/UDP 계층의 포트 변환을 통해 하나의 글로벌 IP를 여러 대의 로컬 호스트가 공유할 수 있도록 N:1 바인딩을 지원한다



[Figure 2 : NAPT]


이 기법은 주소 변환을 위해 네트워크 계층의 목적지 주소 정보뿐만 아니라 트랜스포트 계층의 포트 정보를 이용해 IP 주소 이용률을 극대화한 네트워크 주소 변환 방법이지만 IP 주소를 변환하기 위해 IP 계층과 TCP/UDP 계층을 고려해야 하므로 처리가 복잡하고 처리 속도도 느리다. 또한 포트 번호에 민감한 서비스(Talk, RealPlayer, ...)는 특별한 ALG를 사용하지 않으면 지원하지 못한다. 그리고 NAPT에서는 여러 개로 나뉘어 전달되는 패킷을 하나의 완전한 패킷으로 만들기 위해 재조립(Reassembly)해야 하는 등의 문제점을 가지고 있다. 또한 계층 4의 정보인 포트를 플로우 식별에 이용하므로 Basic NAT에서 지원하는 양방향 통신을 지원할 수 없다.


■ 네트워크 주소 변환 기술의 문제점

IPv4에서 IPv6로의 전이 과정에서 발생하는 IP 부족 문제의 단기적인 해결책인 다양한 네트워크 주소 변환 기법은 인터넷과 같은 글로벌 네트워크와의 경계에 존재하는 라우터/게이트웨이에서 사설 IP 주소를 공인 IP 주소로 변환하는 기술이다. 네트워크 주소 변환의 본질적인 특성인 데이터 패킷의 수정은 현재 존재하는 많은 인터넷 응용에게는 심각한 위협이 되고 있다. 예를 들어, 종단간 보안 통신을 제공하는 IPSEC은 패킷을 전송하는 장비(라우터/게이트웨이)에서 일반적으로 패킷 전송 시 수정되는 패킷 헤더 정보 (TTL, Checksum 등) 외에는 패킷의 수정을 허용하지 않는다. 네트워크 주소 변환은 패킷의 정보를 수정해야 하는 기술이므로 IPSEC과 같이 사용될 수 없다. H.323, FTP, Messenger와 같은 인터넷 응용은 패킷의 페이로드에 패킷 생성 호스트의 인식 정보(발신지 주소, 발신지 포트)를 포함하므로 ALG 없이는 네트워크 주소 변환 장비에서 응용을 지원하지 못한다. 따라서 다양한 인터넷 응용을 지원하기 위해서 많은 ALG가 필요하다. 이러한 문제점들은 모든 네트워크 주소 변환 기술이 갖고 있는 본질적인 문제다.


■ NAT/NAPT의 새로운 대안, RSIP의 등장

RSIP는 기존의 IP 주소 변환 방식의 End-to-End Connectivity 제공과 보안 지원, 다양한 사용자 응용 프로그램을 지원하기 위해 많은 ALG(Application Level Gateway)가 필요하다는 단점을 극복하기 위해 나타난 터널을 이용한 사설 IP 주소를 이용한 로컬 네트워크와 글로벌 네트워크와의 인터 네트워킹을 지원하는 새로운 방식이다.

RSIP는 기존의 NAT/NAPT의 대안으로 출현하였으며 클라이언트/서버 구조를 갖는다. 또한 로컬 네트워크 내에서 라우팅을 위해 터널을 사용하며 다양한 터널 방식(IP-IP, L2TP, GRE, ..)을 지원한다. 서버는 클라이언트와 RSIP 통신 프로토콜을 통해 클라이언트에서 사용할 IP 주소 변환에 관련된 파라미터(IP 주소, 포트 번호, etc .)와 터널링 방식을 협상하며 각 클라이언트에 관한 상태 정보를 서버에서 관리한다. 그러나, 이 방식은 클라이언트에서 RSIP 서버와 통신을 위해 RSIP 프로토콜을 지원해야 하며 글로벌 호스트와 통신을 위해 터널링을 지원해야 하므로 클라이언트의 수정이 불가피한 것이 단점이다.

RSIP 서버는 Incoming 데이터 플로우를 구별하기 위해 목적지 IP 주소, IP 프로토콜 타입, 목적지 TCP/UDP 포트, IPSEC의 SPI을 사용하며 로컬 네트워크에서 라우팅을 위해 하나 이상의 터널에 대해 끝 지점으로서 동작해야 한다.

그림 3은 RSIP 구조를 나타내고 있다.



[Figure 3 : RSIP Architecture]


위 그림에서 로컬 네트워크의 호스트 X가 글로벌 네트워크의 호스트 Y와 통신하려 한다면 먼저 호스트 X는 RSIP 프로토콜을 이용해 서버로부터 글로벌 네트워크의 호스트와 통신할 때 사용될 다양한 파라미터(IP 주소, 포트번호, 터널 타입, 사용시간)를 얻는다. 서버는 호스트 X의 로컬 주소와 할당된 다양한 파라미터 값을 바인딩하여 테이블에 기록한다. 호스트 X는 서버로부터 할당받은 파라미터를 이용해 터널을 생성하고 데이터 패킷을 전송한다.

지금까지 향후 10년 이내로 도래할 IP 주소 부족 문제를 해결하기 위한 다양한 솔류션 중 사설 IP 주소를 이용하여 로컬 네트워크를 구축하고 공인 IP 주소를 사용하는 글로벌 네트워크와의 통신을 지원하기 위한 네트워크 주소 변환 기술에 대해서 기술하였고 네트워크 주소 변환 방식의 장단점을 분석하였다. 

NAT/NAPT의 새로운 대안으로 출현한 RSIP는 네트워크 주소 변환 기술의 많은 문제점을 해결하였지만, 네트워크내에 존재하는 호스트가 RSIP를 지원하기 위해 호스트에 추가적인 프로토콜의 설치와 수정이 필요하다는 것이 단점으로 남으며 현재는 리눅스 RSIP 클라이언트만 개발되어있다. 이에 필자는 향후 RSIP의 확산 및 IP 주소 고갈 문제에 대해 관심이 있는 사람은 윈도우용 RSIP 클라이언트 개발을 촉구하고 싶다.





WiFi cascaded behind Wired router

댓글 없음:

댓글 쓰기