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

1. מבוא

סקירה כללית

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

חשוב לזכור ש-Network Connectivity Center‏ (NCC) הוא מודל של מישור בקרה מסוג 'רכז ו-spoke' לניהול קישוריות הרשת ב-Google Cloud. משאב הציר מספק מודל מרכזי לניהול קישוריות כדי לחבר בין העצמות.

מה תפַתחו

ב-codelab הזה תלמדו ליצור טופולוגיית ציר ו-spoke לוגית באמצעות צומת NCC, שתטמיע רשת קישוריות VPC מלאה עם רשתות רשתות (mesh) בין שלוש רשתות VPC נפרדות.

מה תלמדו

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

מה צריך להכין

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

6d1b99c6da87fd84.png

מטרות

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

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

מסוף Google Cloud ו-Cloud Shell

במהלך הסדנה הזו נשתמש במסוף Google Cloud וב-Cloud Shell כדי ליצור אינטראקציה עם GCP.

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

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

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

במסוף Google Cloud, בדף לבחירת הפרויקט, בוחרים פרויקט קיים ב-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

כדי לגשת לממשקי API ספציפיים, נדרש תפקיד IAM ב-NCC. חשוב להגדיר את המשתמש עם תפקידי ה-IAM של NCC לפי הצורך.

תפקיד/תיאור

הרשאות

networkconnectivity.networkAdmin – מאפשרת למנהלי רשת לנהל את הצירים והקרניים.

networkconnectivity.hubs.networkconnectivity.spokes.

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

networkconnectivity.spokes.**

networkconnectivity.networkUsernetworkconnectivity.networkViewer – מאפשרת למשתמשי הרשת להציג מאפיינים שונים של צומת ושל זרוע.

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

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

סקירה כללית

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

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

245f1002db33ca98.png

יצירת הרשתות הווירטואליות הפרטיות (VPC) ורשתות המשנה

רשת ה-VPC מכילה רשתות משנה שבהן תתקינו מכונה וירטואלית של 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 בכל 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. Network Connectivity Center Hub

סקירה כללית

בקטע הזה נסביר איך להגדיר מרכז NCC באמצעות פקודות gcloud. NCC Hub ישמש כמישור הבקרה שאחראי על בניית הגדרות הניתוב בין כל ציר VPC.

8acc7651f52e251e.png

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

מפעילים את Network Connectivity 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 תהיה ריקה עד ש-spokes

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 כ-spoke של NCC ומקצים אותו ל-hub של NCC שנוצר קודם. בקריאות API של NCC Spoke צריך לציין מיקום. הדגל '‎–global' מפשט את התחביר של gcloud ומאפשר למשתמש להימנע מהצגת נתיב URI מלא כשמגדירים זרוע חדשה של NCC.

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

מגדירים את VPC1 כ-spoke של NCC.

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

gcloud network-connectivity spokes linked-vpc-network create vpc2-spoke2 \
--hub=ncc-hub \
--vpc-network=vpc2-ncc \
--global

מגדירים את VPC3 כ-spoke של NCC ומקצים אותו ל-hub של 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 ספציפי, צריך להמתין 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 כ-spoke של NCC ומקצים אותו ל-hub של NCC שנוצר קודם. הניסיון הזה להוסיף את VPC3 כ-spoke ל-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 ו-Cloud Shell

במהלך הסדנה הזו נשתמש במסוף Google Cloud וב-Cloud Shell כדי ליצור אינטראקציה עם GCP.

Cross Project Spoke במסוף Google Cloud

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

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

במסוף Google Cloud, בדף לבחירת הפרויקט, בוחרים פרויקט קיים ב-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

כדי לגשת לממשקי API ספציפיים, נדרש תפקיד IAM ב-NCC. חשוב להגדיר את המשתמש עם תפקידי ה-IAM של NCC לפי הצורך.

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

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

תפקיד/תיאור

הרשאות

networkconnectivity.networkAdmin – מאפשרת למנהלי רשת לנהל את הצירים והקרניים.

networkconnectivity.hubs.networkconnectivity.spokes.

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

networkconnectivity.spokes.**

networkconnectivity.networkUsernetworkconnectivity.networkViewer – מאפשרת למשתמשי הרשת להציג מאפיינים שונים של צומת ושל זרוע.

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

יצירת הרשתות הווירטואליות הפרטיות (VPC) והרשתות המשנה בפרויקט המשותף

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

gcloud network-connectivity hubs describe ncc-hub

Cross Project Spoke VPC

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

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

הצגת הרשימה של ה-spokes הפעילים ב-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

רשימת נתיבי תת-רשת ב-Hub

האם אפשר לראות את נתיבי תת-הרשת מה-spoke של 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‏(s)

סקירה כללית

בקטע הזה מגדירים NAT פרטי לטווחי תת-רשתות חופפים בין שני VPC. חשוב לזכור ש-NAT פרטי בין VPCs מחייב NCC.

בקטע הקודם, VPC2 ו-VPC3 מוגדרים עם טווח של תת-רשתות חופפות של '10.3.3.0/24'. שתי רשתות ה-VPC מוגדרות כ-spoke של NCC כדי להחריג את תת-הרשת החופפת מהטבלה של מסלולי הצומת(hub) של NCC. המשמעות היא שאין נתיב נתונים בשכבה 3 כדי להגיע למארחים שנמצאים בתת-הרשת הזו.

משתמשים בפקודות האלה בפרויקט ה-hub של 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

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

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

השלבים הקודמים יצרו מאגר של טווחי 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

לחלופין,

  • מעבר למסוף האינטרנט
  • עוברים אל 'Network Services (שירותי רשת)' > 'Cloud NAT' (NAT ב-Cloud) > 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

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

מחיקת הגדרות NAT פרטיות של VPC

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

מחיקת אירועים של 'מרכז שירות'

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 spoke של הפרויקט המשותף ממרכז ה-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!

מה ביטחתם

  • רשת VPC Peering מלאה עם צומת NCC Hub
  • מסנן החרגה של ציר NCC
  • תמיכה ב-Spoke בפרויקטים שונים
  • NAT פרטי בין VPC

השלבים הבאים

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