이번글은 터널링 하는방법을 잊지않기위해 단순 코드 저장입니다.
Bastion Host
Bastion은 수호자, 보루 요새라는 사전적 의미를 가집니다.
구축한 인프라 또는 네트워크의 입구에서 허용된 사람만 출입할 수 있는 역할을 수행하는 녀석입니다.
즉 맨 입구에서 게이트역할을 하는 서버를 Bastion호스트 또는 Bastion서버 라고 부릅니다.
왜 사용하지?
AWS 리소스 구성 후 관리자가 VPC 외부에서 Private Subnet에 접근해야 하는 경우 직접 접근할 수 있는 방법이 없는데, 이 때 Bastion Host를 거쳐서 Private Subnet에 접근할 수 있습니다.
저의 문제상황
로컬에서 Dev 디비는 접근이 가능했지만 QA환경에서는 접근을 못하게되어 DB Connection생겼습니다.
왜냐하면 QA DB는 private subnet에 존재하기 떄문이었습니다. 그래서 제 pc에서는 qa디비에 접근을 하고싶어도 못하는 상황이 발생했습니다. qa디비에 연결해서 API를 테스트하고싶다면은 배포를 하여 private subnet에 연결해야 하는것입니다.
이럴때 사용하는방법이 터널링 이라는 방법이 있다는걸 알게되었습니다.
위의 사진과 같이 Local에서 Bastion서버에 ssh로 연결합니다. Bastion을 통해서 RDS접근하도록 만듭니다.
그런데 터널링은 제 로컬의 예를들어서 3307번 포트를 private subnet에있는 RDS와 연결하도록 하는것입니다.
로컬 3307포트를 Bastion을 통하고 Bastion의 3306포트랑 매핑시키는것입니다.
명령어는 다음과 같습니다. - 순서는 관련 없습니다.
ssh -i pem key경로 계정@접속할서버아이피 -p 포트 -L 로컬에서 사용할 포트:대상서버정보:포트
예) ssh -i ./hello.pem -p 22 root@103.123.55.100 -L 3306:localhost:3306
그런데 연결이 안 되고 Bastion에 다음과 같은 로그가 남았습니다.
channel 3: open failed: connect failed: Connection refused
channel 3: open failed: connect failed: Connection refused
이러한 경우는
원인은 원격지에 127.0.0.1에 대한 루프백설정이 막혀있어서 발생한 오류였습니다. 따라서 localohost대신 ip를 명시해주세요
다음에 공부해야 할 내용
VPC
subnet
출처: https://118k.tistory.com/890, https://roadrunner.tistory.com/661, https://kimjingo.tistory.com/179