Networking

OCI Remote Peering - 서로 다른 리전간의 VCN 연결하기

OCI의 서로 다른 리전간의 VCN을 연결하는 Remote Peering에 대해서 설명합니다.

Remote Peering Connection

Remote Peering Connection(이하 RPC)는 서로 다른 리전에 있는 VCN을 연결할 때 사용합니다.

DRG는 온-프레미스나 서로 다른 리전의 VCN을 연결할 때 가상 라우터 역할을 하는 게이트웨이입니다.

동일 리전의 서로 다른 VCN을 연결하는 경우에는 Local Peering Gateway를 사용합니다. Local Peering Gateway에 대해서는 다음 포스트를 참고합니다.

OCI Local Peering - 동일 리전에서 서로 다른 VCN간 연결하기

다음 다이어그램은 RPC를 사용하여 동일 리전의 서로 다른 VCN을 연결하는 다이어그램입니다. 연결하고자 하는 각 VCN에 Dynamic Routing Gateway(이하 DRG)를 붙이고, DRG에 Remote Peering Connection을 구성하여 연결하는 구성입니다.

주의: Peering을 연결하는 두 VCN은 서로 CIDR이 겹치지 않아야 합니다.

Peering은 일반적으로 두 개의 VCN을 연결하는 단일 Peering 관계이지만, 하나의 VCN(ex. VCN-1)과 여러개의 VCN(ex. VCN-1-1, VCN-1-2, VCN-1-3)을 연결하는 1:n 관계로 구성도 할 수 있습니다. 이 때 VCN-1과 Peering되는 3개의 VCN은 서로 겹치는 CIDR를 가질 수 있습니다.

수락자 및 요청자

만일 두 개의 VCN을 관리하는 관리자가 서로 다른 경우에는 수락자는 수락자의 구획에 있는 LPG에 연결할 수 있는 권한을 요청자에게 부여 하는 특정 IAM 정책을 생성해야 합니다. 해당 정책이 없으면 요청자의 연결 요청이 실패합니다. IAM 설정과 관련해서는 다음 링크를 참고합니다.

https://docs.oracle.com/en-us/iaas/Content/Network/Tasks/remoteVCNpeering.htm#Step1

여기서는 한 명의 관리자가 모든 VCN을 관리한다는 전제하에 구성할 예정이므로, 별도의 IAM 정책을 구성하지 않습니다.

두 개의 VCN 생성

실습을 위한 두 개의 VCN을 준비합니다. VCN 마법사를 활용하여 다음과 같이 VCN을 생성합니다.

VCN 생성은 다음 가이드를 참고합니다.

OCI에서 VCN Wizard를 활용하여 빠르게 VCN 생성하기

  • Region: Seoul
  • VCN 이름: oci-hubvcn
  • VCN CIDR 블록: 172.16.0.0/16
  • 공용 서브넷 CIDR 블록: 172.16.0.0/24
  • 전용 서브넷 CIDR 블록: 172.16.1.0/24

  • Region: Tokyo
  • VCN 이름: oci-hubvcn2
  • VCN CIDR 블록: 173.16.0.0/16
  • 공용 서브넷 CIDR 블록: 173.16.0.0/24
  • 전용 서브넷 CIDR 블록: 173.16.1.0/24

Dynamic Routing Gateway(DRG) 및 Remote Peering Connection 생성

DRG 생성

먼저 각 리전에 DRG를 생성합니다. DRG를 생성하기 위해서는 메뉴 > 네트워킹(Networking) » Customer Connectivity(고객 접속) Dynamic Routing Gateways(동적 경로 지정 게이트웨이)로 이동합니다.

동적 경로 지정 게이트웨이 생성(Create Dynamic Routing Gateway) 버튼을 클릭한 후 다음 이름으로 DRG를 생성합니다.

  • Region: Seoul
  • DRG 이름: DRG-OCI-HUB

  • Region: Tokyo
  • DRG 이름: DRG-OCI-HUB2

가상 클라우드 네트워크 연결 생성(Create Virtual Cloud Network Attachment)

생성한 DRG를 VCN에 연결하여야 합니다. 생성된 각 DRG를 클릭한 후 가상 클라우드 네트워크 연결 생성 버튼을 클릭하여 다음과 같이 연결 생성을 합니다.

  • Region: Seoul
  • DRG 이름: DRG-OCI-HUB-ATT
  • VCN: oci-hubvcn

  • Region: Tokyo
  • DRG 이름: DRG-OCI-HUB2-ATT
  • VCN: oci-hubvcn2

Seoul

Tokyo

Remote Peering Connection(RPC) 생성

