티스토리 뷰

안녕하세요. GCP의 네트워크 서비스 중 AWS의 Transit Gateway와 같이 Hub-Spoke(허브-스포크) 모델의 네트워크 구조를 제공할 수 있는 서비스로 Network Connectivity Center가 있습니다. 

 

Network Connectivity Center는 두 가지 유형의 Spoke를 지원합니다.

  • Virtual Private Cloud(VPC) Spoke
  • 다음으로 구성된 하이브리드 Spoke
    • HA VPN 터널
    • Cloud Interconnect VLAN 연결
    • Router Appliance Spoke

Network Connectivity Center 허브는 VPC 스포크 또는 하이브리드 스포크를 지원하지만 둘 다 지원하지는 않습니다.

 

사용 사례

1. 서로 다른 VPC 네트워크를 Network Connectivity Center와 연결


두 개 이상의 VPC 스포크를 허브에 연결하면 Network Connectivity Center가 스포크에서 나타내는 모든 VPC 네트워크 간에 IPv4 서브넷 연결을 제공합니다. 허브를 사용하면 대규모 메시 서브넷 연결의 관리가 간소화됩니다. 허브에 연결할 수 있는 VPC 네트워크 수는 할당량을 참조하세요.

Connect spokes to a VPC network

 

Lab: NCC VPC as a Spoke

이 랩에서 Network Connectivity Center(NCC)를 사용하여 VPC 스포크 지원을 통해 대규모로 VPC 간 연결을 설정하는 방법을 알아봅니다. 사용자가 VPC를 VPC 스포크로 정의하면 NCC 허브를 통해 여러 VPC 네트워크에 함께 연결할 수 있습니다. VPC 스포크 구성이 있는 NCC는 중앙 집중식 연결 관리 모델을 사용하는 대신 VPC 피어링을 통해 VPC 간 연결을 관리하는 운영상의 복잡성을 줄일 수 있습니다.

 

Network Connectivity Center(NCC)는 Google Cloud의 네트워크 연결 관리를 위한 Hub&Spoke Control Plane 모델입니다. 

 

1) 사전작업

이 실습에서는 Google Cloud Console과 Cloud Shell을 모두 사용합니다.

 

GCP 프로젝트 설정

1. NCC를 생성할 GCP 프로젝트를 세팅합니다.

gcloud auth list
gcloud config list project
gcloud config set project [HUB-PROJECT-NAME]
projectname=[HUB-PROJECT-NAME]
echo $projectname
gcloud config set compute/zone us-central1-a
gcloud config set compute/region us-central1

 

 

IAM Roles 세팅

Role Descriptions Permissions
networkconnectivity.networkAdmin

Allows network administrators to manage hub and spokes.

networkconnectivity.hubs.networkconnectivity.spokes.

networkconnectivity.networkSpokeManager

Allows adding and managing spokes in a hub. To be used in Shared VPC where the host-project owns the Hub, but other admins in other projects can add spokes for their attachments to the Hub.

networkconnectivity.spokes.**

networkconnectivity.networkUsernetworkconnectivity.networkViewer

Allows network users to view different attributes of hub and spokes.

networkconnectivity.hubs.getnetworkconnectivity.hubs.listnetworkconnectivity.spokes.getnetworkconnectivity.spokes.listnetworkconnectivity.spokes.aggregatedList

 

2) 네트워크 환경 설정

이 섹션에서는 VPC 네트워크와 방화벽 규칙을 단일 프로젝트에 배포합니다. 

이후 단계에서는 프로젝트 간 스포크 지원을 보여주기 위해 다른 프로젝트에 VPC와 방화벽 규칙을 배포합니다.

 

VPC 및 서브넷 생성

VPC 네트워크에는 데이터 경로 검증을 위해 GCE VM을 설치할 서브넷이 포함되어 있습니다.

gcloud compute networks create vpc1-ncc --subnet-mode custom
gcloud compute networks create vpc2-ncc --subnet-mode custom
gcloud compute networks create vpc3-ncc --subnet-mode custom
gcloud compute networks create vpc4-ncc --subnet-mode custom

gcloud compute networks subnets create vpc1-ncc-subnet1 \
--network vpc1-ncc --range 10.1.1.0/24 --region us-central1

gcloud compute networks subnets create vpc1-ncc-subnet2 \
--network vpc1-ncc --range 10.1.2.0/25 --region us-central1

gcloud compute networks subnets create vpc1-ncc-subnet3 \
--network vpc1-ncc --range 10.1.2.128/25 --region us-central1

gcloud compute networks subnets create vpc2-ncc-subnet1 \
--network vpc2-ncc --range 10.2.2.0/24 --region us-central1

vpc 생성

 

subnet 생성

 

 

VPC 지원 서브넷 범위

NCC는 비공개로 사용되는 공용 IP 주소를 제외한 모든 유효한 IPv4 서브넷 범위를 지원합니다. 이 단계에서는 허브 경로 테이블로 가져올 VPC4에 유효한 IP 범위를 만듭니다.

gcloud compute networks subnets create benchmark-testing-rfc2544 \
--network vpc4-ncc --range 198.18.0.0/15 --region us-east1

gcloud compute networks subnets create class-e-rfc5735 \
--network vpc4-ncc --range 240.0.0.0/4 --region us-east1

gcloud compute networks subnets create ietf-protcol-assignment-rfc6890 \
--network vpc4-ncc --range 192.0.0.0/24 --region us-east1

gcloud compute networks subnets create ipv6-4-relay-rfc7526 \
--network vpc4-ncc --range 192.88.99.0/24 --region us-east1

gcloud compute networks subnets create pupi \
--network vpc4-ncc --range 50.50.50.0/24 --region us-east1

gcloud compute networks subnets create test-net-1-rfc5737 \
--network vpc4-ncc --range 192.0.2.0/24 --region us-east1

gcloud compute networks subnets create test-net-2-rfc5737 \
--network vpc4-ncc --range 198.51.100.0/24 --region us-east1

gcloud compute networks subnets create test-net-3-rfc5737 \
--network vpc4-ncc --range 203.0.113.0/24 --region us-east1

 

 

 

중복되는 서브넷 범위 생성

NCC는 중복되는 IP 범위를 허브 경로 테이블로 가져오지 않습니다. 사용자는 이후 단계에서 이 제한을 해결할 것입니다. 지금은 VPC2와 VPC3에 대해 중복되는 IP 범위 두 개를 만듭니다.

gcloud compute networks subnets create overlapping-vpc2 \
--network vpc3-ncc --range 10.3.3.0/24 --region us-central1

gcloud compute networks subnets create overlapping-vpc3 \
--network vpc2-ncc --range 10.3.3.0/24 --region us-central1

 

 

VPC 방화벽 규칙 구성

각 VPC에 방화벽 규칙을 구성하여 다음을 허용합니다.

  • SSH
  • 내부 IAP
  • 10.0.0.0/8 범위
gcloud compute firewall-rules create ncc1-vpc-internal \
--network vpc1-ncc \
--allow all \
--source-ranges 10.0.0.0/8

gcloud compute firewall-rules create ncc2-vpc-internal \
--network vpc2-ncc \
--allow all \
--source-ranges 10.0.0.0/8

gcloud compute firewall-rules create ncc3-vpc-internal \
--network vpc3-ncc \
--allow all \
--source-ranges 10.0.0.0/8

