[AWS] Transit Gateway를 사용하여 다른 리전 EC2에 내부 IP로 SSH 접속하기
Transit Gateway (TGW) 를 이용해서 서울 리전의 인스턴스 -> 오하이오 리전 인스턴스 내부 IP로 SSH로 접속하는 실습을 해보았다.
0. 준비
실습을 위해 설정한 리전별 VPC와 Subnet의 대역은 다음과 같이 임의로 설정해봤다.
(실제 실습과 차이가 있다.)
[Seoul Region]
- VPC : 10.0.0.0/16
- Subnet : 10.0.10.0/24
[Ohio Region]
- VPC : 192.168.0.0/16
- Subnet : 192.168.10.0/24
IP 대역이 겹치지 않도록, 각 리전에 VPC 환경 구성 및 EC2를 생성한다.
또한, Session Manager(SSM) 연결이 가능하도록 미리 설정해두면 AWS 콘솔 내에서 바로 인스턴스에 접속할 수 있다.
1. 시작
1. Transit Gateway 생성하기
순서 : [VPC] - [TGW] - [TGW 생성]
디폴트 상태로 TGW의 이름만 지정하여 생성했다.
* pending 시간이 조금 걸린다.
** 두 리전에 모두 생성해준다. 두 리전 왔다갔다거리면 헷갈리니까 네이밍에 유의.
2. TGW Attachments (TGW 연결) 생성하기
리전마다 2개의 Attachments가 필요하다.
- 각 리전의 TGW끼리 연결
- 리전 내의 TGW와 VPC를 연결
먼저 리전별 TGW를 연결해본다.
두 리전 어디서 연결을 생성하든 상관없다.
한 리전에서 연결을 생성하면, 다른 리전에서는 수락만 하면 된다.
TGW - TGW 연결을 위해서는 연결 유형의 [Peering Connection] 을 선택.
다음은 연결할 대상을 선택한다.
아래와 같이 내 계정, 다른 계정 모두 가능하다.
다른 계정의 경우, 그 계정의 Account ID를 지정해주면 된다.
연결 생성 후, 연결 대상 리전의 [TGW 연결] 탭에 가보면 아래와 같이 생성되어 있고, 연결 수락을 눌러주면 된다.
* pending 시간이 오래 걸린다. 그동안 VPC 연결을 생성해본다.
위와 동일하게 연결 생성을 해주는데, 연결 유형만 VPC로 해주면 됨.
상태, 연결 상태가 초록초록하게 빛나면 된 것이다.
3. 라우팅 설정
리전별로 두 곳에서 라우팅 설정을 해줘야 한다.
- VPC 내의 라우팅 테이블 설정
- TGW 라우팅 테이블 설정
먼저, VPC 내의 라우팅 테이블에
오하이오 리전에서는 서울 리전로 가는 IP가 TGW로 향할 수 있도록 경로를 설정해준다.
[오하이오 리전 라우팅 테이블]
Destination : 10.0.10.0/24 (서울 리전 인스턴스가 있는 서브넷 대역)
Target : tgw-aaaaaaaaaaaaaa
- 그 다음 TGW의 라우팅 테이블을 설정해준다.
순서 : [TGW] - [TGW 라우팅 테이블] - [Route]
이미지와 같이 통신할 서버의 IP 대역과 TGW - TGW Attachments ID 를 선택하여 경로를 생성한다.
4. 보안 그룹 설정
- ping 테스트를 위한 ICMP 인바운드 허용
- SSH 접속을 위한 인바운드 허용
* TGW로 연결되었으므로, 서로의 내부 IP를 허용한다. (공인 IP X)
2. 테스트
* pem 키 없이 SSH 접속이 가능하도록 미리 설정을 바꿔놓았다.
두 서버 모두에 pem 키없이 SSH 접속이 가능하도록 설정해놓는다면, 서울 -> 오하이오, 오하이오 -> 서울 모두 접속이 가능해진다.
위와 같이 서로의 내부 IP로 ping 테스트가 가능하며, SSH 접속 또한 내부 IP로 접근이 가능한 것을 확인했다.
TGW는 비싸므로, 실습이 완료된 것을 확인했으니 리소스들을 빠르게 지운다.