3장_ 방화벽 설정

2026. 1. 29. 13:44·Book/자바 웹 프로그래밍 Next Step

 

EC2에서 서버를 띄우고(7070 포트로 실행) 브라우저에서 접속해보면, 처음엔 대부분 외부에서 접속이 안 된다.

근데 이건 서버가 죽어서가 아니라, 거의 항상 이런 이유다.

  • 서버 프로세스는 7070에서 잘 떠 있음
  • 하지만 외부에서 7070으로 들어오는 트래픽이 차단되어 있음

즉, “집 안에서 불은 켜놨는데, 울타리 대문이 잠겨 있는 상태”다.

여기서 중요한 포인트는 하나다.

EC2는 방화벽이 “서버 내부(UFW)”만 있는 게 아니라, AWS 보안그룹(Security Group)이 한 번 더 앞에서 막고 있다.

 

 

 

(확인) 서버 내부 방화벽(UFW)은 켜져 있나?

AWS를 안 쓰고, 그냥 개인 Ubuntu 서버라면 보통 OS 방화벽(UFW)을 열어줘야 한다.
근데 EC2는 기본적으로 UFW가 꺼져있는 경우가 많다.

일단 확인부터.

sudo ufw status

여기서 만약 이렇게 나오면:

  • Status: inactive

서버 내부(Ubuntu) 방화벽은 현재 꺼져 있는 상태다.
즉, “Ubuntu 방화벽 때문에 막힌 게 아니다.”

(반대로 Status: active라면 7070 포트 허용을 UFW에서도 해줘야 한다.)

 

 

 

진짜 원인: EC2 보안그룹(Security Group) 인바운드 규칙

EC2에서 외부 접근이 막히는 대부분의 이유는 이거다.

 

EC2 인스턴스 앞단에 붙어있는 보안그룹이
“7070으로 들어오는 요청”을 허용하지 않았기 때문

 

그래서 해결은 간단하다.

보안그룹 인바운드 규칙에 7070 포트를 열어준다.

 

 

인바운드 규칙 편집: 7070 포트 열기

AWS 콘솔에서:

  • EC2 → 인스턴스 선택
  • 연결된 보안그룹 클릭
  • 인바운드 규칙 편집(Edit inbound rules)

여기서 규칙을 추가한다.

규칙 추가 (7070)

  • 유형(Type): Custom TCP (또는 TCP)
  • 포트 범위(Port range): 7070
  • 소스(Source):
    • 실습 단계면: 0.0.0.0/0 (모든 IP 허용)
    • 더 안전하게 하려면: 내 IP(My IP) 로 제한

왜 HTTP가 아니라 TCP냐?

  • HTTP는 “80 포트”를 의미하는 프리셋이다.
  • 나는 지금 서버를 7070 포트로 띄웠기 때문에,
    HTTP 프리셋(80)이 아니라 TCP + 포트 직접 지정을 해야 한다.

즉,

“7070 포트로 들어오는 TCP 요청을 통과시켜라”
라고 보안그룹에 규칙을 박는 작업이다.

 

 

 

접속 테스트: http://서버IP:7070

이제 브라우저에서 아래로 접속한다.

http://<EC2 퍼블릭 IPv4>:7070

정상이라면, 이렇게 화면 뜬다.

여기서 “:7070”을 붙이는 이유는 당연히,

  • 우리가 서버를 7070 포트에서 띄웠기 때문

포트가 80이나 443이면 생략해도 되지만(기본 포트라서),
7070은 기본 포트가 아니니까 반드시 써야 한다.

 

 

만약 여전히 접속이 안 된다면 (체크리스트)

여기서도 막히면 보통 3개 중 하나다.

(1) 서버가 실제로 7070에서 떠 있는지

서버를 실행한 터미널에 로그가 살아있는지 확인한다. (프로세스가 죽었으면 당연히 접속 안 됨)

(2) 보안그룹이 “인스턴스에 연결된 보안그룹”이 맞는지

가끔 다른 보안그룹 열어놓고, 인스턴스는 다른 SG를 붙이고 있는 경우가 많다.

(3) URL에 퍼블릭 IP를 썼는지

EC2 내부 IP(프라이빗 IP)는 외부에서 접근 불가다.
브라우저엔 반드시 Public IPv4 address를 써야 한다.

 

 

정리: EC2에서 외부 접속을 열 때 핵심은 “보안그룹”

  • Ubuntu UFW는 보통 꺼져있거나(EC2 기본)
  • 켜져있어도 그건 내부 레벨이고,
  • 외부에서 들어오는 트래픽은 보안그룹이 먼저 차단한다.

 

 

 


출처 : 《자바 웹 프로그래밍 Next Step》, 박재성, 로드북

'Book > 자바 웹 프로그래밍 Next Step' 카테고리의 다른 글

3장_ 코드 이해: WebServer 클래스  (0) 2026.01.29
3장_ 소스코드 재배포  (0) 2026.01.29
3장_ 원격 서버 띄우기  (0) 2026.01.29
3장_ JDK 17 + Maven 설치  (0) 2026.01.28
3장_ 원격 서버 배포 전 준비 : UTF-8 세팅하기  (0) 2026.01.28
'Book/자바 웹 프로그래밍 Next Step' 카테고리의 다른 글
  • 3장_ 코드 이해: WebServer 클래스
  • 3장_ 소스코드 재배포
  • 3장_ 원격 서버 띄우기
  • 3장_ JDK 17 + Maven 설치
sqaxe1
sqaxe1
woojoo-devlog 님의 블로그 입니다.
  • sqaxe1
    Woojoo's Devlog
    sqaxe1
  • 전체
    오늘
    어제
    • 분류 전체보기 (148)
      • Backend (9)
        • Servlet (7)
        • Spring (2)
      • Frontend (1)
      • CS (0)
      • Book (33)
        • 자바 웹 프로그래밍 Next Step (30)
        • 테스트 주도 개발: 고품질 쾌속개발을 위한 TDD.. (1)
        • 성공과 실패를 결정하는 1%의 네트워크 원리 (2)
      • Engineering (0)
        • Testing (0)
      • Infra (6)
        • AWS (6)
      • Java (4)
      • Network (1)
      • 김영한 (28)
        • 자바 입문 (8)
        • 실전 자바 - 기본편 (6)
        • 실전 자바 - 중급편 (10)
        • 실전 자바 - 고급편 (4)
      • Web (39)
        • Web Basics (39)
      • Project (24)
        • NeoSquare (0)
        • Memo Evolution (24)
      • 정보처리기사 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    aws
    java
    개발서적
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
sqaxe1
3장_ 방화벽 설정
상단으로

티스토리툴바