gcloud compute firewall-rules create ncc4-vpc-internal \
--network vpc4-ncc \
--allow all \
--source-ranges 10.0.0.0/8

gcloud compute firewall-rules create ncc1-vpc-iap \
--network vpc1-ncc \
--allow all \
--source-ranges 35.235.240.0/20

gcloud compute firewall-rules create ncc2-vpc-iap \
--network vpc2-ncc \
--allow=tcp:22 \
--source-ranges 35.235.240.0/20

gcloud compute firewall-rules create ncc3-vpc-iap \
--network vpc3-ncc \
--allow=tcp:22  \
--source-ranges 35.235.240.0/20

gcloud compute firewall-rules create ncc4-vpc-iap \
--network vpc4-ncc \
--allow=tcp:22  \
--source-ranges 35.235.240.0/20

 

 

각 VPC에 GCE VM 구성

"vm1-vpc1-ncc"에 패키지를 설치하려면 일시적으로 인터넷에 접속해야 합니다.

4개의 가상 머신을 생성하면 각 VM은 이전에 생성된 VPC 중 하나에 할당됩니다.

gcloud compute instances create vm1-vpc1-ncc \
--subnet vpc1-ncc-subnet1 \
--metadata=startup-script='#!/bin/bash
  apt-get update
  apt-get install apache2 -y
  apt-get install tcpdump -y
  service apache2 restart
  echo "
<h3>Web Server: www-vm1</h3>" | tee /var/www/html/index.html'


gcloud compute instances create vm2-vpc2-ncc \
--zone us-central1-a \
--subnet vpc2-ncc-subnet1 \
--no-address 

gcloud compute instances create pnat-vm-vpc2 \
--zone us-central1-a \
--subnet overlapping-vpc3 \
--no-address 


gcloud compute instances create vm1-vpc4-ncc \
--zone us-east1-b \
--subnet class-e-rfc5735 \
--no-address

 

 

 

3) 네트워크 연결 센터 허브

이 섹션에서는 gcloud 명령을 사용하여 NCC 허브를 구성합니다. NCC 허브는 각 VPC 스포크 간 라우팅 구성을 빌드하는 Control Plane 역할을 합니다.

 

API 서비스 활성화

gcloud services enable networkconnectivity.googleapis.com

 

NCC 허브 만들기

gcloud network-connectivity hubs create ncc-hub

 

gcloud network-connectivity hubs describe ncc-hub

createTime: '2024-07-07T08:54:10.588853588Z'
exportPsc: false
name: projects/core-network/locations/global/hubs/ncc-hub
policyMode: PRESET
presetTopology: MESH
routeTables:
- projects/core-network/locations/global/hubs/ncc-hub/routeTables/default
state: ACTIVE
uniqueId: 4c0614a9-710c-4d8f-ab2c-50ae2a99aab9
updateTime: '2024-07-07T08:54:26.306418839Z'

 

NCC Hub는 데이터 연결을 생성하기 위한 Control Plane을 정의하는 라우팅 테이블을 도입했습니다. 

 gcloud network-connectivity hubs route-tables list --hub=ncc-hub
 
NAME: default
HUB: ncc-hub
DESCRIPTION:

 

NCC 기본 경로 테이블의 URI

gcloud network-connectivity hubs route-tables describe default --hub=ncc-hub

createTime: '2024-07-07T08:54:14.256230610Z'
name: projects/core-network/locations/global/hubs/ncc-hub/routeTables/default
state: ACTIVE
uid: b17389fd-3ec3-4ad6-bfa3-be2c0e81bc17
updateTime: '2024-07-07T08:54:17.687592322Z'
 

NCC Hub의 기본 라우팅 테이블 내용을 나열합니다. 참고* NCC Hub의 라우팅 테이블은 스포크가 연결될 때까지 비어 있습니다.

gcloud network-connectivity hubs route-tables routes list --hub=ncc-hub --route_table=default

Listed 0 items.

 

4) VPC 스포크가 있는 NCC

이 섹션에서는 gCloud 명령을 사용하여 세 개의 VPC를 NCC 스포크로 구성합니다.

VPC를 NCC 스포크로 구성

다음 VPC를 이 순서대로 NCC Spoke로 구성합니다.

  • VPC4
  • VPC1
  • VPC2
  • VPC3

VPC4를 NCC 스포크로 구성하고 이전에 생성된 NCC 허브에 할당합니다. NCC 스포크 API 호출에는 위치를 지정해야 합니다. 플래그 "–global"은 사용자가 새 NCC 스포크를 구성할 때 전체 URI 경로를 지정하지 않아도 되도록 하여 gcloud 구문을 간소화합니다.

 

gcloud network-connectivity spokes linked-vpc-network create vpc4-spoke4 \
--hub=ncc-hub \
--vpc-network=vpc4-ncc \
--global

 

VPC1을 NCC 스포크로 구성합니다.

관리자는 VPC 스포크에서 NCC 허브의 경로 테이블로 내보내는 서브넷 경로를 제외할 수 있습니다. 이 코드랩의 이 부분에서는 VPC1의 서브넷이 NCC 허브 경로 테이블로 내보내지는 것을 방지하기 위해 요약 접두사를 기반으로 하는 제외 내보내기 규칙을 만듭니다.

 

 

gcloud 명령을 사용하여 VPC1에 속한 모든 서브넷을 나열합니다.

gcloud config set accessibility/screen_reader false
gcloud compute networks subnets list --network=vpc1-ncc

 

이전에 설정 섹션에서 생성한 /25 서브넷 쌍을 주목하세요.

NAME              REGION       NETWORK   RANGE          STACK_TYPE  IPV6_ACCESS_TYPE  INTERNAL_IPV6_PREFIX  EXTERNAL_IPV6_PREFIX
vpc1-ncc-subnet1  us-central1  vpc1-ncc  10.1.1.0/24    IPV4_ONLY
vpc1-ncc-subnet2  us-central1  vpc1-ncc  10.1.2.0/25    IPV4_ONLY
vpc1-ncc-subnet3  us-central1  vpc1-ncc  10.1.2.128/25  IPV4_ONLY

 

VPC1을 NCC 스포크로 구성하고 "export-exclude-ranges" 키워드를 사용하여 해당 범위의 /24 요약 경로를 필터링하여 /25 서브넷 쌍이 허브 라우팅 테이블로 가져오지 않도록 제외합니다.

gcloud network-connectivity spokes linked-vpc-network create vpc1-spoke1 \
--hub=ncc-hub \
--vpc-network=vpc1-ncc \
--exclude-export-ranges=10.1.2.0/24 \
--global

 

참고* 사용자는 NCC 스포크당 최대 16개의 고유 IP 범위를 필터링할 수 있습니다.

NCC Hub의 기본 라우팅 테이블의 내용을 나열하세요. NCC Hub의 라우팅 테이블에서 /25 서브넷 쌍은 어떻게 되었는지 확인합니다.

gcloud network-connectivity hubs route-tables routes list --hub=ncc-hub --route_table=default --filter="NEXT_HOP:vpc1-ncc"

 

IP_CIDR_RANGE  PRIORITY  LOCATION     STATE   TYPE                SITE_TO_SITE  NEXT_HOP  HUB      ROUTE_TABLE
10.1.1.0/24              us-central1  ACTIVE  VPC_PRIMARY_SUBNET  N/A           vpc1-ncc  ncc-hub  default

 

 

 

