Lab: NCC-VPC als Spoke

1. Einführung

Übersicht

In diesem Lab erfahren Sie, wie Sie mit Network Connectivity Center(NCC) durch die Unterstützung von VPC-Spokes eine umfangreiche Inter-VPC-Verbindung herstellen können. Wenn Nutzer eine VPC als VPC-Spoke definieren, können sie sie über den NCC-Hub mit mehreren VPC-Netzwerken verbinden. NCC mit einer VPC-Spoke-Konfiguration reduziert die operative Komplexität der Verwaltung paarweiser Inter-VPC-Verbindungen über VPC-Peering, statt stattdessen ein zentralisiertes Modell für die Verbindungsverwaltung zu verwenden.

Beachten Sie, dass Network Connectivity Center (NCC) ein Hub-and-Spoke-Steuerungsebenenmodell für die Verwaltung von Netzwerkverbindungen in Google Cloud ist. Die Hub-Ressource bietet ein zentralisiertes Modell für die Verbindungsverwaltung zum Interconnect von Spokes.

Inhalt

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

Aufgaben in diesem Lab

  • Full-Mesh-VPC-Konnektivität mit NCC
  • Private NAT in VPC

Voraussetzungen

  • Kenntnisse des GCP-VPC-Netzwerks
  • Kenntnisse zu Cloud Router und BGP-Routing
  • Zwei separate GCP-Projekte
  • Für dieses Codelab sind 5 VPCs erforderlich. Eine dieser VPCs muss sich in einem anderen Projekt als der NCC-Hub befinden
  • Überprüfen Sie Kontingent:Netzwerke und fordern Sie bei Bedarf zusätzliche Netzwerke an (Screenshot unten):

6d1b99c6da87fd84.png

Zielsetzungen

  • GCP-Umgebung einrichten
  • Network Connectivity Center mit VPC als Spoke konfigurieren
  • Datenpfad validieren
  • NCC-Servicebarkeitsfeatures kennenlernen
  • Verwendete Ressourcen bereinigen

Hinweis

Google Cloud Console und Cloud Shell

Für die Interaktion mit der GCP verwenden wir in diesem Lab sowohl die Google Cloud Console als auch Cloud Shell.

NCC Hub-Projekt Google Cloud Console

Die Cloud Console ist unter https://console.cloud.google.com erreichbar.

Richten Sie die folgenden Elemente in Google Cloud ein, um die Konfiguration von Network Connectivity Center 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 wird $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

NCC erfordert IAM-Rollen für den Zugriff auf bestimmte APIs. Konfigurieren Sie Ihren Nutzer nach Bedarf mit den NCC-IAM-Rollen.

Rolle/Beschreibung

Berechtigungen

networkconnectivity.networkAdmin – Ermöglicht Netzwerkadministratoren die Verwaltung von Hub und Spokes.

networkconnectivity.hubs.networkconnectivity.Spokes

networkconnectivity.networkSpokeManager – ermöglicht das Hinzufügen und Verwalten von Spokes in einem Hub. Wird in einer freigegebenen VPC verwendet, in der das Hostprojekt Inhaber des Hubs ist. Andere Administratoren in anderen Projekten können jedoch Spokes für ihre Anhänge zum Hub hinzufügen.

networkconnectivity.Spokes unterstützt.**

networkconnectivity.networkUsernetworkconnectivity.networkViewer – ermöglicht Netzwerknutzern, verschiedene Attribute von Hub und Spokes anzusehen.

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 einzelnen Projekt bereit. Das logische Diagramm veranschaulicht die Netzwerkumgebung, die in diesem Schritt eingerichtet wird.

Zur Demonstration der projektübergreifenden Spoke-Unterstützung 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, für die Sie die 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 privat verwendeter öffentlicher 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-Routentabelle. Nutzer können diese Einschränkung in einem späteren Schritt umgehen. Erstellen Sie vorerst zwei überlappende 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

