프론트엔드 강의에서는 웹서버를 구축하고 자신의 로컬 네트워크에서 이를 확인하는 실습이 나옵니다. 하지만 자신의 컴퓨터에서만 접속할 수 있다면, 실제 서비스 환경과 거리가 있습니다. 여기서 해당 서버를 외부에서 접속할 방법을 소개하려고 합니다.
포트포워딩이란?

포트포워딩(Port Forwarding)은 외부에서 들어오는 접속 요청을 내부 네트워크의 특정 기기로 전달하는 기술입니다. 외부 사용자가 특정 주소와 포트로 접속하면, 공유기가 해당 요청을 내부 네트워크의 특정 컴퓨터와 포트로 연결해 주는 구조입니다. 이를 통하여 로컬 서버 데이터를 외부에 노출시키고 실제 서비스처럼 사용할 수 있습니다.
웹사이트를 외부로 공유하자
※ 파이썬의 flask, iptime 공유기를 이용하여 작업을 진행하였습니다.
1.컴퓨터 서버
먼저 파이썬의 Flask를 이용하여 간단한 웹서버를 하나 만들어 보겠습니다.
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello():
    return 'Hello, World!'
if __name__ == '__main__':
    app.run(debug=True,
            host="0.0.0.0" 
            )
여기서 주목해야 하는 점이 host= "0.0.0.0" 설정은 외부 IP의 접속 요청을 허용한다는 의미입니다. 이를 통해 동일 네트워크 내 다른 기기 또는 외부에서 해당 서버를 이용할 수 있습니다.

또한 0.0.0.0을 host로 설정함으로 현재 PC의 내부 IP 192.168.0.4고 Flask 서버의 포트 5000이 공개되었습니다. 이에 따라 내부 네트워크 환경에서는 아래 링크로 접속하면 접속이 가능합니다.
공유기 세팅
<네트워크도>
우선 iptime 공유기 기준으로 아래 링크에서 작업을 진행합니다.

로그인 후 다음 세팅을 만지도록 합니다.
- 포트포워드 설정
 - DDNS 설정
 
1. 포트포워드 설정

여기서 신경 써야 하는 부분은 내부 IP 주소입니다. 컴퓨터 서버 단에서 192.168.0.4:5000이라는 기록을 확인하였습니다. 이에 따라 다음과 같이 설정하도록 합니다.
- 내부 IP 주소: 192.168.0.4
 - 내부 포트: 5000 (Flask 서버 포트)
 - 외부 포트: 원하는 포트 (예: 80 또는 5000)
 - 프로토콜: TCP
 
가로 저는 HTTP 포트에 바로 접속하기 위해 80 포트로 접속하였습니다. HTTPS를 사용하고 싶다면 443 포트를 사용하면됩니다.
2. DDNS 설정

여기서 DDNS를 설정하면 원하는 링크를 만들 수 있습니다. iptime 공유기는 iptime.org 라는 DDNS를 제공하여 중복을 제거하고 자유롭게 입력하면됩니다. 일단 예시로 test.iptime.org 으로 DDNS를 만들어 보았습니다. DDNS를 사용하지 않는 경우 직접 공유기의 공인 IP 주소를 이용하여 접속해야 됩니다. 여기서 공인 IP는 등록 IP주소로 접속하면 됩니다.
스마트폰으로 아래 링크를 접속하면 "Hello World"를 확인 할 수 있습니다.

마지막으로
일단 웹서버를 외부로 노출하는 경우 보안에 신경 써야 합니다.
또한 실제로 웹사이트를 운영하기 위해서는 HTTPS로 접속하여야 합니다. 현재 iptime 공유기의 DDNS는 SSL 인증서를 제공하지 않기 때문에 다른 방식을 이용하여 발급할 수 있습니다. 이에 대한 내용은 추후 포스팅하도록 하겠습니다.
'컴퓨터 > 컴퓨터 관련 지식' 카테고리의 다른 글
| 디자인패턴 - 디자인패턴(Design Pattern)에 대하여 알아보자 (2) | 2025.05.06 | 
|---|---|
| 네트워크 - OSI 7 Layer에 대해 알아보자 (0) | 2025.04.18 | 
| 무선통신 - 2.4GHz / 5GHz 대역이 면허 없이 사용 가능한 이유 (0) | 2024.12.09 | 
| 알고리즘 - 빅오 표기법 (Big-O notation) (0) | 2024.09.21 | 
| Morse Code - 모스 부호에 대하여 알아보자 (1) | 2024.02.26 |