VPC2를 NCC 스포크로 구성

gcloud network-connectivity spokes linked-vpc-network create vpc2-spoke2 \
--hub=ncc-hub \
--vpc-network=vpc2-ncc \
--global

 

VPC3를 NCC 스포크로 구성하고 이전에 생성한 NCC 허브에 할당합니다.

gcloud  network-connectivity spokes linked-vpc-network create vpc3-spoke3 \
--hub=ncc-hub \
--vpc-network=vpc3-ncc \
--global

 

NCC Hub에서 VPC2와 겹치는 IP 범위를 감지하여 아래와 같은 에러가 발생합니다.  VPC2와 VPC3는 모두 동일한 10.3.3.0/24 IP 서브넷으로 설정되었습니다.

ERROR: (gcloud.network-connectivity.spokes.linked-vpc-network.create) Invalid resource state for "https://www.googleapis.com/compute/v1/projects/xxxxxxxx/global/networks/vpc3-ncc": 10.3.3.0/24 (SUBNETWORK) overlaps with 10.3.3.0/24 (SUBNETWORK) from "projects/user-3p-dev/global/networks/vpc2-ncc" (peer)

 

 

제외 내보내기를 사용하여 중복된 IP 범위 필터링

이 코드랩에서는 사용자가 내보내기 필터의 구성을 변경하려면 NCC 스포크를 삭제했다가 다시 만들어야 하는 문제가 알려져 있었습니다.

gcloud network-connectivity spokes delete vpc2-spoke2 --global --quiet

 

참고: 특정 VPC에 연결된 VPC 스포크를 삭제하려면 동일한 VPC를 참조하는 새 스포크를 다시 생성하기 위해 10분의 쿨다운 기간이 필요합니다. 10분 이내 생성하게되면 아래와 같은 에러가 발생합니다. 

ERROR: (gcloud.network-connectivity.spokes.linked-vpc-network.create) failed to create spoke "projects/72657468146/locations/global/spokes/vpc2-spoke2": cause: FailedPreconditionError: cooldown of at least 10m0s has not elapsed since the last spoke for VPC https://www.googleapis.com/compute/v1/projects/72657468146/global/networks/vpc2-ncc was deleted at 2024-07-07 02:12:15.901116 -0700 PDT (this spoke can be created after 2024-07-07 02:22:15.901116 -0700 PDT): failed precondition

 

gcloud  network-connectivity spokes linked-vpc-network create vpc2-spoke2 \
--hub=ncc-hub \
--vpc-network=vpc2-ncc \
--exclude-export-ranges=10.3.3.0/24 \
--global

 

VPC3를 NCC 스포크로 구성하고 이전에 생성된 NCC 허브에 할당합니다. 

gcloud network-connectivity spokes linked-vpc-network create vpc3-spoke3 \
--hub=ncc-hub \
--vpc-network=vpc3-ncc \
--exclude-export-ranges=10.3.3.0/24 \
--global

 

 

NCC 허브의 기본 라우팅 테이블 내용을 나열합니다.

gcloud network-connectivity hubs route-tables routes list --hub=ncc-hub --route_table=default
IP_CIDR_RANGE    PRIORITY  LOCATION     STATE   TYPE                SITE_TO_SITE  NEXT_HOP  HUB      ROUTE_TABLE
198.18.0.0/15              us-east1     ACTIVE  VPC_PRIMARY_SUBNET  N/A           vpc4-ncc  ncc-hub  default
10.2.2.0/24                us-central1  ACTIVE  VPC_PRIMARY_SUBNET  N/A           vpc2-ncc  ncc-hub  default
203.0.113.0/24             us-east1     ACTIVE  VPC_PRIMARY_SUBNET  N/A           vpc4-ncc  ncc-hub  default
192.88.99.0/24             us-east1     ACTIVE  VPC_PRIMARY_SUBNET  N/A           vpc4-ncc  ncc-hub  default
192.0.0.0/24               us-east1     ACTIVE  VPC_PRIMARY_SUBNET  N/A           vpc4-ncc  ncc-hub  default
192.0.2.0/24               us-east1     ACTIVE  VPC_PRIMARY_SUBNET  N/A           vpc4-ncc  ncc-hub  default
198.51.100.0/24            us-east1     ACTIVE  VPC_PRIMARY_SUBNET  N/A           vpc4-ncc  ncc-hub  default
10.1.1.0/24                us-central1  ACTIVE  VPC_PRIMARY_SUBNET  N/A           vpc1-ncc  ncc-hub  default
240.0.0.0/4                us-east1     ACTIVE  VPC_PRIMARY_SUBNET  N/A           vpc4-ncc  ncc-hub  default

 

VPC2와 VPC3의 겹치는 IP 범위는 제외됩니다. NCC 허브 라우팅 테이블은 비공개로 사용되는 공용 IP 주소(PUPI)를 제외한 모든 유효한 IPv4 유효 범위 유형을 지원합니다.

 

5) 크로스 프로젝트 스포크가 있는 NCC

위에서는 허브와 동일한 프로젝트에 속하는 NCC 스포크를 구성했습니다. 이 섹션에서는 gCloud 명령을 사용하여 NCC 허브가 아닌 별도의 프로젝트에서 VPC를 NCC 스포크로 구성합니다. 이를 통해 자체 VPC를 관리하는 프로젝트 소유자는 NCC Hub를 통한 네트워크 연결에 참여할 수 있습니다.

사전작업

gcloud auth list
gcloud config list project
gcloud config set project [YOUR-CROSSPROJECT-NAME]
xprojname=[YOUR-CROSSPROJECT-NAME]
echo $xprojname
gcloud config set compute/zone us-central1-a
gcloud config set compute/region us-central1

 

IAM 역할

NCC는 특정 API에 액세스하기 위해 IAM 역할이 필요합니다. 필요에 따라 NCC IAM 역할로 사용자를 구성해야 합니다.

최소한, 크로스 프로젝트 스포크 관리자에게 IAM 역할 "networkconnectivity.networkSpokeManager"가 부여되어야 합니다.

 

크로스 프로젝트에서 VPC 및 서브넷 생성

VPC 네트워크에는 데이터 경로 검증을 위해 GCE VM을 설치할 서브넷이 포함되어 있습니다.

gcloud compute networks create xproject-vpc \
--subnet-mode custom

gcloud compute networks subnets create xprj-net-1 \
--network xproject-vpc \
--range 10.100.1.0/24 \
--region us-central1

 

 

 

NCC 허브 프로젝트 URI

이 gcloud 명령을 사용하여 NCC Hub URI를 찾으세요. 다음 단계에서 크로스 프로젝트 NCC 스포크를 구성하려면 URI 경로가 필요합니다

gcloud network-connectivity hubs describe ncc-hub

 

Create request issued for: [xproj-spoke]
Waiting for operation [projects/nonprod-shdvpc-host/locations/global/operations/operation-1720346943249-61ca5
7c715d67-4b2501c3-d5a9fb88] to complete...done.                                                                      
Created spoke [xproj-spoke].
createTime: '2024-07-07T10:09:03.828339644Z'
group: projects/core-network/locations/global/hubs/ncc-hub/groups/default
hub: projects/core-network/locations/global/hubs/ncc-hub
linkedVpcNetwork:
  uri: https://www.googleapis.com/compute/v1/projects/nonprod-shdvpc-host/global/networks/xproject-vpc
