Lab: NCC-VPC als Spoke

1. Einführung

Übersicht

In diesem Lab erfahren Sie, wie Sie mit Network Connectivity Center(NCC) eine Inter-VPC-Konnektivität im großen Maßstab über die Unterstützung von VPC-Spokes herstellen können. Wenn Nutzer ein VPC als VPC-Spoke definieren, können sie es über den NCC-Hub mit mehreren VPC-Netzwerken verbinden. NCC mit VPC-Spoke-Konfiguration reduziert die operative Komplexität der Verwaltung der paarweisen Inter-VPC-Konnektivität über VPC-Peering. Stattdessen wird ein zentrales Modell für die Konnektivitätsverwaltung verwendet.

Network Connectivity Center (NCC) ist ein Hub-and-Spoke-Steuerungsebenenmodell für die Verwaltung der Netzwerkverbindung in Google Cloud. Die Hub-Ressource bietet ein zentrales Modell für die Verbindungsverwaltung, um Spokes zu verbinden.

Umfang

In diesem Codelab erstellen Sie mit dem NCC-Hub eine logische Hub-and-Spoke-Topologie, die eine vollständig vermaschte VPC-Konnektivität über drei verschiedene VPCs implementiert.

Aufgaben in diesem Lab

  • Vollständige Mesh-VPC-Konnektivität mit dem Network Connectivity Center
  • Private NAT in einer VPC

Voraussetzungen

  • Kenntnisse über das VPC-Netzwerk der Google Cloud Platform
  • Kenntnisse zu Cloud Router und BGP-Routing
  • Zwei separate GCP-Projekte
  • Für dieses Codelab sind fünf VPCs erforderlich. Eines dieser VPCs muss sich in einem anderen Projekt als dem NCC-Hub befinden.
  • Prüfen Sie Ihr Kontingent:Netzwerke und fordern Sie bei Bedarf zusätzliche Netzwerke an (siehe Screenshot unten):

6d1b99c6da87fd84.png

Zielsetzungen

  • GCP-Umgebung einrichten
  • Network Connectivity Center mit VPC als Spoke konfigurieren
  • Datenpfad prüfen
  • Funktionen zur Wartung von NCC
  • Verwendete Ressourcen bereinigen

Hinweis

Google Cloud Console und Cloud Shell

In diesem Lab verwenden wir sowohl die Google Cloud Console als auch Cloud Shell, um mit der GCP zu interagieren.

NCC Hub Project Google Cloud Console

Die Cloud Console finden Sie unter https://console.cloud.google.com.

Richten Sie die folgenden Elemente in Google Cloud ein, um die Konfiguration des Network Connectivity Centers zu vereinfachen:

Wählen Sie in der Google Cloud Console auf der Seite zur Projektauswahl ein Google Cloud-Projekt aus oder erstellen Sie ein Google Cloud-Projekt.

Starten Sie Cloud Shell. In diesem Codelab werden $variables verwendet, um die Implementierung der gcloud-Konfiguration in Cloud Shell zu unterstützen.

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-Rollen

Für den Zugriff auf bestimmte APIs sind IAM-Rollen erforderlich. Konfigurieren Sie den Nutzer mit den erforderlichen NCC-IAM-Rollen.

Rolle/Beschreibung

Berechtigungen

networkconnectivity.networkAdmin: Damit können Netzwerkadministratoren Hubs und Spokes verwalten.

networkconnectivity.hubs.networkconnectivity.spokes.

networkconnectivity.networkSpokeManager: Hiermit können Spokes in einem Hub hinzugefügt und verwaltet werden. Wird in einer freigegebenen VPC verwendet, in der das Hostprojekt Inhaber des Hubs ist, aber andere Administratoren in anderen Projekten dem Hub Spokes für ihre Anhänge hinzufügen können.

networkconnectivity.spokes.**

networkconnectivity.networkUsernetworkconnectivity.networkViewer: Damit können Netzwerknutzer verschiedene Attribute von Hubs und Spokes aufrufen.

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

2. Netzwerkumgebung einrichten

Übersicht

In diesem Abschnitt stellen wir die VPC-Netzwerke und Firewallregeln in einem einzigen Projekt bereit. Das logische Diagramm zeigt die Netzwerkumgebung, die in diesem Schritt eingerichtet wird.

Um die projektübergreifende Unterstützung von Spokes zu demonstrieren, stellen wir in einem späteren Schritt eine VPC und Firewallregeln in einem anderen Projekt bereit.

