맨위로가기

네트워크 주소 변환

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

네트워크 주소 변환(NAT)은 IPv4 주소 부족 문제를 해결하기 위해 개발된 기술로, 사설 네트워크에서 사용하는 IP 주소를 공용 네트워크에서 사용되는 IP 주소로 변환하여 IP 주소의 낭비를 줄인다. NAT는 IP 주소와 포트 번호를 변환하며, 변환 방식에 따라 기본 NAT, NAPT, 풀 콘 NAT, 제한 콘 NAT, 대칭 NAT 등으로 나뉜다. NAPT는 여러 개의 사설 IP 주소를 하나의 공용 IP 주소로 변환하여 IPv4 주소 고갈 문제를 완화하는 데 널리 사용된다. NAT는 종단 간 연결성을 저해하고 특정 프로토콜과의 호환성 문제를 야기할 수 있지만, 라우팅, 부하 분산, 주소 중복 완화 등 다양한 응용 분야에서 활용된다. IPv6 환경에서는 주소 공간의 확대로 인해 NAT의 필요성이 줄어들었지만, IPv4와 IPv6의 혼용 기간에는 NAT가 사용될 수 있다.

더 읽어볼만한 페이지

  • 네트워크 주소 변환 - 포트 포워딩
    포트 포워딩은 외부 네트워크의 연결 요청을 내부 네트워크의 특정 장치나 서비스로 전달하여 외부에서 내부 서비스에 접근 가능하게 하는 네트워크 기술로, 라우터나 방화벽에서 설정되며 다양한 방식으로 구현되고 활용된다.
  • 네트워크 주소 변환 - TURN
    TURN은 NAT 환경에서 직접 통신이 어려울 때 중계 서버를 통해 통신을 가능하게 하는 프로토콜로, STUN의 한계를 보완하며 멀티미디어, P2P 시스템 등에서 활용되고 ICE와 함께 연결 설정을 최적화하지만, 대역폭 사용량이 많다는 단점이 있다.
  • 컴퓨터 네트워크 - NORSAR
    NORSAR는 노르웨이 셸러에 위치한 지진 연구 및 데이터 센터이며, 기초 지진학 연구, 소프트웨어 개발, 석유 산업 컨설팅 등의 활동을 수행하며, 포괄적 핵실험 금지 조약을 위한 노르웨이 국가 데이터 센터 역할을 수행한다.
  • 컴퓨터 네트워크 - 라우터
    라우터는 네트워크 간 데이터 패킷을 전달하는 네트워크 장비로, ARPANET의 IMP에서 시작하여 다양한 종류로 발전해 왔으며, 최신 네트워크 기술과 함께 네트워크의 확장성, 안정성 및 효율성을 향상시키는 데 중요한 역할을 한다.
네트워크 주소 변환

2. 역사

IPv4는 32비트 주소를 사용하여 약 43억 개의 장치를 고유하게 주소 지정할 수 있다. 1992년까지 그 주소로는 충분하지 않다는 것이 분명해졌다. 1994년 IETF RFC 1631은 NAT를 당시 IP 인터넷이 직면한 두 가지 가장 심각한 문제, 즉 IP 주소 고갈과 라우팅 확장의 "단기적인 해결책"으로 설명한다.[3] 2000년대에 들어 NAT는 널리 보급되어, 현재 대부분의 네트워크 환경에서 필수적인 기술로 자리 잡았다.

3. 변환 방식

NAT는 주로 사설 네트워크와 공용 네트워크 간의 트래픽을 중계하며 IP 주소 및 포트 번호를 변환한다. 인터넷에 접속하려면 전 세계에서 유일한 IP 주소(글로벌 IP 주소)를 사용해야 한다. 따라서 사설 네트워크 환경에서 사설 IP 주소가 할당된 장치는 그 자체로는 인터넷에 접속할 수 없다. NAT를 사용하면 게이트웨이를 통과하는 IP 패킷의 송신 또는 수신 IP 주소가 글로벌 IP 주소 또는 사설 IP 주소로 변환된다. 이렇게 하여 LAN 내의 장치가 라우터 등의 게이트웨이를 통해 인터넷에 접속할 수 있게 된다.

원래 NAT는 송수신하는 패킷의 송신처, 수신처 IP 주소만 식별하여 변환하는 것이었기 때문에, 여러 기기가 동시에 외부 네트워크에 접속하는 경우, 해당 기기 수와 동일한 수의 공인 IP 주소가 필요했다. 그래서 현재는 사설 IP 주소와 공인 IP 주소의 1 대 1 변환 외에, 포트 번호도 변환하여 사설 IP 주소와 공인 IP 주소를 1 대 다수로 변환하는 NAPT가 사용되는 경우가 많다.

NAT는 LAN 내 호스트에 프라이빗 IP 주소를 할당하고, 인터넷에 연결할 때만 글로벌 IP 주소를 사용하는 기술이므로, NAT를 활용하여 사용할 글로벌 IP 주소의 수를 줄일 수 있다.

3. 1. 기본 NAT (Basic NAT)

