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

네트워크 주소 변환(NAT, Network Address Translation)은 IP 패킷의 TCP/UDP 포트 번호와 소스 및 목적지의 IP 주소를 재기록하면서 라우터를 통해 네트워크 트래픽을 주고받는 기술이다.

NAT 를 이용하는 이유는 대개 사설 네트워크에 속한 여러 개의 호스트가 하나의 공인 IP 주소를 사용하여 인터넷에 접속하기 위함으로, 등록되지 않은 IP 주소를 사용하는 사설 IP 네트워크가 인터넷에 연결될 수 있도록 한다.

일반적으로 두 네트워크를 함께 연결하는 라우터에서 작동하며, 패킷이 다른 네트워크로 전달되기 전에 내부 네트워크의 비공개 (전역적으로 고유하지 않음) 주소를 올바른 주소로 변환한다.

Network address translation between a private network and the Internet
Source: https://en.wikipedia.org/wiki/Network_address_translation

NAT의 작동 원리

NAT 장비는 IP 패킷의 출발지와 목적지 IP 주소를 변환하고, 필요한 경우 포트 번호도 변환한다.
이를 통해 내부 네트워크의 여러 기기가 하나의 공인 IP 주소를 공유하며 외부 인터넷과 통신할 수 있다.

NAT의 동작 과정

네트워크 주소 변환(NAT)의 동작 과정은 다음과 같다:

  1. 내부 네트워크에서 패킷 전송:

    • 내부 호스트(예: 10.10.10.10)가 외부 서버(예: 20.20.20.20:80)로 패킷을 전송한다.
    • 출발지 IP와 포트(예: 10.10.10.10:2000), 목적지 IP와 포트(20.20.20.20:80)가 패킷에 포함된다.
  2. NAT 장비에서의 주소 변환:

    • NAT 장비가 패킷을 수신하고 NAT 정책에 따라 주소를 변환한다.
    • 출발지 IP를 공인 IP(예: 11.11.11.11)로 변경한다.
    • 변경된 정보를 NAT 테이블에 저장한다.
  3. 변환된 패킷 전송:

    • NAT 장비가 변환된 패킷을 외부 네트워크로 전송한다.
  4. 외부 서버의 응답:

    • 외부 서버가 응답 패킷을 NAT 장비의 공인 IP(11.11.11.11)로 전송한다.
  5. NAT 장비에서의 역변환:

    • NAT 장비가 응답 패킷을 수신하고 NAT 테이블을 참조한다.
    • 목적지 IP를 원래의 내부 IP(10.10.10.10)로 변경한다.
  6. 내부 호스트로 패킷 전달:

    • 변환된 패킷을 내부 네트워크의 원래 호스트로 전달한다.

이 과정을 통해 NAT는 내부 네트워크의 사설 IP 주소를 외부 네트워크의 공인 IP 주소로 변환하여 통신을 가능하게 한다.

NAT의 주요 유형

  1. Static NAT (정적 NAT)
    • 하나의 사설 IP 주소가 하나의 공인 IP 주소와 1:1로 매핑된다.
    • 주로 웹 서버나 메일 서버처럼 고정된 공인 IP가 필요한 경우에 사용된다.
  2. Dynamic NAT (동적 NAT)
    • 여러 개의 사설 IP 주소가 공인 IP 주소 풀과 동적으로 매핑된다.
    • 사설 네트워크의 호스트가 외부와 통신할 때마다 사용 가능한 공인 IP를 할당받는다.
  3. PAT (Port Address Translation) 또는 NAPT (Network Address Port Translation)
    • 가장 널리 사용되는 NAT 방식.
    • 여러 사설 IP 주소가 하나의 공인 IP 주소를 공유하며, 포트 번호로 구분된다.
    • 일반 가정이나 소규모 사무실에서 흔히 사용되는 방식.

NAT의 장점

  1. IP 주소 절약: 하나의 공인 IP 주소로 여러 대의 호스트가 인터넷에 접속할 수 있다.
  2. 보안 강화: 내부 네트워크 주소를 외부에 노출하지 않아 보안성이 향상된다.
  3. 네트워크 확장성: 로컬 네트워크에 새로운 장비를 쉽게 추가할 수 있다.
  4. ISP 변경 용이성: 공인 IP 주소만 변경하면 되므로 ISP 변경이 쉽다.

