Network Address Translation (NAT)
- NAT(Network Address Translation)는 네트워크 장치(일반적으로 라우터)가 내부 네트워크의 IP 주소를 외부 네트워크로 나가는 패킷의 IP 주소로 변환하는 기술입니다.
- 이는 내부 네트워크에서 사용되는 사설 IP 주소와 외부 네트워크(인터넷)에서 사용되는 공인 IP 주소 사이에서 통신을 가능하게 하며, 네트워크 보안과 IP 주소 절약 측면에서 매우 중요한 역할을 합니다.
1. NAT의 기본 개념
- 사설 IP 주소: 일반적으로 가정이나 기업의 내부 네트워크에서 사용되는 IP 주소입니다. 이 주소는 외부 인터넷에서는 직접 사용할 수 없으며, 인터넷 상에서 고유하지 않습니다.
- 사설 IP 주소(Private IP Address)는 내부 네트워크에서만 사용되는 IP 주소로, 외부 인터넷에서 직접적으로 접근할 수 없는 IP 주소입니다. 사설 IP 주소는 RFC 1918에 정의되어 있으며, 다음과 같은 범위가 있습니다:
- IPv4 사설 IP 주소 범위:
- 클래스 A: 10.0.0.0 ~ 10.255.255.255 예)10.0.0.1, 10.1.1.1, 10.254.123.12
- 클래스 B: 172.16.0.0 ~ 172.31.255.255예) 172.16.0.1, 172.20.10.5, 172.31.255.254
- 클래스 C: 192.168.0.0 ~ 192.168.255.255예) 192.168.0.1, 192.168.1.1, 192.168.100.100
- 이러한 사설 IP 주소는 기업 네트워크, 가정용 네트워크 및 데이터 센터에서 내부 장치와 서버 간의 통신을 위해 사용됩니다. 사설 IP는 인터넷에서 직접 라우팅되지 않기 때문에, 인터넷에 접근하려면 NAT(Network Address Translation)를 통해 공인 IP 주소로 변환됩니다.
- 공인 IP 주소: 외부 인터넷에서 고유한 IP 주소입니다. 공인 IP는 인터넷 상에서 라우팅이 가능하고 고유한 주소여야 합니다.
- 공유기 역할:
- 라우팅 기능: 공유기는 내부 네트워크의 장치들(예: PC, 스마트폰, 스마트 TV 등) 사이의 트래픽을 관리하고, 외부 인터넷과의 연결을 제공합니다.
- NAT 기능: 공유기는 내부 네트워크의 사설 IP 주소를 공인 IP 주소로 변환하여, 외부 인터넷과의 통신을 가능하게 합니다. 이때 대부분의 가정용 공유기는 하나의 공인 IP를 여러 장치가 공유하도록 PAT(Port Address Translation)을 사용합니다.
- DHCP 서버 기능: 공유기는 내부 네트워크에 연결된 장치들에게 자동으로 사설 IP 주소를 할당하는 역할도 수행합니다.
- 방화벽 기능: 대부분의 공유기는 기본적인 방화벽 기능을 제공하여, 외부의 불법적인 접근을 차단할 수 있습니다.
- NAT는 내부 네트워크에서 나가는 패킷의 출발지 IP 주소를 라우터에 설정된 공인 IP 주소로 변환하여 외부 네트워크와 통신이 가능하게 합니다.
2. NAT의 작동 방식
NAT는 라우터와 같은 게이트웨이 장치에서 동작하며, 패킷이 외부로 나갈 때 그 패킷의 출발지 IP 주소를 변환하고, 외부로부터 응답 패킷이 돌아올 때 이를 다시 내부 네트워크의 적절한 장치로 전달합니다.
- 출발지 NAT(SNAT, Source NAT): 내부 네트워크에서 외부로 나가는 트래픽의 출발지 IP 주소를 공인 IP 주소로 변환합니다. 주로 내부 사설 IP 주소를 숨기고, 하나의 공인 IP 주소로 여러 장치가 인터넷에 접속할 수 있게 합니다.
- 목적지 NAT(DNAT, Destination NAT): 외부에서 들어오는 트래픽의 목적지 IP 주소를 내부 네트워크의 특정 장치의 사설 IP 주소로 변환합니다. 주로 외부에서 내부 서버로 접속할 때 사용됩니다(포트 포워딩).
시나리오:
가정에서 사용하는 공유기(라우터)는 다음과 같은 IP 주소 구성을 가지고 있습니다:
- 공유기의 공인 IP 주소: 203.0.113.5 (ISP가 제공한 공인 IP 주소)
- 공유기의 내부 IP 주소: 192.168.0.1 (공유기의 내부 네트워크 주소)
- 가정 내 PC: 192.168.0.10 (DHCP 서버가 할당한 사설 IP 주소)
상황:
가정 내 PC(클라이언트)가 인터넷에서 특정 웹사이트의 서버(공인 IP 주소 198.51.100.7)에 접속하려고 합니다. 이 경우 NAT를 통한 IP 주소 변환 과정을 단계별로 설명하겠습니다.
1. 클라이언트의 요청 (사설 네트워크 -> NAT 라우터)
- PC (192.168.0.10)가 웹사이트(198.51.100.7)에 HTTP 요청을 보냅니다. 요청 패킷의 헤더에는 다음과 같은 정보가 포함됩니다:
- 출발지 IP 주소: 192.168.0.10
- 목적지 IP 주소: 198.51.100.7
- 출발지 포트: 54321 (랜덤 포트)
- 목적지 포트: 80 (HTTP 포트)
2. NAT 라우터의 변환 (NAT 라우터 -> 인터넷)
- 요청이 공유기(라우터)에 도달하면, NAT는 이 패킷의 출발지 IP 주소를 공유기의 공인 IP 주소로 변환합니다. 변환된 후의 패킷 정보는 다음과 같습니다:
- 출발지 IP 주소: 203.0.113.5 (공인 IP 주소)
- 목적지 IP 주소: 198.51.100.7
- 출발지 포트: 50000 (라우터가 NAT 테이블에 새로 지정한 포트 번호)
- 목적지 포트: 80 (HTTP 포트)
- 이때 NAT 라우터는 NAT 테이블에 매핑 정보를 기록해 둡니다:
사설 IP: 192.168.0.10, 사설 포트: 54321 -> 공인 IP: 203.0.113.5, 공인 포트: 50000
3. 웹 서버의 응답 (인터넷 -> NAT 라우터)
- 웹사이트의 서버(198.51.100.7)는 클라이언트의 요청에 대한 응답을 공유기의 공인 IP 주소로 보냅니다. 응답 패킷의 정보는 다음과 같습니다:
- 출발지 IP 주소: 198.51.100.7
- 목적지 IP 주소: 203.0.113.5
- 출발지 포트: 80
- 목적지 포트: 50000
4. NAT 라우터의 역변환 (NAT 라우터 -> 사설 네트워크)
- NAT 라우터는 목적지 포트 번호 50000을 확인하고, NAT 테이블에서 매핑 정보를 찾아봅니다. 매핑된 사설 IP 주소와 포트를 찾은 후, 패킷의 목적지 정보를 다음과 같이 변환하여 내부 네트워크로 전달합니다:
- 출발지 IP 주소: 198.51.100.7
- 목적지 IP 주소: 192.168.0.10
- 출발지 포트: 80
- 목적지 포트: 54321
5. 클라이언트의 응답 수신 (사설 네트워크 내)
- 변환된 패킷은 PC(192.168.0.10)로 전달되며, 클라이언트는 웹 서버의 응답을 정상적으로 수신합니다.
요약
- NAT는 내부 네트워크의 사설 IP 주소(192.168.0.10)를 공인 IP 주소(203.0.113.5)로 변환하여 외부와 통신할 수 있게 합니다.
- 요청과 응답을 구분하기 위해 포트 번호를 매핑하고 이를 NAT 테이블에 저장하여, 외부에서 돌아온 응답을 올바른 내부 클라이언트에 전달합니다.
3. NAT의 종류
3.1 정적 NAT (Static NAT):
- 내부 네트워크의 사설 IP 주소 하나를 고정된 공인 IP 주소와 1:1로 매핑합니다.
- 내부 서버가 외부에서 직접 접속될 수 있도록 해야 할 때 주로 사용됩니다.
- 예: 내부 서버를 인터넷에서 직접 접근 가능하게 해야 할 경우.
3.2 동적 NAT (Dynamic NAT):
- 내부 네트워크의 사설 IP 주소를 동적으로 여러 공인 IP 주소 중 하나로 매핑합니다.
- 정적 NAT(Static NAT)와는 달리, 동적 NAT에서는 사설 IP 주소가 고정된 공인 IP 주소와 1:1로 매핑되지 않고, 필요한 시점에 동적으로 공인 IP 주소 풀(pool) 중 하나가 할당됩니다.
3.2.1 동적 NAT의 작동 방식
- 동적 NAT는 사설 네트워크에서 나가는 트래픽에 대해 동적으로 공인 IP 주소를 할당합니다. NAT 장치는 공인 IP 주소 풀(pool)을 유지하고 있으며, 내부 장치가 외부 네트워크에 접속할 때마다 이 풀에서 사용 가능한 공인 IP를 선택하여 매핑합니다.
3.2.2 예시로 설명
- 가정 내 또는 회사 내부 네트워크에서 다음과 같은 IP 주소 구성을 가지고 있다고 가정하겠습니다:
- 공인 IP 주소 풀: 203.0.113.10 ~ 203.0.113.15 (총 6개의 공인 IP 주소)
- 내부 네트워크: 192.168.0.0/24 (사설 IP 주소 범위)
- 동적 NAT의 동작 단계
- 내부 네트워크의 장치가 인터넷에 연결하려고 함: 예를 들어, 내부 네트워크의 PC1(192.168.0.10)과 PC2(192.168.0.11)가 인터넷에 접속하려고 합니다.
- NAT 장치가 매핑을 설정:
- PC1이 외부 웹사이트(198.51.100.1)에 연결 요청을 보냅니다.
- NAT 장치는 공인 IP 풀에서 사용 가능한 IP 주소(203.0.113.10)를 선택하여, 다음과 같은 매핑 정보를 설정합니다
내부 IP 주소: 192.168.0.10 -> 공인 IP 주소: 203.0.113.10
- 동시에, PC2가 다른 웹사이트(198.51.100.2)에 연결 요청을 보내면, NAT 장치는 공인 IP 풀에서 또 다른 사용 가능한 IP 주소(203.0.113.11)를 할당하여 매핑합니다:
내부 IP 주소: 192.168.0.11 -> 공인 IP 주소: 203.0.113.11
-
- 패킷의 변환 및 전송:
- PC1의 출발지 IP 주소(192.168.0.10)는 공인 IP(203.0.113.10)로 변환되어 외부로 전송됩니다.
- PC2의 출발지 IP 주소(192.168.0.11)는 공인 IP(203.0.113.11)로 변환되어 외부로 전송됩니다.
- 응답 수신 및 매핑 정보 기반으로 전달:
- 외부 웹사이트의 서버들은 PC1과 PC2의 공인 IP 주소(203.0.113.10 및 203.0.113.11)로 응답을 보냅니다.
- NAT 장치는 자신이 유지하고 있는 매핑 정보를 참조하여, 응답을 올바른 내부 IP 주소(PC1: 192.168.0.10, PC2: 192.168.0.11)로 전달합니다.
- 패킷의 변환 및 전송:
3.2.3 동적 NAT의 특징
- 공인 IP 주소 풀: 동적 NAT는 여러 개의 공인 IP 주소 풀을 가지고 있어, 사설 네트워크의 여러 장치가 인터넷에 동시 접속할 때 이 풀 내의 IP 주소를 동적으로 할당합니다.
- 유동적인 IP 매핑: 정적 NAT처럼 사설 IP와 공인 IP가 고정적으로 1:1 매핑되지 않으며, 필요에 따라 공인 IP가 동적으로 할당됩니다.
- IP 주소 절약: 한정된 공인 IP 주소를 여러 내부 장치에 유연하게 할당할 수 있어, 공인 IP 자원의 효율적 사용이 가능합니다.
3.3 PAT(포트 주소 변환, Port Address Translation):
- 하나의 공인 IP 주소를 여러 장치가 공유하게 하며, 각 장치가 사용하는 포트를 기반으로 트래픽을 구분합니다.
- 가장 일반적인 NAT 형태로, 사설 네트워크에서 많은 장치가 하나의 공인 IP로 인터넷에 접속할 수 있게 합니다.
- 포트 넘버를 이용하여 트래픽을 분리하므로 다수의 장치가 동시에 공인 IP를 사용할 수 있습니다.
4. NAT의 장점
- IP 주소 절약: 사설 네트워크 내의 많은 장치들이 하나의 공인 IP 주소로 인터넷에 접근할 수 있으므로, 공인 IP 주소의 낭비를 줄입니다.
- 보안 강화: 내부 장치들의 사설 IP 주소가 외부에 직접 노출되지 않기 때문에 외부 공격으로부터 네트워크를 보호하는 데 도움을 줍니다.
- 네트워크 유연성: 내부 네트워크의 IP 주소 체계를 외부 네트워크에 맞추지 않아도 되기 때문에 네트워크 설계와 관리가 유연해집니다.
5. NAT의 단점
- 연결 추적 부담: NAT 장치가 모든 연결을 추적해야 하므로, 대규모 네트워크에서 NAT 성능이 저하될 수 있습니다.
- 특정 프로토콜과의 비호환성: 일부 네트워크 프로토콜은 NAT 환경에서 동작하지 않거나 추가 설정이 필요할 수 있습니다(e.g., VoIP, P2P).
- 종단간 연결 어려움: NAT는 외부에서 내부 장치로의 직접 연결을 어렵게 하므로, 이를 해결하기 위해 포트 포워딩이나 UPnP 등의 추가 기술이 필요합니다.
NAT는 다양한 환경에서 유용하며, 특히 가정이나 기업 네트워크에서 사설 IP 주소를 사용하는 경우 매우 일반적으로 사용됩니다. PAT는 특히 인터넷 서비스 제공자(ISP)들이 공인 IP 주소 자원을 절약하면서 많은 사용자를 지원하는 데 중요한 역할을 합니다.
'Interview > Network' 카테고리의 다른 글
Load balancing 로드 밸런싱 (1) | 2024.10.19 |
---|---|
L4 vs L7 스위칭 장비 (0) | 2024.10.19 |
네트워크 라우팅 테이블 (0) | 2024.10.19 |
네트워크 인터페이스 (1) | 2024.10.18 |
HTTP Keep Alive (0) | 2024.09.29 |