שיעור Lab: NCC VPC בדיבור

1. מבוא

סקירה כללית

בשיעור ה-Lab הזה, המשתמשים יבחנו איך אפשר להשתמש ב-Network Connectivity Center(NCC) כדי ליצור קישוריות בין-VPC בקנה מידה נרחב באמצעות תמיכה ב-VPC Spokes. כשמשתמשים מגדירים VPC כדיבור VPC, הדבר מאפשר להם לחבר אותו לכמה רשתות VPC ביחד דרך NCC Hub. NCC עם הגדרות אישיות של VPC מפחיתה את המורכבות התפעולית של ניהול קישוריות בין VPC בצמד באמצעות קישור בין רשתות שכנות (peering) של VPC, במקום להשתמש במודל מרכזי לניהול קישוריות.

תזכורת: Network Connectivity Center (NCC) הוא מודל מישור בקרה רכזת ודיבור לניהול קישוריות רשת ב-Google Cloud. משאב ה-Hub מספק מודל מרכזי לניהול קישוריות לתכונה 'חישורים' מחוברים.

מה תפַתחו

ב-Codelab הזה, תפתחו מרכז לוגי ודבור טופולוגיה באמצעות המרכז של NCC, שיטמיע מארג קישוריות VPC עם רשת מלאה בשלוש רשתות VPC נפרדות.

מה תלמדו

  • קישוריות VPC מלאה ברשת VPC עם NCC
  • NAT פרטי ב-VPC

מה צריך להכין

  • ידע על רשת GCP VPC
  • ידע בניתוב Cloud Router ו-BGP
  • שני פרויקטים נפרדים של GCP
  • ב-Codelab הזה נדרשים 5 רשתות VPC. אחת מהסביבות האלה חייבת להיות ממוקמת בפרויקט נפרד מזה של מרכז NCC
  • אם צריך, בודקים את Quota:Networks ואת הרשתות הנוספות של בקשות נוספות, צילום מסך למטה:

6d1b99c6da87fd84.png

מטרות

  • הגדרת סביבת GCP
  • הגדרת ה-Network Connectivity Center עם VPC כשדיבור
  • אימות של נתיב הנתונים
  • להתנסות בתכונות של יכולת השירות של NCC
  • מחיקת המשאבים שנוצלו

לפני שמתחילים

מסוף Google Cloud ו-Cloud Shell

כדי לקיים אינטראקציה עם GCP, נשתמש גם ב-Google Cloud Console וגם ב-Cloud Shell בשיעור ה-Lab הזה.

פרויקט NCC Hub מסוף Google Cloud

אפשר להגיע אל Cloud Console בכתובת https://console.cloud.google.com.

כדי שיהיה קל יותר להגדיר את Network Connectivity Center, צריך להגדיר את הפריטים הבאים ב-Google Cloud:

במסוף Google Cloud, בדף בחירת הפרויקט, בוחרים או יוצרים פרויקט חדש ב-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 נדרשים תפקידי IAM כדי לגשת לממשקי API ספציפיים. חשוב להגדיר למשתמשים את תפקידי ה-NCC ב-IAM לפי הצורך.

תפקיד/תיאור

הרשאות

networkconnectivity.networkAdmin – לאפשר למנהלי רשתות לנהל Hub ודיבור.

Networkconnectivity.hubs.networkconnectivity.spokes.

networkconnectivity.networkSpokeManager – הוספה וניהול של חישורים במרכז. לשימוש ב-VPC משותף שבו המרכז המארח הוא הבעלים של הפרויקט, אבל אדמינים אחרים בפרויקטים אחרים יכולים להוסיף חישורים לקבצים המצורפים שלהם למרכז.

networkconnectivity.spokes.**

networkconnectivity.networkUsernetworkconnectivity.networkViewer – לאפשר למשתמשי רשת להציג מאפיינים שונים של Hub ודיבורים.

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

2. הגדרה של סביבת הרשת

סקירה כללית

בקטע הזה נפרוס את רשתות ה-VPC וכללי חומת האש בפרויקט אחד. התרשים הלוגי ממחיש את סביבת הרשת שתוגדר בשלב הזה.

כדי להדגים תמיכה מדוברת בפרויקטים שונים, בשלב מאוחר יותר נפרוס כללי VPC וכללי חומת אש בפרויקט אחר.

245f1002db33ca98.png

יצירת ה-VPC ורשתות המשנה