NAT의 단점

  1. 복잡성 증가: NAT로 인해 네트워크 구성과 관리가 더 복잡해진다.
  2. 성능 저하: 주소 변환 과정에서 네트워크 지연이 발생할 수 있다.
  3. 특정 애플리케이션 호환성 문제: NAT는 IP 헤더만 수정하므로 일부 애플리케이션에서 문제가 발생할 수 있다.
  4. 보안 프로토콜 문제: IPsec과 같은 프로토콜은 NAT로 인한 헤더 변경을 탐지하여 문제가 발생할 수 있다.
  5. 클라이언트 접근 제한: 내부 네트워크의 호스트에 외부에서 직접 접근하기 어려워진다.

NAT 트래버설

NAT(Network Address Translation) 환경에서 P2P(Peer-to-Peer) 통신을 가능하게 하는 기술이다.

주요 NAT 트래버설 기술

  1. STUN (Session Traversal Utilities for NAT)

    • STUN은 클라이언트가 NAT 장치의 외부 IP 주소와 포트를 알아내는 데 사용된다.
    • 클라이언트는 STUN 서버에 요청을 보내고, 서버는 클라이언트의 외부 IP 주소와 포트를 반환한다.
    • 이를 통해 클라이언트는 외부 서버와의 연결을 설정할 수 있다.
  2. TURN (Traversal Using Relays around NAT)

    • TURN은 직접 연결이 불가능한 경우 중계 서버를 통해 데이터를 전송한다.
    • 클라이언트는 TURN 서버에 연결하고, 서버가 클라이언트와 외부 서버 간의 데이터를 중계한다.
    • 대역폭을 소모하지만, NAT 환경에서의 연결 문제를 해결하는 데 유용하다.
  3. ICE (Interactive Connectivity Establishment)

    • ICE는 STUN과 TURN을 결합하여 NAT 환경에서의 연결을 최적화한다.
    • 여러 후보 경로를 수집하고, 가장 적합한 경로를 선택하여 연결을 설정한다.

NAT 트래버설의 작동 과정

  1. 클라이언트는 먼저 STUN 서버를 사용하여 자신의 공인 IP 주소와 포트를 확인한다.
  2. 직접 연결이 불가능한 경우, TURN 서버를 통해 데이터를 중계한다.
  3. ICE 프로토콜은 STUN과 TURN을 포함한 여러 연결 방법을 시도하고, 최적의 경로를 선택한다.
  4. 선택된 경로를 통해 P2P 통신이 이루어진다.

NAT 트래버설 기술은 VoIP, 온라인 게임, 화상 회의 서비스 등 실시간 통신이 필요한 애플리케이션에서 널리 사용된다.

NAT와 IPv6

IPv6는 거의 무한한 주소 공간을 제공하여 NAT의 주요 목적인 IP 주소 부족 문제를 해결할 수 있다.
그러나 현재 IPv4와 IPv6가 공존하는 상황에서 NAT는 여전히 필요하며, 향후에도 일부 환경에서 계속 사용될 것으로 예상된다.

결론적으로, NAT는 IP 주소 부족 문제를 해결하고 네트워크 보안을 강화하는 중요한 기술이지만, 복잡성 증가와 일부 애플리케이션의 호환성 문제 등의 단점도 있다.
네트워크 환경과 요구사항에 따라 NAT의 사용 여부와 방식을 신중히 고려해야 한다.

NAT의 실제 구현과 응용

  1. 가정용 라우터
    • 대부분의 가정용 라우터는 PAT를 구현하여 여러 기기가 하나의 인터넷 연결을 공유할 수 있게 한다.
  2. 기업 네트워크
    • 방화벽과 결합하여 보안을 강화하고 네트워크 주소 관리를 효율화한다.
  3. 클라우드 환경
    • 클라우드 서비스에서도 NAT를 활용하여 가상 머신들의 네트워크 연결을 관리한다.

참고 및 출처

NAT

Public IP & Private IP