티스토리 뷰
안녕하세요. 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 네트워크 수는 할당량을 참조하세요.
이 랩에서 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 지원 서브넷 범위
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 네트워크에서 글로벌 라우팅을 활성화해야 합니다.
- 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 패키지 설치가 안되어 아래는 코드랩을 참고하였습니다.
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
- AI
- AWS
- GKE
- NFT
- security
- cloud
- 파이썬
- 혼공파
- IaC
- GCP
- handson
- EKS
- k8s calico
- 혼공단
- controltower
- 혼공챌린지
- operator
- terraform
- SDWAN
- S3
- VPN
- 국제 개발 협력
- gcp serverless
- PYTHON
- NW
- k8s cni
- 도서
- k8s
- cni
- OS
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |