NAT(네트워크 주소 변환)이 필요하게 된 배경
- SOHO(small office, home office) 네트워크의 확산
→ISP는 SOHO에 관한 LAN 설치 시, 모든 SOHO의 IP 장치를 수용할 수 있는 주소 범위를 할당해야 함- SOHO의 IP 장치 - 전화, 태블릿, 게임 장치, IP TV, 프린터 등
- SOHO의 IP 장치 - 전화, 태블릿, 게임 장치, IP TV, 프린터 등
- 네트워크가 현저히 커지면 큰 주소블록이 할당되어야 하는데, 이러면 다양한 케이스의 문제 발생
- ISP가 할당해야 하는 SOHO 네트워크의 해당 주소 범위에 인접 부분을 할당한 경우
- 특정 홈 네트워크 소유자가 IP 주소가 어떻게 관리되는지 알고자 하는 경우
- 이런 상황에서
네트워크 주소 변환(NAT)
으로 주소를 할당할 수 있다.
NAT 가능 라우터
- NAT 가능 라우터는 홈 네트워크의 일부인 인터페이스를 갖는다.
- 홈 네트워크의 4개 인터페이스 모두 같은 네트워크 주소 10.0.0.0/24를 갖는다.
- 홈 네트워크의 4개 인터페이스 모두 같은 네트워크 주소 10.0.0.0/24를 갖는다.
주소 공간 10.0.0.0/8
- 사설망(private network), 사설 개인 주소를 갖는 권역(realm)을 위해 예약된 IP 주소 공간 중 하나
- 그림에 있는 홈 네트워크가 사설 개인 주소를 갖는 권역의 예시
- 사설망(private network), 사설 개인 주소를 갖는 권역(realm)을 위해 예약된 IP 주소 공간 중 하나
사설 개인 주소를 갖는 권역(realm)
- 네트워크 주소들이 그 네트워크 내부에 있는 장비에게만 의미가 있는 그런 네트워크
- 사설 개인 주소를 갖는 권역은 주어진 홈 네트워크 내부에서만 의미를 가진다.
- 수십 만개의 홈 네트워크 중, 자신만의 네트워크 공간을 가지고 서로 패킷을 송신할 수 있다.
- 하지만, 홈 네트워크를 벗어나 글로벌 인터넷으로 가는 패킷 전달로는 이 주소를 사용할 수 없다.
- 사설 주소에서 패킷의 유일한 주소가 필요한 인터넷과의 송수신에서는 어떻게 처리해야 하나?
→ NAT을 통해 글로벌 인터넷과의 송수신이 가능하다.
NAT 가능 라우터의 특징
- NAT 가능 라우터는 외부 세계로는 라우터로 보이지 않는다.
→ 대신 하나의 IP 주소를 갖는 하나의 장비로 동작 - 본질적으로 NAT 가능 라우터는 외부에서 들어오는 홈 네트워크의 상세한 사항을 숨긴다.
- 홈 네트워크 컴퓨터가 주소를 얻고, 라우터가 한 IP 주소를 얻는 곳
- 라우터가 주소를 얻는 법 → ISP의 DHCP 서버로부터 주소를 얻는다.
- 홈 네트워크 컴퓨터가 주소를 얻는 법
→ NAT-DHCP-라우터로 제어되는 홈 네트워크의 주소 공간에서 DHCP 서버를 실행하여 제공
- 홈 네트워크 컴퓨터가 주소를 얻고, 라우터가 한 IP 주소를 얻는 곳
NAT 변환 테이블
- WAN에서 같은 목적지 IP 주소를 갖는 NAT 라우터에 모든 데이터그램이 도착할 경우
- 라우터가 주어진 데이터그램을 전달하는 내부 호스트를 알 수 있는 방법은?
→ NAT 라우터에서NAT 변환 테이블(NAT translation table)을
사용- 해당 테이블에 IP 주소와 포트 번호를 포함하는 것
- 해당 테이블에 IP 주소와 포트 번호를 포함하는 것
- 여기서 말하는 NAT 라우터는 구체적으로 NAT 라우터의 WAN 쪽 인터페이스를 뜻한다.
- 라우터가 주어진 데이터그램을 전달하는 내부 호스트를 알 수 있는 방법은?
해당 그림에서의 예시
- 가정
- 사용자 입장에서 호스트 10.0.0.1인 홈 네트워크가
IP 주소 128.119.40.186인 웹 서버(포트 80)에게 웹 페이지 요청
- 사용자 입장에서 호스트 10.0.0.1인 홈 네트워크가
- 과정
- 호스트 10.0.0.1은 임의의 출발지 포트 번호 3345를 할당하고 LAN에게 데이터그램을 보냄
- NAT 라우터는 데이터그램을 받아서, 데이터그램에 대한 새로운 출발지 포트 번호 5001을 생성
- WAN 쪽 IP 주소 138.76.29.7과 출발지 IP 주소를 변경한다.
- 새 출발지 포트 번호 5001과 원래 출발지 포트 번호 3345를 변경한다.
- 새 출발지 포트 번호를 생성할 때, NAT 라우터는 NAT 변환 테이블에는 없는
모든 출발지 포트 번호를 선택할 수 있다.
← 포트 번호의 필드가 16비트로 길다.- NAT 프로토콜은 라우터에 대한 WAN 쪽 한 IP 주소에 대해 60,000개 이상의 동시 접속 지원
- NAT 프로토콜은 라우터에 대한 WAN 쪽 한 IP 주소에 대해 60,000개 이상의 동시 접속 지원
- 새 출발지 포트 번호를 생성할 때, NAT 라우터는 NAT 변환 테이블에는 없는
- 라우터 내부의 NAT에는 NAT 변환 테이블의 엔트리도 추가된다.
- NAT 라우터에 의해 처리된 HTTP 요청이 들어있는 데이터그램의 도착을 웹 서버는 의식하지 못함
→ 웹 서버는 NAT 라우터의 IP 주소인 목적지 주소와 5001인 목적지 포트 번호에 대해 응답 - 이 데이터그램이 NAT 라우터에 도착
- 라우터는 홈 네트워크 브라우저의 IP주소(10.0.0.1)와 목적지 포트 번호(3345)로부터
얻은 목적지 IP 주소와 목적지 포트 번호를 사용하여 NAT 변환 테이블을 작성 - 라우터는 데이터그램 목적지 주소와 포트 번호를 다시 기록하고, 홈 네트워크 내부로 데이터그램을 전달
NAT 사용에 반대하는 측의 주장
포트 번호가 프로세스 주소 지정에 사용된다.
- 포트 번호가 호스트 주소 지정이 아닌 프로세스 주소 지정에 사용된다는 것이 반대의 주장
- 서버 프로세스는 잘 알려진 포트 번호에서 요청이 올 때까지 기다린다.
또한 P2P 프로토콜의 피어는 서버로서의 역할을 할 때 들어오는 연결을 수락해야 함
→ 홈 네트워크에서 실행되는 서버에 문제가 발생할 수 있다.
구성 순수주의자들의 철학적 논쟁
- 구성 순수주의자들은 NAT에 반대하여 많은 철학적 논쟁을 제기했음
→ NAT은 원칙을 위반한다는 주장 - 라우터는 네트워크 계층 장치를 의미하며, 네트워크 계층까지만 패킷을 처리하는 역할임
→ 근데 NAT은 IP 주소를 수정하는 노드를 간섭하고, 포트 수보다 훨씬 많은 수의 호스트와 직접 소통함