name: projects/nonprod-shdvpc-host/locations/global/spokes/xproj-spoke
reasons:
- code: PENDING_REVIEW
  message: Spoke is Pending Review
spokeType: VPC_NETWORK
state: INACTIVE
uniqueId: ac6fe6c1-6af1-4342-80ad-294702c0a2c5
updateTime: '2024-07-07T10:09:13.164040610Z'

 

크로스 프로젝트 스포크 VPC

VPC가 NCC Hub 프로젝트의 일부가 아닌 다른 프로젝트에 로그인합니다. Cloudshell에서 이 명령을 사용하여 VPC를 NCC 스포크로 구성합니다.

  • HUB_URI는 다른 프로젝트의 허브 URI여야 합니다.
  • VPC_URI는 스포크와 동일한 프로젝트에 있어야 합니다.
  • VPC 네트워크는 이 교차 프로젝트의 VPC가 다른 프로젝트의 NCC 허브에 가입하도록 지정합니다.

 

6) 교차 프로젝트 스포크 거부 또는 수락 

NCC 허브 관리자는 허브에 가입하기 위해 크로스 프로젝트 스포크를 명시적으로 수락해야 합니다. 이렇게 하면 프로젝트 소유자가 NCC 글로벌 라우팅 테이블에 불량 NCC 스포크를 첨부하는 것을 방지할 수 있습니다. 스포크가 수락되거나 거부되면 위의 명령을 실행하여 원하는 횟수만큼 거부하거나 수락할 수 있습니다.

클라우드 셸에 로그인하여 NCC 허브가 있는 프로젝트로 돌아갑니다.

 

검토할 크로스 프로젝트 스포크 식별

gcloud network-connectivity hubs list-spokes ncc-hub \
 --filter="reason:PENDING_REVIEW"

 

스포크 수용

아래와 같이 허브에서 수락을 해줍니다

 

 

 

 

허브에 활성 스포크 나열

gcloud network-connectivity hubs list-spokes ncc-hub \
 --filter="state:ACTIVE"
NAME         GROUP    PROJECT                      LOCATION  TYPE         STATE   STATE REASON
vpc1-spoke1  default  core-network         global    VPC_NETWORK  ACTIVE
vpc2-spoke2  default  core-network         global    VPC_NETWORK  ACTIVE
vpc3-spoke3  default  core-network         global    VPC_NETWORK  ACTIVE
vpc4-spoke4  default  core-network         global    VPC_NETWORK  ACTIVE
xproj-spoke  default  nonprod-shdvpc-host  global    VPC_NETWORK  ACTIVE

 

허브의 서브넷 경로 나열

gcloud network-connectivity hubs route-tables routes list \
--route_table=default \
--hub=ncc-hub \
--filter="NEXT_HOP:xproject-vpc"
IP_CIDR_RANGE  PRIORITY  LOCATION     STATE   TYPE                SITE_TO_SITE  NEXT_HOP      HUB      ROUTE_TABLE
10.100.1.0/24            us-central1  ACTIVE  VPC_PRIMARY_SUBNET  N/A           xproject-vpc  ncc-hub  default

 

 

7) VPC ( s) 간의 Private  NAT

이 섹션에서는 두 VPC 간의 겹치는 서브넷 범위에 대한 개인 NAT를 구성합니다. VPC 간의 개인 NAT에는 NCC가 필요합니다.

이전 섹션에서 VPC2와 VPC3는 "10.3.3.0/24"의 겹치는 서브넷 범위로 구성되었습니다. 두 VPC는 ​​모두 NCC 허브 경로 테이블에 겹치는 서브넷이 삽입되지 않도록 NCC 스포크로 구성되었습니다. 즉, 해당 서브넷에 있는 호스트에 도달할 레이어 3 데이터 경로가 없습니다.

 

NCC 허브 프로젝트에서 이러한 명령을 사용하여 겹치는 서브넷 범위를 찾습니다.

gcloud compute networks subnets list --network vpc2-ncc

NAME              REGION       NETWORK   RANGE        STACK_TYPE  IPV6_ACCESS_TYPE  INTERNAL_IPV6_PREFIX  EXTERNAL_IPV6_PREFIX
overlapping-vpc3  us-central1  vpc2-ncc  10.3.3.0/24  IPV4_ONLY
vpc2-ncc-subnet1  us-central1  vpc2-ncc  10.2.2.0/24  IPV4_ONLY

gcloud compute networks subnets list --network vpc3-ncc

NAME              REGION       NETWORK   RANGE        STACK_TYPE  IPV6_ACCESS_TYPE  INTERNAL_IPV6_PREFIX  EXTERNAL_IPV6_PREFIX
overlapping-vpc2  us-central1  vpc3-ncc  10.3.3.0/24  IPV4_ONLY

 

 

Private NAT 구성

VPC2의 겹치는 서브넷에서 소스 NAT 트래픽에 라우팅 가능한 서브넷 범위를 전담합니다. "–purpose=PRIVATE_NAT" 플래그를 사용하여 겹치지 않는 서브넷 범위를 구성합니다.

 

gcloud compute networks subnets create ncc2-spoke-nat \
--network=vpc2-ncc \
--region=us-central1 \
--range=10.10.10.0/29 \
--purpose=PRIVATE_NAT

 

Private NAT를 수행하기 위한 전용 클라우드 라우터를 생성하세요

gcloud compute routers create private-nat-cr \
--network vpc2-ncc \
--region us-central1

 

vpc2-ncc에서 10.3.3.0/24의 중복 범위를 소스 NAT하도록 클라우드 라우터를 구성합니다. 아래 구성 예에서 "overlapping-vpc3"은 중복 서브넷의 이름입니다. "ALL" 키워드는 서브넷의 모든 IP 범위가 소스 NAT됨을 지정합니다.

gcloud compute routers nats create ncc2-nat \
--router=private-nat-cr \
--type=PRIVATE \
--nat-custom-subnet-ip-ranges=overlapping-vpc3:ALL \
--router-region=us-central1

이전 단계에서는 NAT IP 범위 풀과 변환될 특정 서브넷을 만들었습니다. 이 단계에서는 대상 네트워크가 NCC 허브 라우팅 테이블에서 경로를 취하는 경우 겹치는 서브넷 범위에서 발생한 트래픽과 일치하는 네트워크 패킷을 변환하는 NAT 규칙 "1"을 만듭니다.

gcloud compute routers nats rules create 1 \
--router=private-nat-cr \
--region=us-central1 \
--match='nexthop.hub == "//networkconnectivity.googleapis.com/projects/$projectname/locations/global/hubs/ncc-hub"' \
--source-nat-active-ranges=ncc2-spoke-nat \
--nat=ncc2-nat
 

아래와 같이 nat rule을 추가하는데 에러가 발생합니다. 이후 Private NAT 확인 실습은 코드랩 내용을 참고했습니다. 

