개요

퍼블릭 IP로 서버 접속하는 것을 실패했다. 문제 상황과 해결 과정을 기록하고 배운것을 정리한다. 


문제 상황 

인터넷 주소창에 http://52.XX.XXX.76:8080를 입력했으나 연결이 거부되었다는 응답을 받았다.


문제 해결

1. http://52.XX.XXX.76:8080가 무엇이길래 연결이 거부된 것인지 부터 파악해보고자 한다. 

 

EC2 인스턴스는 가상 컴퓨터이다. 그리고 이 컴퓨터의 주소가 퍼블릭 IP이다. 

:8080을 추가하면 Spring Boot가 열어둔 포트까지 연결된다. 

즉 나의 로컬 환경에서 인터넷 주소창에 http://52.XX.XXX.76:8080를 입력하면 EC2가 만든 서버에 접속하게 되는것이다. 

정리하자면 인터넷에서 내 서버로 접속하는 행동이고, 이때 퍼블릭 IP를 이용한것이다.

 

2.  퍼블릭 IP로 접속하기 위해 반드시 필요한 것이 무엇인지 알아보았다. 

 

1. EC2 보안 그룹에서 8080 포트 열려 있어야 함

제대로 설정해둔 것을 확인했다. 

 

2. Spring Boot가 0.0.0.0 에서 실행되어 있어야 함

코드 실행명령을 다음과 같이 호출한 것을 확인했다. 

java -jar build/libs/payment-system-0.0.1-SNAPSHOT.jar --server.address=0.0.0.0

 

3. 인스턴스가 퍼블릭 IP를 가지고 있어야 함

인스턴스를 여러번 재시작하는 과정에서 퍼블릭 IP가 변경되었고 이를 이용해 접속을 시도했다. 

퍼블릭 IP가 변경될 수 있다는 사실을 인지하지 못했으며 동작원리를 알고 있었다면 좀 더 빨리 문제를 해결할 수 있었을 것 같다. 

공부한 내용을 간단히 정리해둔다. 

 

* AWS는 임시 퍼블릭 IP를 배정한다. 

퍼블릭 IP 배정하는 내부 동작) 
1. AWS가 자동으로 임시 퍼블릭 IP를 회수함
2. 다시 Start 하면 새 퍼블릭 IP 배정
3. 그래서 IP가 매번 바뀌는 것처럼 보임

* 그렇다면 왜 임시로 배정하는 것일까? 

퍼블릭 IP 주소가 한정되어 있고,사용하지 않는 인스턴스에 퍼블릭 IP를 낭비하지 않기 위해서
자동으로 회수하고 필요할 때만 다시 할당하기 때문이다. 

* 그렇다면 IP주소가 한정되어있는 이유는 무엇일까? 

퍼블릭 IP는 IPv4 주소를 말하는데, 이 IPv4는 전세계에서 사용할 수 있는 개수가 약 43억 개밖에 없다.
AWS, Azure, Google 같은 클라우드 회사도 전 세계 사용자에게 IPv4를 제공하려면 무한정 줄 수가 없다.

+ Recent posts