CS/Network

[Network] 네트워크 계층 : NAT(Network Address Transmission)

Henu 2021. 12. 5. 22:40

모든 IP 활용 장치에는 IP 주소가 필요하다.

SOHO(Small Office, Home Office)네트워크의 확산으로 인해서, SOHO가 장치를 연결하기 위해 LAN을 설치할 때마다 ISP는 모든 SOHO의 IP장치(전화, 태블릿, 게임기, IP TV ..)를 수용할 수 있는 주소 범위를 할당해야 한다. SOHO가 커지면 큰 주소 블록이 할당되어야 한다.

 

하지만 ISP가 이미 SOHO 네트워크의 해당 주소 범위에 인접한 부분을 할당해버렸다면?

또는 특정 홈 네트워크 소유자가 IP 주소가 어떻게 관리되는지 알고자 한다면?

이러한 상황에서 네트워크 주소 변환(NAT)를 사용해서 주소를 할당할 수 있다.

 

 


NAT 운영

NAT

 

NAT 가능 라우터는 위 그림의 오른쪽 처럼 홈 네트워크의 일부인 인터페이스를 갖는다. 홈 네트워크의 4개 인터페이스 모두 같은 네트워크 서브넷(10.0.0.0/24)을 갖는다.

 

위 그림에서의 주소 공간 10.0.0.0/8 은 홈 네트워크와 같은 사설 개인 주소를 갖는 권역을 위해 예약된 IP 주소 공간 중의 하나이다.

사설 주소를 갖는 권역 : 네트워크 주소들이 그 네트워크의 내부에 있는 장비에게만 의미가 있는 그런 네트워크를 의미한다.

 

수십만개의 홈 네트워크가 있고, 이 중에 많은 네트워크들이 같은 주소 공간 10.0.0.0/24를 사용하고 있다는 것을 생각해보자.

주어진 홈 네트워크 내부의 장비는 서로 10.0.0.0/24 서브넷을 사용해서 패킷을 송수신 할 수 있다.

그러나 홈 네트워크를 벗어나 글로벌 인터넷으로 가는 패킷 전달은 이 주소들을 사용할 수 없다. 즉, 10.0.0.0/24 주소들은 주어진 홈 네트워크 내부에서만 의미가 있다.

이러한 사설 주소가 홈 네트워크 내부에서만 의미가 있다면, 패킷의 유일한 주소가 필요한 글로벌 인터넷과의 송수신에서는 어떻게 처리할 수 있을까?

 

NAT가 가능한 라우터는 외부 네트워크의 입장에서는 라우터처럼 보이지 않는다. 대신에 NAT 라우터는 하나의 IP 주소를 갖는 하나의 장비로 동작한다. 위 그림에서 홈 라우터를 떠나 인터넷으로 가는 트래픽은 출발지 주소 138.76.29.7:5001을 가져야 한다.

본질적으로 NAT 가능 라우터는 외부에서 들어오는 홈 네트워크의 상세한 사항은 숨긴다.

 

이때 홈 네트워크 컴퓨터가 어디서 주소를 얻고 라우터가 IP 주소를 어디서 얻는것인지에 대한 의문이 필요하다.

대부분 이에 대한 대답은 DHCP이다. 라우터는 ISPDHCP서버로부터 주소를 얻고, NAT-DHCP-라우터로 제어되는 홈 네트워크의 주소 공간에서 DHCP 서버를 실행하여 컴퓨터에게 주소를 제공한다.

 

WAN(Wide Area Network : 광역 네트워크)에서 같은 목적지 IP 주소를 갖는 NAT 라우터에 모든 데이터그램이 도착했을때, 라우터가 이 데이터그램을 전달하는 내부호스트를 알 수 있는 방법은 NAT 변환 테이블을 사용하고, 그 테이블에 IP 주소와 포트 번호를 매핑해 놓는 것이다.

 

 

예시 상황

호스트 10.0.0.1인 홈 네트워크가 IP 주소 128.119.40.186인 웹 서버(포트 80)에게 웹 페이지를 요청한다고 가정하자.

 

1. 호스트 10.0.0.1은 데이터그램의 헤더에 임의의 출발지 포트 번호 3345와 출발지와 목적지의 주소를 기록하고 LAN으로 데이터그램을 보낸다. 이 때, 출발지에는 자신의 사설 IP 주소를 기록한다. 

- 호스트에서 출발
출발지 IP 주소 : 10.0.0.1:3345
목적지 IP 주소 :  128.119.40.186:80

 

2. 홈네트워크 라우터에서 외부로 나가는 패킷을 인식하게 되면, 출발지의 IP 주소를 자신의 공인 IP 주소로 변경하고, 출발지 포트번호를 새로운 5001 포트번호로 변환한다. 이 때, 별도의 NAT 테이블을 생성한다.

새 출발지 포트번호를 생성할 때, NAT라우터는 NAT 변환 테이블에는 없는 모든 출발지 포트 번호를 선택할 수 있다.(포트 번호의 필드가 16비트 이므로 NAT 프로토콜은 라우터에 대한 WAN쪽의 한 IP 주소에 대해 6만개 이상의 동시 접속을 지원한다.)

- 라우터에서 다시 출발
출발지 IP 주소 : 10.0.0.1:3345 -> 138.76.29.7:5001 (변경)
목적지 IP 주소 : 128.119.40.186:80

NAT 테이블

프로토콜 사설 IP 주소 사설 IP 출발 포트 출발지 포트 출발지 IP 주소 목적지 IP 주소
TCP 10.0.0.1 3345 5001  138.76.29.7 128.119.40.186

 

 

3. 웹 서버에서 수신한 데이터를 처리한 후, 응답 데이터그램에 출발지와 목적지의 IP 주소를 다음과 같이 기록하여 보낸다. 이 때, 목적지의 IP 주소는 라우터의 IP 주소가 된다.

- 웹 서버에서 출발
출발지 IP 주소 : 128.119.40.186:80
목적지 IP 주소 : 138.76.29.7:5001

 

4. 라우터는 데이터그램을 받고 헤더 정보를 추출한다. 그리고 기록해두었던 NAT 테이블을 참조하여 최종 목적지인 호스트의 사설 IP 주소로 변경하여 해당 호스트로 패킷을 전달한다.

- 라우터에서 출발
출발지 IP 주소 : 128.119.40.186:80
목적지 IP 주소 : 138.76.29.7:5001 -> 10.0.0.1:3345 (변경)