네트워크

NAT(Network Address Translation)와 PAT(Port Address Translation)

우잉~ 2024. 12. 10. 23:48

NAT는 Network Address Translation의 약자로, 이름 뜻 그대로 네트워크 주소를 변환하는 기술이다.

PAT도 Port Address Translation의 약자로, NAT와 비슷하게 Port를 다른 Port를 주소로 변환한다.

보통 사설 IP를 공인 IP 주소로 전환하는 경우에 많이 쓰이지만,

사설 → 공인/사설 → 사설/공인 → 공인 또한 가능하다.

1:1 변환뿐만 아니라 여러 개의 IP를 하나의 IP로 변환하기도 한다.

* Ipv4 → Ipv6 변환 기능을 수행하는 AFT(Address Family Translation)도 NAT 기술의 일종이다.

NAT 말고도 비슷한 기술이 하나 있는데, 공식 용어는 NAPT(Network Address Port Translation)지만 실무에서는 PAT라는 용어가 더 많이 사용된다고 한다.

 

 

왜 굳이 IP나 Port를 변환해서 통신을 하는 것일까?

 

첫 번째로 인터넷이 대중화되면서 IP가 부족해지는 현상이 발생했다.

이러한 IP 부족 현상을 극복하기 위해서 대안 제시를 단기/중기/장기로 전략을 확립했는데 그 중 중기 전략이 NAT를 사용하는 것이었다. 실제로 NAT를 사용하면서 부족한 IPv4 주소의 보존에 크게 기여를 했다.

외부에 공개해야 하는 서비스에 대해서는 공인 IP(Public IP)를 사용하고, 외부에 공개할 필요가 없는 일반 사용자의 PC, 기타 장비에는 사설 IP(Private IP)를 사용하여 필요한 곳에만  IP를 사용하도록 하였다. → 꼭 필요한 곳에만 IP를 사용함으로써 효율적으로 IPv4를 사용하면서 아이피 부족 현상을 막을 수 있게 됐다.

 

두 번째는 외부와 통신할 때 실제 내부 IP를 다른 IP로 변환하여 통신함으로써 보안을 강화하기 위해 사용된다.

NAT 변환으로 인해 내부의 IP를 숨길 수 있다.

 

NAT는 주소를 변환한 뒤 역변환이 이루어져야만 다시 통신할 수 있는 구조이다.

그래서 NAT의 주요 특징 중 하나는 기본 설정이 내부 → 외부 통신은 전부 Allow 처리하지만, 외부 → 내부 통신은 전부 Deny 처리한다.

* 방화벽은 NAT와 반대이다!

 

세 번째는 주소 변환을 통해 IP 주소 체계가 같은 두 네트워크를 통신을 가능하게 한다는 점이다.

원래는 IP 주소가 중복되면 통신이 불가능하다! → IP는 식별 가능한 유일한 주소이기 때문이다. 동일할 경우 서로 통신할 수가 없다.

IP 대역이 중복되었기 때문에 통신이 불가능하다

 

만약 회사 A사, B사가 모두 같은 사설 IP를 사용할 경우, 통신할 수가 없게 된다.

그래서 출발지와 도착지를 한꺼번에 변환하는 더블 나트(Double NAT) 기술을 사용하게 된다.

 

 

[NAT/PAT를 사용하는 이유 정리]

  1. IPv4 주소 고갈 문제 해결
  2. 보안 강화
  3. 동일한 IP 주소 체계 간의 통신

 

※ 물론 IP를 변환한 상태에서 장애가 발생했을 경우에는 문제를 해결하기 힘들다는 단점이 존재한다!

 

 

 

NAT의 동작 방식

NAT는 사용자의 IP와 변환된 IP를 NAT 테이블에 저장하여 통신할 때 이를 참조하게 된다.

  • 사용자 IP: 1.1.1.1
  • 사용자 임의 포트 : 4000
  • 웹 서버 IP: 2.2.2.2
  • 웹 서버 포트: 80
  1. 웹 서버에 접근하기 위해 출발지의 IP와 목적지의 IP/포트를 채워 패킷을 보낸다. * 사용자 포트는 임의로 할당
  2. NAT 정책에 따라 외부 네트워크와 통신할 수 있는 공인 IP로 주소를 변경하고 NAT 테이블에 저장
  3. NAT 장비에서 출발지 주소(11.11.11.11) 를 변경하여 목적지 웹 서버로 전송
  4. 웹 서버에서 응답을 보내며, 이때 목적지 IP는 NAT가 변환한 주소인 11.11.11.11을 채워 패킷 패킷 전송
  5. NAT 장비는 NAT 테이블을 확인하여 목적지 IP에 대한 원래 IP 주소(1.1.1.1)를 확인
  6. 패킷을 실제 출발지 IP(1.1.1.1)와 포트(4000)으로 변경하여 전송

