본문 바로가기
  • 냥냥냥
OS

2. 외부에서 내부 Ubuntu 서버에 접근하기 – 포트 포워딩과 방화벽 설정

by 프로그래밍데 2025. 5. 29.

당연히 모든 ip는 가상의 예시 ip이다. 포트도 8080말고 다른 커스텀 포트를 사용했다.



1. 시나리오

[아이폰 LTE] → [공인 IP:8080 (공유기)] → [사설 IP:8080 (Ubuntu 서버)]

  • 클라이언트 접속 환경
    • iOS 기기에서 LTE 네트워크를 통해 외부에서 내부 우분투 서버로 접속 시도
  • 공유기 포트 포워딩 설정
    • 공유기에서 외부 포트 8080을 내부 우분투 서버의 포트 8080으로 포워딩
    • NAT (DNAT) 설정을 통해 외부 요청을 내부 사설 IP 주소(우분투 서버)로 리다이렉트
  • 내부 서버 응답 처리
    • 포트포워딩된 요청을 우분투 서버에서 리스닝 중인 애플리케이션이 수신
    • 애플리케이션은 포트 8080에서 HTTP 요청을 처리 중
  • 방화벽 설정
    • 우분투 서버에서 iOS LTE 네트워크의 공인 IP에 대해 인바운드 접속 허용 

 

2. 보안 이슈 – 가장 먼저 고려해야 할 점

그리고 외부에서 접속 가능하게 하기 전에 가장 알아야 할 점이 보안 이슈다 
안그래도 우리집 SKT 사용해서 이미 다 털어갔지만 
이런식으로 또 털어가게 만들 순 없다. 


그래서 일단 절대 하지 말아야 할 행동은 

 

절대 금지 
- 0.0.0.0/0 전체 IP 포트포워딩 -> 전 세계에서 접속 가능해진다.
- 방화벽 미적용 상태 
- 모든 포트 오픈 실험

권장 방식

테스트 목적 IP만 화이트리스트로 등

- 포트 제한 (예: 8080만 허용)

- 방화벽과 공유기에서 이중 필터링 적용


 

3. 공인 IP 확인하기 

https://www.whatismyip.com/

 

What Is My IP?

Instantly check your public IP address, location, and ISP with our free tool. Supports IPv4 and IPv6. Get fast and accurate results.

www.whatismyip.com

여기 가시거나 
네이버에 내 IP 검색하시면 내 공인IP 나옵니당. 

 

그래서 저는 제 LTE, 공유기 공인 IP를 확인해줬습니다. 

 

4. Ubuntu 방화벽 설정 (UFW)

sudo ufw allow from [iOS LTE의 공인 IP] to any port 8080 proto tcp

 

 

일단 저는 지금 제 핸드폰 (LTE로 접속하는 외부망의 폰)만 8080 열어줄 거에요 

 

구성 요소 의미를 보자면 다음과 같습니당.

sudo ufw UFW 방화벽 명령어 실행
allow 허용할 거야
from [아이폰IP] 오직 이 IP에서 들어오는 요청만 허용할 거야
to any "내 서버의 어떤 IP 주소로 오든" 허용하겠다는 뜻
port 8080 단, 포트 8080으로 오는 요청만 허용함
proto tcp TCP 프로토콜에 대해서만 허용 (HTTP는 TCP 기반임)

 
저 any가 뭔가 불안해서 찾아보니까 
외부의 any가 아니라
제 ubuntu 서버가 지금 사설 IP라서 어떤 IP가 할당 될 지 모르지만, 그 어떤IP든지 간에 
제 아이폰의 공인 IP에서 요청하는 8080 포트의 TCP 요청은 허용한단 뜻입니답. 
 
굳 안전해 
 
그럼 이제 제 우분투 온프레미스 서버에 LTE 아이폰 같은 외부에서 접속할 수 있도록 
공인IP -> 사설 IP(우분투 서버)로 트래픽 포트포워딩 해주는 걸 진행해보겠습니당. 
 
일단 개요부터 이해해야 하는 게
 

현재 상태

[아이폰(LTE)] ─(인터넷)→ [공인IP: SK 공유기] ─(포트포워딩)→ [사설IP: 우분투 서버]

현재 저희집 공유기는 SK 브로드밴드에서 공인 IP 하나를 받아와서 사용 중이고, 
그 공유기 설정에서
1. 외부에서 공인IP:8080으로 요청이 들어오면, 
2. 우분투 서버의 사설IP:8080으로 포워딩하라고 명령할 예정 

 

5. 공유기 포트포워딩 설정 (SK 브로드밴드 기준)
 

5_1. 우분투 서버의 사설IP 확인하기 

hostname -I 하면 사설IP 나옵니다 이걸 저장해두고요 

 

5_2. 홈 공유기 접속하기 

ip route | grep default 

검색하면 공유기에 접속할 수 있는 게이트웨이 주소가 나옵니답. 
그걸 인터넷에 검색하시면 공유기에 접속할 수가 있어요 
 

 

