집에서 직접 개발한 웹 서버를 친구에게 보여주려 하거나, 로컬에서 구동한 게임 서버, SSH 원격 접속, 홈 NAS 등을 외부에 개방할 때 항상 마주치는 필수 관문이 바로 포트 포워딩(Port Forwarding)이다.
공유기(사설망) 환경에서 왜 외부 접속이 곧바로 불가능한지, 포트 포워딩이 어떤 원리로 외부 요청을 내 컴퓨터로 정확히 배달해 주는지 정리한다.
내 방 컴퓨터에서 포트 8080으로 웹 서버를 실행한 뒤, 같은 집 와이파이를 쓰는 노트북이나 스마트폰에서 192.168.0.5:8080으로 접속하면 페이지가 잘 열린다.
하지만 회사나 카페, 혹은 친구 집 컴퓨터에서 내 주소로 접속을 시도하면 "사이트에 연결할 수 없음(Connection Timed Out)" 오류가 발생한다.
이유는 내 컴퓨터가 공유기 뒤편의 '사설 IP(Private IP)'망에 숨어 있기 때문이다.
사설 IP는 인터넷에서 길을 찾을 수 없다
192.168.0.5)는 전 세계 수많은 가정과 사무실에서도 똑같이 사용 중인 내부 식별 번호다.공유기의 공인 IP로 접속해도 공유기는 누구 것인지 모른다
203.0.113.50)를 알아내어 접속 요청을 보냈다고 가정하자.192.168.0.5), 거실 TV(192.168.0.2), 스마트폰(192.168.0.3) 등 여러 기기가 물려 있다.[외부 접속자(친구)] [공유기 (공인 IP: 203.0.113.50)] [내부 사설망 기기들]
| |
| --- "접속 요청합니다!" (Port 8080) ---> |
| | -- ? (누구에게 줘야 할지 모름)
| | -- 데스크톱(192.168.0.5)?
| | -- 스마트폰(192.168.0.2)?
| | => 패킷 폐기 (접속 실패)
포트 포워딩은 공유기에게 "외부에서 공유기의 특정 문(Port)으로 패킷이 들어오면, 내부에 있는 특정 사설 IP의 컴퓨터로 곧장 넘겨줘라" 하고 정적인 이정표(규칙)를 미리 지정해 두는 기술이다.
쉽게 비유하자면, 회사 대표 번호(공인 IP)로 전화를 걸었을 때 교환원에게 "내선 번호 8080번(외부 포트)을 누르면 기획팀 홍길동의 자리(내부 사설 IP:포트)로 즉시 연결해 주세요"라고 시스템을 세팅해 두는 것과 같다.
포트 포워딩 규칙을 등록한 뒤 실제 외부 사용자의 접속 요청이 처리되는 단계별 과정이다.
8080 (외부 접속자가 입력할 포트)192.168.0.5 (내 방 컴퓨터의 사설 IP)8080 (내 방 컴퓨터에서 실제 실행 중인 프로그램의 포트)TCP[외부 접속자] [공유기 (포트 포워딩 규칙 적용)] [내 컴퓨터 (192.168.0.5)]
| | |
| -- 1. 203.0.113.50:8080 접속 ------> | |
| | (규칙 확인: 8080번은 192.168.0.5로!) |
| | -- 2. 목적지를 192.168.0.5로 변환 -> |
| | (DNAT: 목적지 주소 변경) |
| | |
| <-- 4. 응답 전송 ------------------- | <-- 3. 응답 데이터 회신 ----------- |
203.0.113.50:8080을 입력하고 엔터를 누른다.8080)를 확인한다. 사전에 정의된 포트 포워딩 규칙을 찾아 목적지 IP를 공유기 공인 IP에서 192.168.0.5:8080으로 바꿔치기(DNAT: Destination NAT)한다.공유기 설정 페이지(보통 192.168.0.1 등)에서 포트 포워딩을 설정했음에도 여전히 접속되지 않는다면 다음 3가지를 반드시 확인해야 한다.
192.168.0.5에서 192.168.0.8로 바뀔 수 있다.| 구분 | 일반적인 웹서핑 (NAT) | 포트 포워딩 (Port Forwarding) |
|---|---|---|
| 통신 시작점 | 내부 기기 외부 인터넷 | 외부 사용자 내부 기기 |
| 변환 방식 | 출발지 주소를 공인 IP로 변환 (SNAT) | 목적지 주소를 특정 내부 사설 IP로 변환 (DNAT) |
| 테이블 성격 | 요청 시 동적으로 생성되었다가 통신 종료 시 소멸 | 관리자가 수동으로 입력해 둔 영구적인 정적 규칙 |
| 주 사용처 | 브라우저 서핑, 유튜브 시청, 파일 다운로드 | 웹 서버 호스팅, SSH 원격 접속, 게임 서버 오픈 |