Transit Gateway를 이용한 다중 VPC 연결
카카오클라우드는 Transit Gateway를 이용하여 중 앙 집중식 형태로 VPC 간 트래픽을 쉽게 관리할 수 있습니다.
- 예상 소요 시간: 60분
- 사용자 환경
- 권장 운영 체제: MacOS, Ubuntu
- Region: kr-central-2
- 사전 준비 사항
- VM 접근용 키 페어
- 프로젝트 관리자 권한
시나리오 소개
해당 시나리오에서는 2개의 VPC를 생성하고, Transit Gateway를 통해 연결하는 예제를 다룹니다. 자세한 내용은 다음과 같습니다.
- 연결할 VPC 2개를 생성합니다. 시나리오에서 각 VPC는 1개의 AZ을 사용하며, 기본 생성되는 퍼블릭 서브넷을 이용합니다.
- Transit Gateway를 생성하고, Transit Gateway에 VPC 2개를 Attachment로 추가합니다.
- Transit Gateway에 정적 라우팅을 설정합니다. 특정 VPC의 CIDR를 목적지로 하는 패킷을 해당 VPC로 라우팅하는 정책을 추가합니다.
- 서브넷의 Route 정책을 설정합니다. 이 시나리오에서는 기본 생성된 퍼블릭 서브넷을 사용합니다. 해당 서브넷에서 다른 VPC를 목적지로 하는 패킷을 Transit Gateway로 라우팅하는 정책을 추가합니다. 이로써 Transit Gateway를 통해 목적지 VPC와 연결할 수 있습니다.
- 각 서브넷에 VM 인스턴스를 생성합니다. ping 명령어를 사용하여 패킷이 다른 VPC의 인스턴스로 제대로 전달되는지 확인합니다.
시나리오의 구성도는 다음과 같습니다.
Step 1. VPC 및 네트워크 생성
VPC는 논리적으로 격리된 가상 네트워크 공간을 제공합니다. 이 가상 네트워크 환경을 통해 카카오클라우드의 리소스를 유연하게 운영할 수 있습니다. 자세한 내용은 VPC 문서를 통해 확인하세요.
-
카카오클라우드 콘솔 > VPC에 접속한 뒤 [VPC 생성] 버튼을 클릭합니다.
-
다음을 참조하여 연결을 진행할
vpc-a
를 생성합니다.VPC IP CIDR
의 값은 사용 중인 환경에 따라 수정이 필요할 수 있습니다. 수정한 경우, 시나리오 진행에서 사용하는 모든 해당 값에 대해서도 변경이 필요합니다.항목 세부 항목 값 VPC 정보 VPC 이름 handson-vpc-a VPC IP CIDR 블록 10.1.0.0/16 가용 영역 AZ 개수 1 첫 번째 AZ kr-central-2-a 서브넷 설정 가용 영역당 퍼블릭 서브넷 개수 1 가용 영역당 프라이빗 서브넷 개수 0 -
다음을 참조하여 연결을 진행할
vpc-b
를 생성합니다.주의VPC를 생성할 때 각 VPC의 CIDR(Classless Inter-Domain Routing) 범위가 서로 중복되지 않도록 설정해야 합니다. CIDR은 VPC의 네트워크 주소 범위를 정의하며, 중복된 CIDR을 가진 VPC가 있다면 충돌이 발생하고 서로 통신할 수 없게 됩니다. 따라서 각 VPC의 CIDR은 고유하게 설정해야 합니다.
예를 들어, VPC A의 CIDR이10.1.0.0/16
이라면, VPC B의 CIDR은10.2.0.0/16
과 같이 서로 다른 범위로 설정해야 합니다.항목 세부 항목 값 VPC 정보 VPC 이름 handson-vpc-b VPC IP CIDR 블록 10.2.0.0/16 가용 영역 AZ 개수 1 첫 번째 AZ kr-central-2-b 서브넷 설정 가용 영역당 퍼블릭 서브넷 개수 1 가용 영역당 프라이빗 서브넷 개수 0 -
카카오클라우드 콘솔 > VPC > 서브넷 메뉴에 접속합니다. 그 다음, 생성된 네트워크 리소스를 확인합니다.
Step 2. Transit Gateway 생성 및 설정
Transit Gateway는 VPC 수가 많아질수록 복잡해지는 VPC Peering
구성의 한계를 넘어서 중앙 집중식 형태로 VPC 간 또는 VPC-온프레미스간 트래픽들을 보다 쉽게 관리할 수 있습니다. 자세한 내용은 Transit Gateway를 통해 확인하세요.
1. Transit Gateway 생성
-
카카오클라우드 콘솔 > Transit Gateway에 접속 후, [Transit Gateway 생성] 버튼을 이용하여 새로운 Transit Gateway를 생성할 수 있습니다.
-
예제는 아래 표 및 이미지를 확인하여 생성할 Transit Gateway의 정보를 입력합니다.
항목 설명 Transit Gateway 이름 handson-transit-gateway 기본 연결 (Association) 연결 -
리소스가 정상적으로 생성되었는지 확인합니다.
2. Attachment 생성
-
생성된 Transit Gateway의 상세 설정을 통해 Attachment 생성 작업을 진행합니다.
-
생성한 예제
handson-vpc-a
를 Transit Gateway의Attachment
로 추가합니다. -
생성한 VPC
handson-vpc-b
를 Transit Gateway의Attachment
로 추가합니다. -
Attachment
가 추가되었는지 확인합니다.
3. Transit Gateway 라우팅 설정
-
Transit Gateway의 라우팅 설정을 위해 Transit Gateway에 연결된 라우팅 테이블의 상세 페이지에 접속합니다.
카카오클라우드 콘솔 > Transit Gateway > Transit Gateway 목록 테이블을 통해 접속 또는 카카오클라우드 콘솔 > Transit Gateway > 라우팅 테이블 메뉴에 접속합니다.
-
Route 탭에서 정적 라우팅을 확인할 수 있습니다. [정적 라우팅 추가] 버튼을 클릭하여 정적 라우팅을 추가합니다.
-
다음을 참고하여 정적 라우팅을 추가합니다. 해당 설정을 통해 Transit Gateway로 들어오는 목적지
10.1.0.0/16
인 트래픽을handson-vpc-a
로 라우팅하는 규칙을 추가합니다.항목 값 목적지 10.1.0.0/16 대상 handson-vpc-a -
다음을 참고하여 정적 라우팅을 추가합니다. 해당 설정을 통해 Transit Gateway로 들어오는 목적지
10.2.0.0/16
인 트래픽을handson-vpc-b
로 라우팅하는 규칙을 추가합니다.항목 값 목적지 10.2.0.0/16 대상 handson-vpc-b -
설정이 계획대로 추가되었는지 확인합니다.
Step 3. 서브넷 라우팅 정책 설정
-
카카오클라우드 콘솔 > Beyond Networking Service > VPC > 라우팅 테이블 메뉴로 이동 후, 라우팅 테이블 목록을 확인합니다.
handson-vpc-a
의 main 서브넷,handson-vpc-b
의 main 서브넷에 연결된 각각의 라우팅 테이블 상세 페이지에 접속하여 라우팅 정보를 수정합니다. -
handson-vpc-a
의main
서브넷에 연결된 라우팅 테이블 상세 페이지에 접속합니다. 그 다음 [라우팅 추가] 버튼을 클릭하여 새로운 라우팅을 추가합니다. -
handson-vpc-b
의CIDR
가 목적지인 경우,handson-transit-gateway
를 대상으로 설정하는 라우팅을 추가합니다. -
생성된 라우팅 정보를 확인합니다.
-
handson-vpc-b
의main
서브넷에 연결된 라우팅 테이블 상세 페이지에 접속합니다. 그 다음 [라우팅 추가] 버튼을 클릭하여 새로운 라우팅을 추가합니다. -
handson-vpc-a
의CIDR
가 목적지인 경우,handson-transit-gateway
를 대상으로 설정하는 라우팅을 추가합니다. -
생성된 라우팅 정보를 확인합니다.
Step 4. 인스턴스 생성 및 연결 확인
-
카카오클라우드 콘솔 > Virtual Machine > 인스턴스 메뉴에서 [인스턴스 추가] 버튼을 클릭하여 인스턴스를 생성합니다. 아래 표를 확인하여 생성한 VPC에 인스턴스를 1개씩 생성합니다.
항목 세부 항목 인스턴스 1 인스턴스 2 기본 정보 이름 handson-instance-a handson-instance-b 개수 1 1 이미지 Ubuntu 20.04 Ubuntu 20.04 인스턴스 유형 m2a.large m2a.large 볼륨 루트 볼륨, 20GB, SSD 루트 볼륨, 20GB, SSD 키 페어 {사용자 키 페어}
{사용자 키 페어}
네트워크 VPC handson-vpc-a handson-vpc-b 서브넷 main handson-vpc-b 보안 그룹 {아래 참고}
{아래 참고}
-
통신을 확인하기 위해서는 사용할 포트에 대한 보안 정책을 확인해야 합니다. 아래를 확인하여 해당 시나리오를 위한 보안 정책을 추가합니다.
정책 인바운드 인바운드 아웃바운드 프로토콜 ICMP TCP ALL 패킷 출발지 (Source) 10.0.0.0/8 {사용자 퍼블릭 IP}/32
0.0.0.0/0 포트 번호 - 22 - 정책 설명 ping ssh all 안내온라인 서비스나 웹사이트를 통해 퍼블릭 IP 주소를 확인할 수 있습니다. 예를 들어, WhatIsMyIP.com을 방문하여 퍼블릭 IP 주소를 확인할 수 있습니다.
-
인스턴스에 퍼블릭 IP를 할당하고 ssh 접속을 진행합니다.
ssh ubuntu@{INSTANCE_PUBLIC_IP} -i {KEY_PAIR}
-
접속한 후, 다른 VPC에 생성한 인스턴스에
ping
명령어를 통해 통신을 확인합니다. 아래 이미지는vpc-a
에 위치한instance-a
에서vpc-b
에 위치한instance-b
로ping
명령어를 사용한 결과입니다.ping {INSTANCE_PRIVATE_IP}
아래 이미지는
vpc-b
에 위치한instance-b
에서vpc-a
에 위치한instance-a
로ping
명령어를 사용한 결과입니다.