가장 단순한 형태의 NAT는 IP 주소의 일대일 변환을 제공한다.[1] 이러한 유형의 NAT는 ''기본 NAT'' 또는 ''일대일 NAT''라고 불린다. 이 유형의 NAT에서는 IP 주소, IP 헤더 체크섬, IP 주소를 포함하는 모든 상위 레벨 체크섬만 변경된다. 기본 NAT는 호환되지 않는 주소를 가진 두 IP 네트워크를 상호 연결하는 데 사용될 수 있다.

3. 2. NAPT (Network Address and Port Translation)

대부분의 네트워크 주소 변환(NAT)은 여러 개의 사설 호스트를 하나의 공용 IP 주소에 매핑한다.[2] 이러한 유형의 NAT는 '''네트워크 주소 및 포트 변환'''('''NAPT''')이라고 한다.[4] 다른 이름으로는 '''포트 주소 변환'''('''PAT'''),[4] ''IP 마스커레이딩'', ''NAT 오버로드'' 및 ''다대일 NAT''가 있다.[4] 이것은 가장 일반적인 유형의 NAT이며, 일반적인 사용에서 ''NAT''라는 용어와 동의어가 되었다.

네트워크 주소 매핑


일반적인 NAPT 구성은 다음과 같다.

# 로컬 네트워크는 지정된 ''사설'' IP 주소 서브넷 중 하나를 사용한다.

# 네트워크는 사설 주소와 공용 주소를 모두 가진 라우터를 가지고 있다. 사설 주소는 사설 로컬 네트워크의 다른 장치와 통신하기 위해 라우터에서 사용된다. 공용 주소(일반적으로 인터넷 서비스 제공업체에서 할당)는 인터넷의 나머지 부분과 통신하기 위해 라우터에서 사용된다.

# 트래픽이 네트워크에서 인터넷으로 이동하면 라우터는 각 패킷의 소스 주소를 사설 주소에서 라우터 자체의 공용 주소로 변환한다. 라우터는 각 활성 연결에 대한 기본 데이터(특히 대상 주소 및 포트)를 추적한다. 라우터가 인터넷에서 인바운드 트래픽을 수신하면, 아웃바운드 단계에서 저장한 연결 추적 데이터를 사용하여 응답을 전달해야 하는 사설 주소가 있는지(있는 경우) 확인한다.[2]

모든 IP 패킷에는 소스 IP 주소와 대상 IP 주소가 있다. 일반적으로 사설 네트워크에서 공용 네트워크로 전달되는 패킷은 소스 주소가 수정되고, 공용 네트워크에서 사설 네트워크로 다시 전달되는 패킷은 대상 주소가 수정된다. 응답이 변환되는 방식의 모호성을 피하기 위해 패킷에 대한 추가 수정이 필요하다. 인터넷 트래픽의 대부분은 전송 제어 프로토콜(TCP) 또는 사용자 데이터그램 프로토콜(UDP)을 사용한다. 이러한 프로토콜의 경우, 반환된 패킷의 IP 주소(IP 헤더 내)와 포트 번호(전송 계층 헤더 내)의 조합이 해당 사설 네트워크 대상을 모호하지 않게 매핑할 수 있도록 포트 번호가 변경된다.[4]

이 방법은 대화가 사설 네트워크에서 시작될 때만 라우터를 통해 통신할 수 있게 해준다. 초기 전송이 변환 테이블에 필요한 정보를 설정하기 때문이다. 따라서 사설 네트워크 내의 웹 브라우저는 네트워크 외부에 있는 웹사이트를 탐색할 수 있지만, 네트워크 외부의 웹 브라우저는 내부에 호스팅된 웹사이트를 탐색할 수 없다.

NAPT의 추가적인 이점은 전체 네트워크가 단일 공용 IP 주소를 사용하여 인터넷에 연결될 수 있도록 하여 IPv4 주소 고갈을 완화한다는 것이다.

원래 NAT는 송수신하는 패킷의 송신처, 수신처 IP 주소만 식별하여 변환하는 것이었기 때문에, 여러 기기가 동시에 외부 네트워크에 접속하는 경우, 해당 기기 수와 동일한 수의 공인 IP 주소가 필요했다. 그래서 현재는 사설 IP 주소와 공인 IP 주소의 1 대 1 변환 외에, 포트 번호도 변환하여 사설 IP 주소와 공인 IP 주소를 1 대 다수로 변환하는 NAPT가 사용되는 경우가 많다. NAPT는 NAT 오버로드, 오버로드 변환, '''PAT''' (시스코 시스템즈에 의한 호칭), '''IP 마스커레이드''' (Linux에서의 NAPT 구현명, 마스커레이드(masquerade)는 가면 무도회를 의미) 등으로도 불린다.

NAPT에서는 IP 주소에 더하여 포트 번호의 식별 및 변환을 함으로써, 여러 호스트에서 로컬 외부 네트워크에 접속할 때, 서로 다른 로컬 주소를 동일한 공인 주소 하의 다른 포트로 표현하여, 필요한 공인 주소의 수를 줄일 수 있다. 동적 NAPT는 인터넷 서비스 제공자로부터 이용자에 대한 공인 IP 주소 할당 등에서 자주 사용된다.