245f1002db33ca98.png

VPCs und Subnetze erstellen

Das VPC-Netzwerk enthält Subnetze, in denen Sie eine GCE-VM zur Validierung des Datenpfads installieren.

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

Von VPC unterstützte Subnetzbereiche

NCC unterstützt alle gültigen IPv4-Subnetzbereiche mit Ausnahme von privat verwendeten öffentlichen IP-Adressen. Erstellen Sie in diesem Schritt gültige IP-Bereiche in VPC4, die in die Hub-Routentabelle importiert werden.

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

Überlappende Subnetzbereiche erstellen

NCC importiert keine sich überschneidenden IP-Bereiche in die Hub-Routingtabelle. Diese Einschränkung wird in einem späteren Schritt umgangen. Erstellen Sie vorerst zwei sich überschneidende IP-Bereiche für VPC2 und 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-Firewallregeln konfigurieren

Konfigurieren Sie Firewallregeln in jeder VPC, um Folgendes zuzulassen:

  • SSH
  • Interne In-App-Transaktionen
  • Bereich 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 in jeder VPC konfigurieren

Sie benötigen vorübergehenden Internetzugriff, um Pakete auf „vm1-vpc1-ncc“ zu installieren.

Vier virtuelle Maschinen erstellen, wobei jede VM einem der zuvor erstellten VPCs zugewiesen wird

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

Übersicht

In diesem Abschnitt konfigurieren wir einen NCC-Hub mit gcloud-Befehlen. Der NCC-Hub dient als Steuerungsebene, die für die Erstellung der Routingkonfiguration zwischen den einzelnen VPC-Spokes verantwortlich ist.

8acc7651f52e251e.png

API-Dienste aktivieren

Aktivieren Sie die Network Connectivity API, falls sie noch nicht aktiviert ist:

gcloud services enable networkconnectivity.googleapis.com

NCC-Hub erstellen

NCC-Hub mit dem Befehl „gcloud“ erstellen

gcloud network-connectivity hubs create ncc-hub

Beispielausgabe

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]

Beschreiben Sie den neu erstellten NCC-Hub. Notieren Sie sich den Namen und den zugehörigen Pfad.

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 hat eine Routingtabelle eingeführt, die die Steuerungsebene für die Erstellung von Datenverbindungen definiert. Name der Routingtabelle des NCC-Hubs ermitteln

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

Suchen Sie den URI der Standardroutentabelle des 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'

Liste den Inhalt der Standard-Routingtabelle des NCC-Hubs auf. Hinweis: Die Routingtabelle des NCC-Hubs ist leer, bis Spokes vorhanden sind.

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

Die Routentabelle des NCC-Hubs sollte leer sein.

4. NCC mit VPC-Spokes

Übersicht

In diesem Abschnitt konfigurieren Sie mit gcloud-Befehlen drei VPCs als NCC-Spoke.

a70bc80037927bb0.png

VPCs als NCC-Spoke konfigurieren

Konfigurieren Sie die folgenden VPCs in dieser Reihenfolge als NCC-Spoke:

  • VPC4
  • VPC1
  • VPC2
  • VPC3

Konfigurieren Sie VPC4 als NCC-Spoke und weisen Sie ihn dem zuvor erstellten NCC-Hub zu. Für NCC-Spoken API-Aufrufe muss ein Standort angegeben werden. Das Flag „–global“ vereinfacht die gcloud-Syntax, da der Nutzer beim Konfigurieren eines neuen NCC-Spokes keinen vollständigen URI-Pfad angeben muss.

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

Konfigurieren Sie VPC1 als NCC-Spoke.

Administratoren können ausschließen, dass Subnetzrouten aus einem VPC-Spoke in die Routingtabelle des NCC-Hubs exportiert werden. Erstellen Sie in diesem Teil des Codelabs eine Ausschlussexportregel basierend auf einem Zusammenfassungspräfix, um zu verhindern, dass das Subnetz von VPC1 in die NCC-Hub-Routingtabelle exportiert wird.

Mit diesem gcloud-Befehl werden alle Subnetze aufgelistet, die zu VPC1 gehören.

gcloud config set accessibility/screen_reader false
gcloud compute networks subnets list --network=vpc1-ncc

Notieren Sie sich die beiden /25-Subnetze, die Sie zuvor im Abschnitt „Einrichtung“ erstellt haben.

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

