모든 IP 활용 장치에는 IP 주소가 필요하다.
SOHO(Small Office, Home Office)네트워크의 확산으로 인해서, SOHO가 장치를 연결하기 위해 LAN을 설치할 때마다 ISP는 모든 SOHO의 IP장치(전화, 태블릿, 게임기, IP TV ..)를 수용할 수 있는 주소 범위를 할당해야 한다. SOHO가 커지면 큰 주소 블록이 할당되어야 한다.
하지만 ISP가 이미 SOHO 네트워크의 해당 주소 범위에 인접한 부분을 할당해버렸다면?
또는 특정 홈 네트워크 소유자가 IP 주소가 어떻게 관리되는지 알고자 한다면?
이러한 상황에서 네트워크 주소 변환(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이다. 라우터는 ISP의 DHCP서버로부터 주소를 얻고, 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 (변경)
'CS > Network' 카테고리의 다른 글
[Network Security] 커버로스(Kerberos) 동작 원리 이해하기 (2) | 2022.12.12 |
---|---|
[Network] 네트워크 계층 : 라우팅(Link-State Routing) (0) | 2021.12.09 |
[Network] 네트워크 계층 : 인터넷 프로토콜(IP) (0) | 2021.12.05 |
[Network] 트랜스포트 계층 : TCP 혼잡제어 알고리즘(TCP Tahoe, TCP Reno, TCP NewReno) (0) | 2021.11.29 |
[Network] 트랜스포트 계층 : 혼잡제어 (0) | 2021.11.29 |