Post

[DevOps] IP와 Port 개념

[DevOps] IP와 Port 개념

클라이언트 요청이 서버까지 오는 과정

  • IP 는 PC의 주소
  • Port는 실행중인 프로그램의 주소

즉 내 pc에서 8080포트에 springboot서버를 실행시키면 로컬IP로 들어와서 8080을 호출해도, 퍼블릭IP로 들어와서 8080을 호출해도 springboot서버에 접근가능함.

잘 알려진 포트(well-known prot)란?

Port에는 잘 알려진 포트라는 개념이 있다.

포트번호는 0 ~ 65,535번까지 사용할 수 있다. 그 중에서 0 ~ 1023번까지의 포트 번호는 주요 통신을 위한 규약에 따라 이미 정해져 있다. 이렇게 규약을 통해 역할이 정해져있는 포트 번호를 보고 잘알려진 포트(well-known prot)라고 부른다

주요 포트 번호를 살펴보면

  • 22번 (SSH,Secure Shell Protocal) : 원격 접속을 위한 포트 번호
    • EC2 인스턴스에 연결할 때 22번 포트를 사용한다
  • 80번 (HTTP) : Http로 통신을 할때 사용
  • 443번 (HTTPS) : Https로 통신을 할때 사용

단 규약이기 때문에 꼭 지킬 필요는 없다. springboot도 Http 통신이지만 80포트가 아닌 8080포트를 사용한다.

AWS와 로컬pc 배포의 차이

  • AWS EC2 인스턴스는 보안설정으로 0.0.0.0 열어주면 퍼블릭 Ip로 접근해서 서버 접근 간단하게 구현 가능
  • 로컬에서는 퍼블릭 Ip부터 설정해줘야하고,포트포워딩으로 공유기 설정도 해줘야하고, 8080포트는 방화벽으로 막히고 … 모든 순간이 차단되어있음. (덕분에 보안은 좋다)

이제 로컬pc에서 서버를 열때 설정해줘야하는 부분을 설명한다

  • 외부 사용자가 http://내 퍼블릭 IP:8080으로 접속하는 경우

🔹 1) 퍼블릭 IP 사용 설정

  • 하는 일: 인터넷에서 내 컴퓨터를 찾을 수 있도록 퍼블릭 IP를 사용해야 함.
  • 이유:
    • 일반적으로 공유기 뒤의 로컬 PC들은 사설 IP(192.168.x.x 등)를 사용함.
    • 그래서 외부에서 접속하려면 퍼블릭 IP가 필요함.
  • 설정 방법:
    • 고정 퍼블릭 IP 사용 (유동 IP라면 DDNS 설정 필요)
    • 인터넷 공급 업체(ISP)에서 퍼블릭 IP 제공 여부 확인

🔹 2) 공유기에서 포트 포워딩 설정

  • 🔍 하는 일: 공유기가 외부(인터넷)에서 오는 요청을 내 PC로 전달하도록 설정.
  • 💡 이유:
    • 보통 공유기는 외부(인터넷)에서 오는 요청을 자동으로 차단함.
    • 포트 포워딩(Port Forwarding)을 설정하면 공유기가 특정 포트의 요청을 내 PC로 보내줌.
  • ⚙️ 설정 방법:
    • 공유기 관리자 페이지(예: 192.168.0.1)에 접속
    • “포트 포워딩” 설정 추가
      • 외부(인터넷) → 공유기의 8080포트로 요청
      • 공유기가 이를 내 PC의 8080포트로 전달

    Ex)

    외부포트내부 IP(로컬PC)내부포트
    8080192.168.0.1008080

🔹 3) 내 PC 방화벽에서 8080 포트 열기

  • 🔍 하는 일: 내 PC에서 8080 포트에 대한 외부 접근을 허용
  • 💡 이유:
    • 내 PC의 방화벽이 기본적으로 외부에서 오는 포트 접근을 차단함.
    • 그래서 8080 포트를 허용해줘야 외부에서 내 서버에 접근 가능.
  • ⚙️ 설정 방법 (Windows 예제):
    • Windows 방화벽 설정 → 고급 설정
    • 인바운드 규칙 추가
      • 포트: 8080
      • 허용: 예
      • 프로토콜: TCP
      • 프로필: 공용(Public) 체크

🔹 4) Spring Boot의 server.address=0.0.0.0 설정

  • 🔍 하는 일: Spring Boot 서버가 외부(인터넷)에서 오는 요청도 받을 수 있도록 허용
  • 💡 이유:
    • 기본적으로 Spring Boot는 localhost(127.0.0.1)에서만 실행됨.
    • 즉, 로컬에서만 접속 가능하고, 외부에서는 접근 불가능함.
    • server.address=0.0.0.0을 설정하면 모든 네트워크 인터페이스에서 요청을 받을 수 있음.

⚙️ 설정 방법 (Spring Boot application.properties 또는 application.yml)

1
2
server.address=0.0.0.0
server.port=8080

✅ 최종 정리

💡 외부(인터넷)에서 http://내 퍼블릭 IP:8080으로 접근하려면

1️⃣ 퍼블릭 IP 사용

  • 인터넷에서 내 컴퓨터를 찾을 수 있도록 함.

2️⃣ 공유기에서 포트 포워딩 설정

  • 공유기가 8080 포트 요청을 내 PC(예: 192.168.0.100)로 전달하게 설정.

3️⃣ 내 PC의 방화벽에서 8080 포트 열기

  • 방화벽이 8080 포트 접근을 막지 않도록 허용.

4️⃣ Spring Boot의 server.address=0.0.0.0 설정

  • 내 PC의 모든 네트워크 인터페이스에서 8080 포트로 접속 가능하도록 함.
This post is licensed under CC BY 4.0 by the author.