Konfigurieren Sie VPC1 als NCC-Spoke und schließen Sie das Paar von /25-Subnetzen aus dem Import in die Hub-Routingtabelle aus. Verwenden Sie dazu das Keyword „export-exclude-ranges“, um die /24-Zusammenfassungsroute aus diesem bestimmten Bereich herauszufiltern.

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 

Hinweis: Nutzer können bis zu 16 eindeutige IP-Bereiche pro NCC-Spoke filtern.

Liste den Inhalt der Standard-Routingtabelle des NCC-Hubs auf. Was ist mit dem Paar von /25-Subnetzen in der Routingtabelle des NCC-Hubs passiert?

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 als NCC-Spoke konfigurieren

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

Konfigurieren Sie VPC3 als NCC-Spoke und weisen Sie ihn dem zuvor erstellten NCC-Hub zu.

gcloud  network-connectivity spokes linked-vpc-network create vpc3-spoke3 \
--hub=ncc-hub \
--vpc-network=vpc3-ncc \
--global

Was ist passiert?

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)

Der NCC-Hub hat einen sich überschneidenden IP-Bereich mit VPC2 erkannt. Denken Sie daran, dass VPC2 und VPC3 mit demselben IP-Subnetz 10.3.3.0/24 eingerichtet wurden.

Überlappende IP-Bereiche mit „Export ausschließen“ herausfiltern

Zum Zeitpunkt der Erstellung dieses Codelabs war es ein bekanntes Problem, dass Nutzer NCC-Speichen löschen und neu erstellen mussten, um Konfigurationsänderungen am Exportfilter vorzunehmen.

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

Hinweis:Nach dem Löschen eines mit einer bestimmten VPC verknüpften VPC-Spokes muss eine Wartezeit von 10 Minuten abgelaufen sein, bevor Sie einen neuen Spoke erstellen können, der auf dieselbe VPC verweist.

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

Konfigurieren Sie VPC3 als NCC-Spoke und weisen Sie ihn dem zuvor erstellten NCC-Hub zu. Der Versuch, VPC3 als Spoke zu NCC hinzuzufügen, sollte erfolgreich sein.

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

Listen Sie den Inhalt der Standard-Routingtabelle des NCC-Hubs auf und prüfen Sie die Ausgabe.

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

Die sich überschneidenden IP-Bereiche von VPC2 und VPC3 sind ausgeschlossen. Die NCC-Hub-Routingtabelle unterstützt alle gültigen IPv4-Adressbereichstypen mit Ausnahme von privat verwendeten öffentlichen IP-Adressen (PUPI).

5. NCC mit projektübergreifenden Spokes

Übersicht

Bisher haben Sie NCC-Spokes konfiguriert, die zum selben Projekt wie der Hub gehören. In diesem Abschnitt konfigurieren Sie die VPC mit gcloud-Befehlen als NCC-Spoke in einem anderen Projekt als dem NCC-Hub.

So können Projektinhaber, die ihre eigenen VPCs verwalten, die Netzwerkverbindung mit dem NCC-Hub nutzen.

e1190fa898c5097d.png

Projektübergreifend: Google Cloud Console und Cloud Shell

In diesem Lab verwenden wir sowohl die Google Cloud Console als auch Cloud Shell, um mit der GCP zu interagieren.

Google Cloud Console für projektübergreifende Spoke-Umgebungen

Die Cloud Console finden Sie unter https://console.cloud.google.com.

Richten Sie die folgenden Elemente in Google Cloud ein, um die Konfiguration des Network Connectivity Centers zu vereinfachen:

Wählen Sie in der Google Cloud Console auf der Seite zur Projektauswahl ein Google Cloud-Projekt aus oder erstellen Sie ein Google Cloud-Projekt.

Starten Sie Cloud Shell. In diesem Codelab werden $variables verwendet, um die Implementierung der gcloud-Konfiguration in Cloud Shell zu unterstützen.

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-Rollen

Für den Zugriff auf bestimmte APIs sind IAM-Rollen erforderlich. Konfigurieren Sie den Nutzer mit den erforderlichen NCC-IAM-Rollen.

Dem projektübergreifenden Spoke-Administrator muss mindestens die IAM-Rolle „networkconnectivity.networkSpokeManager“ zugewiesen werden. "

In der folgenden Tabelle ist die IAM-Rolle aufgeführt, die für die Verwaltung von NCC Hub und Spoke erforderlich ist.

Rolle/Beschreibung

Berechtigungen

networkconnectivity.networkAdmin: Damit können Netzwerkadministratoren Hubs und Spokes verwalten.

