본문 바로가기
느리게 변하는 지식/Network

NAT 그리고 PAT

by oncerun 2023. 2. 11.
반응형

NAT

 

NAT(Network Address Transaction, 네트워크 주소변환)은 실생활에서 많이 사용하는 기술입니다. 

 

집에서는 공유기를 통해 사용하고 통신사에 연결된 스마트폰은 통신사 장비를 통해 외부와 통신하게 됩니다. 

 

L3 장비에서도 사용되며 특히 방화벽과 로드 밸런서와 같이 세션을 다루는 L4이상의 장비에서는 매우 빈번히 사용되는 기술입니다.

 

NAT은 기본적으로 하나의 네트워크 주소를 다른 하나의 네트워크 주소로 변환하는 1:1 변환이 기본이지만 이는 IP 주소가 고갈되는 문제를 해결하기 위해 1:N으로 사용합니다. 

 

보통 네트워크 주소를 다른 네트워크로 변환하는 기술을 NAT라고 부릅니다. 하지만 실제 공식 용어는 NAPT(Network Address Port Translation)이며 NAPT의 경우 실무에서는 PAT(Port Address Translation)이라는 용어로 더 많이 사용됩니다. 

 

NAT는 사설 IP를 공인 IP로 전환하는 것뿐만 아니라 공인 IP를 사설 IP로 전환할 수 있고 사설 IP에서 또 다른 사설 IP로 공인 IP를 또 다른 공인 IP로의 전환도 NAT이라고 정의될 수 있습니다. 

 

개발자들에게는 프록시 서버와 비슷한 기능이라고 생각하면 더욱 이해가 되는 것 같습니다. 

 

 

NAT/PAT 필요성

 

IPv4는 고갈되고 있습니다. 이를 해결하기 위해 IPv6 나왔지만 현재는 IPv4 기준으로 동작하는 네트워크들이 많습니다. 

NAT는 IPv4 고갈 문제의 솔루션으로 사용될 수 있습니다. 

 

IPv4 주소 보존전략은 3단계로 이루어졌습니다. 단기 전략은 서브네팅, 중기 전략은 NAT와 사설 IP 체게, 장기 전략은 IPv6의 전환입니다. 

 

그중 NAT는 외부 공개 서비스를 위해선 공인 IP를 사용하고 내부 서비스에서는 사설 IP를 사용해 필요한 곳에만 효율적으로 IP를 사용해 IPv4 주소 보존에 많은 기여를 할 수 있었습니다. 

 

그 외에도 보안, 설정 감소 등등이 존재합니다. 

 

 

NAT의 동작방식.

NAT 테이블
10.0.0.1 200.88.1.11

 

 

10.0.0.1 사설 IP를 가진 클라이언트가 200.100.10.10 공인 IP와 통신을 하는 과정은 다음과 같습니다.

 

 

1. 출발지 IP/포트, 목적지 IP/포트로 패킷을 전달합니다. 

 

2. NAT 역할을 수행하는 라우터는 패킷을 수신한 후 라우터 테이블을 확인하여 NAT 정책에 따라 외부 네트워크와 통신이 가능한 공인 IP인 200.88.1.11로 IP 주소를 변경합니다.  

 

3. NAT 기능을 가진 라우터에서는 출발지 IP를 200.88.1.11, 도착지 IP를 200.100.10.10로 패킷을 웹서버로 전달합니다.

 

4. 패킷을 수신한 웹 서버는 응답을 전송합니다. 이때 패킷의 출발지 IP는 200.100.10.10 목적지 IP는 200.88.1.11로 전달됩니다.

 

5. 응답을 수신한 NAT는 NAT 테이블을 참조해 목적지 IP에 해당하는 출발지 IP를 확인합니다.

 

6. NAT는 목적지 IP를 NAT 테이블을 통해 얻은 10.0.0.1로 변환하여 클라이언트에게 전달합니다.

 

PAT 동작방식

 

PAT는 포트 번호도 변경됩니다. 

 

NAT 테이블
10.0.0.1 200.88.1.11
2000 3000

 

NAT 2번 과정을 PAT로 변경하면 다음과 같습니다.

 

사용자가 보낸 패킷을 받아 외부 네트워크와 통신이 가능한 공인 IP로 변경합니다. 

이때 출발지 IP가 변경될 때 출발지 서비스 포트도 변경됩니다. 이러한 출발지 IP와 출발지 포트는 NAT 기능이 있는 라우터에 의해 변경되고 이 변경정보를 NAT 테이블에 기록합니다.

 

