본문으로 건너뛰기

Transit Gateway를 이용한 다중 VPC 연결

카카오클라우드는 Transit Gateway를 이용하여 중앙 집중식 형태로 VPC 간 트래픽을 쉽게 관리할 수 있습니다.

안내
  • 예상 소요 시간: 60분
  • 사용자 환경
    • 권장 운영 체제: MacOS, Ubuntu
    • Region: kr-central-2
  • 사전 준비 사항

시나리오 소개

해당 시나리오에서는 2개의 VPC를 생성하고, Transit Gateway를 통해 연결하는 예제를 다룹니다. 자세한 내용은 다음과 같습니다.

  1. 연결할 VPC 2개를 생성합니다. 시나리오에서 각 VPC는 1개의 AZ을 사용하며, 기본 생성되는 퍼블릭 서브넷을 이용합니다.
  2. Transit Gateway를 생성하고, Transit Gateway에 VPC 2개를 Attachment로 추가합니다.
  3. Transit Gateway에 정적 라우팅을 설정합니다. 특정 VPC의 CIDR를 목적지로 하는 패킷을 해당 VPC로 라우팅하는 정책을 추가합니다.
  4. 서브넷의 Route 정책을 설정합니다. 이 시나리오에서는 기본 생성된 퍼블릭 서브넷을 사용합니다. 해당 서브넷에서 다른 VPC를 목적지로 하는 패킷을 Transit Gateway로 라우팅하는 정책을 추가합니다. 이로써 Transit Gateway를 통해 목적지 VPC와 연결할 수 있습니다.
  5. 각 서브넷에 VM 인스턴스를 생성합니다. ping 명령어를 사용하여 패킷이 다른 VPC의 인스턴스로 제대로 전달되는지 확인합니다.

시나리오의 구성도는 다음과 같습니다.

이미지

시작하기

Step 1. VPC 및 서브넷 생성

VPC는 논리적으로 격리된 가상 네트워크 공간을 제공합니다. 이 가상 네트워크 환경을 통해 카카오클라우드의 리소스를 유연하게 운영할 수 있습니다. 자세한 내용은 VPC 문서를 통해 확인하세요.

  1. 카카오클라우드 콘솔 > VPC에 접속한 뒤 [VPC 생성] 버튼을 클릭합니다.

  2. 다음을 참조하여 연결을 진행할 vpc-a를 생성합니다. VPC IP CIDR의 값은 사용 중인 환경에 따라 수정이 필요할 수 있습니다. 수정한 경우, 시나리오 진행에서 사용하는 모든 해당 값에 대해서도 변경이 필요합니다.

    이미지

    항목세부 항목
    VPC 정보VPC 이름handson-vpc-a
    VPC IP CIDR 블록10.1.0.0/16
    가용 영역AZ 개수1
    첫 번째 AZkr-central-2-a
    서브넷 설정가용 영역당 퍼블릭 서브넷 개수1
    가용 영역당 프라이빗 서브넷 개수0
  3. 다음을 참조하여 연결을 진행할 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
    첫 번째 AZkr-central-2-b
    서브넷 설정가용 영역당 퍼블릭 서브넷 개수1
    가용 영역당 프라이빗 서브넷 개수0
  4. 카카오클라우드 콘솔 > VPC > 서브넷 메뉴에 접속합니다. 그 다음, 생성된 네트워크 리소스를 확인합니다.

    이미지

Step 2. Transit Gateway 생성 및 설정

Transit Gateway는 VPC 수가 많아질수록 복잡해지는 VPC Peering 구성의 한계를 넘어서 중앙 집중식 형태로 VPC 간 또는 VPC-온프레미스간 트래픽들을 보다 쉽게 관리할 수 있습니다. 자세한 내용은 Transit Gateway를 통해 확인하세요.

1. Transit Gateway 생성

  1. 카카오클라우드 콘솔 > Transit Gateway에 접속 후, [Transit Gateway 생성] 버튼을 이용하여 새로운 Transit Gateway를 생성할 수 있습니다.

  2. 예제는 아래 표 및 이미지를 확인하여 생성할 Transit Gateway의 정보를 입력합니다.

    이미지

    항목설명
    Transit Gateway 이름handson-transit-gateway
    기본 연결 (Association)연결
  3. 리소스가 정상적으로 생성되었는지 확인합니다.

    이미지

2. Attachment 생성

  1. 생성된 Transit Gateway의 상세 설정을 통해 Attachment 생성 작업을 진행합니다.

    이미지

  2. 생성한 예제 handson-vpc-a를 Transit Gateway의 Attachment로 추가합니다.

    이미지

  3. 생성한 VPC handson-vpc-b를 Transit Gateway의 Attachment로 추가합니다.

    이미지

  4. Attachment가 추가되었는지 확인합니다.

    이미지

