콰이엇의 개발기록

[네트워크] 7-1. NAT/PAT

by 콰이엇
고재성, 이상훈 저자님의 “IT 엔지니어를 위한 네트워크 입문” 책을 학습하고 정리한 글입니다.

 

📌 NAT (Network Address Translation, 네트워크 주소 변환)

이름 그대로 네트워크 주소를 변환하는 기술이다.

  • 기본적으로 하나의 네트워크 주소에 다른 하나의 네트워크 주소로 변환하는 1:1 변환이 기본이다.
  • IP 주소 고갈 문제를 해결하기 위해 여러 개의 IP를 하나의 IP로 변환하는 것을 공식적으로 NAPT(Network Address Port Translation, RFC2663)라고 하며, PAT(Port Address Translation)라는 용어로 더 많이 사용된다.
  • 사설 IP ↔ 공인 IP 또는 사설 IP ↔ 다른 사설 IP, 공인 IP ↔ 다른 공인 IP 전환도 NAT로 정의할 수 있다.
  • IPv4 주소를 IPv6 주소로 변환하거나 그 반대로 IP 주소를 변환하는 기술인 AFT(Address Family Translation)도 NAT 기술의 일종이다.

 

1. NAT/PAT의 용도와 필요성

1. IPv4 주소 고갈 문제 해결

IP 주소 요구를 극복하기 위해 단기, 중기, 장기의 3단계 IP 주소 보존과 전환 전략을 수립했다.

  • 단기 전략 : 서브네팅
  • 중기 전략 : NAT와 사설 IP 체계
  • 장기 전략 : IPv6

 

2. 보안 강화

외부와 통신할 때 내부 IP를 다른 IP로 변환하여 통신하면 외부로부터 사내 IP 주소 체계를 숨길 수 있다.

  • 주소 변환 후 역변환이 정상적으로 다시 수행되어야만 통신이 가능하다.
  • 내부 네트워크에서 외부 네트워크로 나가는 방향 통신은 사용하지만, 외부에서 시작해 내부로 들어오는 통신은 방어할 수 있다.

 

3. IP 주소 체계가 같은 두 개의 네트워크 간 통신 가능

📌 더블 나트 (Double NAT)

IP 대역이 같은 네트워크와 통신할 가능성이 높은 대외계 네트워크를 연결하기 위해 출발지와 도착지를 한꺼번에 변환하는 NAT 기술

  • 대외계라고 부르는 회사 간 통신에서 이런 상황이 많이 발생한다.
  • 카드, 금융 대외사와 서비스를 연동할 때 인터넷 구간을 이용해 통신하기도 하지만, 개인정보 보호와 각종 법규 준수로 아직도 별도 전용 회선이나 암호화된 별도 네트워크를 이용해 통신한다.

 

4. 불필요한 설정 변경 최소화

NAT/PAT를 이용해 내부 네트워크를 구성하고 있었다면 서버와 PC의 IP 주소 변경 없이 회선과 IDC 사업자 이전이 가능하다.

  • 내부 서버나 PC 설정 변경을 최소화
  • 특정 사업자에 종속되지 않는 유연한 인프라 스트럭쳐의 기본 요소로 비즈니스 유연성을 높임

 

5. NAT 기술은 장점만 있는 것은 아니다.

  • IP가 변환되면 장애 발생 시 문제 해결이 힘들다
  • 애플리케이션 개발자들은 복잡한 NAT 환경을 반드시 고려해야 한다.
  • NAT 기술의 복잡성을 해결하기 위한 홀 펀칭 (Hole Punching) 기술이 나오기도 했지만 더 복잡해지는 악순환이 계속되었다.

 

2. NAT 동작 방식

NAT 테이블을 통해 출발지 IP 주소와 도착지 IP 주소, 서비스 포트를 기억하여 응답 패킷이 왔을 때 NAT 테이블을 바탕으로 통신하게 된다.

 