NAT는 LAN 내 호스트에 프라이빗 IP 주소를 할당하고, 인터넷에 연결할 때만 글로벌 IP 주소를 사용하는 기술이므로 NAT를 활용하여 사용할 글로벌 IP 주소의 수를 줄일 수 있다.

'''소스 NAT''' (송신 IP 주소 변환)의 종류는 다음과 같다.

명칭설명
NAPT(네트워크 주소 및 포트 변환)
IP 마스커레이드리눅스에서의 NAPT 구현명
PAT(포트 주소 변환)시스코 시스템즈의 용어
NAT 오버로드시스코 시스템즈의 용어
다이나믹 ENAT (Enhanced NAT)알리드 테크놀로지스의 용어
DIP(동적 IP)주니퍼 SSG의 용어
DIPP(동적 IP 및 포트)팔로알토 네트웍스의 용어


3. 3. NAT의 종류

네트워크 주소 변환(NAT)은 다양한 방식으로 구현될 수 있으며, RFC 3489 (2003년, 폐기됨) 및 RFC 5389 (2008년, STUN) 등의 표준에서 NAT 분류 방식을 제안했다.[33][34]

RFC 3489는 NAT 구현을 ''전체 원추형 NAT'', ''(주소) 제한 원추형 NAT'', ''포트 제한 원추형 NAT'', ''대칭 NAT''로 분류하고 장치 테스트 방법을 제안했지만, 이 방법은 많은 장치를 올바르게 평가하기에 부적절하여 표준에서 제외되었다. RFC 5389 (2008년)는 새로운 방법을 표준화했으며, ''STUN''은 ''NAT용 세션 트래버설 유틸리티''(Session Traversal Utilities for NAT)를 나타낸다.

많은 NAT 구현은 여러 유형을 결합하므로, 원추형/대칭형 용어 대신 특정 NAT 동작을 참조하는 것이 좋다. RFC 4787은 관찰된 동작에 대한 표준화된 용어를 도입하여 혼란을 완화하고자 한다.[2] 특히, 대부분의 NAT는 발신 연결에 대한 ''대칭 NAT''와 수신 패킷을 특정 내부 주소 및 포트로 리디렉션하는 ''정적 포트 매핑''을 결합한다.

NAT는 주소 및 포트 번호를 변환하는 다양한 메커니즘으로 구현되며, 통신 프로토콜에 따라 서로 다른 영향을 미친다.

NAT 구현 분류
NAT 종류설명
전체 원추형 NAT (Full-cone NAT)
(주소) 제한 원추형 NAT ((Address)-restricted-cone NAT)
포트 제한 원추형 NAT (Port-restricted cone NAT)
대칭 NAT (Symmetric NAT)


3. 3. 1. 풀 콘 NAT (Full-cone NAT)

전체 원추형 NAT(Full-cone NAT)는 일대일 NAT(one-to-one NAT)라고도 불리며, 다음과 같이 동작한다.

  • 내부 주소(iAddr:iPort)가 외부 주소(eAddr:ePort)에 매핑되면, iAddr:iPort에서 보낸 모든 패킷은 eAddr:ePort를 통해 전송된다.
  • 모든 외부 호스트는 eAddr:ePort로 패킷을 보내 iAddr:iPort로 패킷을 보낼 수 있다.[2]


전체 원추형 NAT


많은 NAT 구현은 이러한 유형을 결합하므로, '전체 원추형'/'대칭형' 용어를 사용하는 대신 특정 NAT 동작을 참조하는 것이 더 좋다.[2] RFC 4787은 관찰된 동작에 대한 표준화된 용어를 도입하여 혼란을 완화하려고 시도한다. RFC 4787은 전체 원추형 NAT를 엔드포인트 독립 매핑(Endpoint-Independent Mapping) 및 엔드포인트 독립 필터링(Endpoint-Independent Filtering)을 갖는 것으로 특징짓는다.[2]

3. 3. 2. 제한 콘 NAT (Restricted-cone NAT)

내부 주소(iAddr:iPort)가 외부 주소(eAddr:ePort)에 매핑되면, iAddr:iPort에서 보낸 모든 패킷은 eAddr:ePort를 통해 전송된다. 외부 호스트(''hAddr:any'')는 iAddr:iPort가 이전에 hAddr:''any''로 패킷을 보낸 경우에만 eAddr:ePort로 패킷을 전송하여 iAddr:iPort로 패킷을 보낼 수 있다. 여기서 ''any''는 포트 번호가 중요하지 않음을 의미한다.[2]

제한 원추형 NAT


제한 원추형 NAT는 주소 제한 원추형 NAT(Address-Restricted cone NAT)와 포트 제한 원추형 NAT(Port-restricted cone NAT)로 나뉜다. 주소 제한 원추형 NAT는 내부 호스트가 특정 외부 호스트로 패킷을 보낸 경우에만 해당 외부 호스트가 내부 호스트와 통신할 수 있는 방식이다. 포트 제한 원추형 NAT는 한 단계 더 나아가, 외부 호스트의 특정 포트에서 보낸 패킷만이 내부 호스트와 통신할 수 있도록 제한한다.

RFC 4787은 제한 원추형 NAT를 ''주소 종속 필터링''(Address-Dependent Filtering)을 갖는 것으로 분류한다.[2]

