# 개요:
- public subnet 안에 bastion server를 private subnet 안에 database server를 구성한 경우 bastion 서버를 통해 외부에서 database로의 연결을 한다. 이때 ssh 를 통해 클라이언트의 지정된 포트가 bastion을 통해 database로 연결하는 방법을 사용하도록 한다.
# 설정 순서/테스트
1. public subnet의 bastion 서버에서 private subnet의 database으로 접속을 sqlplus로 수행해 routing과 security list 설정을 확인한다.
- linux VM에 sqlplus 내려받기 및 실행
wget https://download.oracle.com/otn_software/linux/instantclient/214000/instantclient-basic-linux.x64-21.4.0.0.0dbru.zip
wget https://download.oracle.com/otn_software/linux/instantclient/214000/instantclient-sqlplus-linux.x64-21.4.0.0.0dbru.zip
위 2개 파일을 unzip하고 이것을 .bashrc에 path 추가하여 sqlplus가 사용되도록 한다.
export LD_LIBRARY_PATH=/home/opc/instantclient_21_4
export PATH=$LD_LIBRARY_PATH:$PATH
<- 이렇게 실행하여 접속이 되는지 확인
이때 내 경우에는 접속이 되지 않았고 이유를 확인해 보니
public subnet -> private subnet의 접속 과정에서 private subnet의 security list 중
ingress rule 이 빠져있기 때문이여서 이를 추가 했다.
예: public subnet의 CIDR로 부터의 1521 destination port에 대한 접속을 허용하도록 private subnet이 사용하는 security list의 ingress rule에 아래 내용 추가
이후 bastion 서버에서 database의 접속은 성공 했다.
2. remote local machine에서 bastion 서버를 통한 database 연결
- windows machine 혹은 mac, linux 에서 ssh를 통한 포트 연결 설정을 통해 localhost의 1521 접속 시도시 database로 전달되도록 한다.
- ssh 의 -L 명령어를 활용하여 클라이언트의 로컬호스트의 지정된 TCP 포트에 대한 연결이 원격 측의 지정된 호스트 및 포트로 전달되도록 지정
- -N 명령어는 단지 포워딩만 하는 옵션
ssh -i 배스천서버의프라이빗키 -N -L localhost:1521:디비서버IP:1521 유저@배스천서버IP-> localhost의 1521포트의 연결이 베스천서버를 통해디비서버로 포워딩 되도록 하는 설정
-> 위처럼 sql developer 같은 툴로 접속시 localhost를 hostname으로 하여 접속을 하면 ssh를 통해 요청이 포워딩 되어 database로 가게 된다.
# reference
- OpenBSD manual page server: https://man.openbsd.org/ssh
댓글
댓글 쓰기