이건 통신사 마다 화면이 다른데 SK 기준으로 설명할게영

포트포워딩 설정 하는 곳이 나왔습니다

 

항목 값

소스 IP iOS 공인 IP (보안 위해 지정)
저로 치면 아이폰 공인 IP 입력하면 됩니당. 
만약에 , 여러 기기로 테스트하려면 비워도 되는데 보안은 취약해지겠져 
저는 안전하게 하고싶기 때문에 제 핸드폰 공인IP 입력 해줬구요 
소스 포트 외부에서 접속을 시도하는 클라이언트가 사용하는 포트 번호 ( 따라서, 주로 비워두거나 1 ~ 65535으로 전체 허용)
외부 포트 외부 사용자가 접속할 포트 번호 (위의 그림으로 치면 8080)

공인Ip:8080으로 접속할 거라서 8080으로 해놓을 건데
만약 8081 해놓고 내부 포트는 8080해놓으면
공인IP:8081으로 접속해서
우분투에 떠있는 제 8080서버에 접속 되는 거져
내부 IP Ubuntu 서버의 사설 IP
내부 포트 8080 (내부 우분투 서버에서 구동되는 서비스의 포트 번호)
프로토콜 TCP (HTTP 통신)
설명 예: "iOS 테스트 HTTP"


자잔 설정이 다 완료됐고 

제 핸드폰으로 접속 잘 되는데

url은  공인 ip 이슈로 보여드릴 수 없습니답.

아무튼 핸드폰으로 

우분투 공인ip:8080 들어가서 제 프로젝트 화면 잘 떴습니당 > - < 꺄

 

6. 외부 접속 가능한 온프레미스 서버 구성 학습 회고 ...

이번 실습으로는 LTE 네트워크 환경에서 사설망에 존재하는 Ubuntu 서버로의 안전한 접근을 목표로,

다음과 같은 주요 학습과 통찰을 얻게 되었다, ,, , 

 

6_1. 포트포워딩과 NAT 개념의 실전 내재화

"공인 IP로 들어온 요청을 사설 IP로 안전하게 전달한다는 개념이 처음엔 막연했지만,
NAT (특히 DNAT)의 실제 작동 흐름을 체험하면서 실감하게 됐다."

=> 공유기에서 외부 포트와 내부 포트를 매핑해주면, 외부 사용자(LTE 아이폰 등)가
공인 IP에 접근해도 실제 트래픽은 사설 IP에 있는 서버로 전달됨

 

 

6_2. 보안 없는 네트워크 실습은 꽤나 엄청나게 위험한

"단순히 작동만 되면 되는 줄 알았는데, 실제로 '모든 IP 허용 + 방화벽 없음'은 곧 시스템 탈취로 이어질 수 있다는
현실적 위협을 깨달았다."

  • 실습 서버가 인터넷에 노출된 순간, 그건 테스트 서버가 아닌 공격 대상이 됨
  • 특히 0.0.0.0/0 또는 소스 포트 전체 허용은 모든 국가의 모든 사람에게 내 서버를 공개하는 행위
  • 실무에서 권장되는 최소 권한 원칙을 그대로 적용함으로써,
    • 소스 IP 화이트리스트
    • 포트 제한
    • 이중 필터링 (공유기 + 서버 방화벽) 등의 실전 보안 설정을 경험할 수 있었음

 

 

6_3. UFW 방화벽 설정 – 클라이언트 단위 제어의 중요성

"서버에서 단순히 '8080 포트 허용'만 해도 될 줄 알았는데, 실제론 '누가 접속할 수 있느냐'를 정밀 제어하는 게 핵심이었다."

 
sudo ufw allow from [공인IP] to any port 8080 proto tcp
  • from [공인IP]를 통해 특정 디바이스(LTE iPhone 등)의 IP에 한정된 인바운드 트래픽만 허용함으로써 공격 벡터를 최소화
  • to any의 의미도, 외부의 "any IP"가 아닌 내부에서 서버가 어떤 IP를 할당받더라도 유효하다는 의미임을 정확히 이해함

 

개념 요약

  • NAT와 포트포워딩은 굉장히 중요하다.
  • 공인 IP → 공유기 포트포워딩 → 방화벽 허용 → 내부 서비스로 이어지는 흐름은 클라우드 보안 그룹/로드밸런서 설정과 동일한 구조이다. (이게 젤 신기함)
  • “보안은 단순히 방화벽 ON이 아니라, 인바운드 트래픽을 '누가, 어떻게, 어느 포트로' 접근하는지를 제어하는 행위”임을 실전으로 체득함


 
외부에서 내부 서버로 접근하는 포트포워딩까지 진행했으니 이제는 
이 외우기 어려운 공인IP를 접근하기 쉬운 도메인으로 연결하는 작업을 진행할 예정이당. 

최근댓글

최근글

skin by © 2024 ttuttak