NAT
1. 개요
1. 개요
NAT(Network Address Translation, 네트워크 주소 변환)은 IP 주소를 변환하는 네트워크 기술이다. 주로 사설 네트워크에 속한 여러 대의 장치가 하나의 공인 IP 주소를 공유하여 인터넷에 접속할 수 있도록 하는 데 사용된다.
이 기술은 1990년대 IPv4 주소의 고갈 문제를 완화하기 위해 널리 보급되었다. NAT 장비(일반적으로 라우터나 방화벽)는 내부 네트워크의 사설 IP 주소를 외부로 나가는 트래픽에서는 공인 IP 주소로 변환하고, 들어오는 응답 트래픽은 다시 적절한 내부 장치로 전달한다. 이를 통해 기업이나 가정에서는 한정된 수의 공인 IP 주소로 다수의 장치를 인터넷에 연결할 수 있다.
NAT는 단순한 주소 변환 기능 외에도 기본적인 보안 장벽 역할을 한다. 외부에서 들어오는 연결 시도가 명시적으로 허용되지 않은 경우 내부 네트워크를 직접 대상으로 할 수 없기 때문이다. 이는 네트워크 주소 보존과 보안이라는 두 가지 주요 요구를 동시에 해결하는 실용적인 솔루션으로 자리 잡았다.
2. NAT의 동작 원리
2. NAT의 동작 원리
NAT는 사설 네트워크 내부의 IP 주소를 공인 IP 주소로 변환하는 과정을 통해 동작한다. 이 변환은 일반적으로 네트워크의 관문 역할을 하는 라우터나 방화벽 같은 장비에서 수행된다. 내부 호스트가 외부 네트워크(예: 인터넷)로 데이터 패킷을 보낼 때, NAT 장비는 패킷의 출발지 IP 주소와 포트 번호를 변환 테이블에 기록한 후, 사설 주소를 자신이 가진 공인 주소로 변경하여 외부로 전송한다.
주소 변환 과정은 다음과 같은 단계로 이루어진다.
1. 내부 호스트(예: 192.168.1.10)가 외부 서버(예: 203.0.113.5)로 패킷을 전송한다.
2. 패킷이 NAT 장비(공인 IP: 198.51.100.1)에 도착하면, NAT 장비는 출발지 주소(192.168.1.10)를 자신의 공인 주소(198.51.100.1)로 변경한다. 또한, 출발지 포트 번호(예: 30000)를 새로운 포트 번호(예: 50001)로 변경할 수 있다[1]]에서 주로 사용됨].
3. 변환된 정보(원본 사설 IP/포트와 새 공인 IP/포트)는 NAT 테이블(또는 변환 테이블)에 저장된다.
4. 변환된 패킷은 외부 네트워크를 통해 목적지 서버로 정상적으로 전달된다.
외부 서버로부터 응답 패킷이 NAT 장비의 공인 주소(198.51.100.1)와 포트(50001)로 도착하면, NAT 장비는 저장된 NAT 테이블을 조회한다. 테이블에서 매핑 정보를 찾아, 목적지 주소를 공인 주소에서 원래의 사설 주소(192.168.1.10)로, 목적지 포트를 50001에서 30000으로 역변환한다. 이후 이 패킷은 내부 네트워크의 원래 호스트로 정확히 전달된다.
포트 매핑은 특히 여러 내부 호스트가 단일 공인 IP를 공유하는 PAT 방식에서 핵심적이다. 이 경우 NAT 장비는 내부 호스트들을 구분하기 위해 서로 다른 포트 번호를 할당한다. 변환 테이블은 내부 IP 주소와 포트, 그리고 변환된 공인 IP 주소와 포트의 조합으로 구성되어, 들어오는 응답 패킷을 어떤 내부 호스트에게 보내야 하는지 정확히 판단할 수 있게 한다.
2.1. 주소 변환 과정
2.1. 주소 변환 과정
NAT의 주소 변환 과정은 기본적으로 사설 IP 주소와 공인 IP 주소 간의 매핑을 통해 이루어진다. 이 과정은 패킷이 라우터나 방화벽과 같은 NAT 장비를 통과할 때 실시간으로 수행된다.
아웃바운드 패킷(내부 네트워크에서 외부로 나가는 패킷)이 NAT 장비에 도착하면, 장비는 패킷의 헤더에 포함된 출발지 사설 IP 주소를 미리 할당된 공인 IP 주소로 변경한다. 동시에, 출발지 포트 번호도 변경될 수 있다. 이 매핑 정보는 NAT 테이블(또는 변환 테이블)에 기록되어, 해당 연결에 대한 응답 패킷이 돌아올 때 사용된다. 변환이 완료된 패킷은 외부 네트워크로 전송된다.
인바운드 패킷(외부에서 내부 네트워크로 들어오는 패킷)이 NAT 장비에 도착하면, 장비는 패킷의 목적지 공인 IP 주소와 포트 번호를 NAT 테이블에서 조회한다. 테이블에 해당하는 매핑 항목이 존재하면, 목적지 주소와 포트를 원래의 사설 IP 주소와 포트로 역변환하여 내부 네트워크의 올바른 호스트로 패킷을 전달한다. 만약 테이블에 해당 항목이 없는 미리 알려지지 않은 인바운드 패킷은 일반적으로 폐기된다[2].
주소 변환의 기본 흐름은 다음 표와 같이 요약할 수 있다.
방향 | 패킷 헤더의 원본 필드 | NAT 장비에서의 변환 후 필드 | 비고 |
|---|---|---|---|
아웃바운드 | 출발지: 사설 IP, 포트 | 출발지: 공인 IP, (새)포트 | 변환 정보가 NAT 테이블에 생성됨 |
인바운드 | 목적지: 공인 IP, 포트 | 목적지: 사설 IP, (원본)포트 | NAT 테이블 조회를 통해 역변환 수행 |
2.2. 포트 매핑
2.2. 포트 매핑
포트 매핑은 NAT가 사설 IP 주소와 공인 IP 주소를 변환할 때, 추가적으로 포트 번호를 함께 변환하여 하나의 공인 IP 주소로 여러 내부 호스트의 통신을 동시에 구분하는 핵심 메커니즘이다. 이 과정은 주로 PAT 또는 NAPT라고 불리는 방식에서 사용된다.
기본적인 동작은 다음과 같다. 내부 네트워크의 여러 장치(예: PC A, PC B)가 동일한 공인 IP를 통해 외부와 통신할 때, 출발지의 사설 IP와 포트 번호(예: 192.168.1.2:3000)를 NAT 장비의 공인 IP와 새로운 고유 포트 번호(예: 203.0.113.1:50001)로 변환한다. NAT 장비는 이 매핑 정보(192.168.1.2:3000 ↔ 203.0.113.1:50001)를 NAT 테이블에 기록한다. 응답 패킷이 목적지 포트 50001으로 도착하면, NAT 장비는 테이블을 조회해 원래의 사설 IP와 포트(192.168.1.2:3000)로 다시 변환하여 내부 장치에 전달한다.
내부 장치 (사설 IP:포트) | NAT 변환 후 (공인 IP:포트) | 목적지 (외부) |
|---|---|---|
PC A (192.168.1.2:3000) | 203.0.113.1:50001 | 93.184.216.34:80 |
PC B (192.168.1.3:4000) | 203.0.113.1:50002 | 93.184.216.34:80 |
이를 통해 포트 매핑은 제한된 공인 IP 주소 자원을 효율적으로 활용하고, 내부 네트워크의 실제 토폴로지를 숨기는 보안적 이점도 제공한다. 그러나 포트 번호를 동적으로 할당하고 관리해야 하므로 NAT 장비에 일정한 처리 부하를 발생시키며, 특정 포트 포워딩 설정이 없으면 외부에서 내부 서비스로의 자발적 연결 시작이 어려워진다는 한계도 있다.
3. NAT의 주요 유형
3. NAT의 주요 유형
NAT는 구현 방식과 목적에 따라 여러 유형으로 구분된다. 주로 사설 IP 주소와 공인 IP 주소를 매핑하는 방식에 따라 Static NAT, Dynamic NAT, 그리고 PAT로 나뉜다.
가장 기본적인 형태인 Static NAT는 사설 IP 주소와 공인 IP 주소를 1:1로 고정적으로 매핑한다. 주로 내부 네트워크에 위치한 서버(예: 웹 서버, 메일 서버)를 외부에 공개해야 할 때 사용된다. 관리자가 수동으로 변환 테이블을 설정해야 하며, 내부 호스트는 항상 동일한 공인 IP를 가지게 된다.
반면 Dynamic NAT는 사설 IP 주소를 미리 설정된 공인 IP 주소 풀에서 동적으로 할당한다. 내부 호스트가 외부로 통신을 시작할 때 사용 가능한 공인 IP를 풀에서 할당받고, 세션이 종료되면 해당 주소는 풀로 반환된다. 이 방식은 제한된 수의 공인 IP로 더 많은 내부 호스트가 순차적으로 외부 접속을 할 수 있게 하지만, 동시 접속 호스트 수는 공인 IP 풀의 크기에 제한을 받는다.
가장 널리 쓰이는 유형은 PAT이며, NAPT라고도 불린다. 이 방식은 여러 사설 IP 주소를 하나의 공인 IP 주소와 포트 번호를 조합하여 구분한다. 내부 호스트의 IP와 포트 번호가 공인 IP와 고유한 포트 번호로 변환된다[3]. 이로 인해 수백, 수천 대의 호스트가 단 하나의 공인 IP로도 인터넷에 접속할 수 있어 IPv4 주소 고갈 문제를 완화하는 데 결정적인 역할을 했다.
유형 | 매핑 방식 | 주소 풀 | 주요 사용 사례 |
|---|---|---|---|
Static NAT | 1:1 고정 매핑 | 공인 IP 1개당 사설 IP 1개 | 내부 서버 공개 |
Dynamic NAT | N:1 동적 매핑 (IP 풀 사용) | 공인 IP 풀 | 제한된 동시 외부 접속 |
PAT (NAPT) | N:1 (포트 번호 활용) | 공인 IP 1개 + 포트 번그 여러 개 | 일반 가정/사무실 네트워크 |
3.1. Static NAT
3.1. Static NAT
Static NAT는 사설 IP 주소와 공인 IP 주소를 1:1로 고정적으로 매핑하는 방식이다. 이 방식에서는 내부 네트워크의 특정 호스트(예: 웹 서버)에 항상 동일한 공인 IP 주소가 할당되어, 외부에서 그 주소로의 접근이 항상 동일한 내부 호스트로 연결되도록 보장한다.
주로 내부 네트워크에 위치한 서버(예: 메일 서버, FTP 서버, 웹 서버)를 외부 인터넷에 공개해야 할 때 사용된다. 예를 들어, 사설 IP 주소 192.168.1.10을 가진 내부 웹 서버를 공인 IP 주소 203.0.113.5로 영구적으로 매핑해두면, 외부 사용자는 203.0.113.5 주소만으로 해당 서버에 접근할 수 있다.
내부 사설 IP | 매핑된 공인 IP | 용도 예시 |
|---|---|---|
192.168.1.10 | 203.0.113.5 | 회사 웹 서버 |
192.168.1.20 | 203.0.113.6 | 전자메일 서버 |
192.168.1.30 | 203.0.113.7 | 원격 접속 서버 |
이 방식의 설정은 일반적으로 NAT 장비(라우터 또는 방화벽)의 변환 테이블에 정적(Static) 항목을 수동으로 추가하는 방식으로 이루어진다. 따라서 Dynamic NAT나 PAT에 비해 관리가 더 복잡할 수 있지만, 주소 변환이 예측 가능하고 안정적이라는 장점이 있다. 서비스의 공인 주소가 변경되지 않아야 하는 경우에 필수적으로 사용된다.
3.2. Dynamic NAT
3.2. Dynamic NAT
Dynamic NAT는 사설 IP 주소와 공인 IP 주소 간의 변환 매핑이 사전에 고정되지 않고, 필요에 따라 사용 가능한 공인 IP 주소 풀에서 동적으로 할당되는 방식이다. Static NAT가 일대일 고정 매핑을 제공하는 반면, Dynamic NAT는 다대다 또는 다대일 변환에 가까운 형태로 운영된다. 내부 네트워크의 호스트가 외부로 통신을 시작할 때, NAT 장비는 사용 가능한 공인 IP 주소 풀에서 하나의 주소를 선택하여 해당 세션 동안 임시로 매핑한다. 세션이 종료되면 해당 매핑은 해제되고, 공인 IP 주소는 풀로 반환되어 다른 내부 호스트가 사용할 수 있게 된다.
동작 과정은 다음과 같다. 먼저, 관리자가 NAT 장비에 공인 IP 주소 풀을 정의한다. 내부 호스트(예: 192.168.1.10)가 외부 서버에 접속 요청 패킷을 보내면, NAT 장비는 패킷의 출발지 사설 IP 주소를 확인한다. 현재 활성 매핑 테이블에 해당 호스트의 항목이 없으면, 사용 가능한 공인 IP 주소 풀에서 하나를 선택(예: 203.0.113.5)하여 매핑 테이블에 새 항목을 생성한다. 이후 외부로 나가는 패킷의 출발지 주소는 이 공인 IP 주소로 변환된다. 응답 패킷이 NAT 장비에 도착하면, 목적지 공인 IP 주소(203.0.113.5)를 확인하고 매핑 테이블을 조회하여 원래의 사설 IP 주소(192.168.1.10)로 다시 변환하여 내부 네트워크로 전달한다.
이 방식의 주요 특징과 제약은 아래 표와 같다.
특징 | 설명 |
|---|---|
주소 할당 방식 | 사용 가능한 공인 IP 주소 풀에서 동적으로 임시 할당 |
매핑 지속성 | 세션 기반; 통신 종료 후 일정 시간이 지나면 매핑 해제 |
주소 활용도 | 동시 접속 수가 공인 IP 풀 크기 이내일 때 효율적 |
주요 용도 | 내부 다수의 호스트가 제한된 수의 공인 IP를 공유하여 외부 접속 |
Dynamic NAT는 내부 네트워크의 호스트 수가 할당된 공인 IP 주소 풀의 크기보다 많을 수 있지만, 동시에 외부와 통신을 필요로 하는 호스트의 수는 풀의 크기를 초과할 수 없다는 한계가 있다. 이는 동시 세션 수에 제한을 둔다. 또한, 매핑이 고정되지 않기 때문에 외부에서 특정 내부 호스트로의 사전 예약된 인바운드 연결을 설정하기 어렵다는 점에서 Static NAT와 차별화된다. 이 한계를 극복하고 더 극단적인 주소 절약을 위해 개발된 기술이 PAT(Port Address Translation)이다.
3.3. PAT (Port Address Translation)
3.3. PAT (Port Address Translation)
PAT는 NAT의 한 유형으로, 여러 내부 호스트가 단일 공인 IP 주소를 공유하면서도 각각의 통신 세션을 구분할 수 있도록 하는 기술이다. 이는 내부 호스트의 사설 IP 주소와 함께 출발지 포트 번호까지 변환 테이블에 기록하여 구분하는 방식으로 동작한다. 흔히 'IP 마스커레이딩' 또는 'NAT 오버로딩'이라고도 불린다.
PAT의 핵심 동작 원리는 다음과 같다. 내부 네트워크의 호스트(예: 192.168.1.10:1025)가 외부 서버(예: 203.0.113.1:80)에 접속하려고 하면, NAT 장비(예: 공인 IP 198.51.100.1)는 이 패킷의 출발지 정보를 자신의 공인 IP와 사용 가능한 고유 포트 번호(예: 198.51.100.1:50001)로 변환한다. 이 매핑 정보(192.168.1.10:1025 <-> 198.51.100.1:50001)는 NAT 테이블에 저장된다. 외부 서버로부터의 응답은 198.51.100.1:50001으로 도착하면, NAT 장비는 저장된 테이블을 조회하여 원래의 내부 호스트(192.168.1.10:1025)로 패킷을 전달한다.
내부 호스트 (사설 IP:포트) | NAT 변환 후 (공인 IP:포트) | 목적지 서버 |
|---|---|---|
192.168.1.10:1025 | 198.51.100.1:50001 | 203.0.113.1:80 |
192.168.1.11:2000 | 198.51.100.1:50002 | 93.184.216.34:443 |
192.168.1.10:1026 | 198.51.100.1:50003 | 203.0.113.1:80 |
이 방식은 수백 대의 내부 장치가 단 하나의 공인 IP 주소로 외부 인터넷에 접속하는 것을 가능하게 한다. 이는 IPv4 주소 고갈 문제를 극복하는 데 가장 널리 사용되는 실용적인 해결책이 되었다. 대부분의 가정용 라우터와 소규모 기업 네트워크에서 기본적으로 사용하는 NAT 방식이 바로 PAT이다. 그러나 포트 번호를 키로 사용하기 때문에, 동일한 내부 호스트에서 동일한 목적지 IP와 포트로 향하는 복수의 연결을 구분해야 할 때는 서로 다른 출발지 포트를 할당해야 한다는 점이 특징이다.
4. NAT의 장점
4. NAT의 장점
NAT는 IPv4 주소 고갈 문제를 완화하는 가장 효과적인 방법 중 하나이다. 하나의 공인 IP 주소를 여러 개의 사설 IP 주소가 공유할 수 있게 함으로써, 인터넷 서비스 제공자로부터 할당받는 공인 주소의 수를 크게 줄일 수 있다. 이는 기업과 가정 네트워크의 비용 절감에 직접적으로 기여한다.
보안 측면에서 NAT는 기본적인 방화벽 역할을 제공한다. 내부 네트워크에 위치한 장치들의 사설 IP 주소는 외부 네트워크에서 직접 보이지 않기 때문에, 외부에서 발신된 불법적인 접속 시도가 내부로 들어오는 것을 원천적으로 차단한다. 이는 네트워크에 대한 무단 스캐닝과 직접적인 공격을 어렵게 만드는 보호층을 형성한다.
또한 NAT를 사용하면 내부 네트워크의 IP 주소 체계를 외부와 독립적으로 유연하게 구성할 수 있다. 예를 들어, 내부에서는 192.168.0.0/24와 같은 사설 대역을 사용하면서도, 인터넷 서비스 제공자를 변경하거나 공인 IP 주소 풀이 바뀌는 경우 내부 네트워크 설정을 전면적으로 변경할 필요가 없다. 이는 네트워크 관리의 편의성과 안정성을 높인다.
5. NAT의 단점과 한계
5. NAT의 단점과 한계
NAT는 IPv4 주소 고갈 문제를 완화하고 내부 네트워크를 보호하는 실용적인 해결책이지만, 몇 가지 본질적인 단점과 한계를 지니고 있다.
가장 큰 문제는 엔드투엔드 연결성의 저해이다. NAT 장비는 IP 주소와 포트 번호를 변환하는 중간자의 역할을 하기 때문에, 외부에서 내부 네트워크의 특정 호스트를 직접 식별하여 연결을 시작하는 것이 기본적으로 불가능하다. 이는 P2P 애플리케이션, 화상 회의, 온라인 게임 등 직접 연결이 필요한 서비스의 동작을 복잡하게 만든다. 이를 해결하기 위해 NAT 트래버셜 기술이 개발되었지만, 추가적인 설정이나 중간 서버를 필요로 하며, 모든 상황에서 완벽하게 동작하지는 않는다.
또한, NAT는 특정 프로토콜의 정상적인 동작을 방해할 수 있다. IPsec과 같이 패킷의 무결성을 검증하는 프로토콜은 IP 헤더의 주소 변경을 위조로 간주하여 통신을 차단할 수 있다. FTP의 Active 모드처럼 애플리케이션 데이터 페이로드 내부에 IP 주소 정보를 포함하는 프로토콜들은 NAT 장비가 해당 내용을 추가로 변환해주지 않으면 제대로 작동하지 않는다. 이러한 변환 기능은 ALG에 의해 처리되지만, 모든 프로토콜을 지원하지는 않는다.
성능과 관리 측면에서도 한계가 존재한다. 모든 통신 흐름에 대한 변환 테이블을 유지하고 패킷 헤더를 실시간으로 수정해야 하므로, 처리 지연이 발생하고 장비의 부하가 증가한다. 특히 PAT를 사용하는 경우, 수만 개의 동시 연결을 관리하는 것은 상당한 부담이 된다. 또한, 네트워크 문제를 추적하고 디버깅하는 것이 더 어려워지며, 내부 호스트의 실제 IP 주소가 숨겨져 있어 로그 분석이 복잡해질 수 있다.
단점/한계 | 설명 |
|---|---|
연결성 저해 | 외부에서 내부 호스트로의 직접적인 인바운드 연결 시작이 어려움. P2P 통신에 장애. |
프로토콜 호환성 | |
성능 오버헤드 | 변환 테이블 관리와 패킷 헤더 수정으로 인한 처리 지연 및 장비 부하 증가. |
추적 및 관리 복잡성 | 네트워크 문제 해결과 로그 분석이 어려워짐. 내부 주소 체계가 외부에 노출되지 않음. |
주소 부족의 근본적 해결 불가 |
5.1. 호환성 문제
5.1. 호환성 문제
NAT는 사설 IP 주소와 공인 IP 주소 간의 변환을 수행하지만, 이 과정에서 특정 프로토콜이나 애플리케이션의 정상적인 동작을 방해할 수 있습니다. 가장 대표적인 문제는 IP 헤더와 전송 계층 헤더에 포함된 주소 정보만 변환하기 때문에, 애플리케이션 데이터 페이로드 내부에 IP 주소나 포트 번호를 포함하는 프로토콜과의 호환성 문제입니다.
예를 들어, FTP 프로토콜의 액티브 모드는 데이터 연결을 설정할 때 클라이언트가 서버에게 자신의 IP 주소와 포트 번호를 데이터 패킷 내부에 평문으로 알립니다. NAT 장비가 이 내부 주소를 인식하고 변환하지 못하면, 서버는 변환되지 않은 사설 IP 주소로 연결을 시도하게 되어 연결이 실패합니다. 이와 유사하게, SIP 같은 멀티미디어 통신 프로토콜, 일부 온라인 게임, IPsec VPN의 특정 모드 등도 NAT 환경에서 추가적인 설정이나 보조 프로토콜 없이는 동작에 어려움을 겪을 수 있습니다.
이러한 문제를 해결하기 위해 여러 기술이 개발되었습니다. NAT 장비 자체에 애플리케이션 레벨 게이트웨이(ALG) 기능을 탑재하여 특정 프로토콜의 패킷 내부를 검사하고 주소를 변환하는 방법이 있습니다. 또한, STUN, TURN, ICE 같은 NAT 트래버셜 기술은 애플리케이션이 자신의 공인 주소를 탐지하고 중계 서버를 이용하거나 최적의 연결 경로를 수립함으로써 NAT 뒤에 있는 단말 간의 직접 통신을 가능하게 합니다.
프로토콜/애플리케이션 | NAT 환경에서의 주요 문제 | 일반적인 해결 방안 |
|---|---|---|
FTP (액티브 모드) | 데이터 패킷 내부의 클라이언트 주소 정보 변환 실패 | ALG 활성화 또는 패시브 모드 사용 |
미디어 스트림(RTP)의 연결 정보 교환 실패 | ||
온라인 게임 (P2P 방식) | 직접 연결을 위한 주소 정보 교환 불가 | 게임 서버 중계 또는 내장된 NAT 트래버셜 기술 |
AH 프로토콜의 무결성 검사 실패 |
결국, NAT는 네트워크 계층의 주소 변환 기술이지만, 그 영향은 상위 계층의 다양한 애플리케이션에까지 미칩니다. 이로 인해 네트워크 설계 시 단순한 주소 부족 해결을 넘어, 사용할 서비스와의 호환성을 반드시 고려해야 합니다.
5.2. 성능 오버헤드
5.2. 성능 오버헤드
NAT 장비는 모든 패킷의 IP 헤더를 검사하고 변환 작업을 수행해야 하므로, 처리 지연이 발생합니다. 특히 PAT를 사용하는 경우, 출발지 포트 번호까지 관리해야 하며, 연결 상태를 추적하기 위한 테이블을 유지해야 합니다. 이로 인해 라우터나 방화벽과 같은 네트워크 장비에 추가적인 CPU와 메모리 자원을 소모하게 됩니다.
대규모 트래픽이 발생하는 환경에서는 이 변환 오버헤드가 성능 병목 현상을 일으킬 수 있습니다. NAT 테이블의 크기는 제한되어 있어, 동시에 처리할 수 있는 연결 수에 한계가 있습니다. 테이블이 가득 차면 새로운 연결을 설정할 수 없게 되며, 오래된 연결에 대한 타임아웃 정책이 부적절할 경우 자원이 낭비될 수 있습니다.
고려 사항 | 설명 |
|---|---|
처리 지연 | 패킷 헤더 변환 및 상태 테이블 조회로 인한 지연 |
자원 소모 | 연결 상태 추적을 위한 메모리 및 CPU 사용량 증가 |
연결 수 제한 | NAT 테이블 크기에 따른 동시 연결 수 한계 |
세션 관리 | 비활성 연결에 대한 타임아웃 정책 필요 |
또한, 암호화된 패킷의 페이로드 내에 IP 주소 정보가 포함된 프로토콜(예: FTP, SIP 등)을 사용할 경우, NAT 장비는 추가적으로 애플리케이션 계층의 데이터까지 분석해야 할 수 있습니다. 이는 ALG 기능을 통해 이루어지지만, 이로 인해 처리 복잡도와 성능 오버헤드가 더욱 증가합니다.
6. NAT 트래버셜 기술
6. NAT 트래버셜 기술
NAT 환경은 사설 네트워크의 내부 주소와 포트를 변환하여 외부와의 통신을 가능하게 하지만, 이로 인해 외부에서 내부 네트워크의 특정 호스트로 직접적인 연결을 시도할 때 장벽이 된다. 이러한 제약을 극복하고, P2P 통신, VoIP, 온라인 게임 등 양방향 연결이 필요한 애플리케이션이 정상적으로 동작하도록 돕는 기술들을 총칭하여 NAT 트래버셜(NAT traversal) 기술이라고 한다.
주요 NAT 트래버셜 기술에는 다음과 같은 것들이 있다.
* STUN (Session Traversal Utilities for NAT): 클라이언트가 공용 네트워크 상의 STUN 서버에 문의하여 자신에게 할당된 공인 IP와 포트를 확인한다. 이 정보를 교환하여 상대방과 직접 통신할 수 있는 경로를 탐색한다. 가장 기본적이고 널리 쓰이는 방법이다.
* TURN (Traversal Using Relays around NAT): STUN으로 직접 연결이 불가능한 대칭형 NAT(Symmetric NAT) 같은 엄격한 환경에서 사용된다. 중계 서버를 통해 모든 데이터를 릴레이하므로, 서버 부하와 지연 시간이 증가한다는 단점이 있다.
* ICE (Interactive Connectivity Establishment): STUN과 TURN을 조합하여 최적의 연결 경로를 찾는 프레임워크이다. 먼저 STUN을 이용한 직접 연결(UDP 홀 펀칭)을 시도하고, 실패할 경우 TURN 서버를 통한 릴레이 연결을 백업 경로로 사용하는 방식으로 동작한다.
기술 | 주요 목적 | 동작 방식 | 특징 |
|---|---|---|---|
공인 주소/포트 발견 | 클라이언트가 STUN 서버에 질의하여 자신의 공인 변환 주소를 확인함 | 직접 연결(P2P)을 가능하게 하며, 서버 부하가 적음 | |
연결 릴레이 | 모든 데이터 패킷이 TURN 중계 서버를 통해 전달됨 | 가장 확실하지만 지연과 서버 리소스 소모가 큼 | |
최적 연결 경로 수립 | STUN, TURN 후보 경로들을 수집하고 우선순위를 매겨 최종 경로를 선택함 | 종합적인 솔루션으로, WebRTC의 핵심 구성 요소임 |
이러한 기술들은 애플리케이션 계층에서 NAT의 제한을 우회하도록 설계되었다. 또한, UPnP (Universal Plug and Play)나 NAT-PMP (NAT Port Mapping Protocol) 같은 프로토콜은 라우터와 클라이언트가 직접 소통하여 라우터의 NAT 테이블에 필요한 포트 매핑을 자동으로 추가하도록 요청할 수 있다. 그러나 보안상의 이유로 이 기능은 종종 비활성화되어 있다. NAT 트래버셜 기술의 발전은 IPv4 주소 고갈 문제를 배경으로 NAT가 광범위하게 사용되는 환경에서도 원활한 양방향 네트워크 애플리케이션 서비스를 지속 가능하게 하는 데 기여했다.
7. IPv6와 NAT
7. IPv6와 NAT
IPv6의 도입은 IPv4 주소 고갈 문제를 근본적으로 해결하기 위한 방안으로 등장했다. IPv6는 128비트 주소 체계를 사용하여 거의 무한에 가까운 주소 공간을 제공하므로, 주소 부족을 우회하기 위해 개발된 NAT의 존재 이유가 크게 약화되었다. 이론적으로 IPv6 환경에서는 모든 장치가 공인 IP 주소를 가질 수 있어 종단 간 연결이 직접적으로 이루어질 수 있고, NAT가 불필요해지는 것이 이상적인 목표이다.
그러나 현실에서는 IPv6 전환이 점진적으로 이루어지며 IPv4와 IPv6가 공존하는 기간이 길어질 것으로 예상된다. 이러한 과도기에는 듀얼 스택, 터널링, 전환 기술 등이 사용되며, NAT 역시 변형된 형태로 역할을 지속한다. 특히 NAT64는 IPv6 전용 네트워크의 클라이언트가 IPv4 인터넷 자원에 접근할 수 있도록 하는 기술로, IPv6 주소를 IPv4 주소로 변환하는 역할을 한다. 이는 IPv4 주소 보존과 전환 과정을 용이하게 하는 도구로 사용된다.
기술 | 설명 | 주요 목적 |
|---|---|---|
공존 환경 지원 | ||
IPv6 네트워크에서 IPv4 인터넷 접근 | ||
DNS 질의에 AAAA 레코드(IPv6)가 없을 때 A 레코드(IPv4)를 변환하여 응답 | NAT64와 협력하여 동작 |
장기적으로 보면 IPv6의 보편화와 함께 전통적인 NAT의 사용은 줄어들 전망이다. 하지만 네트워크 관리의 편의성, 단순한 방화벽 역할, 또는 사설 네트워크 구성에 대한 관습 때문에 일부 환경에서는 IPv6 내에서도 NAT 유사 기능을 요구하는 경우가 있다. 이에 대해 IETF는 기술적 불필요성과 종단 간 연결 원칙 훼손을 이유로 IPv6에서의 NAT 사용을 권장하지 않는다[4]. 따라서 IPv6 시대의 NAT는 주소 확장이 아닌, 프로토콜 전환과 특정 관리 요구를 충족시키는 제한된 도구로 진화할 가능성이 크다.