Firewallregeln in jeder VPC konfigurieren, um Folgendes zuzulassen:

  • SSH
  • Interner In-App-Kauf
  • 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. Jede VM wird einer der zuvor erstellten VPCs zugewiesen.

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 mithilfe von gcloud-Befehlen. Der NCC-Hub dient als Steuerungsebene, die für das Erstellen der Routingkonfiguration zwischen den einzelnen VPC-Spokes zuständig ist.

8acc7651f52e251e.png

API-Dienste aktivieren

Aktivieren Sie die Netzwerkkonnektivitäts-API, falls sie noch nicht aktiviert ist:

gcloud services enable networkconnectivity.googleapis.com

NCC-Hub erstellen

NCC-Hub mit dem gcloud-Befehl 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'

Mit NCC Hub wurde eine Routingtabelle eingeführt, die die Steuerungsebene zum Erstellen von Datenverbindungen definiert. Den Namen der Routingtabelle von NCC-Hub finden

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

Suchen Sie den URI der NCC-Standardroutentabelle.

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'

Listen Sie den Inhalt der Standardroutingtabelle des NCC-Hubs auf. Hinweis* Die Routingtabelle von NCC Hub ist leer, bis Spokes

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

Die Routingtabelle des NCC-Hubs sollte leer sein.

4. NCC mit VPC-Spokes

Übersicht

In diesem Abschnitt konfigurieren Sie mithilfe von gcloud-Befehlen drei VPC(s) als NCC-Spoke.

a70bc80037927bb0.png

VPC(s) als NCC-Spoke konfigurieren

Konfigurieren Sie die folgende(n) VPC(s) als NCC-Spoke in dieser Reihenfolge

  • VPC4
  • VPC1
  • VPC2
  • VPC3

Konfigurieren Sie VPC4 als NCC-Spoke und weisen Sie ihn dem zuvor erstellten NCC-Hub zu. Für NCC-Spoke-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 verhindern, dass Subnetzrouten aus einem VPC-Spoke in die Routingtabelle des NCC-Hubs exportiert werden. Erstellen Sie in diesem Teil des Codelabs eine Ausschließen-Exportregel basierend auf einem Zusammenfassungspräfix, um zu verhindern, dass das Subnetz von VPC1 in die NCC Hub-Routentabelle exportiert wird.

Verwenden Sie diesen gcloud-Befehl, um alle Subnetze aufzulisten, die zu VPC1 gehören.

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

Notieren Sie sich das /25-Subnetzpaar, das zuvor im Einrichtungsbereich erstellt wurde.

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 /25-Subnetzpaar vom Import in die Hub-Routingtabelle mithilfe der Option „export-exclude-ranges“ aus um die /24-Zusammenfassungsroute aus diesem Bereich zu filtern.

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.

Listen Sie den Inhalt der Standardroutingtabelle des NCC-Hubs auf. Was ist mit den /25-Subnetzen in der Routingtabelle von NCC Hub 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)

NCC-Hub hat eine Überschneidung des IP-Bereichs mit VPC2 erkannt. VPC2 und VPC3 wurden beide mit demselben 10.3.3.0/24-IP-Subnetz eingerichtet.

Sich überschneidende IP-Bereiche mit „Export ausschließen“ filtern

Beim Erstellen dieses Codelabs ist es ein bekanntes Problem, dass Nutzer NCC-Spokes löschen und neu erstellen müssen, um die Konfiguration des Exportfilters zu ändern.

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

Hinweis:Beim Löschen eines VPC-Spokes, der mit einer bestimmten VPC verknüpft ist, ist eine Wartezeit von 10 Minuten erforderlich, damit ein neuer Spoke erstellt werden kann, 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. Dieser Versuch, die 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 Standardroutingtabelle 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 werden ausgeschlossen. Die NCC-Hub-Routingtabelle unterstützt alle gültigen gültigen IPv4-Bereichstypen mit Ausnahme privat genutzter öffentlicher 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 mithilfe von gcloud-Befehlen von einem anderen Projekt als dem NCC-Hub als NCC-Spoke.