רשת ה-VPC מכילה רשתות משנה שתתקינו בהן VM של GCE לצורך אימות נתיב הנתונים

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' צריך גישה זמנית לאינטרנט.

יוצרים ארבע מכונות וירטואליות, כל מכונה וירטואלית תוקצה לאחת מה-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 באמצעות פקודות gcloud. ה-NCC Hub ישמש בתור מישור הבקרה שאחראי ליצירת הגדרות הניתוב בין כל דיבר VPC.

8acc7651f52e251e.png

הפעלת שירותי API

מפעילים את ממשק ה-API של קישוריות הרשת אם הוא עדיין לא מופעל:

gcloud services enable networkconnectivity.googleapis.com

יצירת מרכז NCC

יצירת מרכז NCC באמצעות הפקודה של gcloud

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 תהיה ריקה עד שהחישורים

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

טבלת המסלולים של NCC Hub אמורה להיות ריקה.

4. NCC עם חיבורי VPC

סקירה כללית

בקטע הזה מגדירים שלוש רשתות VPC כ-NCC Spoke באמצעות פקודות gcloud.

a70bc80037927bb0.png

הגדרת VPC(ים) כ-NCC Spoke

מגדירים את רשתות ה-VPC הבאות בתור NCC Spoke בסדר הזה

  • VPC4
  • VPC1
  • VPC2
  • VPC3

צריך להגדיר את VPC4 כדיבור NCC ולהקצות אותו למרכז ה-NCC שנוצר קודם לכן. כדי להשתמש בקריאות ל-API בדיבור של NCC, צריך לציין מיקום. הדגל '–גלובלי' זה מפשט את התחביר של gcloud כי הוא מאפשר למשתמשים להימנע מציון נתיב URI מלא כשמגדירים דיבור NCC חדש.

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

הגדרת VPC1 כדיבור NCC.

אדמינים יכולים להחריג נתיבי תת-רשת, כך שלא יתבצע ייצוא של נתיבים של רשתות VPC שמגיעות לטבלת המסלולים של מרכז ה-NCC. בחלק הזה של ה-Codelab, יוצרים כלל ייצוא של החרגה לפי קידומת סיכום כדי למנוע ייצוא של רשת המשנה של 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 ולהחריג את הייבוא של צמד של /25 רשתות משנה לטבלת הניתוב של המרכז, באמצעות הפונקציה 'export-exclusion-ranges' במילת מפתח כדי לסנן את נתיב הסיכום /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 חופפים באמצעות החרגת ייצוא

בזמן כתיבת ה-Codelab הזה, מדובר בבעיה ידועה שבה משתמשים צריכים למחוק וליצור מחדש חישורי NCC כדי לשנות את ההגדרות של מסנן הייצוא.

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

הערה: כדי למחוק דיבור VPC המשויך ל-VPC ספציפי, נדרשת תקופת צינון של 10 דקות כדי ליצור מחדש דובר חדש שמפנה לאותו 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

פרויקטים שונים: Google Cloud Console ו-Cloud Shell

כדי לקיים אינטראקציה עם GCP, נשתמש גם ב-Google Cloud Console וגם ב-Cloud Shell בשיעור ה-Lab הזה.

מסוף Google Cloud ב-Cross Project Spoke

אפשר להגיע אל Cloud Console בכתובת https://console.cloud.google.com.

כדי שיהיה קל יותר להגדיר את Network Connectivity Center, צריך להגדיר את הפריטים הבאים ב-Google Cloud:

במסוף Google Cloud, בדף בחירת הפרויקט, בוחרים או יוצרים פרויקט חדש ב-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 נדרשים תפקידי IAM כדי לגשת לממשקי API ספציפיים. חשוב להגדיר למשתמשים את תפקידי ה-NCC ב-IAM לפי הצורך.

לכל הפחות, האדמין לדייק את כל הפרויקטים צריך לקבל את תפקיד ה-IAM : 'networkconnectivity.networkSpokeManager'. "

הטבלה הבאה מפרטת את תפקיד ה-IAM שנדרש לאדמין של NCC Hub ו-Spoke.

תפקיד/תיאור

הרשאות

networkconnectivity.networkAdmin – לאפשר למנהלי רשתות לנהל Hub ודיבור.

Networkconnectivity.hubs.networkconnectivity.spokes.