3. Transit Gateway 라우팅 설정

  1. Transit Gateway의 라우팅 설정을 위해 Transit Gateway에 연결된 라우팅 테이블의 상세 페이지에 접속합니다.

    카카오클라우드 콘솔 > Transit Gateway > Transit Gateway 목록 테이블을 통해 접속 또는 카카오클라우드 콘솔 > Transit Gateway > 라우팅 테이블 메뉴에 접속합니다.

    이미지

  2. Route 탭에서 정적 라우팅을 확인할 수 있습니다. [정적 라우팅 추가] 버튼을 클릭하여 정적 라우팅을 추가합니다.

    이미지

  3. 다음을 참고하여 정적 라우팅을 추가합니다. 해당 설정을 통해 Transit Gateway로 들어오는 목적지 10.1.0.0/16인 트래픽을 handson-vpc-a로 라우팅하는 규칙을 추가합니다.

    이미지

    항목
    목적지10.1.0.0/16
    대상handson-vpc-a
  4. 다음을 참고하여 정적 라우팅을 추가합니다. 해당 설정을 통해 Transit Gateway로 들어오는 목적지 10.2.0.0/16인 트래픽을 handson-vpc-b로 라우팅하는 규칙을 추가합니다.

    이미지

    항목
    목적지10.2.0.0/16
    대상handson-vpc-b
  5. 설정이 계획대로 추가되었는지 확인합니다.

    이미지

Step 3. 서브넷 라우팅 정책 설정

  1. 카카오클라우드 콘솔 > Beyond Networking Service > VPC > 라우팅 테이블 메뉴로 이동 후, 라우팅 테이블 목록을 확인합니다. handson-vpc-amain 서브넷, handson-vpc-bmain 서브넷에 연결된 각각의 라우팅 테이블 상세 페이지에 접속하여 라우팅 정보를 수정합니다.

    이미지

  2. handson-vpc-amain 서브넷에 연결된 라우팅 테이블 상세 페이지에 접속합니다. 그 다음 [라우팅 추가] 버튼을 클릭하여 새로운 라우팅을 추가합니다.

    이미지

  3. handson-vpc-bCIDR가 목적지인 경우, handson-transit-gateway를 대상으로 설정하는 라우팅을 추가합니다.

  4. 생성된 라우팅 정보를 확인합니다.

    이미지

  5. handson-vpc-bmain 서브넷에 연결된 라우팅 테이블 상세 페이지에 접속합니다. 그 다음 [라우팅 추가] 버튼을 클릭하여 새로운 라우팅을 추가합니다.

    이미지

  6. handson-vpc-aCIDR가 목적지인 경우, handson-transit-gateway를 대상으로 설정하는 라우팅을 추가합니다.

    이미지

  7. 생성된 라우팅 정보를 확인합니다.

    이미지

Step 4. 인스턴스 생성 및 연결 확인

  1. 카카오클라우드 콘솔 > Virtual Machine > 인스턴스 메뉴에서 [인스턴스 추가] 버튼을 클릭하여 인스턴스를 생성합니다. 아래 표를 확인하여 생성한 VPC에 인스턴스를 1개씩 생성합니다.

    항목세부 항목인스턴스 1인스턴스 2
    기본 정보이름handson-instance-ahandson-instance-b
    개수11
    이미지Ubuntu 20.04Ubuntu 20.04
    인스턴스 유형m2a.largem2a.large
    볼륨루트 볼륨, 20GB, SSD루트 볼륨, 20GB, SSD
    키 페어{사용자 키 페어}{사용자 키 페어}
    네트워크VPChandson-vpc-ahandson-vpc-b
    서브넷mainhandson-vpc-b
    보안 그룹{아래 참고}{아래 참고}
  2. 통신을 확인하기 위해서는 사용할 포트에 대한 보안 정책을 확인해야 합니다. 아래를 확인하여 해당 시나리오를 위한 보안 정책을 추가합니다.

    정책인바운드인바운드아웃바운드
    프로토콜ICMPTCPALL
    패킷 출발지 (Source)10.0.0.0/8{사용자 퍼블릭 IP}/320.0.0.0/0
    포트 번호-22-
    정책 설명pingsshall
    안내

    온라인 서비스나 웹사이트를 통해 퍼블릭 IP 주소를 확인할 수 있습니다. 예를 들어, WhatIsMyIP.com을 방문하여 퍼블릭 IP 주소를 확인할 수 있습니다.

  3. 인스턴스에 퍼블릭 IP를 할당하고 ssh 접속을 진행합니다.

    ssh ubuntu@{INSTANCE_PUBLIC_IP} -i {KEY_PAIR}
  4. 접속한 후, 다른 VPC에 생성한 인스턴스에 ping 명령어를 통해 통신을 확인합니다. 아래 이미지는 vpc-a에 위치한 instance-a에서 vpc-b에 위치한 instance-bping 명령어를 사용한 결과입니다.

    ping {INSTANCE_PRIVATE_IP}

    이미지

    아래 이미지는 vpc-b에 위치한 instance-b에서 vpc-a에 위치한 instance-aping 명령어를 사용한 결과입니다.

    이미지