네트워크 주소 변환
Network address translation
NAT(Network Address Translation)은 패킷이 트래픽 라우팅 [1]장치를 통해 전송되는 동안 패킷의 IP 헤더에서 네트워크 주소 정보를 수정하여 IP 주소 공간을 다른 IP 주소 공간으로 매핑하는 방법입니다.이 기법은 원래 네트워크가 이동하거나 업스트림 인터넷 서비스 공급자가 교체되었을 때 모든 호스트에 새 주소를 할당해야 하는 필요성을 무시하기 위해 사용되었지만 네트워크의 주소 공간을 라우팅할 수 없었습니다.IPv4 주소가 고갈된 상황에서 글로벌 주소 공간을 보존하는 데 있어 인기 있고 필수적인 도구가 되었습니다.NAT 게이트웨이의 인터넷 라우팅 가능 IP 주소 하나를 전체 개인 [2]네트워크에 사용할 수 있습니다.
네트워크 주소 변환이 패킷의 IP 주소 정보를 수정함에 따라, NAT 구현은 다양한 주소 지정 사례와 네트워크 트래픽에 미치는 영향에서 특정 동작이 달라질 수 있습니다.NAT [2]구현이 포함된 장비 공급업체는 NAT 동작의 세부 사항을 일반적으로 문서화하지 않습니다.
기본 NAT
가장 간단한 유형의 NAT은 IP 주소의 일대일 변환(RFC 1631)을 제공합니다.RFC 2663은 이러한 유형의 NAT을 기본 NAT이라고 합니다. 일대일 NAT이라고도 합니다.이 유형의 NAT에서는 IP 주소, IP 헤더 체크섬 및 IP 주소가 포함된 상위 수준 체크섬만 변경됩니다.호환되지 않는 주소 지정 기능을 [2]가진 두 IP 네트워크를 상호 연결하는 데 기본 NAT을 사용할 수 있습니다.
일대다 NAT