3. 3. 3. 대칭 NAT (Symmetric NAT)

대칭 NAT는 하나의 내부 IP 주소와 포트에서 특정 대상 IP 주소 및 포트로의 모든 요청이 고유한 외부 소스 IP 주소 및 포트로 매핑되는 방식이다.[33][34] 동일한 내부 호스트가 같은 소스 주소와 포트를 사용하더라도 다른 대상에 패킷을 보낼 경우 다른 매핑이 사용된다.[33][34] 내부 호스트로부터 패킷을 수신한 외부 호스트만이 패킷을 다시 보낼 수 있다.[33][34]

대칭 NAT


대칭형 NAT 동작을 언급하는 대신 특정 NAT 동작을 참조하는 것이 더 좋다. 많은 NAT 구현은 이러한 유형을 결합하기 때문이다. RFC 4787은 관찰된 동작에 대한 표준화된 용어를 도입하여 혼란을 완화하려고 시도한다. RFC 4787은 대칭 NAT를 ''주소 및 포트 종속 매핑''(Address- and Port-Dependent Mapping)을 갖는 것으로 특징짓는다. 또한 대칭 NAT를 ''주소 종속 필터링''(Address-Dependent Filtering) 또는 ''주소 및 포트 종속 필터링''(Address and Port-Dependent Filtering)을 갖는 것으로 분류한다.[2]

4. 구현

NAT는 주로 라우터, 방화벽, 게이트웨이 등의 네트워크 장비에서 구현된다.

4. 1. 양방향 통신 설정

대부분의 네트워크 주소 변환(NAT)은 여러 개의 사설 호스트를 하나의 공용 IP 주소에 매핑하는 방식으로 동작한다. 이때, NAT는 내부 네트워크에서 외부 네트워크(인터넷)로 나가는 트래픽의 소스 IP 주소와 포트 번호를 변경하고, 외부에서 내부로 들어오는 트래픽의 대상 IP 주소와 포트 번호를 변경하여 양방향 통신을 지원한다.

NAT 장치는 각 연결에 대한 정보(특히 대상 주소 및 포트)를 테이블에 저장하여 이를 추적한다. 외부에서 들어오는 트래픽에 대해서는 이 테이블에 저장된 정보를 기반으로 어떤 내부 호스트에게 전달해야 할지 결정한다.[2] 이러한 방식은 사설 네트워크 내부에서 시작된 통신에 대해서만 작동하는데, 이는 초기 통신이 변환 테이블에 필요한 정보를 설정하기 때문이다.

양방향 NAT에서는 내부 및 외부 영역 모두에서 세션을 설정할 수 있다.


모든 전송 제어 프로토콜(TCP) 및 사용자 데이터그램 프로토콜(UDP) 패킷에는 소스 포트 번호와 대상 포트 번호가 포함되어 있으며, IP 헤더에는 소스 IP 주소와 대상 IP 주소가 포함되어 있다. IP 주소, 프로토콜, 포트 번호의 조합은 네트워크 소켓과의 연관성을 정의한다.

NAT 장치는 내부 사설 주소를 외부 공용 주소로 매핑하며, 포트 주소 변환(PAT)은 여러 호스트가 동시에 서로 다른 외부 연결을 설정하기 위해 동일한 소스 포트 번호를 사용할 때 발생하는 충돌을 해결한다.

NAT는 마치 하나의 공용 전화 번호와 여러 개의 내선 번호를 가진 사무실 전화 시스템과 유사하게 작동한다.[8] 사무실에서 외부로 거는 전화는 모두 같은 번호로 표시되지만, 외부에서 걸려온 전화는 내선 번호 없이는 특정 개인에게 연결될 수 없다. 여기서 사무실은 사설 LAN, 주 전화 번호는 공인 IP 주소, 각 내선 번호는 고유한 포트 번호에 해당한다.[8]

4. 2. 변환 과정

내부 네트워크의 컴퓨터가 외부 네트워크로 IP 패킷을 전송할 때, NAT 장치는 패킷 헤더의 내부 출발지 IP 주소를 NAT 장치의 외부 IP 주소로 변경한다. 그런 다음 PAT는 사용 가능한 포트 풀에서 연결에 포트 번호를 할당하고,[1] 이 포트 번호를 출발지 포트 필드에 삽입한다. 그 후 패킷은 외부 네트워크로 전달된다. NAT 장치는 내부 IP 주소, 원래 출발지 포트, 변환된 출발지 포트를 포함하는 변환 테이블에 항목을 만든다. 동일한 내부 출발지 IP 주소와 포트 번호에서 오는 후속 패킷은 동일한 외부 출발지 IP 주소와 포트 번호로 변환된다. NAT를 거친 패킷을 수신하는 컴퓨터는 수정된 패킷에 지정된 포트 및 IP 주소에 연결을 설정하며, 제공된 주소가 변환되고 있다는 사실을 알지 못한다.

