آزمایشگاه کد: NCC VPC به عنوان اسپیک

۱. مقدمه

نمای کلی

در این آزمایشگاه، کاربران بررسی خواهند کرد که چگونه می‌توان از مرکز اتصال شبکه (NCC) برای ایجاد اتصال بین VPCها در مقیاس بزرگ از طریق پشتیبانی از VPC Spokes استفاده کرد. هنگامی که کاربران یک VPC را به عنوان یک VPC Spoke تعریف می‌کنند، این امر آنها را قادر می‌سازد تا آن را از طریق NCC Hub به چندین شبکه VPC متصل کنند. NCC با پیکربندی VPC Spoke، پیچیدگی عملیاتی مدیریت اتصال بین VPCها را به صورت جفتی از طریق VPC Peering کاهش می‌دهد و به جای آن از یک مدل مدیریت اتصال متمرکز استفاده می‌کند.

به یاد بیاورید که مرکز اتصال شبکه (NCC) یک مدل صفحه کنترل هاب و اقماری برای مدیریت اتصال شبکه در Google Cloud است. منبع هاب یک مدل مدیریت اتصال متمرکز برای اتصال اسپوک‌ها فراهم می‌کند.

آنچه خواهید ساخت

در این آزمایشگاه کد، شما یک توپولوژی منطقی هاب و اسپوک با هاب NCC خواهید ساخت که یک ساختار اتصال VPC کاملاً مش‌بندی شده را در سه VPC مجزا پیاده‌سازی خواهد کرد.

آنچه یاد خواهید گرفت

  • اتصال VPC تمام مش با NCC
  • NAT خصوصی در سراسر VPC

آنچه نیاز دارید

  • آشنایی با شبکه GCP VPC
  • آشنایی با Cloud Router و مسیریابی BGP
  • دو پروژه GCP جداگانه
  • این Codelab به ۵ VPC نیاز دارد. یکی از این VPC(ها) باید در پروژه‌ای جدا از مرکز NCC باشد.
  • Quota:Networks خود را بررسی کنید و در صورت لزوم، شبکه‌های اضافی را درخواست کنید ، تصویر زیر را ببینید:

6d1b99c6da87fd84.png

اهداف

  • راه‌اندازی محیط GCP
  • پیکربندی مرکز اتصال شبکه با VPC همانطور که گفته شد
  • اعتبارسنجی مسیر داده
  • ویژگی‌های سرویس‌پذیری NCC را بررسی کنید
  • منابع استفاده شده را پاکسازی کنید

قبل از اینکه شروع کنی

کنسول ابری گوگل و پوسته ابری

برای تعامل با GCP، در طول این آزمایش از هر دو کنسول ابری گوگل و پوسته ابری استفاده خواهیم کرد.

پروژه مرکز NCC، کنسول ابری گوگل

کنسول ابری از طریق آدرس https://console.cloud.google.com قابل دسترسی است.

برای آسان‌تر کردن پیکربندی Network Connectivity Center، موارد زیر را در Google Cloud تنظیم کنید:

در کنسول گوگل کلود، در صفحه انتخاب پروژه، یک پروژه گوگل کلود را انتخاب یا ایجاد کنید.

Cloud Shell را اجرا کنید. این Codelab از $variables برای کمک به پیاده‌سازی پیکربندی gcloud در Cloud Shell استفاده می‌کند.

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

NCC برای دسترسی به APIهای خاص به نقش‌های IAM نیاز دارد. حتماً کاربر خود را در صورت نیاز با نقش‌های IAM مربوط به NCC پیکربندی کنید.

نقش/توضیحات

مجوزها

networkconnectivity.networkAdmin - به مدیران شبکه اجازه می‌دهد تا هاب و اسپوک را مدیریت کنند.

اتصال شبکه.هاب‌ها. اتصال شبکه.اسپوک‌ها.

networkconnectivity.networkSpokeManager - امکان افزودن و مدیریت Spokeها را در یک هاب فراهم می‌کند. برای استفاده در Shared VPC که در آن پروژه میزبان مالک هاب است، اما سایر مدیران در پروژه‌های دیگر می‌توانند Spokeهایی برای پیوست‌های خود به هاب اضافه کنند.

اتصال شبکه.اسپوک.**

networkconnectivity.networkUsernetworkconnectivity.networkViewer - به کاربران شبکه اجازه می‌دهد تا ویژگی‌های مختلف hub و spokes را مشاهده کنند.

اتصال شبکه.هاب‌ها.دریافت اتصال شبکه.هاب‌ها.لیست اتصال شبکه.اسپوک‌ها.دریافت اتصال شبکه.لیست اتصال شبکه.اسپوک‌ها.لیست اتصال شبکه.اسپوک‌ها.لیست تجمیعی

۲. راه‌اندازی محیط شبکه

نمای کلی

در این بخش، شبکه‌های VPC و قوانین فایروال را در یک پروژه واحد مستقر خواهیم کرد. نمودار منطقی، محیط شبکه‌ای را که در این مرحله راه‌اندازی خواهد شد، نشان می‌دهد.

برای نشان دادن پشتیبانی از اسپوک بین پروژه‌ای، در مرحله‌ی بعدی، یک VPC و قوانین فایروال را در یک پروژه‌ی دیگر مستقر خواهیم کرد.

a7cd9b23f3eb1b70.png

ایجاد 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 از تمام محدوده‌های معتبر زیرشبکه IPv4، از جمله آدرس‌های IP عمومی که به صورت خصوصی استفاده می‌شوند، پشتیبانی می‌کند. در این مرحله، محدوده‌های IP معتبری را در VPC4 ایجاد کنید که به جدول مسیر هاب وارد خواهند شد.

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 دارای همپوشانی را به جدول مسیر هاب وارد نمی‌کند. کاربران در مرحله بعدی این محدودیت را برطرف خواهند کرد. فعلاً، دو محدوده IP دارای همپوشانی برای VPC2 و VPC3 ایجاد کنید.

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 پیکربندی کنید تا اجازه دهد

  • اس‌اس‌اچ
  • برنامه‌ی داخلی پرداخت درون برنامه‌ای (IAP)
  • محدوده ۱۰.۰.۰.۰/۸
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

