들어가며
로컬에서 Express 서버를 실행했는데, 다른 네트워크의 친구가 접속하려고 하면 어떻게 해야 할까요?
localhost:3000이나 192.168.1.100:3000 같은 사설 IP로는 외부에서 접속할 수 없습니다.
(사설 IP는 인터넷에서 라우팅되지 않기 때문입니다.)
이 글에서는 포트 포워딩을 설정해 로컬 서버를 외부에서 접속 가능하게 만드는 방법을 단계별로 설명합니다.
* KT GiGA WiFi home 공유기를 기준으로 실제 설정 화면을 보며 진행합니다.
시작하기
서버 실행

const express = require('express');
const app = express();
const PORT = 3000;
// 기본 라우트
app.get('/', (req, res) => {
res.send(`
<h1>Hello World</h1>
<h1>포트포워딩 테스트중</h1>
<p>서버가 정상적으로 실행 중입니다!</p>
`);
});
// 서버 시작
app.listen(PORT, '0.0.0.0', () => {
console.log(`Express 서버가 포트 ${PORT}에서 실행 중입니다.`);
console.log(`HTTP 접속: http://localhost:${PORT}`);
console.log(`Telnet 접속: telnet localhost ${PORT}`);
});
로컬에서 Express 서버를 실행합니다.
사설 IP 알아내기


ipconfig
cmd에서 위 명령어를 입력하여 사설 IP를 확인하고 복사합니다.
공인 IP 알아내기

curl ifconfig.me
cmd에서 위 명령어를 입력하여 공인 IP 확인하고 복사합니다.
포트포워딩 하기

웹브라우저(크롬)의 주소창에 공인 IP를 입력하면 공유기 관리자 로그인 페이지가 뜹니다.
아이디 : ktuser
비밀번호 : homehub
위 관리자정보 기본값을 입력하여 로그인합니다.

소스 IP 주소: 비워두기 (모든 IP에서 접속 허용)
소스 포트: 비워두기 (모든 포트에서 접속 허용)
외부 포트: 3000 ~ 3000 (외부에서 접속할 포트, 서버 포트와 동일)
내부 IP 주소: ipconfig로 확인한 컴퓨터 사설 IP 입력 (예: 172.30.1.83)
내부 포트: 3000 ~ 3000 (서버가 실행 중인 포트, 외부 포트와 동일)
프로토콜: TCP 선택 (Express 서버는 TCP 사용)
설명: Express Server (규칙 구분을 위한 이름, 자유 입력)
장치설정 > 트래픽 관리 > 포트 포워딩 으로 이동합니다.
위 정보 본인에게 맞게 수정하여 입력합니다.
추가 버튼을 눌러 포트 포워딩을 추가합니다.
테스트

이제 공인 IP + 외부포트로 접속하면 로컬 서버에 접속할 수 있습니다.
(예시 : 211.41.194.38:3000)
필자는 친구가 없어 휴대폰을 외부 네트워크 환경(LTE 데이터)으로 설정하여 테스트하였습니다.