2018년 3월 19일 월요일

lightsail / ubuntu / postgres / remote-connection issue

AWS의 lightsail 에서 ubuntu 환경에 postgres를 테스트서버에서 쓰엔 db정보를 마이그레이션 하기 위한 작업을 계획했습니다.

ubuntu에 pstgres를 설치하는것은 다른것과 전혀 다를바 없이 package 메니져를 통해서 설치하면 되었고, 테스트서버의 pgAdmin을 통해, 만들어둔 시퀸스와 db를 create하는 명령어를 긁어와 만드는데 까지는 무난하게 진행되었으나, 데이터 안의 내용을 계속 추가해야하는 상황에서, 어떻게 하면 편하게 작업을 할까? 라는 고민을 하게 되었습니다.

이미 있는 정보를 마이그레이션 할 때 까지만, 위험하지만 원격접속을 이용해 pgAdmin으로 AWS 의 postgres를 건들이기로 결정했습니다만, 여기서 문제가 발생했습니다.

---
우선 원격제어를 하기위해서는, pg의 설정을 localhost만 허용에서 외부 주소 허용단계까지 수정해야하며, 이 작업이 끝나면, 172.0.0.1 에서만 접속이 허용되던것이, 풀립니다.
/etc/postgresql/버전/main/postgresql.conf 과 pg_hba.conf 를 수정하면 됩니다.


다음으로는 네트워크 인/아웃바운드 규칙에 pg의 포트를 허용시켜야 합니다.
간단하게 ufw에서 규칙을 추가하면 된다고 생각했는데, 오랜 삽질끝에, ufw로는 상세한 규칙을 정의하는데에 제한이 있다고 한답니다.

ufw보다 더 자세한 설정은 iptables 로 하며, 기본적으로 설치가 되어있는 package같으나, 어떤 이유에서인지 저는 제설치를 했습니다..

이후 shell에서 
iptables -I INPUT 1 -p tcp --dport 포트번호 -j ACCEPT
iptables -I OUTPUT 1 -p tcp --dport 포트번호 -j ACCEPT
를 입력하여 인/아웃바운드 규칙을 허용시켜줍니다.

이 작업은 외부에서 aws서버의 pgsql 에 접속을 하기위해 필요한 작업입니다.

이후 반드시 postgres 서비스를 제실행 해야합니다.

---

여기까지가 검색하면 나오는 일반적인 적용방법입니다만. 어째선지 저의 경우에는 외부에서 접속을 인식하지 못하는 문제가 계속 발생했습니다.

솔직히 아직도 이게 진짜 이유인지 확신을 못하고 있지만, 제 해결방법은 이러했습니다.

Aws의 lightsail 관리메뉴를 들어가면
 방화벽 설정을 하는 메뉴가 있습니다..
바로 이전 글에서는, 이 기능이 ufw를 실행하면, 작동하지 않는다고 했었기 때문에, 'ufw의 우선순위가 더 높다'  라고 판단하고 있었습니다.

하지만 도저히 외부접속이 안되서, 위 이미지처럼 postgressql 을 예외목록에 추가를 해주니 곧바로 접속이 되었습니다.(????내 3시간?)
그런고로 ufw와 aws의 firewall정책은 두개다 지켜야 하는것으로 보입니다.

반드시
ubuntu의 firewall과
aws의 firewall
두가지를 모두 허용해야 합니다..

댓글 없음:

댓글 쓰기