Dadurch können Projektinhaber, die ihre eigenen VPCs verwalten, an der Netzwerkverbindung mit NCC Hub teilnehmen.

e1190fa898c5097d.png

Projektübergreifend: Google Cloud Console und Cloud Shell

Für die Interaktion mit der GCP verwenden wir in diesem Lab sowohl die Google Cloud Console als auch Cloud Shell.

Projektübergreifende Google Cloud Console

Die Cloud Console ist unter https://console.cloud.google.com erreichbar.

Richten Sie die folgenden Elemente in Google Cloud ein, um die Konfiguration von Network Connectivity Center 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 wird $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

NCC erfordert IAM-Rollen für den Zugriff auf bestimmte APIs. Konfigurieren Sie Ihren Nutzer nach Bedarf mit den NCC-IAM-Rollen.

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

In der folgenden Tabelle ist die IAM-Rolle aufgeführt, die für den NCC-Hub-and-Spoke-Administrator erforderlich ist.

Rolle/Beschreibung

Berechtigungen

networkconnectivity.networkAdmin – Ermöglicht Netzwerkadministratoren die Verwaltung von Hub und Spokes.

networkconnectivity.hubs.networkconnectivity.Spokes

networkconnectivity.networkSpokeManager – ermöglicht das Hinzufügen und Verwalten von Spokes in einem Hub. Wird in einer freigegebenen VPC verwendet, in der das Hostprojekt Inhaber des Hubs ist. Andere Administratoren in anderen Projekten können jedoch Spokes für ihre Anhänge zum Hub hinzufügen.

networkconnectivity.Spokes unterstützt.**

networkconnectivity.networkUsernetworkconnectivity.networkViewer – ermöglicht Netzwerknutzern, verschiedene Attribute von Hub und Spokes anzusehen.

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

VPCs und Subnetze projektübergreifend erstellen

Das VPC-Netzwerk enthält Subnetze, für die Sie die 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 für NCC-Hub-Projekt

Verwenden Sie diesen gcloud-Befehl, um den NCC-Hub-URI zu ermitteln. Sie benötigen den URI-Pfad, um den projektübergreifenden NCC-Spoke im nächsten Schritt zu konfigurieren.

gcloud network-connectivity hubs describe ncc-hub

Projektübergreifende Spoke-VPC

Melden Sie sich in dem anderen Projekt an, in dem die VPC NICHT Teil des NCC Hub-Projekts ist. Verwenden Sie diesen Befehl in Cloud Shell, 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
  • „VPC-Netzwerk“ gibt an, dass die VPC in diesem projektübergreifenden Projekt mit dem NCC-Hub in einem anderen Projekt verbunden wird.
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 ist der Status des projektübergreifenden NCC-Spokes? Warum?

6. Projektübergreifenden Spoke ablehnen oder akzeptieren

Übersicht

NCC-Hub-Administratoren müssen einen projektübergreifenden Spoke explizit akzeptieren, um dem Hub beizutreten. Dadurch wird verhindert, dass Projektinhaber ungültige NCC-Spokes an die globale NCC-Routingtabelle anhängen. Nachdem ein Spoke akzeptiert oder abgelehnt wurde, kann er anschließend durch Ausführen der obigen Befehle beliebig oft abgelehnt oder angenommen werden.

Kehren Sie zu dem Projekt zurück, in dem sich der NCC-Hub befindet. Melden Sie sich dazu bei Cloud Shell an.

Die zu prüfenden projektübergreifenden Spokes 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"

Active 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

Können Sie in der Ausgabe die Subnetzrouten des VPC-übergreifenden Spokes sehen?

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 VPC(s)

Ü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 wurden VPC2 und VPC3 mit einem überlappenden Subnetzbereich von „10.3.3.0/24“ konfiguriert. Beide VPCs sind als NCC-Spoke konfiguriert, um das überlappende Subnetz von der Einfügung in die NCC-Hub-Routentabelle auszuschließen. Das bedeutet, dass kein Ebene-3-Datenpfad vorhanden ist, um Hosts zu erreichen, die sich in diesem Subnetz befinden.