پیکربندی GCE VM در هر VPC

برای نصب بسته‌ها روی «vm1-vpc1-ncc» به دسترسی موقت به اینترنت نیاز دارید.

چهار ماشین مجازی ایجاد کنید، هر ماشین مجازی به یکی از 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

۳. هاب مرکز اتصال شبکه

نمای کلی

در این بخش، ما یک NCC Hub را با استفاده از دستورات gcloud پیکربندی خواهیم کرد. NCC Hub به عنوان صفحه کنترل مسئول ایجاد پیکربندی مسیریابی بین هر پره VPC خواهد بود.

75b860451360ad9f.png

فعال کردن سرویس‌های API

اگر هنوز API اتصال شبکه فعال نشده است، آن را فعال کنید:

gcloud services enable networkconnectivity.googleapis.com

ایجاد مرکز NCC

با استفاده از دستور gCloud یک مرکز 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 تازه ایجاد شده را شرح دهید. نام و مسیر مرتبط را یادداشت کنید.

gcloud network-connectivity hubs describe ncc-hub
gcloud network-connectivity hubs describe ncc-hub
createTime: '2023-11-02T02:28:34.890423230Z'
name: projects/user-3p-dev/locations/global/hubs/ncc-hub
routeTables:
- projects/user-3p-dev/locations/global/hubs/ncc-hub/routeTables/default
state: ACTIVE
uniqueId: de749c4c-0ef8-4888-8622-1ea2d67450f8
updateTime: '2023-11-02T02:28:48.613853463Z'

NCC Hub یک جدول مسیریابی معرفی کرد که صفحه کنترل را برای ایجاد اتصال داده تعریف می‌کند. نام جدول مسیریابی NCC Hub را بیابید

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

URI جدول مسیر پیش‌فرض NCC را پیدا کنید.

gcloud network-connectivity hubs route-tables describe default --hub=ncc-hub
createTime: '2023-02-24T17:32:58.786269098Z'
name: projects/user-3p-dev/locations/global/hubs/ncc-hub/routeTables/default
state: ACTIVE
uid: eb1fdc35-2209-46f3-a8d6-ad7245bfae0b
updateTime: '2023-02-24T17:33:01.852456186Z'

محتویات جدول مسیریابی پیش‌فرض NCC Hub را فهرست کنید. توجه* جدول مسیر NCC Hub تا زمانی که پره‌ها (spoke) حذف نشده‌اند، خالی خواهد بود.

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

جدول مسیر مرکز NCC باید خالی باشد.

۴. NCC با پره‌های VPC

نمای کلی

در این بخش، شما سه VPC را به عنوان یک NCC Spoke با استفاده از دستورات gCloud پیکربندی خواهید کرد.

e7db89c96aefcbc0.png

پیکربندی VPC(ها) به عنوان یک NCC Spoke

VPC(های) زیر را به ترتیب NCC Spoke پیکربندی کنید.

  • VPC4
  • VPC1
  • وی پی سی ۲
  • وی پی سی۳

VPC4 را به عنوان یک پره NCC پیکربندی کنید و آن را به هاب NCC که قبلاً ایجاد شده است، اختصاص دهید. فراخوانی‌های API پره NCC نیاز به مشخص کردن مکان دارند. پرچم "–global" با اجازه دادن به کاربر برای جلوگیری از مشخص کردن مسیر کامل URI هنگام پیکربندی یک پره NCC جدید، سینتکس 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  
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 

نکته* کاربران می‌توانند تا ۱۶ محدوده IP منحصر به فرد را به ازای هر پره NCC فیلتر کنند.

محتویات جدول مسیریابی پیش‌فرض NCC Hub را فهرست کنید. چه اتفاقی برای جفت زیرشبکه‌های /25 در جدول مسیریابی NCC Hub افتاده است؟

gcloud network-connectivity hubs route-tables routes list --hub=ncc-hub --route_table=default --filter="NEXT_HOP:vpc1-ncc"
IP_CIDR_RANGE  STATE   TYPE                  NEXT_HOP  HUB      ROUTE_TABLE
10.1.1.0/24    ACTIVE  VPC_PRIMARY_SUBNET    vpc1-ncc  ncc-hub  default

پیکربندی VPC2 به عنوان یک NCC spoke

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

چه اتفاقی افتاده؟

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)

هاب NCC همپوشانی محدوده IP را با VPC2 تشخیص داد. به یاد بیاورید که VPC2 و VPC3 هر دو با زیرشبکه IP یکسان 10.3.3.0/24 راه‌اندازی شده بودند.

فیلتر کردن محدوده‌های IP دارای همپوشانی با استفاده از Exclude Export

از دستور gcloud برای به‌روزرسانی VPC2 spoke استفاده کنید تا محدوده IPهای همپوشانی را حذف کنید.

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

از دستور gcloud برای به‌روزرسانی اسپوک NCC مربوط به VPC3 استفاده کنید تا محدوده زیرشبکه‌های دارای همپوشانی حذف شود.

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 Hub را فهرست کرده و خروجی را بررسی کنید.

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

محدوده‌های IP که از VPC2 و VPC3 همپوشانی دارند، مستثنی هستند. جدول مسیریابی NCC Hub از تمام انواع محدوده‌های معتبر IPv4 پشتیبانی می‌کند.

محدوده‌های زیرشبکه‌های آدرس‌های IP عمومی (PUPI) که به صورت خصوصی استفاده می‌شوند، به طور پیش‌فرض از VPC که به جدول مسیر هاب NCC متصل است، صادر نمی‌شوند.

از دستور gcloud برای تأیید اینکه شبکه 50.50.50.0/24 در جدول مسیریابی NCC Hub نیست، استفاده کنید.

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

از دستور gcloud زیر برای به‌روزرسانی VPC4-Spoke و فعال‌سازی تبادل آدرس PUPI بین VPCهای NCC استفاده کنید.

gcloud network-connectivity spokes linked-vpc-network update vpc4-spoke4 \
--include-export-ranges=ALL_IPV4_RANGES \
--global

