본문 바로가기

AWS

[AWS] Transit Gateway를 사용하여 다른 리전 EC2에 내부 IP로 SSH 접속하기

Transit Gateway (TGW) 를 이용해서 서울 리전의 인스턴스 -> 오하이오 리전 인스턴스 내부 IP로 SSH로 접속하는 실습을 해보았다.

TGW 실습 아키텍쳐

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 연결] 탭에 가보면 아래와 같이 생성되어 있고, 연결 수락을 눌러주면 된다.

이미 지운 리소스지만 괜히 ID를 지워봤다.

* 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 를 선택하여 경로를 생성한다.

실습은 10.0.1.0/24로 했나보다.. 10.0.10.0/24 (서울 리전 대역)라고 생각하자..

4. 보안 그룹 설정

 

- ping 테스트를 위한 ICMP 인바운드 허용

- SSH 접속을 위한 인바운드 허용

* TGW로 연결되었으므로, 서로의 내부 IP를 허용한다. (공인 IP X)

 

2. 테스트

* pem 키 없이 SSH 접속이 가능하도록 미리 설정을 바꿔놓았다.

두 서버 모두에 pem 키없이 SSH 접속이 가능하도록 설정해놓는다면, 서울 -> 오하이오, 오하이오 -> 서울 모두 접속이 가능해진다.

 

위와 같이 서로의 내부 IP로 ping 테스트가 가능하며, SSH 접속 또한 내부 IP로 접근이 가능한 것을 확인했다.

 

TGW는 비싸므로, 실습이 완료된 것을 확인했으니 리소스들을 빠르게 지운다.