OCI 프리티어 인스턴스에서 외부 포트 접속 불가 문제 해결기 (Swagger 접속 사례)

문제 상황

Oracle Cloud Infrastructure(OCI) 프리티어 인스턴스에서 Node.js 기반 API 서버를 실행하고 있었고, 내부에서는 정상적으로 localhost:3000 또는 10.0.0.x:3000 접근이 가능했지만 외부에서는 퍼블릭IP:3000 접속이 되지 않는 문제가 있었습니다.

접속 불가 현상 예시


curl http://[퍼블릭IP]:3000
curl: (7) Failed to connect to [퍼블릭IP] port 3000: Couldn't connect to server

점검한 사항들

  • 보안 목록(Security List): 3000번 포트 인바운드 TCP 허용
  • UFW: 3000/tcp 포트 허용
  • iptables: ACCEPT 규칙 등록
  • Node.js Listen 상태: 0.0.0.0:3000 으로 정상 리스닝
  • 경로 테이블: 0.0.0.0/0 → 인터넷 게이트웨이 정상 설정

최종 원인 및 해결 방법

  1. 기존 퍼블릭 IP가 VNIC에 연결되어 있음에도 불구하고 실제 라우팅이 되지 않음
  2. OCI 콘솔에서 해당 퍼블릭 IP를 해제하고, 새 퍼블릭 IP를 생성 및 연결
  3. Node.js 애플리케이션이 의도치 않게 중단되어 있었음 (PM2로 재시작)
  4. 포트 리스닝 상태를 다시 확인한 후 0.0.0.0:3000 으로 떠 있는지 재확인

최종 테스트 결과


curl http://[신규 퍼블릭 IP]:3000/api-docs
→ Swagger UI 정상 출력 확인

추가 팁

  • Node.js listen host: 반드시 '0.0.0.0' 으로 설정
  • PM2 확인: pm2 list / pm2 restart [앱이름]
  • VNIC 퍼블릭 IP 연결 후 curl http://169.254.169.254/opc/v1/vnics/ 명령으로 상태 확인

결론

OCI 프리티어에서 외부 포트 접속이 되지 않는 문제는 네트워크 설정뿐만 아니라 퍼블릭 IP의 실제 연결 상태 및 애플리케이션의 리스닝 상태에 따라 발생할 수 있습니다. 위 사례처럼 퍼블릭 IP를 새로 연결하고 Node.js 앱을 재기동하는 것으로 외부 접속이 가능해졌으며, Swagger 문서 페이지도 외부에서 정상 확인되었습니다.

관련 글

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다