از دستور gcloud برای یافتن شبکه 50.50.50.0/24 در جدول مسیریابی NCC Hub استفاده کنید.

gcloud network-connectivity hubs route-tables routes list --hub=ncc-hub --route_table=default | grep 50.50.50.0/24

۵. NCC با اسپوک‌های پروژه‌ی متقابل

نمای کلی

تاکنون، شما اسپوک‌های NCC را که به همان پروژه Hub تعلق دارند، پیکربندی کرده‌اید. در این بخش، VPC را به عنوان یک اسپوک NCC از یک پروژه جداگانه غیر از NCC Hub با استفاده از دستورات gCloud پیکربندی خواهید کرد.

این به صاحبان پروژه که VPC های خود را مدیریت می‌کنند، اجازه می‌دهد تا در اتصال شبکه با NCC Hub شرکت کنند.

70b8d1872ca1e8d4.png

پروژه متقابل: کنسول ابری گوگل و پوسته ابری

برای تعامل با GCP، در طول این آزمایش از هر دو کنسول ابری گوگل و پوسته ابری استفاده خواهیم کرد.

کنسول ابری گوگل (Google Cloud Console)

کنسول ابری از طریق آدرس https://console.cloud.google.com قابل دسترسی است.

برای آسان‌تر کردن پیکربندی Network Connectivity Center، موارد زیر را در Google Cloud تنظیم کنید:

در کنسول گوگل کلود، در صفحه انتخاب پروژه، یک پروژه گوگل کلود را انتخاب یا ایجاد کنید.

Cloud Shell را اجرا کنید. این Codelab از $variables برای کمک به پیاده‌سازی پیکربندی gcloud در Cloud Shell استفاده می‌کند.

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 نیاز دارد. حتماً کاربر خود را در صورت نیاز با نقش‌های IAM مربوط به NCC پیکربندی کنید.

حداقل، به مدیر گفتگوی بین پروژه‌ای باید نقش IAM اعطا شود: "networkconnectivity.networkSpokeManager."

جدول زیر فهرستی از نقش‌های IAM مورد نیاز برای مدیر NCC Hub و Spoke را به عنوان مرجع ارائه می‌دهد.

نقش/توضیحات

مجوزها

networkconnectivity.networkAdmin - به مدیران شبکه اجازه می‌دهد تا هاب و اسپوک را مدیریت کنند.

اتصال شبکه.هاب‌ها. اتصال شبکه.اسپوک‌ها.

networkconnectivity.networkSpokeManager - امکان افزودن و مدیریت Spokeها را در یک هاب فراهم می‌کند. برای استفاده در Shared VPC که در آن پروژه میزبان مالک هاب است، اما سایر مدیران در پروژه‌های دیگر می‌توانند Spokeهایی برای پیوست‌های خود به هاب اضافه کنند.

اتصال شبکه.اسپوک.**

networkconnectivity.networkUsernetworkconnectivity.networkViewer - به کاربران شبکه اجازه می‌دهد تا ویژگی‌های مختلف hub و spokes را مشاهده کنند.

اتصال شبکه.هاب‌ها.دریافت اتصال شبکه.هاب‌ها.لیست اتصال شبکه.اسپوک‌ها.دریافت اتصال شبکه.لیست اتصال شبکه.اسپوک‌ها.لیست اتصال شبکه.اسپوک‌ها.لیست تجمیعی

ایجاد VPCها و زیرشبکه‌ها در پروژه Cross

شبکه 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

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

آدرس پروژه مرکز NCC

از این دستور gcloud برای یافتن URI هاب NCC استفاده کنید. برای پیکربندی NCC spoke بین پروژه‌ای در مرحله بعدی، به مسیر URI نیاز خواهید داشت.

gcloud network-connectivity hubs describe ncc-hub

VPC اسپوک کراس پروجکت

به پروژه دیگری که VPC بخشی از پروژه NCC Hub نیست، وارد شوید. در cloudshell، از این دستور برای پیکربندی VPC به عنوان سخنگوی NCC استفاده کنید.

  • HUB_URI باید URI یک هاب در یک پروژه متفاوت باشد.
  • VPC_URI باید در همان پروژه‌ای باشد که spoke در آن قرار دارد.
  • شبکه VPC مشخص می‌کند که VPC در این پروژه متقابل به مرکز NCC در پروژه دیگری ملحق خواهد شد.
gcloud network-connectivity spokes linked-vpc-network create xproj-spoke \
--hub=projects/[YOUR-PROJECT-NAME]/locations/global/hubs/ncc-hub \
--global \
--vpc-network=xproject-vpc

.

Create request issued for: [xproj-spoke]
Waiting for operation [projects/xproject/locations/global/operations/operation-1689790411247-600dafd351158-2b862329-19b747f1] to complete...done.                           
Created spoke [xproj-spoke].
createTime: '2023-07-19T18:13:31.388500663Z'
hub: projects/[YOUR-PROJECT-NAME]/locations/global/hubs/ncc-hub
linkedVpcNetwork:
  uri: https://www.googleapis.com/compute/v1/projects/xproject/global/networks/xproject-vpc
name: projects/xproject/locations/global/spokes/xproj-spoke
reasons:
- code: PENDING_REVIEW
  message: Spoke is Pending Review
spokeType: VPC_NETWORK
state: INACTIVE
uniqueId: 46b4d091-89e2-4760-a15d-c244dcb7ad69
updateTime: '2023-07-19T18:13:38.652800902Z'

وضعیت پروژه‌ی متقابلی که NCC از آن صحبت کرد، چگونه است؟ چرا؟

۶. رد یا پذیرش پروژه متقابل Spoke

نمای کلی

مدیران هاب NCC باید صراحتاً یک اسپوک بین پروژه‌ای را برای پیوستن به هاب بپذیرند. این امر مانع از آن می‌شود که صاحبان پروژه، اسپوک‌های NCC جعلی را به جدول مسیریابی سراسری NCC متصل کنند. پس از پذیرش یا رد یک اسپوک، می‌توان متعاقباً با اجرای دستورات بالا، آن را به تعداد دلخواه رد یا پذیرفته کرد.

