Transit Gateway를 이용한 다중 VPC 연결
카카오클라우드는 Transit Gateway를 이용하여 중앙 집중식 형태로 VPC 간 트래픽을 쉽게 관리할 수 있습니다.
- 예상 소요 시간: 60분
- 권장 운영 체제: macOS, Ubuntu
- Region: kr-central-2
- 사전 준비 사항
- VM 접근용 키 페어
- 프로젝트 관리자 권한
구성도
해당 시나리오에서는 2개의 VPC를 생성하고, Transit Gateway를 통해 연결하는 예제를 다룹니다. 자세한 내용은 다음과 같습니다.
- 연결할 VPC 2개를 생성합니다. 시나리오에서 각 VPC는 1개의 AZ을 사용하며, 기본 생성되는 Public Subnet을 이용합니다.
- Transit Gateway를 생성합니다. 그 다음 Transit Gateway에 VPC 2개를 Attachment로 추가합니다.
- Transit Gateway에 Static Route를 설정합니다. 특정 VPC의 CIDR를 목적지로 하는 패킷을 해당 VPC로 라우팅하는 정책을 추가합니다.
- Subnet의 Route 정책을 설정합니다. 이 시나리오에서는 기본 생성된 Public Subnet을 사용합니다. 해당 Subnet에서 다른 VPC를 목적지로 하는 패킷을 Transit Gateway로 라우팅하는 정책을 추가합니다. 이로써 Transit Gateway를 통해 목적지 VPC와 연결할 수 있습니다.
- 각 Subnet에 VM 인스턴스를 생성합니다. ping 명령어를 사용하여 패킷이 다른 VPC의 인스턴스로 제대로 전달되는지 확인합니다.
시나리오의 구성도는 다음과 같습니다.
Step 1. VPC 및 네트워크 생성
VPC는 논리적으로 격리된 가상 네트워크 공간을 제공합니다. 이 가상 네트워크 환경을 통해 카카오클라우드의 리소스를 유연하게 운영할 수 있습니다. 자세한 내용은 VPC 문서를 통해 확인하세요.
-
카카오클라우드 콘솔 > VPC에 접속한 뒤 [VPC 생성] 버튼을 이용하여 새로운 VPC를 생성합니다.
-
다음을 참조하여 연결을 진행할
vpc-a
를 생성합니다.VPC IP CIDR
의 값은 사용 중인 환경에 따라 수정이 필요할 수 있습니다. 수정한 경우, 시나리오 진행에서 사용하는 모든 해당 값에 대해서도 변경이 필요합니다.항목 세부 항목 값 VPC 정보 VPC 이름 handson-vpc-a VPC IP CIDR 블록 10.1.0.0/16 Availability Zone AZ 개수 1 첫 번째 AZ kr-central-2-a 서브넷 설정 AZ당 Public Subnet 개수 1 AZ당 Private Subnet 개수 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 Availability Zone AZ 개수 1 첫 번째 AZ kr-central-2-b 서브넷 설정 AZ당 Public Subnet 개수 1 AZ당 Private Subnet 개수 0 -
카카오클라우드 콘솔 > VPC > Subnet 탭에 접속합니다. 그 다음 생성된
Subnet
,Route Table
등 네트워크 리소스를 확인합니다.
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 에 연결된
Route Table
의 상세 페이지에 접속합니다.카카오클라우드 콘솔 > Transit Gateway > Transit Gateway 목록 테이블을 통해 접속 또는 카카오클라우드 콘솔 > Transit Gateway > Route Table 탭을 통해 접속합니다.
-
Route 탭에서
Static Route
를 확인할 수 있습니다. [Static Route 추가] 버튼을 클릭하여Static Route
를 추가합니다. -
다음을 참고하여
Static Route
를 추가합니다. 해당 설정을 통해 Transit Gateway로 들어오는 목적지10.1.0.0/16
인 트래픽을handson-vpc-a
로 라우트하는 규칙을 추가합니다.항목 값 목적지 10.1.0.0/16 Target handson-vpc-a -
다음을 참고하여
Static Route
를 추가합니다. 해당 설정을 통해 Transit Gateway로 들어오는 목적지10.2.0.0/16
인 트래픽을handson-vpc-b
로 라우트하는 규칙을 추가합니다.항목 값 목적지 10.2.0.0/16 Target handson-vpc-b -
설정이 계획대로 추가되었는지 확인합니다.
Step 3. Subnet 라우트 정책 설정
-
카카오클라우드 콘솔 > VPC > Route Table 탭에 접속하여 Route Table 목록을 확인합니다.
handson-vpc-a
의 main Subnet,handson-vpc-b
의 main Subnet에 연결된 각각의 Route Table 상세 페이지에 접속하여 Route 정보를 수정합니다. -
handson-vpc-a
의main
Subnet에 연결된Route Table
상세 페이지에 접속합니다. 그 다음 [Route 추가] 버튼을 클릭하여 새로운Route
를 추가합니다. -
handson-vpc-b
의CIDR
가 목적지인 경우,handson-transit-gateway
를 타겟으로 설정하는Route
를 추가합니다. -
생성된
Route
정보를 확인합니다. -
handson-vpc-b
의main
Subnet에 연결된Route Table
상세 페이지에 접속합니다. 그 다음 [Route 추가] 버튼을 클릭하여 새로운Route
를 추가합니다. -
handson-vpc-a
의CIDR
가 목적지인 경우,handson-transit-gateway
를 타겟으로 설정하는Route
를 추가합니다. -
생성된
Route
정보를 확인합니다.
Step 4. 인스턴스 생성 및 연결 확인
-
카카오클라우드 콘솔 > Virtual Machine > 인스턴스 메뉴에서 [인스턴스 추가] 버튼을 클릭하여
Instance
를 생성합니다. 아래 표를 확인하여 생성한 VPC에Instance
를 1개씩 생성합니다.항목 세부 항목 Instance 1 Instance 2 기본 정보 이름 handson-instance-a handson-instance-b 개수 1 1 Image Ubuntu 20.04 Ubuntu 20.04 Instance 타입 m2a.large m2a.large Volume Root Volume, 20GB, SSD Root Volume, 20GB, SSD Key Pair {사용자 키 페어}
{사용자 키 페어}
Network VPC handson-vpc-a handson-vpc-b Subnet main handson-vpc-b Security Group {아래 참고}
{아래 참고}
-
통신을 확인하기 위해서는 사용할 포트에 대한 보안 정책을 확인해야합니다. 아래를 확인하여 해당 시나리오를 위한 보안 정책을 추가합니다.
정책 인바운드 인바운드 아웃바운드 프로토콜 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에 생성한
Instance
에ping
명령어를 통해 통신을 확인합니다. 아래 이미지는vpc-a
에 위치한instance-a
에서vpc-b
에 위치한instance-b
로ping
명령어를 사용한 결과입니다.ping {INSTANCE_PRIVATE_IP}
아래 이미지는
vpc-b
에 위치한instance-b
에서vpc-a
에 위치한instance-a
로ping
명령어를 사용한 결과입니다.