NAT: Network Address Translation
- 라우터는 network address translation을 통해 로컬 네트워크를 생성할 수 있다

- 소스 또는 목적지가 로컬 네트워크에 있는 데이터그램은 소스 및 목적지 주소로
10.0.0/24 주소를 사용한다 (기본 방식과 동일)
- 로컬 네트워크를 떠나는 모든 데이터그램은 동일한 NAT IP 주소(
138.76.29.7)를 소스 주소로 가지며, 서로 다른 소스 포트 번호를 사용한다
Motivation
Motivation: 외부 세계의 입장에서, 로컬 네트워크는 단 하나의 IP 주소만 사용한다.
- 따라서 ISP(Internet Service Provider)로부터 주소 범위를 할당받을 필요가 없다: 모든 장치에 대해 하나의 IP 주소만 필요하다
- 로컬 네트워크에 있는 장치의 주소를 변경할 때 외부 세계에 알릴 필요가 없다.
- ISP를 변경해도 로컬 네트워크의 장치 주소를 변경할 필요가 없다.
- 로컬 네트워크 내부의 장치들은 외부 세계에서 명시적으로 주소화될 수 없으며, 가시성이 없다 (보안상의 이점).
기능
NAT 라우터는 다음 기능을 구현해야 한다.
- Outgoing datagram
모든 나가는 데이터그램의 (소스 IP 주소, 포트 번호)를 (NAT IP 주소, 새로운 포트 번호)로 대체
- 원격 클라이언트/서버는 (NAT IP 주소, 새로운 포트 번호)를 목적지 주소로 사용하여 응답을 보냄
- NAT 변환 테이블에 모든 (소스 IP 주소, 포트 번호)와 (NAT IP 주소, 새로운 포트 번호) 변환 쌍을 저장
- 즉, 원본 소스 정보와 변환된 NAT 정보를 매핑하여 저장
- Incoming datagram
모든 들어오는 데이터그램의 (NAT IP 주소, 새로운 포트 번호)를
목적지 필드에서
NAT 테이블에 저장된 (소스 IP 주소, 포트 번호)로 대체

- NAT translation table에, WAN / LAN side 주소가 매핑되어 있다
- 로컬네트워크의 호스트가 외부로 데이터그램을 전송
- NAT 라우터가 데이터그램의 source address와 Port number를 바꾼다 (LAN→WAN)
- 원래 소스 주소, 포트:
10.0.0.1:3345 (LAN)
- 변환된 소스 주소, 포트:
138.76.29.7:5001 (WAN)
- 외부로부터 응답이 도착한다
- NAT 라우터가 응답 데이터그램의 목적지 주소를 로컬네트워크의 원래 주소로 변환한다
- 원래 목적지 주소:
138.76.29.7:5001 (WAN)
- 변환된 목적지 주소:
10.0.0.1:3345 (LAN)
사설 IP 주소 범위
- 10.0.0.0 - 10.255.255.255 (클래스 A)
- 172.16.0.0 - 172.31.255.255 (클래스 B)
- 192.168.0.0 - 192.168.255.255 (클래스 C)
- 로컬 네트워크에서 사용됨
- 공용 주소로 사용되지 않음
사설 IP는 유니크하지 않다.
Port Forwarding
- NAT의 문제점은 서버가 로컬네트워크 내부에 있을 때 발생한다
- 클라이언트가 서버를 주소화할 수 없다
- NAT 라우터는 특정 목적지포트로 들어오는 패킷을 특정 로컬 IP 주소로 포워딩하도록 수동으로 구성되어야 한다.