외부 네트워크에서 패킷을 수신하면 NAT 장치는 패킷 헤더의 목적지 포트를 기준으로 변환 테이블을 검색한다. 일치하는 항목이 있으면, 목적지 IP 주소와 포트 번호가 테이블에서 찾은 값으로 대체되고 패킷이 내부 네트워크로 전달된다. 그렇지 않고 수신 패킷의 목적지 포트 번호가 변환 테이블에서 발견되지 않으면, PAT 장치가 패킷을 보낼 위치를 알 수 없기 때문에 패킷이 삭제되거나 거부된다.

5. 응용

NAT는 다음과 같은 다양한 분야에서 활용된다.


  • '''라우팅:''' 네트워크 주소 변환은 IP 주소 중복 문제를 해결하는 데 사용될 수 있다.[9][10] 주소 중복은 주로 잘못된 구성으로 인해 발생하며, 특히 사설 네트워크 주소를 사용할 때 두 네트워크 또는 서브넷의 병합으로 인해 발생할 수 있다.
  • '''부하 분산:''' 클라이언트-서버 애플리케이션에서 부하 분산기는 클라이언트 요청을 여러 서버로 분산시킨다. 네트워크 주소 변환은 서버 클러스터의 대표 IP 주소를 요청을 처리하는 특정 호스트에 매핑하는 데 사용될 수 있다.[11][12][13][14]
  • '''기타 기술:''' IEEE 역 주소 및 포트 변환(RAPT 또는 RAT)은 실제 IP 주소가 자주 바뀌는 호스트가 고정된 홈 IP 주소를 통해 서버에 계속 연결될 수 있도록 한다.[15] 주소 및 포트 매핑은 주소 및 포트 변환과 ISP 제공업체의 내부 IPv6 네트워크를 통해 IPv4 패킷을 터널링하는 시스코 제안이다.

5. 1. 라우팅

네트워크 주소 변환은 IP 주소 중복을 완화하는 데 사용될 수 있다.[9][10] 주소 중복은 동일한 IP 주소 공간을 가진 서로 다른 네트워크의 호스트가 동일한 대상 호스트에 도달하려 할 때 발생한다. 이는 대부분 잘못된 구성으로, 특히 RFC 1918 사설 네트워크 주소를 사용할 때 두 네트워크 또는 서브넷의 병합으로 인해 발생할 수 있다. 대상 호스트는 동일한 네트워크에서 트래픽이 도착하는 것으로 인식하며, 중간 라우터는 회신 트래픽을 어디로 보내야 하는지 알 수 없다. 해결책은 중복을 제거하기 위한 재지정 또는 네트워크 주소 변환이다.

5. 2. 부하 분산

클라이언트-서버 애플리케이션에서 부하 분산기는 각 서버의 워크로드를 관리하기 위해 클라이언트 요청을 일련의 서버 컴퓨터로 전달한다. 네트워크 주소 변환은 서버 클러스터의 대표 IP 주소를 요청을 처리하는 특정 호스트에 매핑하는 데 사용될 수 있다.[11][12][13][14]

5. 3. 기타 기술

IEEE 역 주소 및 포트 변환(RAPT 또는 RAT)을 사용하면 실제 IP 주소가 수시로 변경되는 호스트가 고정된 홈 IP 주소를 통해 서버로 계속 연결될 수 있다.[15] 시스코의 RAPT 구현은 PAT 또는 NAT 오버로딩이며, 여러 개의 사설 IP 주소를 단일 공인 IP 주소에 매핑한다. 각 사설 주소는 포트 번호로 추적되므로 여러 주소를 단일 주소에 매핑할 수 있다. PAT는 내부 글로벌 IP 주소의 고유한 소스 포트 번호를 사용하여 변환을 구별한다. PAT는 원래 소스 포트를 유지하려고 시도하며, 이 소스 포트가 이미 사용 중인 경우 해당 포트 그룹(0–511, 512–1023 또는 1024–65535)의 시작 부분부터 사용 가능한 첫 번째 포트 번호를 할당한다. 사용 가능한 포트가 더 이상 없고 구성된 외부 IP 주소가 두 개 이상인 경우 PAT는 원래 소스 포트를 다시 할당하기 위해 다음 IP 주소로 이동한다. 이 프로세스는 사용 가능한 포트와 외부 IP 주소가 소진될 때까지 계속된다.

주소 및 포트 매핑은 주소 및 포트 변환과 ISP 제공업체의 내부 IPv6 네트워크를 통해 IPv4 패킷을 터널링하는 시스코 제안이다. 이는 캐리어급 NAT 및 DS-Lite의 (거의) 상태 비저장 대안으로, IPv4 주소/포트 변환 기능(및 NAT 상태 유지 관리)을 기존 고객 구내 장비 NAT 구현에 완전히 푸시한다. 따라서 NAT444 및 캐리어급 NAT의 상태 관련 문제를 방지하고, 매우 적은 복잡성으로 네이티브 IPv6 배포를 위한 전환 메커니즘도 제공한다.

6. 한계 및 문제점

NAT는 종단 간 연결(End-to-End Connectivity)을 저해하고, 일부 인터넷 프로토콜과의 호환성 문제를 일으킬 수 있다. 예를 들어 NAT는 IPsec 헤더의 값을 수정하여 IPsec 및 기타 터널링 프로토콜에서 수행하는 무결성 검사를 방해하기 때문에 IPsec과 같은 터널링 프로토콜을 복잡하게 만든다.[16]

VOIP, 화상 회의, 기타 P2P 애플리케이션과 같은 응용 프로그램들은 NAT 환경에서 작동하기 위해 NAT 트래버설 기술을 사용해야 한다.[2] 서로 다른 NAT 뒤에 있는 피어들이 통신하려고 할 때 NAT 트래버설 문제가 발생하는데, 이 문제를 해결하는 한 가지 방법은 포트 포워딩을 사용하는 것이다. TCP NAT 트래버설에 가장 널리 사용되는 기술은 TCP 홀 펀칭이다. UDP의 경우, NAT는 포트 유지를 필요로 하지 않으며, 여러 UDP 통신이 동일한 소스 포트에서 발생할 수 있어 포트 예측을 간단하게 만든다.[5]

2006년 기준으로, P2P 네트워크 클라이언트의 약 70%가 어떤 형태의 NAT를 사용했다.[6]

NAT 사용은 인터넷의 핵심 원칙이었던 종단 간 연결을 위반한다는 비판도 있으며, 많은 IPv6 아키텍처 설계자들은 IPv6가 NAT의 필요성을 없애기 위해 고안되었다고 믿고 있다.[17]

포트만 추적하는 NAT 구현은 여러 개의 동시 연결을 사용하는 내부 애플리케이션에 의해 빠르게 소모될 수 있다는 문제점도 있다. 또한 내부 주소가 모두 하나의 공용 주소 뒤에 숨겨져 있기 때문에 외부 호스트가 특정 내부 호스트에 직접 연결을 시작하는 것은 불가능하며, 이는 인터넷 카페 등 불특정 다수가 이용하는 접속 단말에서의 악의적인 이용(스팸 행위나 게시판 훼손, 인터넷 범죄 등)이 이루어진 경우 익명성이 높아져 특정하기가 더 어려워진다는 문제점을 야기한다.

6. 1. 단편화 및 체크섬

IP 패킷은 각 패킷 헤더에 체크섬을 가지고 있으며, 이는 헤더에 대해서만 오류 감지를 제공한다. IP 데이터그램은 조각화될 수 있으며, NAT는 이러한 조각들을 재조립하여 상위 레벨의 체크섬을 올바르게 재계산하고, 어떤 패킷이 어떤 연결에 속하는지 정확하게 추적해야 한다.

TCPUDP는 전송하는 모든 데이터뿐만 아니라 TCP 또는 UDP 헤더, 그리고 TCP 또는 UDP 헤더를 전달하는 패킷의 출발지 및 목적지 IP 주소를 포함하는 '가상 헤더'까지 포함하는 체크섬을 가진다. 발신 NAT가 TCP 또는 UDP를 성공적으로 전달하려면, 원래 IP 주소가 아닌 변환된 IP 주소를 기반으로 TCP 또는 UDP 헤더 체크섬을 다시 계산하고, 조각화된 패킷 집합의 첫 번째 패킷의 TCP 또는 UDP 헤더에 해당 체크섬을 넣어야 한다.[2]

또는, 발신 호스트는 경로 MTU 검색을 수행하여 조각화 없이 전송할 수 있는 패킷 크기를 결정한 다음, 적절한 패킷 헤더 필드에 '조각화 금지'(DF) 비트를 설정할 수 있다. 이는 단방향 솔루션일 뿐인데, 응답 호스트는 어떤 크기의 패킷이든 보낼 수 있으며, 이는 NAT에 도달하기 전에 조각화될 수 있기 때문이다.

7. 관련 용어


  • DNAT (Destination NAT, 목적지 네트워크 주소 변환): 라우팅되는 패킷의 목적지 IP 주소를 변경하고, 모든 응답에 대해 역기능을 수행하는 기술이다. 주로 사설 네트워크에 있는 서비스를 공용 IP 주소에서 공개하는 데 사용되며, 포트 포워딩이라고도 한다.
  • SNAT (Source NAT, 소스 네트워크 주소 변환): 출발지 IP 주소를 변환하는 기술이다. 벤더에 따라 의미가 다르지만, 흔히 1대 다 NAT, 즉 공용 서비스로의 발신 연결을 위한 NAT를 의미한다.[18][19][20]
  • 상태 저장 NAT (Stateful NAT): 시스코 시스템즈(Cisco Systems)에서 사용하는 용어이다.[21]
  • 정적 NAT (Static NAT): WatchGuard에서 사용하는 용어이다.[22]
  • 보안 NAT (Secure NAT): F5 네트웍스(F5 Networks)와 마이크로소프트(Microsoft)에서 ISA 서버와 관련하여 사용하는 용어이다.[23]
  • 동적 NAT (Dynamic NAT): 내부 IP 주소를 동적으로 공인 IP 주소 ''그룹''에 매핑한다.[24][25] 정적 NAT와 달리 일대일 매핑이 아닌, 여러 개의 공인 IP 주소를 사용한다.
  • 정적 NAT (Static NAT): 내부 IP 주소를 항상 동일한 외부 IP 주소에 매핑한다.
  • NAT 루프백 (NAT Hairpinning, NAT Reflection): LAN 내부에서 외부 IP 주소를 통해 접근할 수 있게 해주는 기능이다.[26][27]
  • NAPT (Network Address and Port Translation): IP 주소뿐만 아니라 포트 번호도 변환하여 사설 IP 주소와 공인 IP 주소를 1대 다수로 변환한다. NAT 오버로드, PAT, IP 마스커레이드 등으로도 불린다.
  • 기타 용어