response: <{'content-type': 'application/json; charset=UTF-8', 'vary': 'Origin, X-Origin, Referer', 'content-encoding': 'gzip', 'date': 'Sun, 07 Jul 2024 10:45:18 GMT', 'server': 'ESF', 'cache-control': 'private', 'x-xss-protection': '0', 'x-frame-options': 'SAMEORIGIN', 'x-content-type-options': 'nosniff', 'transfer-encoding': 'chunked', 'status': 503}>, content <{
  "error": {
    "code": 503,
    "message": "Internal error. Please try again or contact Google Support. (Code: '61CA5FE10DC65.24109E4.17050202')",
    "errors": [
      {
        "message": "Internal error. Please try again or contact Google Support. (Code: '61CA5FE10DC65.24109E4.17050202')",
        "domain": "global",
        "reason": "backendError"
      }
    ]
  }
}
>
This may be due to network connectivity issues. Please check your network settings, and the status of the service you are trying to reach.

 

Private NAT 확인

gcloud compute routers nats describe ncc2-nat --router=private-nat-cr

 

 

다음으로, VPC2에 대해 구성된 개인 NAT 경로를 사용하는 데이터 경로를 확인합니다.

"vm1-vpc1-ncc" 에 대한 SSH 세션을 열고 아래의 tcpdump 명령을 사용하여 NAT 풀 범위 "10.10.10.0/29"에서 발생한 패킷을 캡처합니다.

sudo tcpdump -i any net 10.10.10.0/29 -n

 

Private NAT는 ICMP 패킷을 지원하지 않았습니다. SSH 세션을 " pNat-vm-vpc2" 로 보내고 아래에 표시된 것처럼 curl 명령을 사용하여 포트 TCP 80에서 " vm1-vpc1-ncc" 에 연결합니다 .

 

pnat-vm-vpc2

curl 10.1.1.2 -v

 

8) 데이터 경로 연결 확인 

 

" vm1-vpc1-ncc" 에 SSH를 실행 하고 TCP 덤프를 시작하여 "vm2-vpc2-ncc" 에서 ICMP 패킷을 추적합니다 . 이 VM은 VPC2에 있습니다.

 

vm1-vpc1-ncc

sudo tcpdump -i any icmp -v -e -n

 

" vm1-vpc2-ncc" 에 대한 SSH 세션을 설정하고 " vm1-vpc1-ncc " 의 IP 주소를 "ping"합니다 

 

vm1-vpc2-ncc

ping 10.1.1.2

 

" vm1-vpc2-ncc" 에 SSH를 설정하고 " vm1-vpc4-ncc " 의 IP 주소를 "ping"합니다 .

 

vm1-vpc2-ncc

ping 240.0.0.2

 

 

 

사용 사례

2. 라우터 어플라이언스 VM을 사용하여 네트워크 연결

 

Google Cloud에 외부 네트워크 연결

 

 

VPC 네트워크 간 연결 관리

 

 

Lab: NCC Site to Cloud with SD-WAN Appliance

GCP NCC와 flexiWAN SaaS SD-WAN 솔루션을 연동하는 랩입니다.

해당 Lab을 통해 사이트 간 통신을 위해 Google의 백본 네트워크를 통과하는 허브 및 스포크 SD-WAN 토폴로지를 구성합니다. NCC와 오픈 소스 SD-WAN 솔루션을 사용하여 Remote Branch를 상호 연결해보겠습니다. 

 

1. GCP에 대한 인바운드 및 아웃바운드 트래픽에 대한 Headend를 나타내는 허브 VPC에 flexiWAN SD-WAN 에이전트용으로 구성된 GCE VM 쌍을 배포합니다.

2. 두 개의 서로 다른 지점 사이트 VPC를 나타내기 위해 두 개의 원격 flexiWAN SD-WAN 라우터를 배포합니다.

3. 데이터 경로 테스트를 위해 3개의 GCE VM을 구성하여 GCP에서 호스팅되는 온프렘 클라이언트와 서버를 시뮬레이션합니다.

 

 

1) 사전작업

1. 이 튜토리얼에서는 flexiEdge 인스턴스를 인증, 온보딩 및 관리하려면 무료 flexiManage 계정을 생성합니다.

2. GCP와 상호작용하기 위해 이 실습에서는 Google Cloud Console과 Cloud Shell을 모두 사용합니다.

 

GCP 프로젝트 설정

1. NCC를 생성할 GCP 프로젝트를 세팅합니다.

gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectname=[YOUR-PROJECT-NAME]
echo $projectname

 

 

IAM Roles 세팅

Role Descriptions Permissions
networkconnectivity.networkAdmin

Allows network administrators to manage hub and spokes.

networkconnectivity.hubs.networkconnectivity.spokes.

networkconnectivity.networkSpokeManager

Allows adding and managing spokes in a hub. To be used in Shared VPC where the host-project owns the Hub, but other admins in other projects can add spokes for their attachments to the Hub.

networkconnectivity.spokes.**

networkconnectivity.networkUsernetworkconnectivity.networkViewer

Allows network users to view different attributes of hub and spokes.

networkconnectivity.hubs.getnetworkconnectivity.hubs.listnetworkconnectivity.spokes.getnetworkconnectivity.spokes.listnetworkconnectivity.spokes.aggregatedList

 

2) 네트워크 랩 환경 설정

이 섹션에서는 VPC 네트워크와 방화벽 규칙을 배포합니다.

 

온프레미스 지점 사이트 네트워크 시뮬레이션

이 VPC 네트워크에는 온프레미스 VM 인스턴스에 대한 서브넷이 포함되어 있습니다.

온프레미스 사이트 네트워크 및 서브넷을 만듭니다.

gcloud compute networks create site1-vpc \
--subnet-mode custom

gcloud compute networks create s1-inside-vpc \
--subnet-mode custom

gcloud compute networks subnets create site1-subnet \
--network site1-vpc \
--range 10.10.0.0/24 \
--region us-central1

gcloud compute networks subnets create s1-inside-subnet \
--network s1-inside-vpc \
--range 10.10.1.0/24 \
--region us-central1

 

 

 

 

site1-vpc 방화벽 규칙을 생성하여 다음을 허용합니다.

  • SSH, 내부, IAP
  • ESP, UDP/500, UDP/4500
  • 10.0.0.0/8 범위
  • 192.168.0.0/16 범위
gcloud compute firewall-rules create site1-ssh \--network site1-vpc \
--allow tcp:22

gcloud compute firewall-rules create site1-internal \
--network site1-vpc \
--allow all \
--source-ranges 10.0.0.0/8

gcloud compute firewall-rules create site1-cloud \
--network site1-vpc \
--allow all \
--source-ranges 192.168.0.0/16

gcloud compute firewall-rules create site1-vpn \
--network site1-vpc \
--allow esp,udp:500,udp:4500 \
--target-tags router

gcloud compute firewall-rules create site1-iap \
--network site1-vpc --allow tcp:22 --source-ranges=35.235.240.0/20

 

 

 

다음을 허용하도록 s1-inside-vpc 방화벽 규칙을 만듭니다 .

  • SSH, 내부, IAP
  • 10.0.0.0/8 범위
  • 192.168.0.0/16 범위
gcloud compute firewall-rules create s1-inside-ssh \
--network s1-inside-vpc \
--allow tcp:22

gcloud compute firewall-rules create s1-inside-internal \
--network s1-inside-vpc \
--allow all \
--source-ranges 10.0.0.0/8

gcloud compute firewall-rules create s1-inside-cloud \
--network s1-inside-vpc  \
--allow all \
--source-ranges 192.168.0.0/16

gcloud compute firewall-rules create s1-inside-iap \
--network site1-vpc --allow tcp:22 --source-ranges=35.235.240.0/20

 

 

테스트 목적으로 s1-inside-vm s2-inside-vm인스턴스를 만듭니다.

 
gcloud compute instances create s1-vm \
--zone=us-central1-a \
--machine-type=e2-micro \
--network-interface subnet=s1-inside-subnet,private-network-ip=10.10.1.3,no-address

 

 

 

GCP 클라우드 네트워크 환경 시뮬레이션

 

허브-vpc 네트워크 및 스포크를 통해 지역 간 사이트 간 트래픽을 활성화하려면 허브-vpc 네트워크에서 글로벌 라우팅을 활성화해야 합니다. 

 

  1. hub-vpc네트워크 및 서브넷 생성 :
gcloud compute networks create hub-vpc \
--subnet-mode custom \
--bgp-routing-mode=global

gcloud compute networks subnets create hub-subnet1 \
--network hub-vpc \
--range 10.1.0.0/24 \
--region us-central1

gcloud compute networks subnets create hub-subnet2 \
--network hub-vpc \
--range 10.2.0.0/24 \
--region us-east4

 

  2. workload-vpc네트워크 및 서브넷 생성 :

gcloud compute networks create workload-vpc \
--subnet-mode custom \
--bgp-routing-mode=global

gcloud compute networks subnets create workload-subnet1 \
--network workload-vpc \
--range 192.168.235.0/24 \
--region us-central1

 

 

 

 

3. 다음을 허용하도록 Hub-VPC 방화벽 규칙을 만듭니다.

    • SSH
    • ESP, UDP/500, UDP/4500
    • 내부 10.0.0.0/8 범위(클라우드 라우터에서 라우터 어플라이언스로의 BGP 세션에 필요한 TCP 포트 179를 포함)
gcloud compute firewall-rules create hub-ssh \
--network hub-vpc \
--allow tcp:22

gcloud compute firewall-rules create hub-vpn \
--network hub-vpc \
--allow esp,udp:500,udp:4500 \
--target-tags router

gcloud compute firewall-rules create hub-internal \
--network hub-vpc \
--allow all \
--source-ranges 192.168.0.0/16

gcloud compute firewall-rules create hub-iap \
--network hub-vpc --allow tcp:22 --source-ranges=35.235.240.0/20

 

 

4. 다음을 허용하도록 Workload-VPC 방화벽 규칙을 만듭니다.

  • SSH
  • 내부 192.168.0.0/16 범위(클라우드 라우터에서 라우터 어플라이언스로의 BGP 세션에 필요한 TCP 포트 179를 포함)
gcloud compute firewall-rules create workload-ssh \
--network workload-vpc \
--allow tcp:22

gcloud compute firewall-rules create workload-internal \
--network workload-vpc \
--allow all \
--source-ranges 192.168.0.0/16

gcloud compute firewall-rules create workload-onprem \
--network hub-vpc \
--allow all \
--source-ranges 10.0.0.0/8

gcloud compute firewall-rules create workload-iap \
--network workload-vpc --allow tcp:22 --source-ranges=35.235.240.0/20

 

 

5.Workload1-vm이 Cloud Router와 NAT Gateway를 생성하여 패키지를 다운로드할 수 있도록 Workload-VPC에서 Cloud NAT를 활성화합니다.

gcloud compute routers create cloud-router-usc-central-1-nat \
    --network workload-vpc \
    --region us-central1

 

gcloud compute routers nats create cloudnat-us-central1 \
    --router=cloud-router-usc-central-1-nat \
    --auto-allocate-nat-external-ips \
    --nat-all-subnet-ip-ranges \
    --region us-central1

 

 

6.  이 호스트 를 사용하여 사이트와 클라우드 연결을 확인합니다. workload1-vm in "us-central1-a" in workload-VPC

gcloud compute instances create workload1-vm \
    --project=$projectname \
    --machine-type=e2-micro \
    --image-family debian-11 \
    --image-project debian-cloud \
    --zone us-central1-a \
    --private-network-ip 192.168.235.3 \
        --no-address \
    --subnet=workload-subnet1 \
    --metadata startup-script="#! /bin/bash
      sudo apt-get update
      sudo apt-get install apache2 -y
      sudo service apache2 restart
      echo 'Welcome to Workload VM1 !!' | tee /var/www/html/index.html
      EOF"

 

 

3) SD-WAN을 위한 온 프레미스 어플라이언스 설정

SDWAN(어플라이언스)을 위한 온프레미스 VM 생성

다음 섹션에서는 온프레미스 라우터 역할을 하는 site1-nva를 생성하겠습니다.

 

인스턴스 생성

site1-nvasite1-router 라는 이름의 어플라이언스를 만듭니다 .

gcloud compute instances create site1-nva \
--zone=us-central1-a \
--machine-type=e2-medium \
--network-interface subnet=site1-subnet \
--network-interface subnet=s1-inside-subnet,no-address \
--create-disk=auto-delete=yes,boot=yes,device-name=flex-gcp-nva-1,image=projects/ubuntu-os-cloud/global/images/ubuntu-1804-bionic-v20220901,mode=rw,size=20,type=projects/$projectname/zones/us-central1-a/diskTypes/pd-balanced \
--no-shielded-secure-boot \
--shielded-vtpm \
--shielded-integrity-monitoring \
--reservation-affinity=any \
--can-ip-forward

 

 

4) site1-nva에 flexiWAN 설치

site1-nva에 SSH 연결을 엽니다. 시간 초과가 발생하면 다시 시도하세요.

gcloud compute ssh site1-nva --zone=us-central1-a

 

 

site1-nva에 flexiWAN 설치

 

sudo su 

sudo curl -sL https://deb.flexiWAN.com/setup | sudo bash -
apt install flexiWAN-router -y

 

 

flexiWAN Control Plane 등록을 위해 VM을 준비합니다.

  • 2빠르고 조용한 구성을 위한 옵션을 선택하세요
  • 그 후 0 으로 종료합니다 .
  • flexiWAN 설치가 완료되면 fwsystem_checker 명령을 실행하여 flexiWAN 작동을 위해 VM을 준비합니다. 
root@site-1-nva-1:/home/user# fwsystem_checker

 

E: Unable to locate package flexiWAN-router  

https://groups.google.com/a/flexiwan.com/g/flexiwan-users/c/jMX8eUACt7o?pli=1

 

flexiwan-router not found

Ivor 읽지 않음, 2020. 8. 23. 오후 7:06:1520. 8. 23.  작성자에게 답장하려면 로그인하세요. 전달하려면 로그인하세요. 이 그룹의 메시지를 삭제할 권한이 없습니다. 그룹의 이메일 주소가 익명이거나

groups.google.com

 

위와 같은 에러가 발생하여 flexiWAN-router 패키지 설치가 안되어 아래는 코드랩을 참고하였습니다. 

 

5) SD-WAN 컨트롤러에 site1-nva 등록

 

이러한 단계는 flexiWAN NVA의 프로비저닝을 완료하는 데 필요하며 flexiManage 콘솔 에서 관리됩니다 . 계속 진행하기 전에 flexiWAN 조직이 설정되어 있는지 확인하십시오.

flexiManage 계정에 로그인하여 보안 토큰을 사용하여 새로 배포된 flexiWAN NVA를 flexiManage로 인증합니다. 동일한 토큰을 모든 라우터 어플라이언스에서 재사용할 수 있습니다.

인벤토리 → 토큰을 선택 하고 토큰을 생성하고 복사를 선택합니다.

 

Cloud Shell(site1-nva)로 돌아가서 다음을 수행하여 토큰을 /etc/flexiWAN/agent/token.txt 디렉토리에 붙여넣습니다.

nano /etc/flexiWAN/agent/token.txt
#Paste the generated token obtain from flexiManage
#Exit session with CTRL+X and Select Y to save then enter

 

 flexiManage 콘솔에서 사이트 라우터 활성화

 

 

flexiWAN 컨트롤러에서 site1-nva를 시작합니다. 인벤토리 → 장치 → site1-nva 로 돌아가서 '장치 시작'을 선택합니다 .

 


6) Hub SDWAN 어플라이언스 설정

다음 섹션에서는 이전에 사이트 경로로 실행한 것과 마찬가지로 flexiWAN 컨트롤러에 허브 라우터(hub-r1)를 생성하고 등록합니다. 새 탭을 열고 Cloud Shell 세션을 생성하고 $variables를 업데이트하여 gcloud 구성 구현을 지원합니다.

gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectname=[YOUR-PROJECT-NAME]
echo $projectname

 

허브 NVA 인스턴스 생성

 

gcloud compute instances create hub-r1 \
--zone=us-central1-a \
--machine-type=e2-medium \
--network-interface subnet=hub-subnet1 \
--network-interface subnet=workload-subnet1,no-address \
--can-ip-forward \
--create-disk=auto-delete=yes,boot=yes,device-name=flex-gcp-nva-1,image=projects/ubuntu-os-cloud/global/images/ubuntu-1804-bionic-v20220901,mode=rw,size=20,type=projects/$projectname/zones/us-central1-a/diskTypes/pd-balanced \
--no-shielded-secure-boot \
--shielded-vtpm \
--shielded-integrity-monitoring \
--reservation-affinity=any

 

7) hub-r1에 대한 Hub 인스턴스에 flexiWAN 설치

hub-r1에 SSH 연결을 엽니다.

gcloud compute ssh hub-r1 --zone=us-central1-a

 

 

hub-r1에 flexiWAN 에이전트를 설치하세요

sudo su
sudo curl -sL https://deb.flexiWAN.com/setup | sudo bash -
apt install flexiWAN-router -y
 

flexiWAN 등록을 위해 hub-r1 VM을 준비합니다.

flexiWAN 설치가 완료되면 fwsystem_checker명령을 실행하여 flexiWAN 작동을 위해 VM을 준비합니다. 이 명령은 시스템 요구 사항을 확인하고 시스템의 구성 오류를 수정하는 데 도움이 됩니다.

root@hub-r1:/home/user# fwsystem_checker

 

8) FlexManage 컨트롤러에 hub-r1 VM 등

flexiManage 계정에 로그인하여 보안 토큰을 사용하여 새로 배포된 flexiWAN NVA를 flexiManage로 인증합니다.

  • 인벤토리 → 토큰을 선택 하고 토큰을 복사합니다.

Cloud Shell (hub-r1) 로 돌아가서 다음을 수행하여 토큰을 /etc/flexiWAN/agent/token.txt 디렉토리에 붙여넣습니다.

 
nano /etc/flexiWAN/agent/token.txt
#Paste the generated token obtain from flexiManage
#Exit session with CTRL+X and Select Y to save then enter

 

flexiManage 콘솔에서 Hub 라우터 hub-r1을 활성화합니다.

 

 

 

9) GCP Hub의 네트워크 연결 센터

API 서비스 활성화

gcloud services enable networkconnectivity.googleapis.com

 

NCC 허브 만들기

gcloud network-connectivity hubs create ncc-hub

 

Create request issued for: [ncc-hub]
Waiting for operation [projects/user-3p-dev/locations/global/operations/operation-1668793629598-5edc24b7ee3ce-dd4c765b-5ca79556] to complete...done.     
Created hub [ncc-hub]

 

두 라우터 기기를 NCC 스포크로 구성

 

hub-r1 인스턴스의 IP 주소

gcloud compute instances describe hub-r1 \
--zone=us-central1-a \
--format="value(selfLink.scope(projects))"

gcloud compute instances describe hub-r1 --zone=us-central1-a | grep "networkIP"

 

hub-r1의 vnic를 networkIP스포크로 추가합니다. 기본적으로 사이트 간 데이터 전송은 비활성화됩니다.

gcloud network-connectivity spokes linked-router-appliances create s2c-wrk-cr1 \
--hub=ncc-hub \
--router-appliance=instance="https://www.googleapis.com/compute/projects/$projectname/zones/us-central1-a/instances/hub-r1",ip=192.168.235.4 \
--region=us-central1 \
--site-to-site-data-transfer

 

Hub-R1과 BGP를 설정하기 위해 Cloud Router를 구성합니다

 

다음 단계에서는 Cloud Router를 생성하고 워크로드 VPC 서브넷 192.168.235.0/24를 알립니다.

hub-r1을 사용하여 BGP와 통신할 us-central1에 클라우드 라우터를 생성합니다.

 
gcloud compute routers create wrk-cr1 \
--region=us-central1 \
--network=workload-vpc \
--asn=65002 \
--set-advertisement-groups=all_subnets

 

라우터 어플라이언스를 NCC Spoke로 구성하면 클라우드 라우터가 가상 인터페이스에서 BGP를 협상할 수 있습니다.

hub-r1과 BGP 메시지를 교환할 클라우드 라우터에 두 개의 인터페이스를 생성합니다.

IP 주소는 워크로드 서브넷에서 선택되며 필요한 경우 변경할 수 있습니다.

 
gcloud compute routers add-interface wrk-cr1 \
--region=us-central1 \
--subnetwork=workload-subnet1 \
--interface-name=int0 \
--ip-address=192.168.235.101 

gcloud compute routers add-interface wrk-cr1 \
--region=us-central1 \
--subnetwork=workload-subnet1 \
--interface-name=int1 \
--ip-address=192.168.235.102 \
--redundant-interface=int0

 

Cloud Router 인터페이스를 구성하여 hub-r1의 vNIC-1과 BGP를 설정하고, peer-ip-address를 hub-r1 networkIP의 IP 주소로 업데이트합니다. 참고로, int0 및 int1에는 동일한 IP 주소가 사용됩니다.

 

gcloud compute routers add-bgp-peer wrk-cr1 \
    --peer-name=hub-cr1-bgp-peer-0 \
    --interface=int0 \
    --peer-ip-address=192.168.235.4 \
    --peer-asn=64111 \
    --instance=hub-r1 \
    --instance-zone=us-central1-a \
    --region=us-central1

gcloud compute routers add-bgp-peer wrk-cr1 \
    --peer-name=hub-cr1-bgp-peer-1 \
    --interface=int1 \
    --peer-ip-address=192.168.235.4 \
    --peer-asn=64111 \
    --instance=hub-r1 \
    --instance-zone=us-central1-a \
    --region=us-central1

 

BGP 상태를 확인합니다. 이 시점에서 코드 랩에서 BGP는 네트워크 라우터 어플라이언스가 BGP에 대해 구성되지 않았기 때문에 "연결 상태"입니다.

gcloud compute routers get-status wrk-cr1 --region=us-central1

 

10) BGP 를 위한 허브 라우터 어플라이언스 구성

 

