본문 바로가기
Network

포트 포워딩

by Ahngyuho 2024. 11. 30.

오늘은 포트 포워딩에 대해서 알아보려고 합니다.

포트 포워딩과 그와 관련된 개념인 NAT 와 작동 방식에 대해서 정리해보려고 합니다.

포트 포워딩이란?

포트 포워딩은 NAT가 설정된 라우터가 특정 포트로 들어온 데이터를 내부 네트워크의 특정 서비스(웹 서버, FTP 서버) 로 보내주는 것을 말합니다.

포트 포워딩의 핵심은 외부에서 온 데이터를 내부 네트워크 특정 서비스로 보내주는 것입니다.

 

여기서 등장하는 NAT 라는 것은 무엇일까요?

NAT

사설 IP 주소를 공인 IP 주소로 변환하여 내부 네트워크 장치에 접근할 수 있도록 해주는 역할을 수행하는 네트워크 장치에 구현되어 있는 기능입니다. 사설 IP 란 사설 네트워크에서 다른 장치와 안전하게 연결하기 위해 사용되는 것이고 공인 IP 란 인터넷에서 사용자를 찾을 수 있게 해주는 역할을 수행합니다.

 

만약 공유기로 예를 든다면

사설 IP : 우리집 공유기를 사용하고 있는 스마트폰, 컴퓨터, 노트북의 IP

공인 IP : 우리집 공유기 IP

 

우리가 집에서 네이버에 접속하게 될 때, 네트워크 상에서 일어나는 일들을 잠시 살펴보겠습니다.

NAT를 통한 네트워크 통신 과정 (예: 네이버 접속)

  1. 사용자가 네이버 링크를 클릭:
    • 내부 네트워크의 장치(스마트폰, 컴퓨터 등)에서 네이버 웹사이트에 HTTP/HTTPS 요청을 보냅니다.
    • 이 장치의 IP 주소는 사설 IP (예: 10.10.10.10)입니다.
  2. NAT를 통한 패킷 변환 (출발지 주소 변경):
    • 공유기에서 NAT 기능이 요청 패킷의 출발지 IP(사설 IP)를 공인 IP(공유기 IP)로 변환합니다.
    • 내부에서 사용하는 출발 포트(예: 10000)는 NAT 테이블에 저장됩니다.
    • 변환 후 패킷:
    • 출발지 IP: <공유기의 공인 IP> 출발지 포트: <10000>
    • 도착지 IP: <네이버 서버 IP> 도착지 포트: 80 (HTTP) 또는 443 (HTTPS)
  3. 패킷이 네이버 서버에 도착:
    • 서버는 요청 패킷의 출발지 IP와 포트(공유기의 공인 IP와 포트)를 기억합니다.
    • 응답 패킷을 동일한 출발지 IP와 포트로 보냅니다.
  4. 네이버 서버에서 응답 패킷 전송:
    • 응답 패킷에는 다음과 같은 정보가 포함됩니다:
    • 출발지 IP: <네이버 서버 IP> 출발지 포트: 80 (HTTP) 또는 443 (HTTPS)
    • 도착지 IP: <공유기의 공인 IP> 도착지 포트: <10000>
  5. 공유기에서 NAT 테이블 확인:
    • 공유기는 응답 패킷의 도착지 포트(10000)를 보고 NAT 테이블에서 대응되는 사설 IP 주소와 포트를 확인합니다.
    • 변환 후 패킷:
    • 출발지 IP: <네이버 서버 IP> 출발지 포트: 80 (HTTP) 또는 443 (HTTPS)
    • 도착지 IP: <내부 장치의 사설 IP (10.10.10.10)> 도착지 포트: <내부 장치 포트>
  6. 공유기가 패킷을 내부 네트워크 장치로 전달:
    • 최종적으로 NAT를 통해 변환된 패킷이 해당 장치(스마트폰, 컴퓨터 등)에 전달됩니다.
    • 이로써 요청한 네이버 페이지를 볼 수 있게 됩니다.

원래 NAT 라는 것은 내부에서 외부로 나갈 때 작성한 것을 바탕으로 사설 IP 주소와 공인 IP 주소를 연결해주는 역할을 수행하는 것이 일반적입니다.

 

하지만 만약 외부에서 온 요청내부 네트워크 내 특정 서비스로 보내주고 싶다면? 위 사례와는 방향이 반대가 되는 경우라면?

 

이때 사용하는 것이 포트 포워딩입니다.

 

  1. 클라이언트 요청
    • 클라이언트는 서버의 공인 IP 주소서비스 포트번호를 요청에 포함해 보냅니다.
      예를 들어, 클라이언트가 브라우저에서 http://203.0.113.1:8080에 접근하려고 하면:
      • 203.0.113.1은 서버 네트워크의 공인 IP입니다.
      • 8080은 서버 내부의 특정 컴퓨터에서 실행 중인 서비스가 사용하는 포트 번호입니다.
  2. 라우터/게이트웨이의 NAT 및 포트 포워딩 설정 확인
    • 클라이언트의 요청이 서버 네트워크로 들어오면, 라우터 또는 게이트웨이가 NAT 테이블과 포트 포워딩 설정을 확인합니다.
    • 예를 들어, 포트 포워딩 설정이 다음과 같다면:
      공인 IP:포트 203.0.113.1:8080 → 사설 IP:포트 192.168.1.100:80
       
      요청이 공인 IP 203.0.113.1의 포트 8080으로 들어오면, NAT는 이를 내부 네트워크의 사설 IP 192.168.1.100의 포트 80으로 전달합니다.
  3. 요청의 내부 전달
    • 라우터/게이트웨이는 요청 패킷의 도착지 IP와 포트를 변경하여 해당 사설 IP 주소(내부 컴퓨터)와 포트로 패킷을 전달합니다.
    • 변경 후 요청 패킷은 내부 네트워크에서 다음과 같은 형태로 이동합니다:
       
      출발지 IP: <클라이언트 IP> 도착지 IP: 192.168.1.100 도착지 포트: 80
  4. 서버 응답
    • 내부 네트워크의 컴퓨터(예: 192.168.1.100)가 요청을 처리하고 클라이언트에게 응답을 보냅니다.
    • 응답 패킷은 NAT를 통해 다시 공인 IP와 포트로 변환된 후 클라이언트로 전달됩니다.

 

'Network' 카테고리의 다른 글

3tier 아키텍처  (0) 2024.12.01
HTTP 메시지  (0) 2024.10.11
Network 개요  (0) 2024.07.14