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 ساکن باشد
- سهمیه: شبکه های خود را بررسی کنید و در صورت نیاز شبکه های اضافی را درخواست کنید ، اسکرین شات زیر:
اهداف
- محیط 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 و قوانین فایروال را در پروژه دیگری مستقر خواهیم کرد.
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 خواهد بود.
خدمات 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 پیکربندی خواهید کرد.
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 شرکت کنند.
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 » بروید
بررسی کنید که تخصیص پورت پویا به طور پیش فرض فعال باشد.
در مرحله بعد، مسیر داده ای را که از مسیر NAT خصوصی پیکربندی شده برای VPC2 استفاده می کند، تأیید می کنید.
یک جلسه 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. اتصال مسیر داده را بررسی کنید
به نمودار مراجعه کنید، مسیر داده بین هر ماشین مجازی را بررسی کنید.
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 یا شرکت های وابسته به آن. تمامی حقوق محفوظ است. توزیع نکنید.