기본 콘텐츠로 건너뛰기

OCI Oracle database 를 bastion 서버를 통해 접속하는 방법

# 개요:

- 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

<- 이러한 형태로 /home/opc/.bashrc에 추가

sqlplus sys/비밀번호@데이터베이스IP:1521/서비스네임 as sysdba

<- 이렇게 실행하여 접속이 되는지 확인

이때 내 경우에는 접속이 되지 않았고 이유를 확인해 보니 

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


댓글

이 블로그의 인기 게시물

MySQL Database Service(MDS) + HeatWave 실습/테스트

  MySQL 클라우드서비스인 MDS 에서 사용 가능한 HeatWave 적용 방법 테스트를 공유하려고 한다. HeatWave 는 별도의 ETL 작업 없이 OLTP 에서 사용중인 데이터를 HeatWave 메모리에 실시간으로 반영하여 OLTP와 OLAP 을 동시에 사용할 수 있게 해주는 서비스이다. 이 포스팅은 HeatWave 적용하는 방법을 테스트 해봤다. 오라클 클라우드 계정에 MySQL 을 생성하고  HeatWave 사용을 위해 Node 두개를 Enable 시켰다. - 샘플로 사용한 테이블 생성 CREATE TABLE ORDERS ( O_ORDERKEY BIGINT NOT NULL , O_CUSTKEY INTEGER NOT NULL , O_ORDERSTATUS CHAR ( 1 ) NOT NULL , O_TOTALPRICE DECIMAL( 15 , 2 ) NOT NULL , O_ORDERDATE DATE NOT NULL , O_ORDERPRIORITY CHAR ( 15 ) NOT NULL , O_CLERK CHAR ( 15 ) NOT NULL , O_SHIPPRIORITY INTEGER NOT NULL , O_COMMENT VARCHAR ( 79 ) NOT NULL , PRIMARY KEY (O_ORDERKEY)); CREATE TABLE LINEITEM ( L_ORDERKEY BIGINT NOT NULL , L_PARTKE...

[OCI] OCI와 Azure 간 VPN 통신

참고:  https://joungminko.github.io/2021/04/01/oci-azure-vpn-conn.html   [OCI] OCI와 Azure 간 VPN 통신 OCI와 Azure 간 IPsec VPN 연결을 위한 방법 설명입니다.(static 연결) 1. 개요 OCI와 Azure 가 사용하는 private IP 대역이 달라야 합니다(예: OCI(10.5.0.0/16), Azure(10.0.0.0/16)) IPsec 연결을 위해 Azure VPN(virtual network gateway) 장비 생성 후 OCI에서 VPN 연결 생성, 그 다음 Azure에서 OCI의 VPN tunne에 대응하는 local network gateway 생성 후 route table로 연결하는 순서로 작업 하시면 됩니다. 그 밖에 방화벽 설정도 필요합니다. 2. 작업 순서 OCI와 Azure에서 가상 네트워크 생성 Azure에서 marketplace의 virtual network gateway 생성(CPE 장비(VPN)) 경로 기반 설정 static으로 virtual network gateway가 사용할 subnet 주소 설정(Azure의 가상 네트워크의 다른 subnet으로 지정) public IP 생성 OCI에서 IPsec 설정 Azure의 virtual network gateway의 public IP 정보로 OCI CPE 의 public IP 설정 Static route 주소에 Azure의 private network CIDR 정보 입력 default 2개의 tunnel 생성(각 tunnel의 public IP와 Shared secret 생성됨) Azure에서 marketplace의 local network gateway 생성 OCI IPsec에서 만들어진 ...