대부분의 네트워크 주소 변환기는 여러 개인 호스트를 하나의 공개된 IP 주소에 매핑합니다.
일반적인 구성은 다음과 같습니다.
- 로컬 네트워크는 지정된 개인 IP 주소 서브넷(RFC[3] 1918) 중 하나를 사용합니다.
- 네트워크에는 개인 주소와 공용 주소를 모두 가진 라우터가 있습니다.개인 주소는 라우터가 개인 로컬 네트워크의 다른 장치와 통신하기 위해 사용합니다.공용 주소(일반적으로 인터넷 서비스 공급자가 할당)는 라우터가 인터넷의 나머지 부분과 통신하기 위해 사용합니다.
- 트래픽이 네트워크에서 인터넷으로 전달되면 라우터는 각 패킷의 소스 주소를 개인 주소에서 라우터 자신의 공용 주소로 변환합니다.라우터는 각 활성 연결(특히 대상 주소 및 포트)에 대한 기본 데이터를 추적합니다.라우터는 인터넷으로부터 인바운드 트래픽을 수신할 때 아웃바운드 단계에서 저장한 연결 추적 데이터를 사용하여 [2]응답을 전달할 개인 주소(있는 경우)를 결정합니다.
모든 IP 패킷에는 소스 IP 주소와 대상 IP 주소가 있습니다.일반적으로 사설 네트워크에서 공용 네트워크로 전달되는 패킷은 소스 주소가 수정되고, 공용 네트워크에서 다시 사설 네트워크로 전달되는 패킷은 대상 주소가 수정됩니다.응답이 번역되는 방식이 모호하지 않도록 패킷에 대한 추가 수정이 필요합니다.인터넷 트래픽의 대부분은 TCP(Transmission Control Protocol) 또는 UDP(User Datagram Protocol)를 사용합니다.이러한 프로토콜의 경우 반환된 패킷의 IP 주소(IP 헤더 내)와 포트 번호(전송 계층 헤더 내)의 조합을 해당 사설 네트워크 대상에 명확하게 매핑할 수 있도록 포트 번호가 변경됩니다.RFC 2663에서는 이러한 NAT [3]유형에 대해 네트워크 주소 및 포트 변환(NAPT)이라는 용어를 사용합니다.다른 이름으로는 포트 주소 변환(PAT), IP 위장, NAT 오버로드 및 다대일 NAT 등이 있습니다.이는 가장 일반적인 NAT 유형이며 일반적으로 사용되는 "NAT"이라는 용어와 동의어가 되었습니다.
이 방법은 대화가 사설 네트워크에서 시작된 경우에만 라우터를 통한 통신을 허용합니다. 최초의 발신 전송이 변환 테이블에서 필요한 정보를 설정하기 때문입니다.따라서 사설 네트워크 내의 웹 브라우저는 네트워크 외부에 있는 웹 사이트를 검색할 수 있는 반면, 네트워크 외부의 웹 브라우저는 네트워크 [a]내에서 호스팅되는 웹 사이트를 검색할 수 없습니다.TCP 및 UDP를 기반으로 하지 않는 프로토콜은 다른 번역 기술을 필요로 합니다.
일대일 NAT의 또 다른 이점은 단일 공용 IP [b]주소를 사용하여 전체 네트워크를 인터넷에 연결할 수 있게 함으로써 IPv4 주소 소진을 완화한다는 것입니다.
번역방법
네트워크 주소 및 포트 변환은 여러 가지 방법으로 구현될 수 있습니다.IP 주소 정보를 사용하는 일부 응용 프로그램에서는 네트워크 주소 변환기의 외부 주소를 확인해야 할 수도 있습니다.외부 네트워크의 통신 피어가 탐지하는 주소입니다.또한 별도의 NAT 게이트웨이 뒤에 있는 두 클라이언트 간에 직접 통신 경로를 설정해야 하는 경우와 같이 사용 중인 매핑의 유형을 검토하고 분류해야 할 수도 있습니다.
이를 위해 2003년 RFC 3489는 NATs를 통한 UDP(Simple Traversal of UDP over NAT)라는 프로토콜을 지정했습니다.NAT 구현을 풀콘 NAT, (주소) 제한콘 NAT, 포트 제한콘 NAT 또는 대칭 NAT으로 분류하고, 그에 따른 장치 테스트 방법론을 제안했습니다.그러나 이 방법은 많은 장치를 올바르게 평가하기에 부적절하기 때문에 이 절차들은 이후 표준 상태에서 사용되지 않게 되었습니다.RFC 5389는 2008년에 새로운 방법을 표준화했으며 STUN은 이제 규격의 새로운 제목을 나타냅니다.NAT을 위한 세션 순회 유틸리티.
많은 NAT 구현에서 이러한 유형을 결합하므로 Con/Symmetric 용어를 사용하는 대신 특정 개별 NAT 동작을 참조하는 것이 좋습니다.RFC 4787은 관찰된 행동에 대해 표준화된 용어를 도입함으로써 혼란을 완화하려고 시도합니다.위 표의 각 행에 있는 첫 번째 글머리에 대해 RFC는 Full-Cone, Limited-Cone 및 Port-Restricted Con NAT을 Endpoint-Independent Mapping으로 특성화하는 반면, 대칭 NAT은 Address- and Port-Dependent Mapping으로 특성화합니다.위 표의 각 행에 있는 두 번째 글머리에 대해서도 RFC 4787은 Full-Cone NAT을 Endpoint-Independent Filtering, Restricted-Cone NAT은 Address-Dependent Filtering, Port-Restricted Con NAT은 Address 및 Port-Dependent Filtering,주소 종속 필터링 또는 주소 및 포트 종속 필터링을 갖는 것으로 대칭 NAT.RFC에서 언급하는 다른 NAT 동작 분류에는 포트 보존 여부, 매핑 새로 고침 시기 및 방법, 내부 호스트에서 외부 매핑을 사용할 수 있는지 여부(즉, 헤어피닝 동작), 이러한 [2]모든 규칙을 적용할 때 NAT이 보여주는 결정론의 수준 등이 포함됩니다.특히, 대부분의 NAT은 외부 주소 및 포트로 수신되는 수신 패킷이 특정 내부 주소 및 포트로 리디렉션되는 정적 포트 매핑과 발신 연결을 위한 대칭 NAT을 결합합니다.
NAT 및 NAT 순회 유형, TCP에 대한 포트 보존 역할
NAT 순회 문제는 서로 다른 NAT 뒤에 있는 피어가 통신을 시도할 때 발생합니다.이 문제를 해결하는 한 가지 방법은 포트 포워딩을 사용하는 것입니다.또 다른 방법은 다양한 NAT 순회 기술을 사용하는 것입니다.TCP NAT 트래버설의 가장 일반적인 기법은 TCP 홀 펀칭입니다.
TCP 홀 펀칭을 사용하려면 NAT이 TCP에 대한 포트 보존 설계를 따라야 합니다.지정된 발신 TCP 통신의 경우 NAT 양쪽에서 동일한 포트 번호가 사용됩니다. TCP 아래에서는 한 번에 하나의 포트만 통신에 사용할 수 있기 때문에, 각 TCP 통신에 대해 프로그램이 다른 TCP 소켓을 ephemeral 포트에 바인딩하므로 TCP NAT 포트 보존은 TCP NAT 순회에 매우 중요합니다.TCP에 [2]대해 NAT 포트 예측이 불가능합니다.
반면 UDP의 경우 NAT은 포트 보존이 필요하지 않습니다.실제로 동일한 소스 포트에서 여러 개의 UDP 통신이 발생할 수 있으며, 응용 프로그램은 일반적으로 동일한 UDP 소켓을 재사용하여 패킷을 개별 호스트로 보냅니다.이렇게 하면 각 패킷에 대해 동일한 소스 포트이므로 포트 예측이 간단해집니다.
또한 TCP용 NAT의 포트 보존을 통해 애플리케이션 자체에서 NAT [2][4]포트를 이미 알고 있으므로 STUN과 같은 타사를 사용하여 NAT 포트를 검색할 필요가 없으므로 P2P 프로토콜이 복잡성과 지연 시간을 줄일 수 있습니다.
그러나 두 내부 호스트가 동일한 포트 번호를 사용하여 동일한 외부 호스트와 통신을 시도하는 경우 NAT은 두 번째 연결에 다른 외부 IP 주소를 사용하려고 시도하거나 포트 보존을 포기하고 [2]: 9 포트를 다시 매핑해야 할 수 있습니다.
2006년 현재[update] P2P 네트워크의 클라이언트 중 약 70%가 NAT을 [5]사용하고 있습니다.
실행
양방향 통신 구축