با ورود به cloud shell به پروژه‌ای که هاب NCC در آن قرار دارد، بازگردید.

شناسایی پره‌های پروژه متقاطع برای بررسی

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

پذیرش اسپوک

gcloud network-connectivity hubs accept-spoke ncc-hub --spoke=xproj-spoke

اختیاری: رد کردن یک پره

gcloud network-connectivity spokes reject-spoke ncc-hub --spoke=xproj-spoke 
--details="some reason to reject"

فهرست کردن پره‌های فعال روی هاب

gcloud network-connectivity hubs list-spokes ncc-hub \
 --filter="state:ACTIVE"
NAME            PROJECT          LOCATION  TYPE         STATE   STATE REASON
Xproj-spoke     xproj            global    VPC_NETWORK  ACTIVE
vpc4-spoke4     user-3p-dev      global    VPC_NETWORK  ACTIVE
vpc1-spoke1     user-3p-dev      global    VPC_NETWORK  ACTIVE
vpc2-spoke2     user-3p-dev      global    VPC_NETWORK  ACTIVE
vpc3-spoke3     user-3p-dev      global    VPC_NETWORK  ACTIVE

فهرست کردن مسیرهای زیرشبکه روی هاب

از خروجی، آیا می‌توانید مسیرهای زیرشبکه را از پره VPC متقاطع ببینید؟

gcloud network-connectivity hubs route-tables routes list \
--route_table=default \
--hub=ncc-hub \
--filter="NEXT_HOP:xprj-vpc"
IP_CIDR_RANGE  STATE   TYPE                NEXT_HOP  HUB      ROUTE_TABLE
10.100.1.0/24  ACTIVE  VPC_PRIMARY_SUBNET  xprj-vpc  ncc-hub  default

به‌روزرسانی VPC اسپوک بین‌پروژه‌ای با فیلتر Include-Export

به پروژه‌ای که VPC بخشی از پروژه NCC Hub نیست، وارد شوید. در cloudshell، از این دستور برای پیکربندی VPC به عنوان یک NCC spoke استفاده کنید.

  • HUB_URI باید URI یک هاب در یک پروژه متفاوت باشد.
  • VPC_URI باید در همان پروژه‌ای باشد که spoke در آن قرار دارد.
  • شبکه VPC مشخص می‌کند که VPC در این پروژه متقابل به مرکز NCC در پروژه دیگری ملحق خواهد شد.
  • فقط محدوده زیرشبکه 10.100.2.0/24 را در جدول مسیر هاب NCC وارد کنید
  • به مقدار "ETAG" در خروجی توجه کنید. این مقدار توسط NCC تولید می‌شود و شما باید این مقدار را در اختیار مدیر هاب NCC قرار دهید. مدیر هاب NCC هنگام پذیرش درخواست اسپوک بین پروژه‌ای برای پیوستن به هاب، باید به این مقدار ارجاع دهد.
gcloud network-connectivity spokes linked-vpc-network update xproj-spoke \
--hub=projects/[YOUR-PROJECT-NAME]/locations/global/hubs/ncc-hub \
--global \
--include-export-ranges=10.100.2.0/24
Update request issued for: [xprj-vpc]
Waiting for operation [projects]/xproject/locations/global/operations/operation-1742936388803-6313100521cae-020ac5d2-58
52fbba] to complete...done.                                                                                                 
Updated spoke [xprj-vpc].
createTime: '2025-02-14T14:25:41.996129250Z'
etag: '4'
fieldPathsPendingUpdate:
- linked_vpc_network.include_export_ranges
group: projects/xxxxxxxx/locations/global/hubs/ncc-hub/groups/default
hub: projects/xxxxxxxx/locations/global/hubs/ncc-hub
linkedVpcNetwork:
  includeExportRanges:
  - 10.100.2.0/24
  uri: https://www.googleapis.com/compute/v1/projects/xproject/global/networks/vpc1-spoke
name: projects/xproject/locations/global/spokes/xprj-vpc
reasons:
- code: UPDATE_PENDING_REVIEW
  message: Spoke update is Pending Review
spokeType: VPC_NETWORK
state: ACTIVE
uniqueId: 182e0f8f-91cf-481c-a081-ea6f7e40fb0a
updateTime: '2025-03-25T20:59:51.995734879Z'

شناسایی اسپوک‌های پروژه متقاطع به‌روزرسانی‌شده برای بررسی

به پروژه‌ای که میزبان هاب NCC است وارد شوید. در cloudshell، از این دستور برای بررسی وضعیت به‌روزرسانی VPC spoke بین پروژه‌ای استفاده کنید.

  • مقدار ETAG چیست؟ این مقدار باید با خروجی به‌روزرسانی vpc spoke مطابقت داشته باشد.
gcloud network-connectivity hubs list-spokes ncc-hub \ 
--filter="reasons:UPDATE_PENDING_REVIEW" \
--format=yaml

تغییرات به‌روز شده از پروژه‌ی متقابل اسپوک را بپذیرید

از این دستور برای پذیرش درخواست اسپوکِ پروژه‌ی متقابل برای پیوستن به NCC Hub استفاده کنید.

gcloud network-connectivity hubs accept-spoke-update ncc-hub \
 --spoke=https://www.googleapis.com/networkconnectivity/v1/projects/xproject/locations/global/spokes/xproj-spoke \
 --spoke-etag={etag value}

به صورت اختیاری، تغییرات به‌روزرسانی‌شده از پروژه‌ی متقابل را رد کنید

از این دستور برای رد درخواست اسپوکِ پروژه‌ی متقابل برای پیوستن به NCC Hub استفاده کنید.

gcloud network-connectivity hubs reject-spoke-update ncc-hub  \
--spoke=https://www.googleapis.com/networkconnectivity/v1/projects/xproject/locations/global/spokes/xproj-spoke  \
--details="not today" \
--spoke-etag={etag value} 

تأیید کنید که اسپوکِ پروژه‌ی متقابل به مرکز NCC پیوسته است.

gcloud network-connectivity hubs list-spokes ncc-hub \ --filter="name:xproj-spoke"

۷. NAT خصوصی بین VPC(ها)

نمای کلی

