본문 바로가기

개발

오라클 클라우드 인스턴스 사용 시 접속이 안되는 문제 해결

728x90

오라클이 평생 무료 인스턴스를 제공한다 해서 가볍게 하고 있는 사이드 프로젝트의 인스턴스를 Digital Ocean 및 AWS EC2 에서 옮기게 되었다. SSH 에 접속을 해서 이런저런 DB(PostgreSQL)도 설치하고 nginx 를 설치하고 최종 외부 http / https(let's encrypt) 로 접속을 하려고 하는데 계속해서 브라우져에서 접속이 안되는 문제가 생겼다. 오라클은 아무래도 한국어 문서가 부족하다보니 삽질한 부분에 대해서 남들에게 도움이 되고자 조금 기록을 남긴다.

 

2가지를 해결해야한다.

 

1. 인스턴스 자체에서 UI 단에서 제공하는 Ingress rule 을 수정

2. 내부 방화벽 수정. (보통 여기서 막힌다.)


1. Ingress Rule 수정.

아마존 AWS EC2 에서는 보통 이것이 inbound rules 라고 되어있는 부분. 포트를 80(http), 443(https) 를 열어줌으로써 해결을 하곤 했다. 오라클의 경우 이 부분이 Ingress Rules 라는 단어를 사용한다. 다음 사진들은 그 Ingress Rules 를 수정하는 스크린샷이다.

Source DICR 에 0.0.0.0/0 을 입력, 열고자 하는 포트를 입력하여 Ingress Rules 를 추가해준다.

 

Ingress Rules 를 잘 열어주었다면 위와 같은 사진처럼 될 것이다. (빨간 부분). 위 아래 5432 포트와 3000 포트는 내가 쓸 일이 있어서 따로 열어준 포트이다. (Postgresql 외부 접속 및 테스팅) 필요한 포트가 있으면 위의 사진들을 참고하여 Ingress rule 을 추가한다.

 

2. 내부 방화벽 수정

보통 다른 virtual instance provider 를 사용해본 사람들은 위의 포트 설정을 했는데 왜 접속이 안되나 할 것이다. 이 글을 쓰게 된 이유도 이 2번 내부 방화벽 수정 때문에 작성한다.

 

내부 방화벽에 80번 포트 (http 접속), 443포트 (https), 기타 다른 필요한 포트를 열려면 먼저 SSH 로 인스턴스에 접속한 다음에 다음 명령어를 입력해줘야한다.

$ sudo iptables -I INPUT 5 -i ens3 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
$ sudo iptables -I INPUT 5 -i ens3 -p tcp --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT

$ sudo netfilter-persistent save

# iptables 제대로 열려있는지 확인하려면?
$ sudo iptables --list

iptables 명령어를 이용하여 방화벽에 특정 포트를 예외적으로 열어주는 것이라 보면 된다. 대신 iptables 명령어는 인스턴스가 재부팅되면 세팅값이 날아가서 3번째 줄에 netfilter-persistent save 명령어를 이용해서 재부팅 되어도 해당 iptables 에 입력한 포트가 열려있도록 해주는 것이다.

 

 

 

참고 자료들

 

오라클 무료 인스턴스 등록 / 회원가입 / 사용법 등등은 다른 블로그나 글을 참고해주세요.

여기서는 접속 안되는 이슈에 대해서만 작성하였습니다.

'개발' 카테고리의 다른 글

맥에서 .sh 쉘 실행 파일 만들기.  (0) 2021.11.02
git init 취소하기  (0) 2021.10.21
Sourcetree 사용 중 diff 가 느린 경우  (1) 2021.10.19
JS 여집합 찾아내기.  (0) 2021.10.11