모든 TCP 및 UDP 패킷에는 소스 포트 번호와 대상 포트 번호가 포함됩니다.각 패킷은 IP 헤더에 소스 IP 주소와 대상 IP 주소가 포함된 IP 패킷에 캡슐화됩니다.IP 주소/프로토콜/포트 번호 트리플은 네트워크 소켓과의 연결을 정의합니다.
웹 및 메일 서버와 같이 공개적으로 액세스할 수 있는 서비스의 경우 포트 번호가 중요합니다.예를 들어, 포트 80은 소켓을 통해 웹 서버 소프트웨어에 연결되고 포트 25는 메일 서버의 SMTP 데몬에 연결됩니다.공용 서버의 IP 주소 또한 중요하며, 우편 주소나 전화번호와 유사합니다.통신에 성공하려는 모든 호스트가 IP 주소와 포트 번호를 올바르게 알고 있어야 합니다.
RFC 1918에서 설명된 개인 IP 주소는 인터넷에 직접 연결되지 않은 개인 네트워크에서만 사용할 수 있습니다.포트는 해당 호스트에 고유한 통신의 끝점이므로 NAT 장치를 통한 연결은 포트와 IP 주소의 결합된 매핑을 통해 유지됩니다.NAT 내부의 개인 주소는 외부 공용 주소에 매핑됩니다.PAT(Port Address Translation)는 여러 호스트가 동시에 서로 다른 외부 연결을 설정하기 위해 동일한 소스 포트 번호를 사용할 때 발생하는 충돌을 해결합니다.
전화번호내선유추
NAT 장치는 하나의 공중전화 번호와 여러 개의 내선 번호를 가진 사무실의 전화 시스템과 유사합니다.사무실에서 걸려온 발신 전화는 모두 같은 전화번호에서 걸려온 것으로 보입니다.그러나 내선번호를 지정하지 않은 수신 전화는 사무실 내부의 개인에게 자동으로 전송될 수 없습니다.이 경우 사무실은 개인 LAN, 주 전화 번호는 공용 IP 주소, 개별 내선 번호는 고유 포트 [6]번호입니다.
번역과정
NAT을 사용하면 외부 호스트로 전송되는 모든 통신에는 내부 호스트 IP 주소나 포트 번호 대신에 실제로 NAT 장치의 외부 IP 주소와 포트 정보가 포함됩니다.NAT은 내부 호스트의 IP 주소와 포트만 변환하여 사설 네트워크에 있는 내부 호스트의 실제 엔드포인트를 숨깁니다.
사설(내부) 네트워크의 컴퓨터가 IP 패킷을 외부 네트워크로 전송하면, NAT 장치는 패킷 헤더의 내부 소스 IP 주소를 NAT 장치의 외부 IP 주소로 바꿉니다.그런 다음 PAT는 소스 포트 필드에 이 포트 번호를 삽입하여 사용 가능한 포트 풀에서 포트 번호를 연결에 할당할 수 있습니다.그런 다음 패킷은 외부 네트워크로 전달됩니다.그런 다음 NAT 장치는 내부 IP 주소, 원본 소스 포트 및 변환된 소스 포트를 포함하는 변환 테이블에 항목을 입력합니다.동일한 내부 소스 IP 주소 및 포트 번호의 후속 패킷은 동일한 외부 소스 IP 주소 및 포트 번호로 변환됩니다.NAT을 거친 패킷을 수신한 컴퓨터는 제공된 주소가 변환되고 있다는 사실을 인식하지 못하고 변경된 패킷에 지정된 포트 및 IP 주소에 대한 연결을 설정합니다.
외부 네트워크에서 패킷을 수신하면 NAT 장치는 패킷 헤더의 대상 포트를 기준으로 변환 테이블을 검색합니다.일치하는 것이 발견되면 대상 IP 주소와 포트 번호가 테이블에 있는 값으로 바뀌고 패킷이 내부 네트워크로 전달됩니다.그렇지 않으면 변환 테이블에서 수신 패킷의 대상 포트 번호를 찾을 수 없으면 PAT 장치가 패킷을 어디로 보낼지 모르기 때문에 패킷이 삭제되거나 거부됩니다.
운전 가시성
NAT 운영은 일반적으로 내부 및 외부 호스트 모두에 투명하게 적용됩니다.NAT 장치는 일반적으로 실제 IP 주소와 외부 호스트의 TCP 또는 UDP 포트를 알고 있는 내부 호스트의 기본 게이트웨이로 작동할 수 있습니다.그러나 외부 호스트는 NAT 장치에 대한 공용 IP 주소와 특정 내부 호스트를 대신하여 통신하는 데 사용되는 특정 포트만 알고 있습니다.
적용들
- 라우팅
- 네트워크 주소 변환을 사용하여 [7][8]IP 주소 중복을 완화할 수 있습니다.동일한 IP 주소 공간을 가진 서로 다른 네트워크에 있는 호스트가 동일한 대상 호스트에 연결하려고 할 때 주소 중복이 발생합니다.이는 잘못된 구성인 경우가 대부분이며 특히 RFC 1918 전용 네트워크 주소 지정을 사용할 때 두 개의 네트워크 또는 서브넷의 병합으로 인해 발생할 수 있습니다.대상 호스트는 동일한 네트워크에서 분명히 도착하는 트래픽을 경험하고 중간 라우터는 응답 트래픽을 어디로 보내야 하는지 결정할 방법이 없습니다.이 솔루션은 중복을 제거하기 위해 번호를 변경하거나 네트워크 주소 변환 중 하나입니다.
- 로드밸런싱
- 클라이언트-서버 응용프로그램에서 로드 밸런서는 각 서버의 작업량을 관리하기 위해 클라이언트 요청을 서버 컴퓨터 집합으로 전달합니다.네트워크 주소 변환은 서버 클러스터의 대표 IP 주소를 [9][10][11][12]요청 서비스를 제공하는 특정 호스트에 매핑하는 데 사용될 수 있습니다.
관련기법
IEEE RAPT 또는 RAT(Reverse Address and Port Translation)를 사용하면 실제 IP 주소가 수시로 변경되는 호스트가 고정 [13]홈 IP 주소를 통해 서버로 계속 연결할 수 있습니다.Cisco의 RAPT 구현은 PAT 또는 NAT 오버로드이며 여러 개인 IP 주소를 단일 공용 IP 주소에 매핑합니다.각 개인 주소는 포트 번호로 추적되므로 여러 주소를 단일 주소에 매핑할 수 있습니다.PAT는 [c]변환을 구분하기 위해 내부 글로벌 IP 주소에 고유한 소스 포트 번호를 사용합니다.PAT는 원래 소스 포트를 보존하려고 시도합니다.이 소스 포트가 이미 사용 중인 경우, PAT는 해당 포트 그룹 0–511, 512–1023 또는 1024–65535의 처음부터 시작하는 사용 가능한 첫 번째 포트 번호를 할당합니다.사용 가능한 포트가 더 이상 없고 두 개 이상의 외부 IP 주소가 구성되어 있으면 PAT가 다음 IP 주소로 이동하여 원래 소스 포트를 다시 할당하려고 합니다.이 프로세스는 사용 가능한 포트와 외부 IP 주소가 모두 소진될 때까지 계속됩니다.
주소와 포트의 매핑은 ISP 공급자의 내부 IPv6 네트워크를 통한 IPv4 패킷의 터널링과 주소와 포트 변환을 결합한 시스코 제안입니다.사실상, IPv4 주소/포트 변환 기능(및 NAT 상태 유지 관리)을 기존 고객 구내 장비 NAT 구현에 전적으로 밀어 넣는 통신사 등급 NAT 및 DS-Lite의 (거의) 상태 비저장 대안입니다.따라서 통신사 등급 NAT의 NAT444 및 상태 유지 문제를 방지할 수 있으며, 복잡성이 거의 추가되지 않으면서 네이티브 IPv6를 동시에 구현할 수 있는 전환 메커니즘을 제공합니다.
이슈 및 제한사항
NAT 지원 라우터 뒤의 호스트는 엔드 투 엔드 연결이 없으므로 일부 인터넷 프로토콜에 참여할 수 없습니다.외부 네트워크에서 TCP 연결을 시작해야 하거나 UDP를 사용하는 것과 같은 상태 비저장 프로토콜을 사용하는 서비스는 중단될 수 있습니다.NAT 라우터가 이러한 프로토콜을 지원하기 위해 특정한 노력을 하지 않는 한, 수신 패킷이 목적지에 도달할 수 없습니다.일부 프로토콜은 참여 호스트 간에 하나의 NAT 인스턴스(예: 패시브 모드" FTP)를 수용할 수 있으며, 때로는 애플리케이션 레벨 게이트웨이의 도움을 받기도 하지만(예: NAT의 영향을 받는 애플리케이션 참조), 두 시스템이 모두 NAT에 의해 인터넷과 분리되면 실패합니다.또한 NAT을 사용하면 IPsec과 같은 터널링 프로토콜이 복잡해집니다. 왜냐하면 IPsec 및 다른 터널링 프로토콜에서 수행되는 무결성 검사를 방해하는 헤더의 값을 NAT이 수정하기 때문입니다.
종단 간 연결은 인터넷의 핵심 원칙으로 예를 들어 인터넷 아키텍처 위원회에서 지원해 왔습니다.현재 인터넷 아키텍처 문서에서는 NAT이 엔드 투 엔드 원칙을 위반한 것으로 보고 있지만, NAT은 신중한 [14]설계에서 유효한 역할을 수행하고 있습니다.IPv6 NAT 사용에 대한 우려가 훨씬 더 크며, 많은 IPv6 설계자들은 IPv6가 [15]NAT의 필요성을 제거하기 위한 것이라고 생각합니다.
포트만 추적하는 구현은 내장된 객체가 많은 웹 페이지에 대한 HTTP 요청과 같이 여러 개의 동시 연결을 사용하는 내부 응용 프로그램에 의해 빠르게 고갈될 수 있습니다.이 문제는 포트 외에 대상 IP 주소를 추적하여 여러 원격 호스트와 단일 로컬 포트를 공유함으로써 완화할 수 있습니다.이러한 추가 추적은 번역 장치에서 구현의 복잡성과 컴퓨팅 리소스를 증가시킵니다.
내부 주소는 모두 공개적으로 액세스할 수 있는 하나의 주소 뒤에 위장되므로 외부 호스트가 특정 내부 호스트에 직접 연결을 시작하는 것은 불가능합니다.VOIP, 화상회의 및 기타 피어 투 피어(peer-to-peer) 애플리케이션과 같은 애플리케이션이 작동하려면 NAT 순회 기술을 사용해야 합니다.
조각화 및 체크섬
IP 단독으로 운영되는 Pure NAT은 ICMP와 같은 IP에 대한 정보를 포함하는 페이로드로 프로토콜을 올바르게 파싱할 수도 있고 그렇지 않을 수도 있습니다.이것은 호스트가 페이로드를 번역 내부 또는 외부에서 해석하는지에 따라 달라집니다.TCP 및 UDP와 같은 기본 프로토콜은 NAT이 네트워크 계층 이상의 작업을 수행하지 않는 한 제대로 작동할 수 없습니다.
IP 패킷에는 각 패킷 헤더에 체크섬이 있으며, 이는 헤더에만 오류 탐지 기능을 제공합니다.IP 데이터그램이 단편화될 수 있으며, NAT은 상위 수준의 체크섬을 올바르게 재계산하고 어떤 패킷이 어떤 연결에 속하는지 정확한 추적을 위해 이러한 단편을 재조립해야 합니다.
TCP 및 UDP에는 TCP 또는 UDP 헤더뿐만 아니라 전송하는 모든 데이터를 포함하는 체크섬과 TCP 또는 UDP 헤더를 전송하는 패킷의 소스 및 대상 IP 주소를 포함하는 의사 헤더가 있습니다.원래 NAT이 TCP 또는 UDP를 성공적으로 전달하려면 원래 주소가 아닌 변환된 IP 주소를 기반으로 TCP 또는 UDP 헤더 체크섬을 다시 계산하고 해당 체크섬을 패킷 집합의 첫 번째 패킷의 TCP 또는 UDP 헤더에 넣어야 합니다.
또는, 발신 호스트는 경로 MTU 탐색을 수행하여 단편화 없이 전송할 수 있는 패킷 크기를 결정한 다음 적절한 패킷 헤더 필드에 DF(Don't fragment) 비트를 설정할 수 있습니다.응답하는 호스트가 NAT에 도달하기 전에 단편화될 수 있는 크기의 패킷을 전송할 수 있기 때문에 이는 단방향 솔루션에 불과합니다.
변형항
DNAT
목적지 네트워크 주소 변환(DNAT)은 라우팅된 패킷의 목적지 IP 주소를 투명하게 변경하고 응답에 대해 역기능을 수행하는 기술입니다.두 엔드포인트 사이에 위치한 모든 라우터는 패킷의 이러한 변환을 수행할 수 있습니다.
DNAT은 일반적으로 사설 네트워크에 위치한 서비스를 공개 액세스 가능한 IP 주소에 게시하는 데 사용됩니다.이러한 DNAT의 사용은 포트 포워딩(Port Forwarding) 또는 전체 서버에서 사용될 때 DMZ(DMZ)라고도 하며, 이는 WAN에 노출되어 DMZ(비수비무장지대)와 유사합니다.
SNAT
SNAT라는 용어의 의미는 [16][17][18]공급업체에 따라 다릅니다.
- 소스 NAT은 일반적인 확장이며, DNAT(Destination NAT)의 대응물입니다.이것은 공공 서비스에 대한 발신 연결을 위한 일대일 NAT, 즉 NAT을 설명하는 데 사용됩니다.
- 시스코 시스템즈에서[19] stateful NAT을 사용합니다.
- 정적[20] NAT은 WatchGuard에서 사용됩니다.
- 보안 NAT은 F5[21] Networks와 마이크로소프트(ISA 서버 관련)에서 사용됩니다.
SNAT(Secure Network Address Translation)는 마이크로소프트의 Internet Security and Acceleration 서버의 일부이며 마이크로소프트 윈도우즈 서버에 내장된 NAT 드라이버의 확장입니다.FTP, ICMP, H.323 및 PPTP 프로토콜에 필요한 추가 네트워크 연결에 대한 연결 추적 및 필터링과 투명 HTTP 프록시 서버 구성 기능을 제공합니다.
동적 네트워크 주소 변환

동적 NAT은 정적 NAT과 마찬가지로 소규모 네트워크에서는 일반적이지 않지만 복잡한 네트워크를 가진 대규모 기업에서 볼 수 있습니다.정적 NAT이 일대일 내부와 공용 정적 IP 주소 매핑을 제공하는 경우 동적 NAT은 공용 IP [22][23]주소 그룹을 사용합니다.
NAT 헤어핀
NAT 루프백 또는 NAT [24]리플렉션이라고도 하는 NAT 헤어피닝은 LAN 상의 시스템이 LAN/라우터의 외부 IP 주소를 통해 LAN 상의 다른 시스템에 액세스할 수 있는 많은 소비자[25] 라우터의 기능입니다(라우터 상에서 포트 포워딩을 설정하여 LAN 상의 해당 시스템으로 요청을 직접 전송하도록 함).이 개념은 2008년에 공식적으로 기술되어 있고, RFC5128.
다음은 네트워크의 예에 대해 설명합니다.
- 공개 주소: 203.0.113.1라우터의 WAN 인터페이스 주소입니다.
- 라우터의 내부 주소: 192.168.1.1
- 서버 주소 : 192.168.1.2
- 로컬 컴퓨터의 주소: 192.168.1.100
패킷이 192.168.1.100의 컴퓨터에 의해 203.0.113.1로 전송되는 경우 패킷은 일반적으로 기본 게이트웨이(라우터)[d]로 라우팅됩니다. NAT 루프백 기능이 있는 라우터는 203.0.113.1이 WAN 인터페이스의 주소임을 감지하고 해당 인터페이스에서 오는 것처럼 패킷을 처리합니다.대상에 대한 DNAT(포트 포워딩) 규칙에 따라 해당 패킷의 대상을 결정합니다.데이터가 포트 80으로 전송되고 포트 80에 대해 192.168.1.2로 향하는 DNAT 규칙이 존재하는 경우 해당 주소의 호스트가 패킷을 수신합니다.
해당 DNAT 규칙을 사용할 수 없는 경우 라우터는 패킷을 삭제합니다.ICMP Destination Unreachable 응답이 전송될 수 있습니다.DNAT 규칙이 있는 경우 주소 변환은 여전히 유효합니다. 라우터는 여전히 패킷의 소스 IP 주소를 다시 씁니다.로컬 컴퓨터(192.168.1.100)는 192.168.1.100에서 오는 패킷을 전송하지만 서버(192.168.1.2)는 203.0.113.1에서 오는 패킷을 수신합니다.서버가 회신하면 외부 발신자와 프로세스가 동일합니다.따라서 공용 IP 주소를 통해 LAN 네트워크 내의 호스트 간에 양방향 통신이 가능합니다.
IPv6에서 NAT
IPv6의 설계 목표 중 하나가 엔드 투 엔드 네트워크 [26]연결을 복원하는 것이기 때문에 IPv6에서 네트워크 주소 변환은 일반적으로 사용되지 않습니다.IPv6의 넓은 주소 공간은 주소를 보존할 필요가 없으며 모든 장치에 고유한 전역 라우팅 가능 주소를 부여할 수 있습니다.고유한 로컬 주소를 네트워크 접두사 변환과 함께 사용하면 NAT과 유사한 결과를 얻을 수 있습니다.
IPv6의 큰 주소 지정 공간은 통신사가 제공하는 실제 접두사 길이에 따라 여전히 제거될 수 있습니다.전체 홈 네트워크에 대해 권장되는 서브넷 중 가장 작은 /64 접두사를 제공하는 것은 드문 일이 아닙니다. 따라서 모든 장치가 도달 [27]가능하도록 범위를 수동으로 세분화하는 데 다양한 기술을 사용해야 합니다.실제 IPv6 대 IPv6 NAT, 즉 NAT66도 유용한 경우가 있습니다. APNIC 블로그에서는 작성자에게 주소가 하나(/128)[28]만 제공된 경우를 설명합니다.
NAT의 영향을 받는 애플리케이션
FTP(File Transfer Protocol) 및 SIP(Session Initiation Protocol)와 같은 일부 애플리케이션 계층 프로토콜은 애플리케이션 데이터 내에서 명시적 네트워크 주소를 전송합니다.예를 들어 활성 모드의 FTP는 제어 트래픽(명령어)과 데이터 트래픽(파일 내용)을 위해 별도의 연결을 사용합니다.파일 전송을 요청할 때 요청하는 호스트는 해당 네트워크 계층 및 전송 계층 주소로 해당 데이터 연결을 식별합니다.요청을 수행하는 호스트가 단순한 NAT 방화벽 뒤에 있는 경우 IP 주소 또는 TCP 포트 번호를 변환하면 서버가 수신한 정보가 유효하지 않게 됩니다.SIP는 일반적으로 IP 통화를 통해 음성을 제어하며, 동일한 문제를 겪습니다.SIP와 그 부속 Session Description Protocol은 여러 포트를 사용하여 연결을 설정하고 실시간 전송 프로토콜을 통해 음성 스트림을 전송할 수 있습니다.IP 주소와 포트 번호는 페이로드 데이터에 인코딩되며, NAT의 순회 전에 알아야 합니다.STUN과 같은 특별한 기술이 없으면 NAT의 동작은 예측할 수 없으며 통신이 실패할 수도 있습니다.ALG(Application Layer Gateway) 소프트웨어 또는 하드웨어는 이러한 문제를 해결할 수 있습니다.NAT 방화벽 장치에서 실행 중인 ALG 소프트웨어 모듈은 주소 변환을 통해 잘못된 페이로드 데이터를 업데이트합니다.ALG는 수정해야 하는 상위 계층 프로토콜을 이해해야 하므로 이 문제가 있는 각 프로토콜은 별도의 ALG를 필요로 합니다.예를 들어, 많은 리눅스 시스템에는 ALG를 구현하는 역할을 하는 연결 추적기라는 커널 모듈이 있습니다.그러나 프로토콜 데이터가 암호화된 경우 ALG는 작동할 수 없습니다.
이 문제를 해결할 수 있는 또 다른 방법은 STUN 또는 ICE(Interactive Connectivity Establishment)와 같은 프로토콜을 사용하거나 세션 경계 컨트롤러에서 독점적인 접근 방식을 사용하는 NAT 순회 기술을 사용하는 것입니다.NAT 순회는 TCP 및 UDP 기반 애플리케이션에서 모두 가능하지만, UDP 기반 기술은 더 단순하고 널리 이해되며 기존 NAT과 [citation needed]더 호환됩니다.어떤 경우든 상위 레벨 프로토콜은 NAT 순회를 염두에 두고 설계되어야 하며, 대칭적인 NAT 또는 제대로 작동하지 않는 다른 레거시 NAT 간에는 안정적으로 작동하지 않습니다.
다른 방법으로는 PCP([29]Port Control Protocol), NAT 포트 매핑 프로토콜(NAT-PMP) 또는 인터넷 게이트웨이 장치 프로토콜이 있지만, 이 프로토콜을 구현하려면 NAT 장치가 필요합니다.
그러나 대부분의 클라이언트-서버 프로토콜(FTP가[e] 주 예외임)은 계층 3 연락처 정보를 보내지 않으며 NAT의 특별한 처리가 필요하지 않습니다.실제로 오늘날 새로운 상위 계층 프로토콜을 설계할 때는 NAT의 복잡성을 피하는 것이 실질적으로 요구됩니다.
또한 NAT은 IPsec 암호화를 적용하는 경우와 SIP 전화와 같은 여러 장치가 NAT 뒤에 위치하는 경우에도 문제를 일으킬 수 있습니다.IPsec로 시그널링을 암호화하는 전화기는 암호화된 패킷 내에 포트 정보를 캡슐화합니다. 즉, NAT 장치는 포트에 액세스하고 변환할 수 없습니다.이러한 경우 NAT 장치는 단순한 NAT 운영으로 돌아갑니다.즉, NAT으로 돌아가는 모든 트래픽이 하나의 클라이언트에 매핑되어 NAT 뒤에 있는 둘 이상의 클라이언트에 대한 서비스가 실패하게 됩니다.이 문제에 대한 몇 가지 해결책이 있습니다. 하나는 계층 4에서 작동하며 포트 번호를 마스킹하지 않는 TLS를 사용하는 것이고, 다른 하나는 UDP 내에서 IPsec을 캡슐화하는 것입니다. 후자는 안전한 NAT 순회를 달성하기 위해 TISPAN에서 선택한 솔루션이거나 "를 사용하는" NAT입니다.IPsec 경유" 지원, 다른 하나는 세션 경계 컨트롤러를 사용하여 NAT 경유를 지원하는 것입니다.
대화형 연결 설정은 ALG 지원에 의존하지 않는 NAT 순회 기술입니다.
2008년 [30]7월 8일 Dan Kaminsky가 발표한 DNS 프로토콜 취약성은 NAT 포트 매핑에 간접적으로 영향을 받습니다.DNS 캐시 중독을 방지하려면 NAT을 구현하는 방화벽 뒤에 있는 DNS 서버에서 발신 DNS 요청의 UDP 소스 포트 번호를 변환하지 않는 것이 매우 좋습니다.DNS 취약성에 대한 권장 해결 방법은 모든 캐싱 DNS 서버가 임의화된 UDP 소스 포트를 사용하도록 하는 것입니다.NAT 기능이 UDP 소스 포트를 랜덤화 해제하면 DNS 서버가 취약해집니다.
NAT 소프트웨어의 예
- ICS(Internet Connection Sharing): 윈도우즈 데스크톱 운영 체제에 포함된 NAT 및 DHCP 구현
- IPFilter: 포함(Open)Solaris, FreeBSD 및 NetBSD, 기타 많은 유닉스 계열 운영 체제에서 사용 가능
- ipffirewall(ipfw):FreeBSD 네이티브 패킷 필터
- iptables/nftables가 있는 Netfilter: Linux 패킷 필터
- NPF: NetBSD 네이티브 패킷 필터
- PF: OpenBSD 네이티브 패킷 필터
- 라우팅 및 원격 액세스 서비스(RRAS): Windows Server 운영 체제에 포함된 라우팅 구현
- VPP: Linux용 사용자 공간 패킷 포워딩 구현
- WinGate: Windows용 서드파티 라우팅 구현
참고 항목
- Anything In Anything(AYIA) – IPv4 UDP를 통한 IPv6, 따라서 대부분의 NAT에서 IPv6 터널링 작동
- 통신사급 NAT – ISP 내 NAT 뒤에 NAT이 있습니다.
- 게이트웨이(전기통신) – 두 네트워크 시스템 간 연결
- IMT2000 3GPP - 인터넷 게이트웨이 장치 프로토콜 NAT-transversal method
- 미들박스 – 소스 호스트와 대상 호스트 사이의 데이터 경로에 있는 중개 상자
- NAT 포트 매핑 프로토콜(NAT-PMP) NAT 순회 방법
- IMT-2000 3GPP-Port Control Protocol(PCP) NAT 이동 방식
- 포트 트리거링 – NAT 순회 메커니즘
- 하위 네트워크 – IP 네트워크의 논리적 세분화 대상에 대한 하는 페이지
- Teredo tunneling – IPv6를 사용한 NAT 횡단
메모들
- ^ 오늘날 대부분의 NAT 장치에서는 네트워크 관리자가 외부 네트워크에서 내부 마스커드 네트워크로의 연결을 위한 정적 변환 테이블 항목을 구성할 수 있습니다.이 기능은 정적 NAT이라고도 합니다.특정 외부 포트에서 지정된 포트의 내부 호스트로 트래픽을 전달하는 포트 포워딩(Port Forwarding)과 대상 포트를 보존하면서 외부 인터페이스에서 수신한 모든 트래픽을 내부 IP 주소로 전달하는 DMZ 호스트 지정(Port Forwarding)의 두 가지 유형으로 구현할 수 있습니다.두 가지 유형 모두 동일한 NAT 장치에서 사용할 수 있습니다.
- ^ 보다 일반적인 방법은 라우팅 가능한 IP 주소를 사용하여 엔드 투 엔드 연결을 제공해야 하는 컴퓨터와 인터넷 액세스를 가능하게 하는 데 사용되는 몇 개의 IP 주소만 사용하여 NAT 뒤의 외부 사용자에게 서비스를 제공하지 않는 컴퓨터가 있습니다.
- ^ 포트 번호는 16비트 정수입니다.하나의 외부 주소로 변환할 수 있는 내부 주소의 총 수는 이론적으로 IP 주소당 65,536개에 달할 수 있습니다.현실적으로 단일 IP 주소를 할당할 수 있는 포트 수는 4000개 정도입니다.
- ^ 컴퓨터의 라우팅 테이블에 명시적 경로가 설정되지 않은 경우.
- ^ FTP 대신 SFTP를 사용하면 이 문제를 방지할 수 있습니다.
참고문헌
- ^ Network Protocols Handbook (2 ed.). Javvin Technologies Inc. 2005. p. 27. ISBN 9780974094526. Retrieved 2014-09-16.
- ^ a b c d e f g h François Audet; Cullen Jennings (January 2007). Network Address Translation (NAT) Behavioral Requirements for Unicast UDP. IETF. doi:10.17487/RFC4787. RFC 4787.
- ^ a b Wing, Dan (2010-07-01). "Network Address Translation: Extending the Internet Address Space". IEEE Internet Computing. 14 (4): 66–70. doi:10.1109/MIC.2010.96. ISSN 1089-7801. S2CID 31082389.
- ^ "Characterization and Measurement of TCP Traversal through NATs and Firewalls". December 2006.
- ^ "Illuminating the shadows: Opportunistic network and web measurement". December 2006. Archived from the original on 2010-07-24.
- ^ "The Audio over IP Instant Expert Guide" (PDF). Tieline. January 2010. Archived from the original (PDF) on 2011-10-08. Retrieved 2011-08-19.
- ^ "Using NAT in Overlapping Networks". August 2005.
- ^ "VPNs with Overlapping Subnets Problem Scenario". September 2017.
- ^ Srisuresh, Pyda; Gan, Der-Hwa (August 1998). "Load Sharing using IP Network Address Translation". doi:10.17487/RFC2391.
{{cite journal}}
:저널 요구사항 인용journal=
(도움말) - ^ "What Is Layer 4 Load Balancing?". June 2020.
- ^ "What is load balancing?". November 2018.
- ^ "Configure Server Load Balancing Using Dynamic NAT". June 2018.
- ^ Singh, R.; Tay, Y.C.; Teo, W.T.; Yeow, S.W. (1999). "RAT: A quick (and dirty?) push for mobility support". Proceedings WMCSA'99. Second IEEE Workshop on Mobile Computing Systems and Applications. pp. 32–40. CiteSeerX 10.1.1.40.461. doi:10.1109/MCSA.1999.749275. ISBN 978-0-7695-0025-6. S2CID 7657883.
- ^ Bush, R.; Meyer, D. (2002). Some Internet Architectural Guidelines and Philosophy. IETF. doi:10.17487/RFC3439. RFC 3439.
- ^ Velde, G. Van de; Hain, T.; Droms, R.; Carpenter, B.; Klein, E. (2007). Local Network Protection for IPv6. IETF. doi:10.17487/RFC4864. RFC 4864.
- ^ "Enhanced IP Resiliency Using Cisco Stateful NAT". Cisco.
- ^ "Use NAT for Public Accessto Servers with Private IP Addresses on the Private Network (WatchGuard configuration example)" (PDF). www.watchguard.com. Archived from the original (PDF) on 2013-01-17.
- ^ "K7820: Overview of SNAT features". AskF5. August 28, 2007. Retrieved February 24, 2019.
- ^ "Enhanced IP Resiliency Using Cisco Stateful NAT". Cisco.
- ^ "Use NAT for Public Accessto Servers with Private IP Addresses on the Private Network (WatchGuard configuration example)" (PDF). www.watchguard.com. Archived from the original (PDF) on 2013-01-17.
- ^ "K7820: Overview of SNAT features". AskF5. August 28, 2007. Retrieved February 24, 2019.
- ^ "Dynamic NAT". 26 January 2016. Retrieved 2022-04-19.
- ^ "Dynamic NAT". Retrieved 2022-04-19.
- ^ "What is NAT Reflection/NAT Loopback/NAT Hairpinning?". NYC Networkers. 2014-11-09. Retrieved 2017-04-27.
- ^ "NAT Loopback Routers – OpenSim" (MediaWiki). OpenSimulator. 2013-10-21. Retrieved 2014-02-21.
- ^ Iljitsch van Beijnum (2008-07-23). "After staunch resistance, NAT may come to IPv6 after all". Ars Technica. Retrieved 2014-04-24.
- ^ Dupont, Kasper (Aug 18, 2015). "subnet - IPv6 subnetting a /64 - what will break, and how to work around it?". Server Fault. Retrieved 2023-04-20.
- ^ Cilloni, Marco (2018-02-01). "NAT66: The good, the bad, the ugly". APNIC Blog. Retrieved 2023-04-20.
- ^ D. Wing, Ed; Cheshire, S.; Boucadair, M.; Penno, R.; Selkirk, P. (2013). Port Control Protocol (PCP). IETF. doi:10.17487/RFC6887. RFC 6887.
- ^ Messmer, Ellen (2008-07-08). "Major DNS flaw could disrupt the Internet". Network World. Archived from the original on 2009-02-13. Retrieved 14 June 2021.