در این بخش، شما NAT خصوصی را برای همپوشانی محدوده‌های زیرشبکه بین دو VPC پیکربندی خواهید کرد. توجه داشته باشید که NAT خصوصی بین VPC(ها) نیاز به NCC دارد.

در بخش قبلی، VPC2 و VPC3 با محدوده زیرشبکه همپوشانی "10.3.3.0/24" پیکربندی شده‌اند. هر دو VPC(ها) به عنوان یک NCC spoke پیکربندی شده‌اند تا زیرشبکه همپوشانی را از درج در جدول مسیر هاب NCC حذف کنند، به این معنی که هیچ مسیر داده لایه 3 برای رسیدن به میزبان‌هایی که در آن زیرشبکه قرار دارند، وجود ندارد.

از این دستورات در پروژه هاب NCC برای یافتن محدوده (های) زیرشبکه‌ای که همپوشانی دارند استفاده کنید.

gcloud compute networks subnets list --network vpc2-ncc

gcloud compute networks subnets list --network vpc3-ncc

در vpc2-ncc، نام زیرشبکه‌ای که شامل محدوده IP همپوشانی است چیست؟

نام زیرشبکه را یادداشت و در جایی ذخیره کنید. شما NAT منبع را برای این محدوده پیکربندی خواهید کرد.

پیکربندی NAT خصوصی

با پیکربندی یک محدوده زیرشبکه غیر همپوشان با استفاده از پرچم "–purpose=PRIVATE_NAT"، یک محدوده زیرشبکه قابل مسیریابی را به منبع ترافیک NAT از زیرشبکه همپوشانی VPC2 اختصاص دهید.

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

یک روتر ابری اختصاصی برای انجام NAT خصوصی ایجاد کنید

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

روتر ابری را طوری پیکربندی کنید که منبع NAT آن، محدوده همپوشانی 10.3.3.0/24 از vpc2-ncc باشد. در پیکربندی مثال زیر، "overlapping-vpc3" نام زیرشبکه همپوشانی است. کلمه کلیدی "ALL" مشخص می‌کند که تمام محدوده‌های IP در زیرشبکه، منبع NAT خواهند شد.

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

مراحل قبلی مجموعه‌ای از محدوده‌های IP NAT و زیرشبکه خاصی که ترجمه خواهد شد را ایجاد کردند. در این مرحله، قانون NAT "1" را ایجاد کنید که بسته‌های شبکه‌ای را که با ترافیک منبع از محدوده زیرشبکه همپوشانی مطابقت دارند، در صورتی که شبکه مقصد مسیری را از جدول مسیریابی هاب NCC انتخاب کند، ترجمه می‌کند.

gcloud beta 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

مسیر داده را برای Private NAT تأیید کنید

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

خروجی مثال

enableDynamicPortAllocation: true
enableEndpointIndependentMapping: false
endpointTypes:
- ENDPOINT_TYPE_VM
name: ncc2-nat
rules:
- action:
    sourceNatActiveRanges:
    - https://www.googleapis.com/compute/beta/projects/xxxxxxxx/regions/us-central1/subnetworks/ncc2-spoke-nat
  match: nexthop.hub == "//networkconnectivity.googleapis.com/projects/xxxxxxxx/locations/global/hubs/ncc-hub"
  ruleNumber: 1
sourceSubnetworkIpRangesToNat: LIST_OF_SUBNETWORKS
subnetworks:
- name: https://www.googleapis.com/compute/beta/projects/xxxxxxxx/regions/us-central1/subnetworks/overlapping-vpc3
  sourceIpRangesToNat:
  - ALL_IP_RANGES
type: PRIVATE

به صورت اختیاری،

  • به کنسول وب بروید
  • به «خدمات شبکه > ابر NAT > ncc2-nat » بروید

تأیید کنید که تخصیص پورت پویا به طور پیش‌فرض فعال است.

۱۱۴۰۵۰bb65e0c4e2.png

در مرحله بعد، مسیر داده‌ای را که از مسیر خصوصی NAT پیکربندی شده برای VPC2 استفاده می‌کند، تأیید خواهید کرد.

5035b181aeaa30a8.png

یک نشست SSH به آدرس "vm1-vpc1-ncc" باز کنید و از دستور tcpdump زیر برای دریافت بسته‌های منبع از محدوده NAT pool "10.10.10.0/29" استفاده کنید.

vm1-vpc1-ncc

sudo tcpdump -i any net 10.10.10.0/29 -n

در زمان نوشتن این کد، Private NAT از بسته‌های ICMP پشتیبانی نمی‌کند. به " pNat-vm-vpc2" از طریق SSH متصل شوید و از دستور curl همانطور که در زیر نشان داده شده است برای اتصال به " vm1-vpc1-ncc" روی پورت TCP 80 استفاده کنید.

pnat-vm-vpc2

curl 10.1.1.2 -v 

خروجی tcpdump را در "vm1-vpc1-ncc" بررسی کنید. آدرس IP مبدا که جلسه TCP را به سرور وب ما در "vm1-vpc1-ncc" آغاز کرده است، چیست؟

tcpdump: data link type LINUX_SLL2
tcpdump: verbose output suppressed, use -v[v]... for full protocol decode
listening on any, link-type LINUX_SLL2 (Linux cooked v2), snapshot length 262144 bytes
19:05:27.504761 ens4  In  IP 10.10.10.2.1024 > 10.1.1.2:80: Flags [S], seq 2386228656, win 65320, options [mss 1420,sackOK,TS val 3955849029 ecr 0,nop,wscale 7], length 0
19:05:27.504805 ens4  Out IP 10.1.1.2:80 > 10.10.10.2.1024: Flags [S.], seq 48316785, ack 2386228657, win 64768, options [mss 1420,sackOK,TS val 1815983704 ecr 3955849029,nop,wscale 7], length 0
<output snipped>

۸. پشتیبانی NCC از زیرشبکه‌های IPv6

مرکز اتصال شبکه از تبادل زیرشبکه IPv6 و تبادل مسیرهای پویا بین NCC VPC Spokes و Hybrid Spokes پشتیبانی می‌کند. در این بخش، NCC را برای پشتیبانی از حالت تبادل مسیر زیرشبکه IPv6-only و IPv4-and-IPv6 با دو پشته پیکربندی کنید.

