[네트워크] NAT(Network Address Translation)

oldshoe·2024년 6월 12일

네트워크

목록 보기
23/34

NAT(Network Address Translation)

NAT란, 로컬 네트워크 상의 모든 디바이스들이 외부 네트워크와 통신할 때 하나의 IPv4 주소를 공유하는 것이다.

위를 보면 로컬 네트워크 내에서는 서로 다른 주소를 가지고 있지만, 이 로컬 네트워크 안에 속하는 호스트들이 다른 외부의 네트워크의 호스트와 통신할 때는 하나의 IPv4 주소를 사용한다.

위 그림을 보면 10.0.0.1, 10.0.0.2, 10.0.0.3의 서로 다른 주소를 가지고 있음에 불구하고, 10.0.0/24의 동일한 주소를 이용한다.

NAT의 장점

  • ISP으로 부터 하나의 IP만 받아도 모든 디바이스가 공유할 수 있음
  • 내부적으로 발생한 주소 변경 사항을 외부 네트워크에 알릴 필요가 없음
  • 로컬 네트워크 상의 디바이스는 외부 네트워크에서 직접 접근하거나 볼 수 없으므로 보안이 우수

NAT의 동작 구조

NAT 방식을 사용하는 라우터는 3가지 기능적 오구사항이 존재한다.

  • 외부로 나가는 데이터그램에 대해 IP 주소를 NAT address로 변경, 포트 번호도 새로운 포트 번호로 변환하는 기능이 필요
  • 로컬 네트워크 내에서 어떤 IP address를 사용하는 호스트가 어떤 포트 번호를 할당받았는지 기억해야 함
  • 외부에서 로컬로 들어오는 데이터그램에 대해 기억해 놓은 IP 주소 및 포트 번호 테이블을 보고 올바른 IP 주소 및 포트 번호로 변환할 수 있어야 함

위를 보고 예시를 확인해보면,

  1. 먼저 로컬 네트워크에서 10.0.0.1 IP, 3345 포트를 사용하는 호스트가 128.119.40.186 으로 데이터그램을 보낸다. 이는 NAT 라우터로 전달된다.

  2. NAT 라우터는 이 데이터그램에서 source IP address 부분을 NAT IP인 138.76.29.7 로 변경하고, 새 포트 번호인 5001 번으로 변경한다. 그리고 NAT translation table에 10.0.0.1 IP, 3345 포트를 사용하는 호스트가 5001번 포트를 사용하고 있다는 사실을 기록한다.

  3. 외부에서 destination이 138.76.29.7 IP (NAT IP에 해당), 5001번 포트번호가 기록된 데이터그램이 들어오면 포트 번호를 table에서 찾은 후 10.0.0.1 IP, 3345 포트를 사용하는 호스트가 목적지임을 알게 된다.

  4. 데이터그램의 destination 정보를 10.0.0.1 IP, 3345 포트로 변경하여 올바른 호스트에게 전달한다.

profile
toomuxi : There are many things in the world that I want to do

0개의 댓글