networkconnectivity.hubs.networkconnectivity.spokes.

networkconnectivity.networkSpokeManager: Hiermit können Spokes in einem Hub hinzugefügt und verwaltet werden. Wird in einer freigegebenen VPC verwendet, in der das Hostprojekt Inhaber des Hubs ist, aber andere Administratoren in anderen Projekten dem Hub Spokes für ihre Anhänge hinzufügen können.

networkconnectivity.spokes.**

networkconnectivity.networkUsernetworkconnectivity.networkViewer: Damit können Netzwerknutzer verschiedene Attribute von Hubs und Spokes aufrufen.

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

VPCs und Subnetze im übergreifenden Projekt erstellen

Das VPC-Netzwerk enthält Subnetze, in denen Sie eine GCE-VM zur Validierung des Datenpfads installieren.

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 des NCC-Hub-Projekts

Mit diesem gcloud-Befehl können Sie die NCC Hub-URI ermitteln. Sie benötigen den URI-Pfad, um im nächsten Schritt den projektübergreifenden NCC-Sprecher zu konfigurieren.

gcloud network-connectivity hubs describe ncc-hub

Projektübergreifender Spoke-VPC

Melden Sie sich in dem anderen Projekt an, in dem die VPC NICHT Teil des NCC-Hub-Projekts ist. Verwenden Sie in Cloud Shell diesen Befehl, um eine VPC als NCC-Spoke zu konfigurieren.

  • HUB_URI sollte der URI eines Hubs in einem anderen Projekt sein.
  • VPC_URI muss sich im selben Projekt wie der Spoke befinden.
  • Mit dem VPC-Netzwerk wird angegeben, dass das VPC in diesem übergreifenden Projekt dem NCC-Hub in einem anderen Projekt beitritt.
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'

Wie lautet der Status des projektübergreifenden NCC-Spokes? Warum?

6. Projektübergreifenden Spoke ablehnen oder annehmen

Übersicht

NCC-Hub-Administratoren müssen einen projektübergreifenden Spoke explizit akzeptieren, damit er dem Hub beitreten kann. So wird verhindert, dass Projektinhaber Rogue-NCC-Speichen an die globale Routingtabelle des NCC anhängen. Nachdem ein Spoke einmal angenommen oder abgelehnt wurde, kann er anschließend beliebig oft abgelehnt oder akzeptiert werden. Führen Sie dazu die oben genannten Befehle aus.

Melden Sie sich in Cloud Shell an, um zum Projekt zurückzukehren, in dem sich der NCC-Hub befindet.

Projektübergreifende Speichen für die Überprüfung identifizieren

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

Spoke akzeptieren

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

Optional: Spoke ablehnen

gcloud network-connectivity spokes reject xproj-spoke \
--global \
--details="some reason to reject"

Aktive Spokes im Hub auflisten

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

Subnetzrouten auf dem Hub auflisten

Sehen Sie in der Ausgabe die Subnetzrouten aus dem VPC-Spoke?

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. Private NAT zwischen VPCs

Übersicht

In diesem Abschnitt konfigurieren Sie private NAT für sich überschneidende Subnetzbereiche zwischen zwei VPCs. Für private NAT zwischen VPCs ist NCC erforderlich.

Im vorherigen Abschnitt sind VPC2 und VPC3 mit dem sich überschneidenden Subnetzbereich „10.3.3.0/24“ konfiguriert. Beide VPCs sind als NCC-Spoke konfiguriert, um zu verhindern, dass das sich überschneidende Subnetz in die NCC-Hub-Routingtabelle eingefügt wird. Das bedeutet, dass es keinen Layer 3-Datenpfad gibt, um Hosts in diesem Subnetz zu erreichen.

Verwenden Sie diese Befehle im NCC-Hub-Projekt, um die sich überschneidenden Subnetzbereiche zu ermitteln.

gcloud compute networks subnets list --network vpc2-ncc

gcloud compute networks subnets list --network vpc3-ncc

Wie lautet der Name des Subnetzes in vpc2-ncc, das den sich überschneidenden IP-Bereich enthält?

*Notieren Sie sich den Namen des Subnetzes und speichern Sie ihn. Sie konfigurieren die Quell-NAT für diesen Bereich.

Private NAT konfigurieren

Weisen Sie dem NAT-Traffic aus dem sich überschneidenden Subnetz von VPC2 einen routbaren Subnetzbereich zu. Konfigurieren Sie einen nicht überlappenden Subnetzbereich mit dem Flag „–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