구분용어
소스 NATNAPT (네트워크 주소 및 포트 변환)
IP 마스커레이드 (리눅스)
PAT (포트 주소 변환) (시스코)
NAT 오버로드 (시스코)
다이나믹 ENAT (Enhanced NAT) (알리드 테크놀로지스)
DIP (동적 IP) (주니퍼 SSG)
DIPP (동적 IP 및 포트) (팔로알토 네트웍스)
데스티네이션 NAT포트 포워딩
스태틱 ENAT (알리드 테크놀로지스)
VIP (주니퍼 SSG)
가상 IP (포티넷)
소스 및 데스티네이션 NAT더블 NAT (알리드 테크놀로지스)
MIP (주니퍼 SSG)


8. IPv6 환경에서의 NAT

IPv6는 넓은 주소 공간을 제공하여 주소 보존의 필요성을 없애고, 모든 장치에 고유하고 전역적으로 라우팅 가능한 주소를 부여할 수 있도록 설계되었다. 따라서 네트워크 주소 변환(NAT)은 일반적으로 사용되지 않는다. 고유 로컬 주소를 네트워크 접두사 변환(NPTv6)과 함께 사용하면 NAT와 유사한 결과를 얻을 수 있다.[28]

하지만 통신 사업자가 제공하는 실제 접두사 길이에 따라 IPv6의 넓은 주소 공간이 부족해질 수 있다. 예를 들어, 전체 가정 네트워크에 /64 접두사가 할당되는 경우가 드물지 않으며, 이 경우 모든 장치가 계속 연결 가능하도록 범위를 수동으로 세분화해야 한다.[29] 심지어 IPv6-to-IPv6 NAT인 NAT66이 유용할 수 있는 경우도 있는데, APNIC 블로그에서는 단일 주소(/128)만 제공된 경우를 예시로 제시한다.[30]

9. NAT 영향을 받는 응용 프로그램

일부 응용 계층 프로토콜(예: 파일 전송 프로토콜(FTP), 세션 개시 프로토콜(SIP))은 응용 데이터 내에 명시적인 네트워크 주소를 보내기 때문에 NAT 환경에서 문제가 발생할 수 있다. 예를 들어, 액티브 모드 FTP는 제어 트래픽(명령)과 데이터 트래픽(파일 내용)에 대해 별도의 연결을 사용하는데, 요청 호스트가 NAT 방화벽 뒤에 있으면 IP 주소나 TCP 포트 번호 변환으로 인해 서버가 수신한 정보가 유효하지 않게 된다. SIP도 IP 전화 통화 제어 시 동일한 문제를 겪는다.

이러한 문제를 해결하기 위해 다음과 같은 방법들이 사용된다.


  • 응용 계층 게이트웨이(ALG): NAT 방화벽 장치에서 실행되는 ALG 소프트웨어 모듈은 주소 변환으로 인해 유효하지 않게 된 페이로드 데이터를 업데이트한다. 각 프로토콜마다 별도의 ALG가 필요하며, 프로토콜 데이터가 암호화된 경우에는 작동하지 않는다.
  • NAT 트래버설 기술: STUN, 상호 연결 설정(ICE) 등의 프로토콜을 사용하거나 세션 경계 컨트롤러를 통해 NAT 통과를 돕는다. UDP 기반 기술이 더 간단하고 널리 사용된다.
  • 포트 제어 프로토콜(PCP), NAT 포트 매핑 프로토콜(NAT-PMP), 인터넷 게이트웨이 장치 프로토콜: NAT 장치가 이러한 프로토콜을 구현해야 사용할 수 있다.
  • UPnP NAT Traversal: UPnP의 인터넷 게이트웨이 장치(IGD) 사양을 준수하는 NAT 라우터를 통해 애플리케이션이 포트 매핑을 자동 생성, 삭제 및 획득할 수 있다.


대부분의 클라이언트-서버 프로토콜(FTP 제외)은 계층 3 연락처 정보를 보내지 않아 NAT에서 특별한 처리가 필요하지 않다.

IPsec 암호화가 적용되거나 여러 장치가 NAT 뒤에 있는 경우에도 NAT는 문제를 일으킬 수 있다. IPsec으로 암호화된 전화기는 포트 정보를 암호화된 패킷 내에 캡슐화하여 NAT 장치가 포트에 접근하여 변환할 수 없게 한다. 이 경우 TLS을 사용하거나, IPsec을 UDP 내에 캡슐화하거나, "IPsec 패스스루"를 지원하는 NAT를 사용하거나, 세션 경계 컨트롤러를 사용하여 NAT를 통과하는 것을 돕는 방법 등으로 해결할 수 있다.

