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

1. مقدمه

نمای کلی

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

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

چیزی که خواهی ساخت

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

چیزی که یاد خواهید گرفت

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

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

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

6d1b99c6da87fd84.png

اهداف

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

قبل از شروع

Google Cloud Console و Cloud Shell

برای تعامل با GCP، از Google Cloud Console و Cloud Shell در سراسر این آزمایشگاه استفاده خواهیم کرد.

NCC Hub Project Google Cloud Console

در https://console.cloud.google.com می‌توانید به کنسول Cloud دسترسی پیدا کنید.

موارد زیر را در Google Cloud تنظیم کنید تا پیکربندی مرکز اتصال شبکه را آسان‌تر کنید:

در Google Cloud Console، در صفحه انتخاب پروژه، یک پروژه Google Cloud را انتخاب یا ایجاد کنید.

Cloud Shell را راه اندازی کنید. این Codelab از متغیرهای $ برای کمک به پیاده سازی پیکربندی 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 نیاز دارد. حتماً کاربر خود را با نقش‌های NCC IAM در صورت لزوم پیکربندی کنید.

نقش/توضیحات

مجوزها

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

اتصال به شبکه. هاب ها. Networkconnectivity.spokes.

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

networkconnectivity.spokes.**

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

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

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

نمای کلی

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

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

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

  • 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

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

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

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

نمای کلی

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

8acc7651f52e251e.png

خدمات API را فعال کنید

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

gcloud services enable networkconnectivity.googleapis.com

NCC Hub را ایجاد کنید

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

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 تا زمانی که پره ها خالی شوند خالی خواهد بود

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

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

4. NCC با اسپک های VPC

نمای کلی

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

a70bc80037927bb0.png

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

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

  • VPC4
  • VPC1
  • VPC2
  • VPC3

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 حذف کنند. در این قسمت از Codelab، یک قانون Exclude export بر اساس یک پیشوند خلاصه ایجاد کنید تا از صادرات زیرشبکه VPC1 به جدول مسیر NCC Hub جلوگیری کنید.

از این دستور 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" جفت زیرشبکه /25 را از وارد کردن به جدول مسیریابی هاب حذف کنید تا مسیر خلاصه /24 را از آن محدوده خاص فیلتر کنید.

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 

توجه* کاربران می توانند حداکثر 16 محدوده 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 پیکربندی کنید

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 Hub محدوده IP همپوشانی با VPC2 را شناسایی کرد. به یاد بیاورید که VPC2 و VPC3 هر دو با یک زیرشبکه IP 10.3.3.0/24 راه اندازی شدند.

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

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

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

توجه: حذف یک اسپیکر VPC مرتبط با یک VPC خاص، برای ایجاد مجدد یک اسپیکر جدید که به همان VPC ارجاع می‌دهد، نیازمند یک دوره خنک‌سازی ۱۰ دقیقه‌ای است تا منقضی شود.

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 که قبلا ایجاد شده است اختصاص دهید. این تلاش برای افزودن VPC3 به عنوان اسپیکر به 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 Hub را فهرست کرده و خروجی را بررسی کنید.

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

محدوده IP همپوشانی از VPC2 و VPC3 مستثنی شده است. جدول مسیریابی NCC Hub از همه انواع محدوده معتبر IPv4 به جز آدرس‌های IP عمومی مورد استفاده خصوصی (PUPI) پشتیبانی می‌کند.

5. NCC با پره های پروژه متقابل

نمای کلی

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

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

e1190fa898c5097d.png

Cross Project: Google Cloud Console و Cloud Shell

برای تعامل با GCP، از Google Cloud Console و Cloud Shell در سراسر این آزمایشگاه استفاده خواهیم کرد.

Cross Project Spoke Google Cloud Console

در https://console.cloud.google.com می‌توانید به کنسول Cloud دسترسی پیدا کنید.

موارد زیر را در Google Cloud تنظیم کنید تا پیکربندی مرکز اتصال شبکه را آسان‌تر کنید:

در Google Cloud Console، در صفحه انتخاب پروژه، یک پروژه Google Cloud را انتخاب یا ایجاد کنید.

Cloud Shell را راه اندازی کنید. این Codelab از متغیرهای $ برای کمک به پیاده سازی پیکربندی 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 نیاز دارد. حتماً کاربر خود را با نقش‌های NCC IAM در صورت لزوم پیکربندی کنید.

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

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

نقش/توضیحات

مجوزها

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

اتصال به شبکه. هاب ها. Networkconnectivity.spokes.

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

networkconnectivity.spokes.**

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

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

VPC ها و زیرشبکه ها را در Cross Project ایجاد کنید

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

از این دستور gcloud برای پیدا کردن NCC Hub URI استفاده کنید. برای پیکربندی cross project NCC talk در مرحله بعد به مسیر URI نیاز دارید.

gcloud network-connectivity hubs describe ncc-hub

Cross Project Spoke VPC

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

  • HUB_URI باید URI یک هاب در پروژه دیگری باشد.
  • VPC_URI باید در همان پروژه اسپیک باشد
  • شبکه 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 چگونه است؟ چرا؟

6. رد یا پذیرش Cross Project Spoke

نمای کلی

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

با ورود به پوسته ابری به پروژه ای که مرکز NCC در آن قرار دارد بازگردید.

پره های پروژه Cross را برای بازبینی شناسایی کنید

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

پذیرش یک سخنرانی

gcloud network-connectivity spokes accept xproj-spoke --global

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

gcloud network-connectivity spokes reject xproj-spoke \
--global \
--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.0.0/16  ACTIVE  VPC_PRIMARY_SUBNET  xprj-vpc  ncc-hub  default

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

نمای کلی

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

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

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

gcloud compute networks subnets list --network vpc2-ncc

gcloud compute networks subnets list --network vpc3-ncc

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

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

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

یک محدوده زیر شبکه قابل مسیریابی را به منبع ترافیک NAT از زیرشبکه همپوشانی VPC2 اختصاص دهید. با پیکربندی یک محدوده زیرشبکه غیر همپوشانی با استفاده از پرچم "–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

یک روتر ابری اختصاصی برای انجام 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'd خواهد بود.

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

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

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 خصوصی را تأیید کنید

gcloud 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/projects/yueri-3p-dev/regions/us-central1/subnetworks/ncc2-spoke-nat
  match: nexthop.hub == "//networkconnectivity.googleapis.com/projects/yueri-3p-dev/locations/global/hubs/ncc-hub"
  ruleNumber: 1
sourceSubnetworkIpRangesToNat: LIST_OF_SUBNETWORKS
subnetworks:
- name: https://www.googleapis.com/compute/projects/yueri-3p-dev/regions/us-central1/subnetworks/overlapping-vpc3
  sourceIpRangesToNat:
  - ALL_IP_RANGES
type: PRIVATE

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

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

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

114050bb65e0c4e2.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

در زمان نوشتن این کد، NAT خصوصی از بسته های ICMP پشتیبانی نمی کند. جلسه SSH به " pNat-vm-vpc2" و از دستور 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>

8. اتصال مسیر داده را بررسی کنید

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

424df0ebe4510ebb.png

SSH به " vm1-vpc1-ncc" و راه اندازی TCP dump برای ردیابی بسته های ICMP از "vm2-vpc2-ncc." به عنوان یادآوری، این VM روی 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

9. پاکسازی کنید

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

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

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

gcloud 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 Hub را حذف کنید

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

موارد 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

زیرشبکه های 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

حذف VPC(ها)

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

10. تبریک می گویم!

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

آنچه شما پوشش داده اید

  • شبکه همتا VPC Full Mesh با NCC Hub پیکربندی شده است
  • فیلتر حذف اسپک NCC
  • Cross Project Spoke Support
  • NAT خصوصی بین VPC

مراحل بعدی

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