즉 PAT 동작 방식은 NAT와 비슷하게 이루어집니다. 다만 IP 주소뿐만 아니라 서비스 포트까지 함께 변경해 관리하기 때문에 하나의 IP만으로도 다양한 포트 번호를 사용해 사용자를 구분할 수 있습니다.

 

다만 포트의 개수가 제한되어 있어 재사용되는데, 이 과정에서 모든 포트가 사용 중이거나 재사용할 수 없으면 PAT이 정상적으로 동작하지 않기에 공인 IP 주소를 풀로 구성해야 합니다.

 

PAT는 다수의 IP가 있는 출발지에서 목적지로 갈 때 NAT 테이블이 생성되고 응답에 대해 NAT 테이블을 참조할 수 있지만

 

PAT가 목적지 일 때 해당 IP가 어느 IP에 바인딩되는지 확인할 수 있는 NAT 테이블이 없으므로 사용할 수 없다.

 

이는 SNAT에 대해서만 적용되고 DNAT에는 적용되지 않다는 것입니다.  따라서 내부에서 외부로 출발하는 경우에만 가능하며 외부에서 내부로 통신은 NAT 테이블 참조가 불가능하기 때문에 통신이 안되고 패킷이 드롭됩니다. 

 

SNAT, DNAT

 

 

NAT을 사용해 네트워크 주소를 변환할 때 어떤 IP 주소를 변환하지에 따라 두 가지로 구분한다고 합니다.

 

출발지 주소를 변경하는 경우는 SNAT( Source NAT), 도착지 주소를 변경하는 것은 DNAT(Destination NAT)이라고 합니다.

 

 

 

 

SNAT은 언제 사용할까요?

 

SNAT은 사설에서 공인으로 통신할 때 주로 사용됩니다. 이는 공유기처럼 PAT를 사용하는 경우에 해당될 수 있습니다. 

 

다른 경우는 보안상 SNAT을 사용하는 경우로 대외사와 통신 시 내부 IP 주소가 아니라 별도의 다른 IP로 전환해 전송함으로서 내부 IP를 숨길 수 있습니다. 

 

로드 밸런서의 구성에 따라 SNAT을 사용하기도 합니다. 

출발지와 목적지가 동일한 대역인 경우 직접적인 통신이 가능하기 때문에 로드밸런서 설정을 통해 SNAT으로 응답 트래픽

을 로드 밸런서를 거치게 할 수 있습니다.

 

DNAT은 언제 사용할까요?

 

DNAT은 목적지 아이피를 변경합니다. 따라서 로드 밸런서에서 많이 사용됩니다.

 

사용자의 요청을 로드밸런서가 많아 적절한 정책에 따라 트래픽을 다양한 목적지 서버로 전달하게 하여 부하분산을 할 수 있습니다. 

 

 

 

동적, 정적 NAT

 

출발지와 목적지의 IP를 미리 매핑해 고정해놓은 것은 정적 NAT라고 합니다.

(장비에 직접 NAT 테이블을 설정할 수 있나보다.)

 

반대로 사전에 정해지지 않고 NAT를 수행할 때 IP를 동적으로 변경하는 것을 동적 NAT라고 합니다.

동적 NAT은 출발지, 목적지 중 한 곳이 다수의 IP로 구성된 IP 풀이나 Range로 설정되어 있습니다. 
(와일드카드나  -와 같은 방식을 사용하나 보다.)

 

NAT 테이블은 설정된 시간 동안 유지되고 일정 시간 동안 통신이 없으면 다시 사라지므로 동적 NAT의 설정은 서비스 흐름을 고려해 적용해야 합니다.

 

정적 NAT은 출발지와 목적지 매핑 관계가 사전에 정의되었기 때문에 1:1 NAT이라고도 부릅니다. 

정적 NAT은 사전에 NAT 테이블이 생성되어 있기 때문에 서비스의 흐름을 고려하지 않고 NAT을 설정할 수 있습니다.

 

반응형

'느리게 변하는 지식 > Network' 카테고리의 다른 글

Load Balancer...  (0) 2023.02.15
DNS 주요 레코드  (0) 2023.02.12
FTP Active, Passive  (0) 2023.02.11
라우팅, 스위칭  (0) 2023.02.09
STP  (0) 2023.01.15

댓글