BGP를 위해 hub-r1 구성

 

flexiManage 콘솔에 로그인하세요

인벤토리  장치  hub-r1 로 이동하고 HostName:hub-r1 이 있는 장치를 선택합니다.

  • "라우팅" 탭을 클릭하세요
  • "BGP 구성"을 클릭하세요
  • "OSPF 경로 재배포" 비활성화
  • 이러한 매개변수를 사용하여 BGP에 대한 hub-r1을 구성하고 "저장"을 클릭합니다.

" 인터페이스 " 탭을 선택하고 LAN 인터페이스를 찾은 다음 " 라우팅 " 열을 찾습니다.

  • " 없음 "을 클릭하여 라우팅 프로토콜로 BGP를 선택하는 메뉴를 엽니다.

  • 페이지 상단에서 "장치 업데이트"를 클릭하세요.

 

11) 라우터 어플라이언스 간 BGP 경로 교환

 

원격 사이트에 대한 로컬 ASN 설정

 

site1-nva에 대한 로컬 BGP ASN을 구성합니다. 구성이 완료되면 원격 사이트와 허브 라우터 사이에 IPSEC 터널을 설정합니다.

HostName:site1-nva를 사용하여 장치를 선택하세요

  • "라우팅" 탭을 클릭하세요
  • "BGP 구성"을 클릭하세요
  • "OSPF 경로 재배포" 비활성화
  • 로컬 ASN 7269 → 저장
  • 장치 업데이트
  • 인터페이스 탭 → 라우팅 → BGP
  • 장치 업데이트

Site1과 Hub1 어플라이언스 간 VPN 터널 구성

flexiManage 콘솔에 로그인하세요

  • 인벤토리 → 장치 로 이동
  • 이 NVA 쌍 사이에 VPN 터널을 구축하려면 site1-nva  hub-r1 의 호스트 이름 옆에 있는 상자를 선택하십시오.
  • 작업→ 터널 생성을 클릭 하고 다음을 구성합니다.

  • 터널 생성을 선택하세요

"site1-nva"가 서브넷 192.168.235.0/24 및 192.168.236.0/24로의 경로를 학습했는지 확인합니다.

  • 인벤토리 → 장치 → site1-nva를 선택 하고 "라우팅" 탭을 클릭합니다.

아래 예제 출력에서 ​​flexiWAN은 호스트 IP 주소 10.100.0.6을 사용하여 자동으로 터널을 생성했습니다.

 

12) 데이터 경로 연결 확인 

 

온프레미스에서 클라우드 연결로의 사이트 확인

다이어그램을 참조하여 s1-vm  Workload1-vm 사이의 데이터 경로를 확인하세요

 

 

사이트에서 클라우드로의 VPC 정적 경로 구성

온프레미스 Site1-VPC는 온프레미스 데이터센터 네트워크를 시뮬레이션합니다.

두 개의 Site-1-nva 라우터 어플라이언스는 VPN 연결을 사용하여 허브 네트워크에 접속합니다.

사이트에서 클라우드로의 사용 사례**의 경우 라우터 어플라이언스를 다음 홉으로 사용하여 GCP 클라우드 네트워크의 네트워크에 도달하는 192.168.0.0/16 대상으로 가는 정적 경로를 만듭니다.

 

s1-inside-vpc 에서 클라우드 대상지(192.168.0.0/16)에 대한 정적 경로를 생성합니다.

 
gcloud compute routes create site1-subnet-route  \
--network=s1-inside-vpc \
--destination-range=192.168.0.0/16  \
--next-hop-instance=site1-nva \
--next-hop-instance-zone=us-central1-a

 

Cloudshell에서 Workload1-vmnee 의 IP 주소를 찾습니다 ." s1-vm 에서 연결을 테스트하려면 이 정보가 필요합니다 .

 
gcloud compute instances describe workload1-vm --zone=us-central1-a | grep "networkIP"

 

" s1-vm" 에 SSH를 실행 하고 " curl" 명령을 사용하여 Workload1-VM IP 주소에 대한 TCP 세션을 설정합니다.

 
s1-vm:~$ curl 192.168.235.3 -vv
*   Trying 192.168.235.3:80...
* Connected to 192.168.235.3 (192.168.235.3) port 80 (#0)
> GET / HTTP/1.1
> Host: 192.168.235.3
> User-Agent: curl/7.74.0
> Accept: */*
> 
* Mark bundle as not supporting multiuse
< HTTP/1.1 200 OK
< Date: Wed, 07 Dec 2022 15:12:08 GMT
< Server: Apache/2.4.54 (Debian)
< Last-Modified: Tue, 06 Dec 2022 00:57:46 GMT
< ETag: "1f-5ef1e4acfa1d9"
< Accept-Ranges: bytes
< Content-Length: 31
< Content-Type: text/html
< 
Page served from: workload1-vm
* Connection #0 to host 192.168.235.3 left intact

 

고려사항

Network Connectivity Center를 설정하기 전 고려사항은 아래와 같습니다.

 

IP 주소 지정

- Network Connectivity Center에서는 IPv4 주소를 지정할 수 있습니다. IPv6를 지원하지 않습니다.

 

라우팅

- Network Connectivity Center 허브에서 설치된 경로는 동적 경로로 취급됩니다.

 

  • 우선순위 설정 : 모든 하이브리드 스포크 리소스에는 Cloud Router가 사용됩니다. Cloud Router에서 사용하는 경로 선택 모델에 대한 자세한 내용은 Cloud Router 개요의 AS 경로 프리펜딩 및 AS 경로 길이를 참조하세요.
  • ASN : 단일 스포크와 연결된 모든 Google 이외의 피어링 라우터는 Cloud Router에 프리픽스를 공지할 때 동일한 ASN을 사용해야 합니다. 이 점은 두 피어가 서로 다른 ASN 또는 AS 경로에 동일한 프리픽스를 공지하는 경우 해당 프리픽스에 대해 피어의 ASN 및 AS 경로가 하나만 다시 공지되므로 중요합니다. 스포크마다 다른 ASN이 있어야 합니다. 즉, 두 BGP 세션이 서로 다른 스포크에 속하는 경우 ASN이 서로 달라야 합니다.
  • BGP 세션 : BGP 커뮤니티는 지원되지 않습니다.
  • 사이트 간 데이터 전송을 사용할 때 경로 공지 변경사항 : Cloud Interconnect VLAN 연결 또는 Cloud VPN 터널을 하이브리드 스포크에 추가할 때 Network Connectivity Center는 VLAN 연결 또는 Cloud VPN 터널에 해당 BGP 세션을 업데이트하여 사이트 간 데이터 전송 옵션이 사용 설정된 허브의 하이브리드 스포크에 연결된 다른 Cloud Interconnect VLAN 연결 또는 Cloud VPN 터널의 BGP 세션에서 학습한 프리픽스를 다시 공지합니다.

 

자세한 내용은 GCP NCC Docs를 참고하세요

'IT > Infra&Cloud' 카테고리의 다른 글

[gcp] Cloud Function(with jenkins)  (0) 2024.07.13
[gcp] Serverless service(Cloud Function vs Cloud Run)  (0) 2024.07.09
[gcp] Cloud VPN  (0) 2024.07.02
[gcp] Interconnect  (0) 2024.06.22
[gcp] Cloud Router  (0) 2024.04.20
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함