원격 피어링 접속 연결(Remote Peering Connections Attachments)을 생성합니다. 생성한 각 DRG를 클릭한 후 다음과 같이 RPC 연결을 생성합니다.

  • Region: Seoul
  • RPC 이름: RPC-1

  • Region: Tokyo
  • RPC 이름: RPC-2

RPC-1 또는 RPC-2의 OCID 값을 복사하여 다른 쪽의 RPC에서 연결 작업을 수행합니다. 여기서는 RPC-2의 OCID 값을 활용하여 RPC-1에서 연결 작업을 수행하도록 합니다.

RPC-2의 OCID값을 얻기 위해서는 먼저 앞서 생성한 RPC-2 연결Remote Peering Connection(원격 피어링 접속) 항목의 RPC-2를 선택합니다.

다음과 같이 OCID 값을 복사합니다.

다시 RPC-1 연결로 이동한 후 원격 피어링 접속(Remote Peering Connection) 항목에 있는 RPC-1을 선택합니다.

연결 설정을 선택한 후 지역을 ap-tokyo-1(도쿄), 원격 피어링 접속 OCID를 앞서 복사한 OCID로 입력한 후 연결 설정을 클릭합니다.

연결이 되면 다음과 같이 피어링 상태가 피어링됨으로 변경됩니다.

경로 테이블(Routing Table)과 보안 목록(Security List) 설정

경로 테이블 설정

테스트를 위한 VM 인스턴스는 각 VCN의 공용 서브넷(Public Subnet)을 사용할 것입니다. 따라서 공용 서브넷에 구성된 경로 테이블(Routing Table)을 활용할 것입니다. 먼저 각 리전의 VCN을 선택한 후에 다음과 같이 기본 생성된 경로 테이블을 선택한 후 경로 규칙(Routing Rule)을 추가합니다.

  • Region: Seoul
  • Routing Table: Default Route Table for oci-hubvcn
  • Routing Rule:
    • Destination(대상): 173.16.0.0/16
    • Target Type(대상 유형): 173.16.0.0/16
    • Target(대상): DRG-OCI-HUB

  • Region: Tokyo
  • Routing Table: Default Route Table for oci-hubvcn2
  • Routing Rule:
    • Destination(대상): 172.16.0.0/16
    • Target Type(대상 유형): 172.16.0.0/16
    • Target(대상): DRG-OCI-HUB2

Seoul

Tokyo

보안 목록 설정

보안 목록에서는 테스트를 위해 서로 모든 프로토콜에 대해 모든 포트를 오픈하도록 하겠습니다. 각 VCN의 보안 목록에서 다음과 같이 수신 규칙(Ingress Rules)를 추가합니다.

  • Region: Seoul
  • 보안 목록(Security List): Default Security List for oci-hubvcn
  • 소스 유형(Source Type): CIDR
  • 소스 CIDR(Source CIDR): 173.16.0.0/16
  • IP 프로토콜: 모든 프로토콜

  • Region: Tokyo
  • 보안 목록(Security List): Default Security List for oci-hubvcn2
  • 소스 유형(Source Type): CIDR
  • 소스 CIDR(Source CIDR): 172.16.0.0/16
  • IP 프로토콜: 모든 프로토콜

Seoul

Tokyo

접속 테스트

이제 각 리전의 공용 서브넷에 VM 인스턴스를 하나씩 생성한 후에 연결을 테스트해보도록 하겠습니다. 리눅스 인스턴스 생성 및 접속 방법은 아래 포스팅을 참고합니다.

OCI에서 리눅스 인스턴스 생성 튜토리얼

  • Region: Seoul
  • 인스턴스 Public IP: 130.162.137.87
  • 인스턴스 Private IP: 172.16.0.208

  • Region: Tokyo
  • 인스턴스 IP: 158.101.138.220
  • 인스턴스 Private IP: 173.16.0.156

Seoul -> Tokyo

$ ssh -i <private_key_file> opc@130.162.137.87

$ ping 173.16.0.156
PING 173.16.0.156 (173.16.0.156) 56(84) bytes of data.
64 bytes from 173.16.0.156: icmp_seq=1 ttl=62 time=33.2 ms
64 bytes from 173.16.0.156: icmp_seq=2 ttl=62 time=33.2 ms

Tokyo -> Seoul

$ ssh -i <private_key_file> opc@158.101.138.220

$ ping 172.16.0.208
PING 172.16.0.208 (172.16.0.208) 56(84) bytes of data.
64 bytes from 172.16.0.208: icmp_seq=1 ttl=62 time=33.10 ms
64 bytes from 172.16.0.208: icmp_seq=2 ttl=62 time=33.10 ms


이 글은 개인적으로 얻은 지식과 경험을 작성한 글로 내용에 오류가 있을 수 있습니다. 또한 글 속의 의견은 개인적인 의견으로 특정 회사를 대변하지 않습니다.

Dialogue & Discussion