networkconnectivity.networkSpokeManager – הוספה וניהול של חישורים במרכז. לשימוש ב-VPC משותף שבו המרכז המארח הוא הבעלים של הפרויקט, אבל אדמינים אחרים בפרויקטים אחרים יכולים להוסיף חישורים לקבצים המצורפים שלהם למרכז.

networkconnectivity.spokes.**

networkconnectivity.networkUsernetworkconnectivity.networkViewer – לאפשר למשתמשי רשת להציג מאפיינים שונים של Hub ודיבורים.

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

יצירת רשתות ה-VPC ורשתות המשנה בפרויקט חוצה

רשת ה-VPC מכילה רשתות משנה שתתקינו בהן VM של GCE לצורך אימות נתיב הנתונים

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

URI של פרויקט NCC Hub

משתמשים בפקודה הזו ב-gcloud כדי למצוא את ה-URI של NCC Hub. יש צורך בנתיב URI כדי להגדיר את ה-NCC בכל הפרויקט בשלב הבא.

gcloud network-connectivity hubs describe ncc-hub

VPC ב-Cross Project Spoke

מתחברים לפרויקט אחר שבו ה-VPC הוא לא חלק מפרויקט NCC Hub. ב-cloudshell, משתמשים בפקודה הזו כדי להגדיר VPC כדיבור NCC.

  • ה-HUB_URI צריך להיות ה-URI של רכזת בפרויקט אחר.
  • ה-VPC_URI צריך להיות באותו פרויקט שבו נמצא הדיבור
  • הרשת ה-VPC מציינת שה-VPC בפרויקט הזה יצטרף ל-NCC Hub בפרויקט אחר
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. דחייה או אישור של דיבור בין פרויקטים

סקירה כללית

אדמינים ב-NCC Hub צריכים לאשר במפורש ביצוע דיבור בין פרויקטים כדי להצטרף למרכז. הפעולה הזו מונעת מבעלי הפרויקט לצרף דיבורים לא חוקיים של NCC לטבלת הניתוב הגלובלית של NCC. אחרי אישור או דחייה של דיבור, אפשר לדחות או לאשר אותו כמה פעמים שרוצים על ידי הרצת הפקודות שלמעלה.

חוזרים לפרויקט שבו נמצא מרכז ה-NCC על ידי התחברות ל-Cloud Shell.

זיהוי הדיוור חוצה הפרויקט לבדיקה

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"

הצגת רשימה של השיחות פעילות ב-Hub

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-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. על ידי הגדרת טווח של רשת משנה שאינה חופפת באמצעות "–צרו=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

מגדירים Cloud Router כדי לחבר NAT בטווח החופף של 10.3.3.0/24 מ-vpc2-ncc. בהגדרה לדוגמה שלמטה, 'overlaping-vpc3' הוא השם של רשת המשנה החופפת. "הכול" מילת המפתח מציינת שכל טווחי ה-IP בתת-הרשת יקודמו באמצעות NAT.

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

השלבים הקודמים יצרו מאגר של טווחי כתובות 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 "10.10.10.0/29".

vm1-vpc1-ncc

sudo tcpdump -i any net 10.10.10.0/29 -n

בזמן כתיבת ה-Codelab הזה, 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 ומפעילים את קובץ ה-dump של TCP כדי לעקוב אחר חבילות ICMP מ-" vm2-vpc2-ncc." תזכורת: המכונה הווירטואלית הזאת נמצאת ב-VPC2.

vm1-vpc1-ncc

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

יוצרים סשן SSH ל-vm1-vpc2-ncc ול-ping את כתובת ה-IP 'vm1-vpc1-ncc'.

vm1-vpc2-ncc

ping 10.1.1.2

יוצרים SSH ל-vm1-vpc2-ncc ול-ping את כתובת ה-IP 'vm1-vpc4-ncc'.

vm1-vpc2-ncc

ping 240.0.0.2

9. הסרת המשאבים

התחברות ל-Cloud Shell ומחיקה של מכונות וירטואליות ברשתות של האתר המרכזי והסתעפות

מחיקת הגדרות אישיות של 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. מעולה!

השלמת את ה-Network Connectivity Center Lab!

מה נכלל בקורס

  • הוגדרה רשת קישור בין רשתות שכנות (peering) של VPC מסוג Full Mesh עם NCC Hub
  • מסנן החרגת דיבור NCC
  • תמיכה ב-Cross Project Spoke
  • NAT פרטי בין VPC

השלבים הבאים

©Google, LLC או השותפים העצמאיים שלה. כל הזכויות שמורות. אסור להפיץ.