본문 바로가기
Network tech/IP(Internet Protocol)

[IP network] NAT(Network Address Translation)은 무엇인가?

by 어깨 :) 2023. 7. 25.
반응형

사설 IP 주소는 '닫혀 있는 네트워크 내부'에서 사용하는 것을 전제로 하고 있습니다. 따라서 인터넷상에서는 목적지의 IP 주소로 사설 IP 주소가 지정되지 않습니다.

인터넷상의 호스트가 기본적으로 공인 IP 주소를 가지고 있기 때문입니다. 물로 인터넷에 연결된 라우터의 라우팅 테이블(라우터에 기록되는 경로 정보)에도 사설 IP 주소의 네트워크 ID가 등록되지 않습니다.

 

하지만 이런 경우에는 문제가 발생합니다. 사설 IP 주소를 가진 네트워크 내부의 호스트가 인터넷상의 호스트와 통신할 때, '보내는 패킷'은 라우팅 할 수 있지만 '받을 패킷'은 라우팅 할 수 없습니다. 받는 패킷의 목적지 IP 주소(네트워크 내부의 호스트 주소)가 사설 IP 주소이기 때문입니다.

 

 

여기서 등장하는 것이 NAT(Network Address Translation, 네트워크 주소 변환)입니다. NAT은 사설 IP 주소와 공인 IP 주소를 상호 변환하는 기술을 말합니다.

 

 

NAT에 의한 주소 변환은 주로 사설 IP 주소와 공인 IP 주소의 경계에 위치하는 라우터나 방화벽 상에서 이루어집니다. NAT를 수행하는 장비(라우터나 방화벽)가 목적지의 IP 주소를 사설 IP 주소에서 공인 IP 주소로 변환해서 전송해 주는 것입니다.

 

 

또한 NAT 장비는 사설 IP 주소와 공인 IP 주소의 조합을 NAT 테이블에 저장합니다. 통신은 쌍방향으로 이루어지기 때문에 NAT 변환된 패킷이 되돌아오면 NAT 테이블을 참조해서 돌아온 패킷의 목적지 IP 주소를 공인 IP 주소에서 원래의 사설 IP 주소로 변환해서 전송해 줍니다.

 

 

그럼 구체적인 예시를 통해 NAT에 대해서 알아보도록 하겠습니다.

 

 


 

NAT

NAT(Network Address Translation)는 주소가 고갈된 IPv4를 위해 태어난 기술로, 사설 IP 주소와 공인 IP 주소 간에 주소 변환을 해 사설 네트워크에서 인터넷으로 통신이 가능하게 합니다. 한마디로 NAT는 주소 변환 기술이고 주로 라우터에 의해 구현됩니다. 집이나 사무실에서 사용하는 가정용 라우터인 인터넷 공유기에도 NAT 기술이 적용되어 있습니다.

 