519afcf8a0d506f0.png

یک VPC جدید برای IPv6 ایجاد کنید که به عنوان یک VPC spoke به NCC-Hub متصل شود. GCP به طور خودکار تمام آدرس‌های ULA را از محدوده fd20::/20 اختصاص می‌دهد.

gcloud compute networks create vpc5-ncc \
--subnet-mode custom \
--enable-ula-internal-ipv6 

gcloud compute networks subnets create vpc5-ext-ipv6 \ --network=vpc5-ncc \ 
--stack-type=IPV6 \ 
--ipv6-access-type=EXTERNAL \ 
--region=us-central1

gcloud compute networks subnets create vpc5-ipv4-subnet1 \
--network vpc5-ncc \
--range 10.5.5.0/24 \
--region us-central1

از این دستور برای پیکربندی VPC5 به عنوان یک پره NCC استفاده کنید و مسیر زیرشبکه IPv4 را از خروجی گرفتن به جدول مسیر هاب حذف کنید. شبکه ULA IPv6 را به جدول مسیر هاب NCC خروجی بگیرید.

gcloud network-connectivity spokes linked-vpc-network create vpc5-spoke5 \
--hub=ncc-hub \
--vpc-network=vpc5-ncc \
--exclude-export-ranges=10.5.5.0/24
--global

VPC1 و VPC4 را برای آدرس‌های محلی منحصر به فرد IPv6 (ULA) خصوصی فعال کنید. GCP به طور خودکار تمام آدرس‌های ULA را از محدوده fd20::/20 اختصاص می‌دهد.

gcloud compute networks update vpc-ncc4 \
    --enable-ula-internal-ipv6

gcloud compute networks update vpc-ncc1 \
    --enable-ula-internal-ipv6

یک زیرشبکه ipv6 بومی و یک زیرشبکه ipv4_v6 دو پشته‌ای در VPC1 ایجاد کنید

gcloud compute networks subnets create vpc1-ipv6-sn1 \
    --network=vpc-ncc1 \
    --stack-type=IPV6_ONLY \
    --ipv6-access-type=INTERNAL \
    --region=us-central1

gcloud compute networks subnets create vpc1-ipv64-sn2 \
    --network=vpc-ncc1 \
    --range=10.10.10.0/24 \
    --stack-type=IPV4_IPV6 \
    --ipv6-access-type=INTERNAL \
    --region=us-east1

یک زیرشبکه ipv6 بومی و یک زیرشبکه ipv4_v6 دو پشته‌ای در VPC4 ایجاد کنید

gcloud compute networks subnets create vpc4-ipv6-sn1 \
    --network=vpc-ncc4 \
    --stack-type=IPV6_ONLY \
    --ipv6-access-type=INTERNAL \
    --region=us-central1

gcloud compute networks subnets create vpc4-ipv64-sn2 \
    --network=vpc-ncc4 \
    --range=10.40.40.0/24 \
    --stack-type=IPV4_IPV6 \
    --ipv6-access-type=INTERNAL \
    --region=us-east1

در VPC1، یک قانون فایروال IPv6 VPC ایجاد کنید تا ترافیک دریافتی از محدوده IPv6 ULA مجاز باشد.

gcloud compute firewall-rules create allow-icmpv6-ula-ncc1 \
    --network=vpc-ncc1 \
    --action=allow \
    --direction=ingress \
    --rules=all \
    --source-ranges=fd20::/20

در VPC4، یک قانون فایروال IPv6 VPC ایجاد کنید تا ترافیکی که از محدوده IPv6 ULA سرچشمه می‌گیرد، مجاز باشد.

gcloud compute firewall-rules create allow-icmpv6-ula-ncc4 \
    --network=vpc-ncc4 \
    --action=allow \
    --direction=ingress \
    --rules=all \
    --source-ranges=fd20::/20

سه نمونه GCE IPv6 ایجاد کنید تا اتصال مسیر داده را در بخش بعدی تأیید کنید. توجه: " vpc1-dualstack-vm" به عنوان یک میزبان پایه برای دسترسی خارج از باند به ماشین‌های مجازی GCE بومی IPv6 استفاده خواهد شد.

gcloud compute instances create vpc4-ipv6-vm \
    --zone us-central1-a \
    --subnet=vpc4-ipv6-sn1 \
    --stack-type=IPV6_ONLY

gcloud compute instances create vpc1-ipv6-vm \
    --zone us-central1-a \
    --subnet=vpc1-ipv6-sn1 \
    --stack-type=IPV6_ONLY

gcloud compute instances create vpc1-dual-stack-vm \
    --zone us-east1-b \
    --network=vpc-ncc1 \
    --subnet=vpc2-ipv64-sn2 \
    --stack-type=IPV4_IPV6

هاب NCC را برای زیرشبکه‌های IPv6 بررسی کنید

جدول مسیر هاب NCC را برای زیرشبکه‌های IPv6 ULA بررسی کنید.

gcloud network-connectivity hubs route-tables routes list --route_table=default \
--hub=ncc-hub \
--filter="IP_CIDR_RANGE:fd20"

توجه داشته باشید که خروجی دستور بالا زیرشبکه‌های IPv6 را فهرست نکرده است. به طور پیش‌فرض، زیرشبکه‌های IPv6 از VPC spokes برای صادرات به جدول مسیر هاب NCC لحاظ نمی‌شوند.

Listed 0 items.

از دستورات gcloud زیر برای به‌روزرسانی پره‌های VPC1 و VPC4 استفاده کنید تا زیرشبکه‌های IPv6 به جدول مسیر مرکز NCC صادر شوند.

gcloud network-connectivity spokes linked-vpc-network update vpc1-spoke1 \
  --global \
  --include-export-ranges=ALL_IPV6_RANGES

gcloud network-connectivity spokes linked-vpc-network update vpc4-spoke4 \
  --global \
  --include-export-ranges=ALL_IPV6_RANGES

