오늘은 포트 포워딩에 대해서 알아보려고 합니다.
포트 포워딩과 그와 관련된 개념인 NAT 와 작동 방식에 대해서 정리해보려고 합니다.
포트 포워딩이란?
포트 포워딩은 NAT가 설정된 라우터가 특정 포트로 들어온 데이터를 내부 네트워크의 특정 서비스(웹 서버, FTP 서버) 로 보내주는 것을 말합니다.
포트 포워딩의 핵심은 외부에서 온 데이터를 내부 네트워크 특정 서비스로 보내주는 것입니다.
여기서 등장하는 NAT 라는 것은 무엇일까요?
NAT
사설 IP 주소를 공인 IP 주소로 변환하여 내부 네트워크 장치에 접근할 수 있도록 해주는 역할을 수행하는 네트워크 장치에 구현되어 있는 기능입니다. 사설 IP 란 사설 네트워크에서 다른 장치와 안전하게 연결하기 위해 사용되는 것이고 공인 IP 란 인터넷에서 사용자를 찾을 수 있게 해주는 역할을 수행합니다.
만약 공유기로 예를 든다면
사설 IP : 우리집 공유기를 사용하고 있는 스마트폰, 컴퓨터, 노트북의 IP
공인 IP : 우리집 공유기 IP
우리가 집에서 네이버에 접속하게 될 때, 네트워크 상에서 일어나는 일들을 잠시 살펴보겠습니다.
NAT를 통한 네트워크 통신 과정 (예: 네이버 접속)
- 사용자가 네이버 링크를 클릭:
- 내부 네트워크의 장치(스마트폰, 컴퓨터 등)에서 네이버 웹사이트에 HTTP/HTTPS 요청을 보냅니다.
- 이 장치의 IP 주소는 사설 IP (예: 10.10.10.10)입니다.
- NAT를 통한 패킷 변환 (출발지 주소 변경):
- 공유기에서 NAT 기능이 요청 패킷의 출발지 IP(사설 IP)를 공인 IP(공유기 IP)로 변환합니다.
- 내부에서 사용하는 출발 포트(예: 10000)는 NAT 테이블에 저장됩니다.
- 변환 후 패킷:
- 출발지 IP: <공유기의 공인 IP> 출발지 포트: <10000>
- 도착지 IP: <네이버 서버 IP> 도착지 포트: 80 (HTTP) 또는 443 (HTTPS)
- 패킷이 네이버 서버에 도착:
- 서버는 요청 패킷의 출발지 IP와 포트(공유기의 공인 IP와 포트)를 기억합니다.
- 응답 패킷을 동일한 출발지 IP와 포트로 보냅니다.
- 네이버 서버에서 응답 패킷 전송:
- 응답 패킷에는 다음과 같은 정보가 포함됩니다:
- 출발지 IP: <네이버 서버 IP> 출발지 포트: 80 (HTTP) 또는 443 (HTTPS)
- 도착지 IP: <공유기의 공인 IP> 도착지 포트: <10000>
- 공유기에서 NAT 테이블 확인:
- 공유기는 응답 패킷의 도착지 포트(10000)를 보고 NAT 테이블에서 대응되는 사설 IP 주소와 포트를 확인합니다.
- 변환 후 패킷:
- 출발지 IP: <네이버 서버 IP> 출발지 포트: 80 (HTTP) 또는 443 (HTTPS)
- 도착지 IP: <내부 장치의 사설 IP (10.10.10.10)> 도착지 포트: <내부 장치 포트>
- 공유기가 패킷을 내부 네트워크 장치로 전달:
- 최종적으로 NAT를 통해 변환된 패킷이 해당 장치(스마트폰, 컴퓨터 등)에 전달됩니다.
- 이로써 요청한 네이버 페이지를 볼 수 있게 됩니다.
원래 NAT 라는 것은 내부에서 외부로 나갈 때 작성한 것을 바탕으로 사설 IP 주소와 공인 IP 주소를 연결해주는 역할을 수행하는 것이 일반적입니다.
하지만 만약 외부에서 온 요청을 내부 네트워크 내 특정 서비스로 보내주고 싶다면? 위 사례와는 방향이 반대가 되는 경우라면?
이때 사용하는 것이 포트 포워딩입니다.
- 클라이언트 요청
- 클라이언트는 서버의 공인 IP 주소와 서비스 포트번호를 요청에 포함해 보냅니다.
예를 들어, 클라이언트가 브라우저에서 http://203.0.113.1:8080에 접근하려고 하면:- 203.0.113.1은 서버 네트워크의 공인 IP입니다.
- 8080은 서버 내부의 특정 컴퓨터에서 실행 중인 서비스가 사용하는 포트 번호입니다.
- 클라이언트는 서버의 공인 IP 주소와 서비스 포트번호를 요청에 포함해 보냅니다.
- 라우터/게이트웨이의 NAT 및 포트 포워딩 설정 확인
- 클라이언트의 요청이 서버 네트워크로 들어오면, 라우터 또는 게이트웨이가 NAT 테이블과 포트 포워딩 설정을 확인합니다.
- 예를 들어, 포트 포워딩 설정이 다음과 같다면:
공인 IP:포트 203.0.113.1:8080 → 사설 IP:포트 192.168.1.100:80
- 요청의 내부 전달
- 라우터/게이트웨이는 요청 패킷의 도착지 IP와 포트를 변경하여 해당 사설 IP 주소(내부 컴퓨터)와 포트로 패킷을 전달합니다.
- 변경 후 요청 패킷은 내부 네트워크에서 다음과 같은 형태로 이동합니다:
출발지 IP: <클라이언트 IP> 도착지 IP: 192.168.1.100 도착지 포트: 80
- 서버 응답
- 내부 네트워크의 컴퓨터(예: 192.168.1.100)가 요청을 처리하고 클라이언트에게 응답을 보냅니다.
- 응답 패킷은 NAT를 통해 다시 공인 IP와 포트로 변환된 후 클라이언트로 전달됩니다.
'Network' 카테고리의 다른 글
3tier 아키텍처 (0) | 2024.12.01 |
---|---|
HTTP 메시지 (0) | 2024.10.11 |
Network 개요 (0) | 2024.07.14 |