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

NAT (Network Address Translation)

  • 1개의 실제 공인 IP 주소에, 다량의 가상 사설 IP 주소를 할당 및 매핑하는,
  • 1:1 또는 1:多 주소 변환(Address Translation) 방식
  • NAT 및 DHCP 비교
  • NAT: 사설 IP 주소공간을 별도로 정하고는, IP 주소변환에 중점을 둠
    • 기본적으로, 인터넷 상에 동일 IP 주소를 재사용할 수 있게 하는 것
  • DHCP : 기확보된 공인 IP 주소 Pool를 집단 공유하며, 사용후 반납
    • 기본적으로, 제한된 IP 주소를 공유케 하여 절약하려는 것

NAT의 사용 이유 및 유의점

  • IPv4 주소 고갈 및 라우팅 테이블 대형화(Routing Scalability)에 대한 해소책
  • 공인 IP 주소의 효율적 공유 및 절약
  • 공인 IP 주소 사용시 ISP社를 바꿀 때 마다, 모든 컴퓨터 주소를 바꿔야하는 등의 단점 해소
  • 또한, 주소변환을 통해 내부 사설망 보안 및 Load Balancing 등도 가능
  • 통상, 방화벽 등과 결합되어 함께 기능 수행
  • 주소변환 규칙을 외부에서 알 수 없으므로 내부 망에 대한 정보가 외부에 노출 안됨
  • 주로, 외부망과 사설망 간에 연결점에 있는 라우터에서 수행됨
  • 그러나, NAT는 IP 주소 변환 뿐만 아니라 IP 주소, TCP Checksum, UDP Checksum 등 서로 관련된 많은 부분도 함께 변경해야 하므로,
  • 매 연결 단위로 연결 상태 정보를 필요로 하고,
  • 다수의 프로토콜 계층에 걸쳐 동작해야 할 필요가 있는 등 FTP, SIP 등에서 문제 발생

FTP, SIP - FTP: File Transfer Protocol, 파일 전송 프로토콜 - FTP는 데이터 전송에 두 가지 연결을 사용 1. 제어 연결(control connection) 1. 데이터 연결(data connection) - 일반적인 FTP는 제어 연결에서 명령을 주고받고 데이터 연결에서 파일을 전송 - NAT는 주로 TCP 연결을 관리하므로, FTP의 데이터 연결에서 문제가 발생할 수 있다. - SIP: Session Initiation Protocol, 세션 개시 프로토콜 - SIP은 VoIP(Voice over IP)와 같은 멀티미디어 통신을 위한 프로토콜 - SIP은 두 호스트 간에 세션을 설정하고 해제하기 위해 여러 TCP 및 UDP 포트를 사용할 수 있다 - NAT는 IP 주소 및 포트 번호를 변환하기 때문에 SIP의 동적인 포트 사용에 대해 문제를 일으킬 수 있다

NAT의 주요 기능

  • IP Masquerading (IP 위장, IP 마스커레이드)
  • 외부망에서 볼 때 내부망 여러 호스트들이 단일 NAT 서버 하나로만 보임
    • (외부) ↔ (NAT 1대) : (多 호스트들)
  • 단 하나의 공인 IP로 내부 모든 PC가 대표 IP 주소를 공유 사용
  • IP 계층,전송 계층 모두에서 변환(맵핑)으로, 마치 가면(위장,Masquerading) 효과 있음
  • Port Forwarding (포트 포워드)
  • 트랜스포트계층에서, 내부망 여러 호스트들이 외부망과 각각 별도로 연결짓게 할 수 있음
    • 서비스 포트 번호 별로 내부의 사설 IP로 지정된 호스트로 전달
  • Load Balancing
  • 각 포트별로 트래픽을 균형있게 함
  • 패킷 필터링

패킷 필터링(packet filtering) - 특정 송신원 주소나 발신원 주소 등을 가진 패킷의 통과를 제한하는 것 - 라우터나 브리지 또는 칩입 차단 시스템(firewall) 등에서 사용하는 기술이다 - 송신자/수신자의 IP 주소나 TCP/UDP 포트 번호를 근거로 패킷 필터링하는데 고속으로 필터링되지만 안전성은 비교적 취약한 편이다

NAT의 방식 구분

  • Basic NAT 방식 (IP 주소변환 만 수행)
  • 정적 NAT 방식
    • 수동으로 외부 공인 IP와 사설 IP를 매핑 (1:1)
  • 동적 NAT 방식
    • 사설 IP 주소를 풀(Pool)화하여 공인 주소로 자동 매핑 (1:多)
  • NAPT 또는 PAT 방식
  • IP 주소 뿐만 아니라 포트 번호 등까지도 포함시켜 내부 호스트를 구분

NAPT (Network Address Port Translation) 또는 PAT (Port Address Translation), 그리고 문제점

  • 원래는, (Basic NAT)
  • IP 주소 변환(공인 IP 주소 → 사설 IP 주소) 만을 이용하는 기본적인 NAT 방식 이었음
    • 공인 IP 주소: 인터넷이 사용자를 찾을 수 있도록 사용자를 식별하는 역할
    • 사설 IP 주소: 사설 네트워크에서 다른 장치와 안전하게 연결하기 위해 사용,
    • 동일한 네트워크의 각 장치에는 고유한 사설 IP 주소가 할당
  • 즉, IP 헤더의 목적지와 출발지 주소만 변경하고, IP 패킷 내부에 다른 어떤 처리도 안함
  • 그러다가, (NAPT 또는 PAT)
  • TCP, UDP 헤더 내 포트 번호 변환을 통해 (IP 주소 및 포트 번호를 모두 함께 결합시킴),
  • 하나의 IP 주소 및 여러 포트 번호에 의해,
  • 여러 내부 호스트 주소 및 포트를 연결이 가능해짐 (IP Masquerading)
  • 이에따라, 구현이 복잡해지는 등 문제점 발생
  • 프로토콜,응용 마다 NAT 구현이 달라짐
  • NAT 자신이 연결 마다 내부 상태 정보(내부 호스트 IP 주소,포트 번호 등)를 보존 필요
  • e.g. SIP를 이용한 어플리케이션 등

Twice NAT 방식

  • 출발지 주소,목적지 주소 모두를 변환하는 방식
  • e.g. 동일 회사 내 멀리 떨어진 두 지사 간에 인터넷 경유 연결 등

참고

links

social