gcloud network-connectivity spokes linked-vpc-network update vpc5-spoke5 \
  --global \
  --include-export-ranges=ALL_IPV6_RANGES

یک بار دیگر، جدول مسیر هاب NCC را برای زیرشبکه‌های IPv6 ULA بررسی کنید.

gcloud network-connectivity hubs route-tables routes list --route_table=default \
--hub=ncc-hub \
--filter="IP_CIDR_RANGE:fd20"

خروجی مثال

IP_CIDR_RANGE                  PRIORITY  LOCATION     STATE   TYPE                SITE_TO_SITE  NEXT_HOP  HUB            ROUTE_TABLE
fd20:c95:95d2:1000:0:0:0:0/64            us-east1     ACTIVE  VPC_PRIMARY_SUBNET  N/A           vpc-ncc4  ncc-hub  default
fd20:c95:95d2:1:0:0:0:0/64               us-central1  ACTIVE  VPC_PRIMARY_SUBNET  N/A           vpc-ncc4  ncc-hub  default
fd20:670:3823:0:0:0:0:0/64               us-central1  ACTIVE  VPC_PRIMARY_SUBNET  N/A           vpc-ncc5  ncc-hub  default
fd20:90:6768:1000:0:0:0:0/64             us-east1     ACTIVE  VPC_PRIMARY_SUBNET  N/A           vpc-ncc2  ncc-hub  default
fd20:90:6768:0:0:0:0:0/64                us-central1  ACTIVE  VPC_PRIMARY_SUBNET  N/A           vpc-ncc2  ncc-hub  default

فیلتر کردن زیرشبکه‌های IPv6 با استفاده از NCC VPC spokes

جدول مسیر هاب NCC را برای مسیرهای زیرشبکه IPv6 خارجی بررسی کنید

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

خروجی مثال، جدول مسیر هاب ncc محدوده IPv6 خارجی را یاد گرفته است.

IP_CIDR_RANGE                  PRIORITY  LOCATION     STATE   TYPE                SITE_TO_SITE  NEXT_HOP  HUB            ROUTE_TABLE
10.5.5.0/24                              us-central1  ACTIVE  VPC_PRIMARY_SUBNET  N/A           vpc-ncc5  ncc-hub  default
2600:1900:4001:ce6:0:0:0:0/64            us-central1  ACTIVE  VPC_PRIMARY_SUBNET  N/A           vpc-ncc5  ncc-hub  default
fd20:670:3823:0:0:0:0:0/64               us-central1  ACTIVE  VPC_PRIMARY_SUBNET  N/A           vpc-ncc5  ncc-hub  default
10.50.10.0/24                            us-central1  ACTIVE  VPC_PRIMARY_SUBNET  N/A           vpc-ncc5  ncc-hub  default

از دستور gcloud زیر برای به‌روزرسانی اسپوک‌های VPC5 استفاده کنید تا دو زیرشبکه داخلی خاص IPv6 و یک زیرشبکه خارجی IPv6 از تزریق به جدول مسیر هاب NCC مستثنی شوند.

gcloud network-connectivity spokes linked-vpc-network update vpc5-spoke5 \
 --global \
 --include-export-ranges=fd20:670:3823:0:0:0:0:0/48 \
 --exclude-export-ranges=fd20:670:3823:1::/64,fd20:670:3823:2::/64  

از دستور gcloud برای تأیید فیلترهای خروجی VPC5 spokes استفاده کنید.

gcloud network-connectivity spokes linked-vpc-network update vpc5-spoke5 \
 --global \
 --include-export-ranges=fd20:670:3823:0:0:0:0:0/48 \
 --exclude-export-ranges=fd20:670:3823:1::/64,fd20:670:3823:2::/64  

جدول مسیر هاب NCC را برای مسیرهای زیرشبکه IPv6 خارجی بررسی کنید

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

خروجی مثال، جدول مسیر هاب ncc محدوده IPv6 خارجی را یاد گرفته است.

IP_CIDR_RANGE               PRIORITY  LOCATION     STATE   TYPE                SITE_TO_SITE  NEXT_HOP  HUB            ROUTE_TABLE
fd20:670:3823:0:0:0:0:0/64            us-central1  ACTIVE  VPC_PRIMARY_SUBNET  N/A           vpc-ncc5  demo-mesh-hub  default

۹. اتصال مسیر داده را تأیید کنید

اتصال مسیر داده IPv4

به نمودار مراجعه کنید، مسیر داده IPv4 بین هر ماشین مجازی را بررسی کنید.

424df0ebe4510ebb.png

با SSH به " vm1-vpc1-ncc" وصل شوید و TCP dump را برای ردیابی بسته‌های ICMP از "vm2-vpc2-ncc" شروع کنید. یادآوری می‌کنم که این ماشین مجازی روی VPC2 قرار دارد.

vm1-vpc1-ncc

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

یک جلسه SSH به " vm1-vpc2-ncc" برقرار کنید و آدرس IP " vm1-vpc1-ncc " را "پینگ" کنید.

vm1-vpc2-ncc

ping 10.1.1.2

یک SSH به « vm1-vpc2-ncc» برقرار کنید و آدرس IP « vm1-vpc4-ncc » را «پینگ» کنید.

vm1-vpc2-ncc

ping 240.0.0.2

اتصال مسیر داده IPv6

به نمودار مراجعه کنید، مسیر داده IP64 بین هر ماشین مجازی را بررسی کنید.

aa1f3a26c1a62b30.png

از دستور gcloud برای فهرست کردن آدرس IP برای هر نمونه فعال‌شده با IPv6 استفاده کنید.

 gcloud compute instances list --filter="INTERNAL_IP:fd20"

خروجی نمونه

NAME                ZONE           MACHINE_TYPE   PREEMPTIBLE  INTERNAL_IP                   EXTERNAL_IP      STATUS
vpc1-ipv6-vm        us-central1-a  n1-standard-1               fd20:90:6768:0:0:1:0:0/96                      RUNNING
vpc4-ipv6-vm        us-central1-a  n1-standard-1               fd20:c95:95d2:1:0:1:0:0/96                     RUNNING
vpc1-dual-stack-vm  us-east1-b     n1-standard-1               10.10.10.3                    XXX.196.137.107  RUNNING
                                                               fd20:90:6768:1000:0:1:0:0/96