Dan Kaminsky가 2008년에 발표한 DNS 프로토콜 취약점은 NAT 포트 매핑의 영향을 간접적으로 받는다. DNS 캐시 포이즈닝을 방지하기 위해 NAT를 구현하는 방화벽 뒤의 DNS 서버에서 발신 DNS 요청의 UDP 소스 포트 번호를 변환하지 않는 것이 매우 바람직하다.

10. NAT 소프트웨어 예시


  • 인터넷 연결 공유(ICS): 윈도우 데스크톱 운영 체제에 포함된 NAT 및 DHCP 구현이다.
  • IP필터: 오픈솔라리스, 프리BSD, 넷BSD를 포함한 여러 유닉스 계열 운영 체제에서 사용 가능하다.
  • ipfirewall(ipfw): 프리BSD 네이티브 패킷 필터이다.
  • Netfilter with iptables/nftables: 리눅스 패킷 필터이다.
  • NPF: 넷BSD 네이티브 패킷 필터이다.
  • PF: 오픈BSD 네이티브 패킷 필터이다.
  • 라우팅 및 원격 액세스 서비스(RRAS): 윈도우 서버 운영 체제에 포함된 라우팅 구현이다.
  • 벡터 패킷 처리(VPP): 리눅스용 사용자 공간 패킷 전달 구현이다.
  • 윈게이트: 윈도우용 타사 라우팅 구현이다.

참조

[1] 서적 Network Protocols Handbook https://books.google[...] Javvin Technologies Inc. 2005
[2] IETF Network Address Translation (NAT) Behavioral Requirements for Unicast UDP IETF 2007-01-01
[3] 학술지 Anatomy: A Look Inside Network Address Translators https://ipj.dreamhos[...] 2004-09-01
[4] 학술지 Network Address Translation: Extending the Internet Address Space https://ieeexplore.i[...] 2010-07-01
[5] 웹사이트 Characterization and Measurement of TCP Traversal through NATs and Firewalls http://nutss.gforge.[...] 2006-12-01
[6] 웹사이트 Illuminating the shadows: Opportunistic network and web measurement http://illuminati.co[...] 2006-12-01
[7] IETF
[8] 웹사이트 The Audio over IP Instant Expert Guide http://www.tieline.c[...] Tieline 2010-01-01
[9] 웹사이트 Using NAT in Overlapping Networks https://www.cisco.co[...] 2005-08-01
[10] 웹사이트 VPNs with Overlapping Subnets Problem Scenario https://www.juniper.[...] 2017-09-01
[11] IETF Load Sharing using IP Network Address Translation 1998-08-01
[12] 웹사이트 What Is Layer 4 Load Balancing? https://www.nginx.co[...] 2020-06-01
[13] 웹사이트 What is load balancing? https://nfware.com/b[...] 2018-11-01
[14] 웹사이트 Configure Server Load Balancing Using Dynamic NAT https://www.cisco.co[...] 2018-06-01
[15] 서적 Proceedings WMCSA'99. Second IEEE Workshop on Mobile Computing Systems and Applications
[16] IETF Some Internet Architectural Guidelines and Philosophy IETF 2002-01-01
[17] IETF Local Network Protection for IPv6 IETF 2007-01-01
[18] 웹사이트 Enhanced IP Resiliency Using Cisco Stateful NAT https://www.cisco.co[...]
[19] 웹사이트 Use NAT for Public Accessto Servers with Private IP Addresses on the Private Network (WatchGuard configuration example) https://www.watchgua[...]
[20] 웹사이트 K7820: Overview of SNAT features https://support.f5.c[...] 2007-08-28
[21] 웹사이트 Enhanced IP Resiliency Using Cisco Stateful NAT https://www.cisco.co[...]
[22] 웹사이트 Use NAT for Public Accessto Servers with Private IP Addresses on the Private Network (WatchGuard configuration example) https://www.watchgua[...]
[23] 웹사이트 K7820: Overview of SNAT features https://support.f5.c[...] 2007-08-28
[24] 웹사이트 Dynamic NAT https://study-ccna.c[...] 2016-01-26
[25] 웹사이트 Dynamic NAT https://docs.oracle.[...]
[26] 웹사이트 What is NAT Reflection/NAT Loopback/NAT Hairpinning? http://www.nycnetwor[...] NYC Networkers 2014-11-09
[27] 웹사이트 NAT Loopback Routers – OpenSim http://opensimulator[...] OpenSimulator 2013-10-21
[28] 웹사이트 After staunch resistance, NAT may come to IPv6 after all https://arstechnica.[...] 2008-07-23
[29] 웹사이트 subnet - IPv6 subnetting a /64 - what will break, and how to work around it? https://serverfault.[...] 2015-08-18
[30] 웹사이트 NAT66: The good, the bad, the ugly https://blog.apnic.n[...] 2018-02-01
[31] IETF Port Control Protocol (PCP) IETF 2013-01-01
[32] 웹사이트 Major DNS flaw could disrupt the Internet https://www.networkw[...] 2008-07-08
[33] 문서 STUN
[34] 웹사이트 NAT Types http://list.sipfound[...]
[35] 논문 IETF RFC 4787 Network Address Translation (NAT) Behavioral Requirements for Unicast UDP https://www.ietf.org[...] IETF 2007-01-01



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com