AWS TGW 의 개념을 알았으니, 직접 구성해보고 테스트 해봐야한다.
아래의 순서로 진행할 것이며
- 여러개의 VPC 구성 및 IGW 연결
- 각 VPC 당 최소 1개의 EC2 구성
- TGW 생성 및 TGW 라우팅 테이블 구성
- 다른 VPC의 EC2 끼리 통신 테스트
TGW 생성시 별도로 설정할 필요 없이 자동으로 생성되는 설정들도 있어,
구성이 의외로 간단하다.
TGW 는 여러개의 VPC를 연결해서 VPC 간 통신을 가능하게 만드는 서비스이다.
VPC 2개 구성하면 peering 서비스와 다르지 않고, 너무 많이 구성하면 하나하나 설정하는데 번거롭다. 그래서 TGW 임을 증명할 수 있는 최소한의 환경을 구성한다.
- VPC 3개
- EC2 각 1개 (VPC 당 1대, 총 3대)
- IGW (EC2 에 SSH 로 접속하기 위함 VPC 당 하나씩 만들면 된다)
를 구성할 것이며,
VPC 구성은 [AWS] VPC, SUBNET 네트워크 망 구성 을 참고한다.
IGW 구성은 [AWS] IGW로 외부 인터넷 연결 을 참고한다.
VPC 에 구성할 EC2는 SSH, ICMP 통신만 되도록 보안그룹을 구성한다.
그리고 외부에서 SSH 를 접속할 수 있어야 하므로 공인 IP를 설정 한다.
사전 작업이 완료되었다면, 아래의 순서로 TGW 를 구성할 것이다.
- TGW 서비스 생성
- VPC를 TGW에 연결
- TGW 라우팅 테이블 구성
- 각 VPC 별 라우팅 테이블 구성

VPC에 들어가면 좌측 메뉴에 Transit gateway 서비스가 있고, Transit Gateway 의 Transit Gateway 메뉴로 들어가서 우측 상단의 create transit gateway 를 선택한다.
TGW 의 이름, ASN 을 입력하고 옵션들을 선택한다. 어떤 용도로 쓸지 모르면 전부다 체크하면 된다. (ASN 은 리소스 식별번호이며, 다른 서비스 또는 리소스에서 ASN 을 식별하여 특정 기능 수행 할 수 있다.)

지금 테스트에서는 굳이 설정할 필요가 없으니 체크해제된 상태로 둔다. 각 옵션에 대해 설명하면(TAG 는 알거니까 제외 ㅋㅋ),
Configure cross-account sharing options 는 TGW 를 다른 계정과 공유할 수 있게 하는 옵션이다. 이 옵션에 체크하면 RAM(Resource acsess manager) 을 통해 다른 계정의 VPC 와 생성한 TGW 를 연결하여 쓸 수 있다.
Transit Gateway CIDR blocks 는 별도의 IP를 할당하기 위해 TGW 에 IP 대역을 설정하는 것이다. AWS TGW 를 통해 GRE, VPN을 사용하는 경우, GRE 또는 VPN 의 터널 엔드포인트에 IP를 할당해야 한다. (그래야만 통신이 되니까) 그때 사용하는 IP 대역이 Transit Gateway CIDR blocks 에서 설정한 IP 대역이다.
Transit Gateway CIDR blocks 옵션은 VPC를 연결할 때도 활용 할 수 있다. 만약 특정 대역으로 설정한 뒤 VPC 를 연결하면, 연결한 VPC가 같은 IP 대역 일 때 만 통신이 가능하다. (그러나 Transit Gateway CIDR blocks 옵션 설정 전 기존에 연결되어 통신하고 있는 VPC 는 아무런 영향을 받지 않는다. 옵션 설정 후 새로 연결하는 VPC 에만 영향이 있다.)
옵션 설정 후 create transit gateway 를 선택하면, TGW 가 생성된다.

TGW 가 생성되어 활성화 될때까지 약 1분간 걸리며, 활성화되면 PENDING 에서 AVAILABLE 로 변경된다. 아래에 생성된 TGW 의 정보를 볼 수 있다.
TGW 를 생성했으니 통신할 VPC 들을 TGW 에 연결해야 한다.