Verwenden Sie diese Befehle im NCC-Hub-Projekt, um die überlappenden 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 mit dem überlappenden IP-Bereich auf vpc2-ncc?

*Notieren Sie sich den Subnetznamen und speichern Sie ihn an einem beliebigen Ort. Sie konfigurieren Quell-NAT für diesen Bereich.

Private NAT konfigurieren

Weisen Sie einen routbaren Subnetzbereich zu, um NAT-Traffic aus dem sich überschneidenden Subnetz von VPC2 zu beziehen. Durch Konfigurieren eines nicht überlappenden Subnetzbereichs mit der Methode „–purpose=PRIVATE_NAT“ melden.

gcloud compute networks subnets create ncc2-spoke-nat \
--network=vpc2-ncc \
--region=us-central1 \
--range=10.10.10.0/29 \
--purpose=PRIVATE_NAT

Dedizierten Cloud Router für private NAT erstellen

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

Konfigurieren Sie den Cloud Router so, dass NAT dem überlappenden Bereich 10.3.3.0/24 von vpc2-ncc als Quelle zugewiesen wird. In der Beispielkonfiguration unten ist der Name des sich überschneidenden Subnetzes. Das „ALLE“ keyword gibt an, dass alle IP-Bereiche im Subnetz eine Quell-NAT erhalten.

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 von NAT-IP-Bereichen und das spezifische Subnetz erstellt, das übersetzt wird. Erstellen Sie in diesem Schritt die NAT-Regel „1“ , der Netzwerkpakete übersetzt, die mit Traffic aus dem überlappenden Subnetzbereich übereinstimmen, 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
  • navigieren 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 für VPC2 konfigurierten privaten NAT-Pfad verwendet.

5035b181aeaa30a8.png

Öffnen Sie eine SSH-Sitzung für "vm1-vpc1-ncc" und verwenden Sie den Befehl "tcpdump" unten, um Pakete aus dem NAT-Poolbereich "10.10.10.0/29" zu erfassen.

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. Stellen Sie eine SSH-Sitzung mit "pNat-vm-vpc2" her und verwenden Sie den curl-Befehl wie unten gezeigt, um eine Verbindung zu "vm1-vpc1-ncc" an Port TCP 80 herzustellen.

pnat-vm-vpc2

curl 10.1.1.2 -v 

Untersuchen Sie die Ausgabe von tcpdump auf "vm1-vpc1-ncc." Wie lautet die Quell-IP-Adresse, von der die TCP-Sitzung mit unserem Webserver auf "vm1-vpc1-ncc" ausging.

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

Überprüfen Sie im Diagramm den Datenpfad zwischen den einzelnen virtuellen Maschinen.

424df0ebe4510ebb.png

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

vm1-vpc1-ncc

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

SSH-Sitzung mit "vm1-vpc2-ncc" und "ping" herstellen Die IP-Adresse von "vm1-vpc1-ncc"

vm1-vpc2-ncc

ping 10.1.1.2

SSH-Verbindung zu "vm1-vpc2-ncc" und "ping" herstellen Die IP-Adresse von "vm1-vpc4-ncc"

vm1-vpc2-ncc

ping 240.0.0.2

9. Bereinigen

Bei Cloud Shell anmelden und VM-Instanzen im Hub- und Zweigstandortnetzwerk löschen

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übergreifender 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

VPC(s) löschen

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

10. Glückwunsch!

Sie haben das Network Connectivity Center-Lab abgeschlossen.

Behandelte Themen

  • Full-Mesh-VPC-Peering-Netzwerk mit NCC-Hub konfiguriert
  • NCC-Spoke-Ausschließen-Filter
  • Projektübergreifende Spoke-Unterstützung
  • Private NAT zwischen VPC

Nächste Schritte

© Google, LLC oder deren Tochtergesellschaften. Alle Rechte vorbehalten. Do not distribute.