NAT 동작

 

+ NAT는 동적 NAT와 정적 NAT로 구분할 수 있다.

  정적 NAT 동적 NAT
정의 출발지/목적지 IP를 미리 매핑하여 고정해놓은 NAT NAT를 수행할 때 IP를 동적으로 변경하는 것
NAT 설정 1:1 1:N, N:1, N:M
NAT 테이블 사전 생성 NAT 수행시 생성
NAT 테이블 타임아웃 없음 동작
NAT 수행 정보 별도 필요 없음(설정 = NAT 내역) 실시간으로만 확인하거나, 별도 변경 로그 저장이 필요

 

PAT의 동작 방식

PAT는 NAT와 거의 유사하나 NAT 테이블에 IP와 서비스 포트 모두를 저장한다.

  • 사용자 IP: 1.1.1.1
  • 사용자 임의 포트 : 4000
  • 웹 서버 IP: 2.2.2.2
  • 웹 서버 포트: 80
    1. 웹 서버에 접근하기 위해 출발지의 IP와 목적지의 IP를 채워 패킷을 보낸다. * 사용자 포트는 임의로 할당
    2. NAT 정책에 따라 외부 네트워크와 통신할 수 있는 공인 IP로 주소를 변경하고 NAT 테이블에 저장
    3. NAT 장비에서 출발지 주소(11.11.11.11)를 변경하여 목적지 웹 서버로 전송
    4. 웹 서버에서 응답을 보내며, 이때 목적지 IP는 NAT가 변환한 주소인 11.11.11.11을 채워 패킷 패킷 전송
    5. NAT 장비는 NAT 테이블을 확인하여 목적지 IP에 대한 원래 IP 주소(1.1.1.1)를 확인
    6. 패킷을 실제 출발지 IP(1.1.1.1)로 변경하여 전송

PAT 동작

 

PAT는 하나의 IP에 서비스 포트까지 함께 변경하여 NAT 테이블을 관리하게 된다.

하나의 IP에 여러 서비스 포트를 사용하여 사용자를 구분할 수 있다. * 단, 서비스 포트의 수는 제한되어 있기 때문에 재사용된다.

동시 사용자가 매우 많을 경우에는 PAT에서 사용하는 공인 IP 주소를 Pool로 구성해야 한다.

 

PAT는 다수의 IP가 있는 출발지 → 목적지로 갈 때는 NAT 테이블이 생성되기 때문에 정보를 참조할 수 있지만, PAT가 목적지 → 출발지 요청을 보낼 때는 목적지 IP가 어느 IP에 바인딩되는지 확인할 수 있는 NAT 테이블이 존재하지 않기 때문에 사용할 수 없다. → 정리하자면 결국 내부 → 외부는 NAT 테이블을 생성하기 때문에 통신이 가능하지만 외부 → 내부 통신은 참조할 NAT 테이블이 없기 때문에 통신이 불가능하단 뜻

 

 

+ SNAT와 DNAT

NAT는 어떤 IP를 변환하는지에 따라서 2가지로 구분할 수 있다.

SNAT(Source NAT)와 DNAT(Destination NAT)이다.

각각 출발지 주소를 변경하는지, 목적지 주소를 변경하는지에 따라 나눌 수 있다.

SNAT와 DNAT는 트래픽이 출발하는 시작 시점을 기준으로 구분할 수 있다.

 

SNAT를 사용하는 경우

  • 사설 → 공인 통신에 사용
  • 대외에 내부 실제 IP 주소를 숨기기 위해서 사용(보안 목적)
  • 로드 밸런서 구성에 따른 사용

 

DNAT를 사용하는 경우

  • 로드 밸런서에서 사용: 사용자가 로드 밸런서의 VIP로 서비스를 요청하고, 로드 밸런서에서 서비스 VIP를 로드 밸런싱될 서버의 실제 IP로 변환하여 내보냄
  • 대외망과 네트워크를 구성하기 위해 사용