좌측 Transit gateway attachments 메뉴를 통해 TGW에 VPC를 연결할 수 있다.
우측 상단의 Create transit gateway attachment 를 선택한다.

attachment 의 이름과 연결할 TGW, 그리고 VPC를 설정할 수 있다.
이름, TGW 를 선택하고 VPC 를 연결할 것이니 TYPE 은 VPC 를 선택한다.

VPC attachment 옵션은 별도로 기본 설정 그대로 둔다.
VPC ID 는 연결한 VPC 의 ID를 선택한다. SUBNET IDs 는 TGW 와 연결할 서브넷을 선택한다.

태그는 필요하면 입력하고 우측 하단의 create transit gateway attachment 를 선택해서 VPC 연결 설정을 적용한다.

VPC 를 TGW 에 연결하는데 수십초(?) 걸린다.

연결이 완료되면 AVAILABLE 로 변경된다.
VPC 힌개를 TGW 에 연결했으니, 나머지 2개의 VPC 도 위와 같은 방식으로 연결한다.

3개의 VPC가 TGW 에 연결된 것을 확인할 수 있다.

TGW 를 생성해서 VPC 를 연결하면 라우팅 테이블이 자동으로 생성된다. 따로 수정할 필요는 없다.

TGW 라우팅 테이블에 연결된 VPC 들을 볼 수 있다.

PROPAGATIONS 은 TGW 에 연결된 다른 네트워크 리소스의 정보를 전달하는 것이다.
이 부분도 기본으로 설정되어 있으니 따로 수정할 필요 없다.

TGW 의 라우팅 테이블 설정이다. 특정 IP 대역이 목적지 일때 해당 IP 대역을 갖고 있는 VPC 로 통신하도록 한다.

(위 사진은 VPC-1 의 라우팅 설정이다.)
TGW의 라우팅을 설정했으니 VPC 라우팅을 설정해야 한다. VPC 라우팅 설정 시
VPC-1 에서 VPC-2 와 VPC-3 의 대역으로 갈 때 TGW 를 거치도록 라우팅을 설정하면 된다.
(VPC-1 은 10.1.0.0/16, VPC-2 는 10.2.0.0./16, VPC-3 은 10.3.0.0/16 이다)
- VPC-1 의 라우팅 테이블 -
| DST | TARGET |
|---|---|
| 0.0.0.0 | IGW |
| 10.2.0.0/16 | TGW(VPC-1 ~ 3 와 연결된) |
| 10.3.0.0/16 | TGW(VPC-1 ~ 3 와 연결된) |
IGW 는 VPC-1 에 설치된 EC2 에 SSH 로 접속하기 위한 라우팅이다.
- VPC-2 의 라우팅 테이블 -
| DST | TARGET |
|---|---|
| 0.0.0.0 | IGW |
| 10.1.0.0/16 | TGW(VPC-1 ~ 3 와 연결된) |
| 10.3.0.0/16 | TGW(VPC-1 ~ 3 와 연결된) |
IGW 는 VPC-2 에 설치된 EC2 에 SSH 로 접속하기 위한 라우팅이다.
- VPC-3 의 라우팅 테이블 -
| DST | TARGET |
|---|---|
| 0.0.0.0 | IGW |
| 10.1.0.0/16 | TGW(VPC-1 ~ 3 와 연결된) |
| 10.2.0.0/16 | TGW(VPC-1 ~ 3 와 연결된) |
IGW 는 VPC-3 에 설치된 EC2 에 SSH 로 접속하기 위한 라우팅이다.

VPC-2 의 라우팅 설정이다.
TGW 를 통해 VPC를 연결했다면, 각 VPC 에 설치된 EC2 끼리 ping 테스트를 통해 연결이 정상인지 확인한다.

VPC-1 의 EC2 에서 VPC-2, 3 의 EC2로 ping 테스트를 하면 정상적으로 도달하는 것을 볼 수 있다.

VPC-2 에서도 마찬가지로 VPC-1, 3의 EC2 로 ping 이 잘 된다.

이번에 구성한 TGW 와 VPC, EC2 를 구성도로 그리면 위와 같다.