Einen speziellen Cloud-Router zum Ausführen von privatem NAT erstellen

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

Konfigurieren Sie den Cloud Router so, dass der sich überschneidende Bereich 10.3.3.0/24 von vpc2-ncc NAT-Quelladressen zugewiesen wird. In der Beispielkonfiguration unten ist „overlapping-vpc3“ der Name des überlappenden Subnetzes. Das Schlüsselwort „ALL“ gibt an, dass alle IP-Bereiche im Subnetz mit Source NAT versehen werden.

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

In den vorherigen Schritten wurde ein Pool mit NAT-IP-Bereichen und das zu übersetzende Subnetz erstellt. Erstellen Sie in diesem Schritt die NAT-Regel „1“, die Netzwerkpakete übersetzt, die mit Traffic übereinstimmen, der aus dem überlappenden Subnetzbereich stammt, wenn das Zielnetzwerk einen Pfad aus der NCC-Hub-Routingtabelle verwendet.

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

Private NAT prüfen

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

Beispielausgabe

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

Optional:

  • Zur Webkonsole wechseln
  • Gehen Sie zu „Netzwerkdienste > Cloud NAT > ncc2-nat“.

Prüfen Sie, ob die dynamische Portzuweisung standardmäßig aktiviert ist.

114050bb65e0c4e2.png

Als Nächstes prüfen Sie den Datenpfad, der den privaten NAT-Pfad verwendet, der für VPC2 konfiguriert ist.

5035b181aeaa30a8.png

Öffnen Sie eine SSH-Sitzung zu vm1-vpc1-ncc und erfassen Sie mit dem folgenden tcpdump-Befehl Pakete aus dem NAT-Poolbereich 10.10.10.0/29.

vm1-vpc1-ncc

sudo tcpdump -i any net 10.10.10.0/29 -n

Zum Zeitpunkt der Erstellung dieses Codelabs unterstützt Private NAT keine ICMP-Pakete. SSH-Sitzung zu pNat-vm-vpc2 und Verwendung des Curl-Befehls wie unten gezeigt, um eine Verbindung zu vm1-vpc1-ncc über Port TCP 80 herzustellen.

pnat-vm-vpc2

curl 10.1.1.2 -v 

Prüfen Sie die Ausgabe von tcpdump auf vm1-vpc1-ncc. Welche Quell-IP-Adresse hat die TCP-Sitzung zu unserem Webserver auf vm1-vpc1-ncc gestartet?

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. Datenpfadverbindung prüfen

Sehen Sie sich das Diagramm an und prüfen Sie den Datenpfad zwischen den einzelnen virtuellen Maschinen.

424df0ebe4510ebb.png

Stellen Sie eine SSH-Verbindung zu vm1-vpc1-ncc her und starten Sie einen TCP-Dump, um ICMP-Pakete von vm2-vpc2-ncc zu erfassen. Zur Erinnerung: Diese VM befindet sich in VPC2.

vm1-vpc1-ncc

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

Stellen Sie eine SSH-Sitzung zu „vm1-vpc2-ncc“ her und führen Sie einen Ping auf die IP-Adresse von „vm1-vpc1-ncc“ aus.“

vm1-vpc2-ncc

ping 10.1.1.2

Stellen Sie eine SSH-Verbindung zu vm1-vpc2-ncc her und führen Sie einen Ping auf die IP-Adresse von vm1-vpc4-ncc aus.

vm1-vpc2-ncc

ping 240.0.0.2

9. Bereinigen

Melden Sie sich in Cloud Shell an und löschen Sie die VM-Instanzen in den Netzwerken der Hub- und Branch-Standorte.

Private VPC-NAT-Konfigurationen löschen

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-Spokes löschen

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

Projektübergreifenden Spoke ablehnen

Lehnen Sie den projektübergreifenden VPC-Spoke vom NCC-Hub ab.

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

NCC-Hub löschen

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

Firewallregeln löschen

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-Instanzen löschen

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-Subnetze löschen

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

VPCs löschen

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

10. Glückwunsch!

Sie haben das Lab zum Network Connectivity Center abgeschlossen.

Behandelte Themen

  • Konfiguriertes Full-Mesh-VPC-Peering-Netzwerk mit NCC-Hub
  • NCC-Spoke-Ausschlussfilter
  • Projektübergreifender Spoke-Support
  • Private NAT zwischen VPC

Nächste Schritte

©Google, LLC oder verbundene Unternehmen. Alle Rechte vorbehalten. Do not distribute.