호우동의 개발일지

Today :

article thumbnail

NAT(네트워크 주소 변환)이 필요하게 된 배경

  • SOHO(small office, home office) 네트워크의 확산
    →ISP는 SOHO에 관한 LAN 설치 시, 모든 SOHO의 IP 장치를 수용할 수 있는 주소 범위를 할당해야 함
    • SOHO의 IP 장치 - 전화, 태블릿, 게임 장치, IP TV, 프린터 등

  • 네트워크가 현저히 커지면 큰 주소블록이 할당되어야 하는데, 이러면 다양한 케이스의 문제 발생
    • ISP가 할당해야 하는 SOHO 네트워크의 해당 주소 범위에 인접 부분을 할당한 경우
    • 특정 홈 네트워크 소유자가 IP 주소가 어떻게 관리되는지 알고자 하는 경우

  • 이런 상황에서 네트워크 주소 변환(NAT)으로 주소를 할당할 수 있다.

 


NAT 가능 라우터

네트워크 주소 변환(NAT)
네트워크 주소 변환(NAT)

  • NAT 가능 라우터는 홈 네트워크의 일부인 인터페이스를 갖는다.
    • 홈 네트워크의 4개 인터페이스 모두 같은 네트워크 주소 10.0.0.0/24를 갖는다.

  • 주소 공간 10.0.0.0/8
    • 사설망(private network), 사설 개인 주소를 갖는 권역(realm)을 위해 예약된 IP 주소 공간 중 하나
      • 그림에 있는 홈 네트워크가 사설 개인 주소를 갖는 권역의 예시

 


사설 개인 주소를 갖는 권역(realm)

  • 네트워크 주소들이 그 네트워크 내부에 있는 장비에게만 의미가 있는 그런 네트워크
  • 사설 개인 주소를 갖는 권역은 주어진 홈 네트워크 내부에서만 의미를 가진다.
    • 수십 만개의 홈 네트워크 중, 자신만의 네트워크 공간을 가지고 서로 패킷을 송신할 수 있다.
    • 하지만, 홈 네트워크를 벗어나 글로벌 인터넷으로 가는 패킷 전달로는 이 주소를 사용할 수 없다.

  • 사설 주소에서 패킷의 유일한 주소가 필요한 인터넷과의 송수신에서는 어떻게 처리해야 하나?
    → NAT을 통해 글로벌 인터넷과의 송수신이 가능하다.

 


NAT 가능 라우터의 특징

  • NAT 가능 라우터는 외부 세계로는 라우터로 보이지 않는다.
    → 대신 하나의 IP 주소를 갖는 하나의 장비로 동작

  • 본질적으로 NAT 가능 라우터는 외부에서 들어오는 홈 네트워크의 상세한 사항을 숨긴다.
    • 홈 네트워크 컴퓨터가 주소를 얻고, 라우터가 한 IP 주소를 얻는 곳
      • 라우터가 주소를 얻는 법 → ISP의 DHCP 서버로부터 주소를 얻는다.
      • 홈 네트워크 컴퓨터가 주소를 얻는 법
        NAT-DHCP-라우터로 제어되는 홈 네트워크의 주소 공간에서 DHCP 서버를 실행하여 제공

 

 


NAT 변환 테이블

  • WAN에서 같은 목적지 IP 주소를 갖는 NAT 라우터에 모든 데이터그램이 도착할 경우
    • 라우터가 주어진 데이터그램을 전달하는 내부 호스트를 알 수 있는 방법은?
      NAT 라우터에서 NAT 변환 테이블(NAT translation table)을 사용
      • 해당 테이블에 IP 주소와 포트 번호를 포함하는 것

    • 여기서 말하는 NAT 라우터는 구체적으로 NAT 라우터의 WAN 쪽 인터페이스를 뜻한다.

 


해당 그림에서의 예시

네트워크 주소 변환 (NAT)
네트워크 주소 변환 (NAT)

  • 가정
    • 사용자 입장에서 호스트 10.0.0.1인 홈 네트워크가
      IP 주소 128.119.40.186인 웹 서버(포트 80)에게 웹 페이지 요청

  • 과정
    1. 호스트 10.0.0.1은 임의의 출발지 포트 번호 3345를 할당하고 LAN에게 데이터그램을 보냄
    2. NAT 라우터는 데이터그램을 받아서, 데이터그램에 대한 새로운 출발지 포트 번호 5001을 생성
    3. WAN 쪽 IP 주소 138.76.29.7과 출발지 IP 주소를 변경한다.
    4. 새 출발지 포트 번호 5001과 원래 출발지 포트 번호 3345를 변경한다.
      • 새 출발지 포트 번호를 생성할 때, NAT 라우터는 NAT 변환 테이블에는 없는
        모든 출발지 포트 번호를 선택할 수 있다.
        ← 포트 번호의 필드가 16비트로 길다.
        • NAT 프로토콜은 라우터에 대한 WAN 쪽 한 IP 주소에 대해 60,000개 이상의 동시 접속 지원

    5. 라우터 내부의 NAT에는 NAT 변환 테이블의 엔트리도 추가된다.
    6. NAT 라우터에 의해 처리된 HTTP 요청이 들어있는 데이터그램의 도착을 웹 서버는 의식하지 못함
      → 웹 서버는 NAT 라우터의 IP 주소인 목적지 주소와 5001인 목적지 포트 번호에 대해 응답

    7. 이 데이터그램이 NAT 라우터에 도착
    8. 라우터는 홈 네트워크 브라우저의 IP주소(10.0.0.1)와 목적지 포트 번호(3345)로부터
      얻은 목적지 IP 주소와 목적지 포트 번호를 사용하여 NAT 변환 테이블을 작성

    9. 라우터는 데이터그램 목적지 주소와 포트 번호를 다시 기록하고, 홈 네트워크 내부로 데이터그램을 전달

 

 


NAT 사용에 반대하는 측의 주장


포트 번호가 프로세스 주소 지정에 사용된다.

  • 포트 번호가 호스트 주소 지정이 아닌 프로세스 주소 지정에 사용된다는 것이 반대의 주장
  • 서버 프로세스는 잘 알려진 포트 번호에서 요청이 올 때까지 기다린다.
    또한 P2P 프로토콜의 피어는 서버로서의 역할을 할 때 들어오는 연결을 수락해야 함
    → 홈 네트워크에서 실행되는 서버에 문제가 발생할 수 있다.

 


구성 순수주의자들의 철학적 논쟁

  • 구성 순수주의자들은 NAT에 반대하여 많은 철학적 논쟁을 제기했음
    → NAT은 원칙을 위반한다는 주장

  • 라우터는 네트워크 계층 장치를 의미하며, 네트워크 계층까지만 패킷을 처리하는 역할임
    → 근데 NAT은 IP 주소를 수정하는 노드를 간섭하고, 포트 수보다 훨씬 많은 수의 호스트와 직접 소통함