یک جلسه SSH برای " vpc1-dualstack-vm" برقرار کنید و آدرس IPv6 " vpc1-ipv6-vm " را "پینگ" کنید تا اتصال IPv6 را در یک VPC سراسری تأیید کنید.

ping fd20:90:6768:1000:0:1::

یک جلسه SSH برای " vpc1-dualstack-vm" برقرار کنید و آدرس IPv6 مربوط به " vpc4-ipv6-vm " را "پینگ" کنید تا اتصال IPv6 را از طریق یک اتصال NCC تأیید کنید.

ping fd20:c95:95d2:1:0:1::

۱۰. تمیز کردن

به پوسته ابری وارد شوید و نمونه‌های ماشین مجازی را در شبکه‌های سایت‌های هاب و شعبه حذف کنید

تنظیمات خصوصی VPC Nat را حذف کنید

gcloud beta compute routers nats rules delete 1 \
--nat=ncc2-nat \
--router=private-nat-cr \
--region=us-central1 \
--quiet

gcloud beta compute routers nats delete ncc2-nat \
--router=private-nat-cr \
--router-region=us-central1 \
--quiet

gcloud compute routers delete private-nat-cr \
--region=us-central1 \
--quiet

پره‌های ncc را حذف کنید

gcloud network-connectivity spokes delete vpc1-spoke1 --global --quiet

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

gcloud network-connectivity spokes delete vpc3-spoke3 --global --quiet

gcloud network-connectivity spokes delete vpc4-spoke4 --global --quiet

رد پروژه متقابل صحبت کرد

رد پروژه متقابل VPC صحبت کرد از مرکز NCC.

gcloud network-connectivity spokes reject projects/$xprojname/locations/global/spokes/xproj-spoke \--details="cleanup" \
--global

حذف مرکز NCC

gcloud network-connectivity hubs delete ncc-hub --quiet

حذف قوانین فایروال

gcloud compute firewall-rules delete ncc1-vpc-internal --quiet
gcloud compute firewall-rules delete ncc2-vpc-internal --quiet
gcloud compute firewall-rules delete ncc3-vpc-internal --quiet
gcloud compute firewall-rules delete ncc4-vpc-internal --quiet
gcloud compute firewall-rules delete ncc1-vpc-iap --quiet
gcloud compute firewall-rules delete ncc2-vpc-iap --quiet
gcloud compute firewall-rules delete ncc3-vpc-iap --quiet
gcloud compute firewall-rules delete ncc4-vpc-iap --quiet
gcloud compute firewall-rules delete allow-icmpv6-ula-ncc1 
gcloud compute firewall-rules delete allow-icmpv6-ula-ncc4 

حذف نمونه‌های GCE

gcloud compute instances delete vm1-vpc1-ncc --zone=us-central1-a --quiet
gcloud compute instances delete vm2-vpc2-ncc --zone=us-central1-a --quiet
gcloud compute instances delete pnat-vm-vpc2 --zone=us-central1-a --quiet
gcloud compute instances delete vm1-vpc4-ncc --zone=us-east1-b --quiet
gcloud compute instances delete vpc4-ipv6-vm  --zone us-central1-a --quiet
gcloud compute instances delete vpc2-dual-stack-vm --zone us-east1-b --quiet
gcloud compute instances delete vpc2-ipv6-vm --zone us-central1-a --quiet

حذف زیرشبکه‌های VPC

gcloud compute networks subnets delete ncc2-spoke-nat --region us-central1 --quiet
gcloud compute networks subnets delete vpc1-ncc-subnet1 --region us-central1 --quiet
gcloud compute networks subnets delete vpc1-ncc-subnet2 --region us-central1 --quiet
gcloud compute networks subnets delete vpc1-ncc-subnet3 --region us-central1 --quiet
gcloud compute networks subnets delete vpc2-ncc-subnet1 --region us-central1 --quiet
gcloud compute networks subnets delete overlapping-vpc2 --region us-central1 --quiet 
gcloud compute networks subnets delete overlapping-vpc3 --region us-central1 --quiet

gcloud compute networks subnets delete benchmark-testing-rfc2544 --region us-east1 --quiet
gcloud compute networks subnets delete class-e-rfc5735 --region us-east1 --quiet
gcloud compute networks subnets delete ietf-protcol-assignment-rfc6890 --region us-east1 --quiet
gcloud compute networks subnets delete ipv6-4-relay-rfc7526 --region us-east1 --quiet
gcloud compute networks subnets delete pupi --region us-east1 --quiet
gcloud compute networks subnets delete test-net-1-rfc5737 --region us-east1 --quiet
gcloud compute networks subnets delete test-net-2-rfc5737 --region us-east1 --quiet
gcloud compute networks subnets delete test-net-3-rfc5737 --region us-east1 --quiet
gcloud compute networks subnets delete vpc1-ipv64-sn2 --region=us-east1 --quiet
gcloud compute networks subnets delete vpc1-ipv6-sn1 --region=us-central1 --quiet
gcloud compute networks subnets delete vpc4-ipv64-sn2 --region=us-east1 --quiet
gcloud compute networks subnets delete vpc4-ipv6-sn1 --region=us-central1 --quiet
gcloud compute networks subnets delete vpc5-ext-ipv6 --region=us-central1 --quiet

حذف VPC(ها)

gcloud compute networks delete vpc1-ncc vpc2-ncc vpc3-ncc vpc4-ncc, vpc5-ncc --quiet 

۱۱. تبریک می‌گویم!

شما آزمایشگاه مرکز اتصال شبکه را به پایان رسانده‌اید!

آنچه را که پوشش دادید

  • شبکه Peering VPC تمام مش پیکربندی شده با NCC Hub
  • فیلتر حذف اسپوک NCC
  • پشتیبانی از اسپوک‌های بین پروژه‌ای
  • NAT خصوصی بین VPC

مراحل بعدی

©Google, LLC یا شرکت‌های وابسته به آن. تمامی حقوق محفوظ است. توزیع نکنید.