집에서 서버를 만들어보면 대부분 여기서 막힌다.
“내 컴퓨터에서는 잘 되는데, 왜 밖에서는 접속이 안 되지?”
이건 정상이다. 기본적으로 집 안의 컴퓨터는 외부에서 바로 접근할 수 없게 되어 있기 때문이다.
하지만 몇 가지만 설정하면 외부에서도 내 서버에 접속할 수 있다.
핵심은 딱 이 구조다.
외부 → 공인 IP → 공유기 → 포트포워딩 → 내 컴퓨터 → 서버

1. 공인 IP 확인하기
외부에서 내 서버로 들어오려면 먼저 “어디로 가야 하는지” 알아야 한다.
그게 바로 공인 IP다.
공인 IP는 인터넷에서 내 집을 대표하는 주소다.
예를 들어:
- 123.45.67.89
같은 형태다.
외부에서는 이 주소로 접속을 시도한다.
즉, 공인 IP는 “집 주소” 같은 역할이다.
2. 서버 프로그램 실행하기
그 다음은 당연하지만 중요한 단계다.
내 컴퓨터에서 서버가 실제로 실행되고 있어야 한다.
예를 들어:
- Node.js 서버 → 3000 포트
- 웹서버 (Nginx) → 80 포트
- Docker 컨테이너 → 8080 포트
이처럼 특정 포트에서 서버가 열려 있어야 한다.
예:
docker run -p 3000:3000 myapp
이건 내 컴퓨터의 3000 포트를 서버에 연결하는 것이다.
3. 포트포워딩 설정하기 (가장 중요)
이 단계가 핵심이다.
외부에서 요청이 들어오면:
- 공인 IP까지는 도착하지만
- 내 컴퓨터로 자동으로 들어오지는 않는다
왜냐하면 공유기가 막고 있기 때문이다.
그래서 공유기 설정에서 포트포워딩을 해줘야 한다.
예를 들어:
- 외부 8080 포트 → 내부 192.168.0.10:3000
이렇게 설정하면:
- 외부에서 8080으로 들어온 요청이
- 내 컴퓨터의 3000 포트로 전달된다
즉, 외부 요청을 내 서버로 연결해주는 역할이다.
4. 실제 접속은 이렇게 한다
이제 모든 설정이 끝나면 외부에서는 이렇게 접속할 수 있다.
http://공인IP:포트
예:
http://123.45.67.89:8080
이렇게 입력하면 내 서버에 접속된다.
왜 기본적으로는 막혀 있을까
기본적으로 외부 접속이 막혀 있는 이유는 보안 때문이다.
만약 아무 설정 없이 외부에서 접속이 가능하다면:
- 해킹 시도
- 무단 접근
- 데이터 유출
같은 문제가 발생할 수 있다.
그래서 공유기가 기본적으로 모든 외부 요청을 막고 있다.
포트포워딩은 그중에서 “허용할 것만 열어주는 방식”이다.
자주 막히는 이유
외부 접속이 안 될 때 대부분 이유는 이 중 하나다.
- 공인 IP가 바뀜 (유동 IP)
- 포트포워딩 설정 잘못됨
- 서버가 실행 안 됨
- 방화벽이 막고 있음
특히 포트 번호 틀리는 경우가 많다.
나도 처음에는 이거 때문에 몇 시간 날린 적 있다.
전체 흐름 한 번에 이해하기
이걸 한 줄로 풀면 이렇게 된다.
외부 사람이 공인 IP로 접속 → 공유기가 요청 받음 → 포트포워딩 규칙 확인 → 내 컴퓨터로 전달 → 서버 응답
이 흐름만 이해하면 서버 연결 구조는 거의 끝이다.
한 줄로 정리하면
외부에서 내 서버에 접속하려면 공인 IP를 통해 들어온 요청을 공유기의 포트포워딩으로 내 컴퓨터의 특정 포트로 연결해줘야 한다.