✍🏻 NAT 동작 과정

  1. 사용자가 웹 서버 접근을 위해 패킷에 출발지 IP/포트, 목적지 IP/포트를 채워 전송한다. 출발지 서비스 포트는 임의의 서비스 포트가 할당되며 2000번 포트가 할당되었다고 가정하자.
  2. NAT 장비는 사용자가 보낸 패킷을 수신한 후 NAT 정책에 따라 외부 네트워크와 통신이 가능한 공인 IP 주소로 변경한다. 변경 전후의 IP 주소는 NAT 테이블에 저장한다.
  3. NAT 장비에서 출발지 IP 주소를 공인 IP 주소로 변경한 패킷을 목적지 웹 서버로 전송한다.
  4. 패킷을 수신한 웹 서버는 사용자에게 응답을 보낸다. 패킷 정보는 출발지 정보와 도착지 정보가 반대로 되어 사용자에게 전송한다.
  5. 웹 서버 응답 패킷을 수신한 NAT 장비는 NAT 테이블을 확인출발지 IP 주소 정보와 매핑되는 정보를 확인한다.
  6. NAT테이블에서 확인한 원래 패킷 출발지 IP로 변경하여 사용자에게 전송하여 최종적으로 패킷을 수신한다.

 

3. PAT 동작 방식

  • NAT와 거의 동일하지만 IP 주소 뿐만 아니라 서비스 포트까지 함께 변경해 NAT 테이블을 관리하여 하나의 IP 만으로 다양한 포트 번호를 사용해 사용자를 구분할 수 있다.
  • 하지만 서비스 포트의 개수는 제한되어 있어 재사용하고, 동시에 모두 사용 중이거나 재사용할 수 없을 때는 PAT가 정상적으로 동작하지 않는다.
  • 따라서, 동시 사용자가 매우 많을 때는 PAT에서 사용하는 공인 IP 주소를 IP 하나가 아닌 풀(Pool)로 구성해야 한다.
  • PAT IP가 목적지일 때는 해당 IP가 어느 IP에 바인딩되는지 확인할 수 없으므로 사용하지 않는다.

 

✍🏻 PAT 동작 과정

 

  1. 사용자가 웹서버 접근을 위해 패킷에 출발지 IP/포트, 목적지 IP/포트를 채워 전송한다. 마찬가지로 출발지 서비스 포트는 임의의 서비스 포트 2000번이 할당되었다고 가정하자.
  2. NAT 장비는 사용자 패킷을 받아 외부 네트워크와 통신 가능한 공인 IP로 변경한다. 다만 출발지에 있는 다수 사용자가 동일한 공인 IP로 변환되어야 하므로 패킷의 주소 변경 시 출발지 IP 뿐만 아니라 출발지의 서비스 포트도 변경하고, NAT 장비가 이 변경 정보를 NAT 테이블에 기록한다.
  3. NAT 장비에서 변경된 출발지 IP 주소와 서비스 포트로 패킷을 재작성해 웹 서버로 전송한다.
  4. 패킷을 수신한 웹 서버는 사용자에게 출발지와 도착지 정보를 반대로 변경하여 패킷을 전송한다.
  5. 웹 서버 응답 패킷을 수신한 NAT 장비는 NAT 테이블을 통해 패킷의 목적지 IP 주소와 서비스 패킷을 확인한다.
  6. 확인한 목적지 IP 주소와 서비스 포트로 패킷을 재작성 후 사용자에게 전송하여 최종적으로 패킷을 수신한다.

 

4. SNAT & DNAT

NAT는 트래픽이 출발하는 시작 지점을 기준으로 두 가지로 구분한다.

 

📌 SNAT (Source NAT)

출발지 주소를 변경하는 NAT

  • 사설에서 공인으로 통신할 때
  • 보안상 회사에서 다른 대외사와 통신 시 내부 IP 주소를 숨길 때
  • 로드 밸런서 구성에 따라 변경

 

📌 DNAT (Destination NAT)

도착지 주소를 변경하는 NAT

  • 로드 밸런서에 많이 사용
  • 사내가 아닌 대외망과의 네트워크 구성

 

5. 동적 NAT & 정적 NAT

📌 정적 NAT

출발지와 목적지의 IP를 미리 매핑해 고정해놓은 NAT

  • 1:1 NAT라고 부르기도 하며 방향성 없이 서비스 흐름을 고려하지 않고 NAT를 설정할 수 있다.

📌 동적 NAT

출발지나 목적지 어느 경우든 사전에 정해지지 않고 NAT를 수행할 때 IP를 동적으로 변경하는 것

  • 출발지와 목적지가 모두 정의된 것이 아니라 다수의 IP 풀에서 정해지므로 둘 중 한 곳이 다수의 IP로 구성된 IP 풀이나 레인지(Range)로 설정되어 있다.
  • NAT 타임아웃으로 NAT 테이블의 값 정보가 사라질 수 있으므로 서비스 흐름을 고려해 적용해야 한다.

 

참고자료

블로그의 정보

콰이엇의 개발기록

콰이엇

활동하기