사설 IP 주소가 설정된 컴퓨터가 인터넷과 통신하고 싶은 경우에는 간단히 NAT 기술이 구현된 라우터를 연결하여 통신을 하면 되는 것입니다. 이때 라우터는 사설 네트워크에서 인터넷으로 들어가는 일종의 게이트웨이(gateway, 출입구) 역할을 합니다. 기본 게이트웨이*(default gateway라는 의미에서 보통 라우터에는 호스트부가 1인 IP 주소를 할당합니다.

 

*. 기본 게이트웨이는 호스트의 패킷이 외부 네트워크로 나갈 때나 외부 네트워크의 패킷이 호스트가 속한 네트워크로 들어올 때 꼭 거쳐야 하는 출입구입니다.

 

<그림 3> 주소를 변환하는 NAT

 

아래 <그림 4>에서 사설 IP 주소가 192.168.24.2인 호스트가 클라이언트가 되어 인터넷에서 서비스를 제공하는 서버, 즉 공인 IP 주소가 203.179.33.13인 호스트와 통신하는 경우 NAT으로 주소를 변환하는 과정은 다음과 같습니다.

 

클라이언트 1은 서버에게 서비스를 요청하는 내용의 IP 패킷을 만들어 전송합니다. IP 패킷의 IP 헤더에는 송신지 IP 주소 192.168.24.2, 수신지 IP 주소 203.179.33.13이라는 정보가 담겨 있습니다.

 

클라이언트 1이 전송한 IP 패킷이 NAT 지원 라우터에 도착하면 NAT에 의해 송신지 사설 IP 주소를 공인 IP 주소로 변환합니다. <그림 4>에서 NAT로 변환되는 공인 IP 주소는 202.244.73.3입니다. 이 번호가 어떻게 선택되는지는 아래에서 별도로 설명합니다. 일단 여기서는 NAT 라우터가 공인 IP 주소로 주소 변환을 한다는 것만 이해하면 됩니다.

다시 말해 NAT 라우터가 IP 헤더의 송신지 주소를 사설 IP 주소인 192.168.24.2에서 공인 IP 주소인 202.244.73.3으로 변경한 IP 패킷을 인터넷으로 전송합니다. 송신지 IP 주소를 변환할 때 라우터에는 변환 전후의 주소를 기록한 NAT 테이블이 만들어집니다.

 

라우터에서 서버까지 패킷이 전송되는 과정은 일반적인 패킷 전송 방식과 동일합니다.

 

IP 패킷 전송 자세히 ⇒ 인터넷 계층과 IP 프로토콜

 

서버에 도착한 IP 패킷에 응답하여 서버가 클라이언트 1로 서비스를 제공하는 IP 패킷을 보낼 때는 반대로 공인 IP 주소가 사설 IP 주소로 변환되는 과정을 거칩니다.

서버는 자신이 아는 수신지 주소인 공인 IP 주소 202.244.73.3로 IP 패킷을 전송합니다. 이 패킷이 라우터에 도착하면 라우터는 NAT 테이블을 이용해 수신지 공인 IP 주소를 클라이언트의 원래 주소인 사설 IP 주소 192.168.24.2로 변환합니다. 변환된 IP 헤더의 수신지에 따라 클라이언트로 IP 패킷이 전송되는 것입니다.

 

<그림 4> NAT 주소 변환

 

인터넷에 있는 서버 입장에서는 사설 네트워크에 있는 호스트의 존재를 모릅니다. 서버가 통신하는 상대는 NAT 라우터이기 때문입니다. 인터넷에서는 사설 네트워크에 있는 호스트들을 대신해 NAT 라우터가 사실상 하나의 공인 IP 주소를 갖는 하나의 호스트 역할을 합니다. 사설 네트워크를 떠나 인터넷으로 가는 패킷은 송신지 주소로 NAT의 공인 IP 주소인 202.244.73.3을 가져야 하며, 인터넷에서 사설 네트워크로 들어오는 패킷은 수신지 주소로 NAT의 공인 IP 주소인 202.244.73.3을 가져야 합니다.

 

따라서, 사설 네트워크의 클라이언트 1뿐 아니라 클라이언트 2, 3도 같은 공인 IP 주소를 사용하여 인터넷에 있는 서버와 통신을 하게 됩니다. 즉, 사설 네트워크의 호스트들이 하나의 공인 IP 주소를 공유하면서 인터넷으로의 통신을 할 수 있습니다.

 

NAT 기술 덕분에 하나의 공인 IP 주소로 사설 네트워크에 있는 여러 대의 호스트들이 인터넷상에 있는 호스트와 통신할 수 있게 되어 부족한 IP 주소의 문제를 해결할 수 있게 된 것입니다.

 

공인 IP 주소로 할당할 수 있는 IP 주소가 이미 고갈되었기 때문에 현재는 사설 IP 주소와 NAT을 조합하여 사용하는 것이 일반적입니다. 집이나, 학교, 기업 내에서는 사설 IP 주소를 설정하고 인터넷과 연결하는 NAT 라우터와 인터넷에 공개된 서버에만 공인 IP 주소를 설정함으로써 부족한 IP 주소의 문제에 대응하고 있는 것입니다.

 

 


 

그럼 마지막으로 NAT이 필요한 이유와 그럼에도 불구하고 단점은 무엇인지 알아보겠습니다.

 

1. IPv4 주소 고갈문제의 솔루션으로 NAT이 사용됩니다.

가정용 Wi-Fi 라우터를 사용해 보겠습니다. 일반적으로 가정용 라우터는 인터넷 서비스 제공자(ISP)로부터 하나의 공용 IPv4 주소를 할당받습니다. 하지만 가정 내에는 여러 대의 기기들이 인터넷에 접속해야 합니다(스마트폰, 노트북, 태블릿 등). 이때, 라우터는 NAT을 이용하여 이러한 기기들에게 사설 IP 주소를 할당하고, 해당 사설 IP 주소들을 하나의 공용 IP 주소로 변환하여 인터넷에 접속합니다. 이렇게 함으로써 하나의 공용 IP 주소를 여러 기기가 공유하여 사용하므로 IPv4 주소의 고갈 문제를 해결할 수 있습니다.

 

2. 보안을 강화하는 데 NAT 기술을 사용합니다.

회사의 사내 네트워크를 가정해 봅시다. 사내에서는 중요한 기밀 정보들이 포함된 서버나 데이터베이스가 존재하며, 외부에서의 불법적인 접근을 막아야 합니다. 이때, 회사는 외부로부터 직접 접근이 불가능한 사설 IP 주소를 사용하여 내부 네트워크를 보호합니다. 외부에서는 회사의 공용 IP 주소만을 알 수 있으며, 실제 내부 서버들의 사설 IP 주소는 가려져 있기 때문에 외부로부터의 공격이 어려워집니다.

 

3. IP 주소 체계가 같은 두 개의 네트워크 간 통신을 가능하게 해 줍니다.

두 개의 사무실 네트워크를 가정해 봅시다. 각 사무실은 사설 IP 주소를 사용하고 있으며, 인터넷 접속은 공용 IP 주소를 가진 라우터를 통해 이루어집니다. 두 사무실 간에 데이터를 주고받아야 할 경우에는 사설 IP 주소를 가진 장치들이 직접 통신하기 어렵습니다. 이때, 두 사무실의 라우터가 NAT을 사용하여 사설 IP 주소를 공용 IP 주소로 변환하고, 이를 통해 두 사무실 간의 통신이 가능해집니다.

 

4. 불필요한 설정 변경을 줄일 수 있습니다.

가정용 Wi-Fi 라우터를 다시 예로 들어보겠습니다. 가정 내에서 새로운 기기가 추가되거나 네트워크 구성이 변경되더라도, 해당 기기들은 자동으로 라우터에 의해 사설 IP 주소가 할당되고 인터넷에 접속할 수 있습니다. 이는 라우터의 NAT 기능으로 인해 네트워크 설정 변경이 자동으로 처리되기 때문에 불필요한 설정 변경을 줄일 수 있습니다.

 

 

사실 NAT 기술은 위처럼 장점만 있는 것은 아닙니다. 네트워크 운영자 입장에서는 IP가 변환되면 장애가 발생했을 때 문제 해결이 힘듭니다. 애플리케이션 개발자는 NAT 환경이 대중화되면서 애플리케이션을 개발할 때 더 많은 고려사항이 생겼습니다. IPv6 전환은 IPv4 주소 부족 해결이라는 중요한 목표가 있지만 이런 어려움을 주는 NAT를 인터넷에서 없애는 목표도 있습니다. NAT로 이내 주소가 변환되면서 단말 간 직접적인 연결성이 무너졌고 이로 인해 개발자들이 애플리케이션을 제작할 때 NAT 환경을 항상 고려해야 하는 상황이 되었습니다. 또한, NAT의 이런 한계를 극복하기 위해 NAT 밑에 있는 단말도 직접 연결하게 도와주는 홀 펀칭(Hole Punching) 기술이 나오고 이 기술을 이용하기 위해 애플리케이션이 더 복잡해지는 악순환이 계속되었습니다. 지난 20년 동안 NAT는 일상생활 속에 많이 적용되었고 그 과정에서 NAT로 인한 오버헤드나 다양한 문제를 신기술로 해결해 왔습니다.

 

 

여기서 잠깐!! 홀펀칭은 무엇일까요?

홀 펀칭(Hole Punching)은 컴퓨터 네트워크에서 사용되는 기술로, 프라이빗 네트워크 뒤에 있는 장치들이 서로 통신하기 위해 공용 인터넷을 통해 직접적인 연결을 설정하는 방법입니다. 이를 통해 NAT(Network Address Translation)를 사용하는 환경에서도 피어 투 피어(peer-to-peer) 통신을 가능하게 합니다.

철심 파일에 종이를 깔끔하게 꽂기 위해서 구멍을 내는 도구를 펀치라고 부릅니다. 네트워크의 막힌 부분에 구멍을 낸다.라는 의미로 홀펀칭이라고 이름이 지어졌습니다.

홀펀칭은 NAT상황에서 P2P연결 시에 필요합니다. NAT는 막힌 벽이고 그것을 뚫어 P2P를 연결하는 것이 홀펀칭인 것입니다.

 

홀펀칭은 사용자만 있어서는 구현할 수 없습니다. 중간에서 다리 역할을 해주는 Relay서버가 필요합니다.

언뜻 보면 P2P가 아닌 서버/클라이언트 구조처럼 보일 수 있지만 Relay서버는 연결 시 다리역할을 할 뿐 데이터 전송에 관여하지는 않습니다.

 

처음엔 서버/클라이언트 방식과 같이 양측 모두 서버로 접속을 시도합니다. 그러면 서버에선 접속된 클라이언트들의 정보를 가지고 클라이언트 간 터널을 만들어주고 이 터널을 기반으로 통신하게 됩니다.

 

 

 

 

위와 같이 터널을 연결하여 NAT환경에서 P2P구조를 생성하고 통신이 가능하게 됩니다.

 

https://program-factory.tistory.com/7

 

3. Hole Punching이란

NAT 환경에서 P2P 연결을 위해서는 HolePunching을 사용해야한다. 관련자료는 https://www.netmanias.com/ko/post/blog/6263/nat-network-protocol-p2p/p2p-nat-nat-traversal-technic-rfc-5128-part-2-udp-hole-punching를 참고하였다. 홀펀

program-factory.tistory.com

 

 

 

이상으로 NAT에 대한 정의와 장단점까지 살펴봤습니다.

도움이 되시길 바라면서 이만 마치겠습니다.

감사합니다.

 

 

참고서적: 고재성, 이상훈.『IT 엔지니어를 위한 네트워크 입문』. 길벗. 2022

참고서적: Gene 저 , 김성훈 역. 『그림으로 배우는 네트워크』. 영진닷컴

728x90