Moduł: VPC NCC jako promień

1. Wprowadzenie

Omówienie

W tym laboratorium użytkownicy dowiedzą się, jak można używać Network Connectivity Center(NCC) do nawiązywania połączeń między sieciami VPC na dużą skalę dzięki obsłudze promieni sieci VPC. Gdy użytkownicy zdefiniują VPC jako promień VPC, mogą połączyć go z wieloma sieciami VPC za pomocą centrum NCC. NCC z konfiguracją osi VPC zmniejsza złożoność operacyjną zarządzania połączeniami między VPC za pomocą połączenia równorzędnego VPC, zamiast korzystania z scentralizowanego modelu zarządzania łącznością.

Pamiętaj, że Network Connectivity Center (NCC) to model platformy sterującej typu „hub and spoke” do zarządzania połączeniami sieciowymi w Google Cloud. Zasób centrum zapewnia scentralizowany model zarządzania łącznością do łączenia promieni.

Co utworzysz

W tym ćwiczeniu z programowania utworzysz topologię z logicznym centrum i promieniście połączonymi sieciami z centrum NCC, która będzie implementować w pełni połączoną architekturę sieci VPC w trzech różnych sieciach VPC.

Czego się nauczysz

  • Pełna łączność sieci VPC z NCC
  • Prywatny NAT w VPC

Czego potrzebujesz

  • znajomość sieci VPC GCP,
  • Znajomość Cloud Router i routingu BGP
  • 2 osobne projekty GCP
  • To ćwiczenie Codelab wymaga 5 środowisk VPC. Jeden z tych środowisk VPC musi znajdować się w innym projekcie niż centrum NCC.
  • Sprawdź Limit:sieci i w razie potrzeby poproś o dodatkowe sieci. Zrzut ekranu poniżej:

6d1b99c6da87fd84.png

Cele

  • Konfigurowanie środowiska GCP
  • Konfigurowanie Network Connectivity Center z siecią VPC jako promieniową
  • Sprawdzanie ścieżki danych
  • Poznaj funkcje obsługi NCC
  • Czyszczenie używanych zasobów

Zanim zaczniesz

Google Cloud Console i Cloud Shell

W tym module będziemy korzystać z konsoli Google Cloud Platform i Cloud Shell.

Projekt NCC Hub Konsola Google Cloud

Konsolę Cloud Console można otworzyć na stronie https://console.cloud.google.com.

Aby ułatwić konfigurowanie Centrum łączności sieciowej, skonfiguruj w Google Cloud te elementy:

W konsoli Google Cloud na stronie selektora projektu wybierz lub utwórz projekt Google Cloud.

Uruchom Cloud Shell. Ten samouczek Codelab wykorzystuje zmienne $variables, aby ułatwić implementację konfiguracji gcloud w 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

Role uprawnień

NCC wymaga ról uprawnień do uzyskiwania dostępu do określonych interfejsów API. Pamiętaj, aby skonfigurować użytkownika z wymaganymi rolami NCC w IAM.

Rola/opis

Uprawnienia

networkconnectivity.networkAdmin – umożliwia administratorom sieci zarządzanie węzłami i ramieniem.

networkconnectivity.hubs.networkconnectivity.spokes.

networkconnectivity.networkSpokeManager – umożliwia dodawanie promieni i zarządzanie nimi w centrum. Do korzystania w współdzielonym środowisku VPC, w którym projekt główny jest właścicielem centrum, ale inni administratorzy w innych projektach mogą dodawać do niego promienie dla swoich załączników.

networkconnectivity.spokes.**

networkconnectivity.networkUsernetworkconnectivity.networkViewer – umożliwia użytkownikom sieci wyświetlanie różnych atrybutów osi i ramion.

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

2. Konfigurowanie środowiska sieciowego

Omówienie

W tej sekcji wdrożymy sieci VPC i reguły zapory sieciowej w jednym projekcie. Diagram logiczny przedstawia środowisko sieciowe, które zostanie skonfigurowane na tym etapie.

Aby zademonstrować obsługę osi w ramach różnych projektów, w następnym kroku wdrożymy sieć VPC i reguły zapory sieciowej w innym projekcie.

245f1002db33ca98.png

Tworzenie sieci VPC i podsieci

Sieć VPC zawiera podsieci, w których zainstalujesz maszynę wirtualną GCE na potrzeby walidacji ścieżki danych.

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

Zakresy podsieci obsługiwane przez VPC

NCC obsługuje wszystkie prawidłowe zakresy podsieci IPv4 z wyjątkiem używanych prywatnie publicznych adresów IP. W tym kroku utwórz w VPC4 prawidłowe zakresy adresów IP, które zostaną zaimportowane do tabeli tras centrum.

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

Tworzenie nakładających się zakresów podsieci

NCC nie będzie importować nakładających się zakresów adresów IP do tabeli tras huba. Użytkownicy obejdą to ograniczenie w późniejszym kroku. Na razie utwórz 2 nachodzące na siebie zakresy adresów IP dla VPC2 i 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

Konfigurowanie reguł zapory sieciowej VPC

Skonfiguruj reguły zapory sieciowej w każdej sieci VPC, aby zezwolić na

  • SSH
  • Wewnętrzny IAP
  • Zakres 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

Konfigurowanie maszyny wirtualnej GCE w każdej sieci VPC

Aby zainstalować pakiety na „vm1-vpc1-ncc”, musisz tymczasowo uzyskać dostęp do internetu.

Utwórz 4 maszyny wirtualne. Każda z nich zostanie przypisana do jednej z wcześniej utworzonych sieci 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. Centrum Network Connectivity Center

Omówienie

W tej sekcji skonfigurujemy węzeł NCC za pomocą poleceń gcloud. Centrum NCC będzie pełnić rolę platformy sterującej odpowiedzialnej za tworzenie konfiguracji routingu między każdym z węzłów VPC.

8acc7651f52e251e.png

Włączanie usług interfejsu API

Włącz interfejs Network Connectivity API, jeśli nie jest jeszcze włączony:

gcloud services enable networkconnectivity.googleapis.com

Tworzenie centrum NCC

Tworzenie centrum NCC za pomocą polecenia gcloud

gcloud network-connectivity hubs create ncc-hub

Przykładowe dane wyjściowe

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]

Opisz nowo utworzone centrum NCC. Zanotuj nazwę i powiązaną ścieżkę.

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'

W centrum NCC wprowadzono tabelę routingu, która definiuje platformę sterującą do tworzenia połączeń danych. Znajdź nazwę tabeli routingu centrum NCC

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

Znajdź identyfikator URI tabeli domyślnych tras 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'

Wypisz zawartość domyślnej tabeli routingu NCC Hub. Uwaga* Tabela tras centrum NCC będzie pusta, dopóki nie zostaną utworzone spoke.

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

Tabela tras centrum NCC powinna być pusta.

4. NCC z promieniami VPC

Omówienie

W tej sekcji skonfigurujesz 3 VPC jako węzeł NCC za pomocą poleceń gcloud.

a70bc80037927bb0.png

Konfigurowanie VPC jako kratownicy NCC

Skonfiguruj podane niżej sieci VPC jako węzły NCC w podanej kolejności

  • VPC4
  • VPC1
  • VPC2
  • VPC3

Skonfiguruj VPC4 jako promień NCC i przypisz go do utworzonego wcześniej centrum NCC. Wywołania interfejsu API NCC wymagają podania lokalizacji. Flaga „–global” upraszcza składnię gcloud, ponieważ pozwala użytkownikowi uniknąć konieczności podawania pełnej ścieżki identyfikatora URI podczas konfigurowania nowego koła NCC.

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

Skonfiguruj VPC1 jako promień NCC.

Administratorzy mogą wykluczyć eksportowanie tras podsieci z osi VPC do tabeli tras centrum NCC. W tej części tego ćwiczenia utwórz regułę wykluczania eksportu na podstawie prefiksu podsumowania, aby zapobiec eksportowaniu podsieci VPC1 do tabeli tras NCC Hub.

Użyj tego polecenia gcloud, aby wyświetlić wszystkie podsieci należące do VPC1.

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

Zwróć uwagę na parę podsieci /25 utworzonych wcześniej w sekcji konfiguracji.

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

Skonfiguruj VPC1 jako promień NCC i wyklucz parę podsieci /25 z importowania do tabeli routingu węzła, używając słowa kluczowego „export-exclude-ranges”, aby odfiltrować trasę podsumowującą /24 z tego konkretnego zakresu.

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 

Uwaga*. Użytkownicy mogą filtrować do 16 unikalnych zakresów adresów IP na każde z połączeń NCC.

Wypisz zawartość domyślnej tabeli routingu NCC Hub. Co się stało z parą podsieci /25 w tabeli routingu centrum NCC?

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

Konfigurowanie VPC2 jako promienia NCC

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

Skonfiguruj VPC3 jako promień NCC i przypisz go do utworzonego wcześniej centrum NCC.

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

Co się stało?

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)

Centrum NCC wykryło nakładanie się zakresu adresów IP z VPC2. Pamiętaj, że VPC2 i VPC3 zostały skonfigurowane z tą samą podsiecią IP 10.3.3.0/24.

Filtrowanie nakładających się zakresów adresów IP za pomocą eksportu z wykluczeniem

W momencie pisania tego ćwiczenia z poziomu Codelab znanym problemem jest konieczność usuwania i ponownie tworzenia ramion NCC, aby wprowadzić zmiany konfiguracji w filtrze eksportu.

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

Uwaga: usunięcie promienia VPC powiązanego z określonym środowiskiem VPC wymaga 10-minutowego okresu oczekiwania, aby można było utworzyć nowy promień odwołujący się do tego samego środowiska 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

Skonfiguruj VPC3 jako promień NCC i przypisz go do utworzonego wcześniej centrum NCC. Ta próba dodania VPC3 jako promienia do NCC powinna się powieść.

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

Wypisz zawartość tabeli domyślnego routingu w NCC Hub i sprawdź dane wyjściowe.

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

Zachodzące na siebie zakresy adresów IP z VPC2 i VPC3 są wykluczone. Tabela routingu NCC Hub obsługuje wszystkie prawidłowe typy zakresów IPv4 z wyjątkiem zakresów używanych prywatnie publicznych adresów IP (PUPI).

5. NCC z ramionami międzyprojektowymi

Omówienie

Do tej pory skonfigurowałeś/skonfigurowałaś promienie NCC należące do tego samego projektu co centrum. W tej sekcji skonfigurujesz VPC jako ucho NCC w osobnym projekcie innym niż węzeł NCC, używając poleceń gcloud.

Umożliwia to właścicielom projektów, którzy zarządzają własnymi sieciami VPC, korzystanie z usług centrum NCC dotyczących łączności sieciowej.

e1190fa898c5097d.png

Projekty: konsola Google Cloud i Cloud Shell

W tym module będziemy korzystać z konsoli Google Cloud Platform i Cloud Shell.

Cross Project Spoke w Google Cloud Console

Konsolę Cloud Console można otworzyć na stronie https://console.cloud.google.com.

Aby ułatwić konfigurowanie Centrum łączności sieciowej, skonfiguruj w Google Cloud te elementy:

W konsoli Google Cloud na stronie selektora projektu wybierz lub utwórz projekt Google Cloud.

Uruchom Cloud Shell. Ten samouczek Codelab wykorzystuje zmienne $variables, aby ułatwić implementację konfiguracji gcloud w 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

Role uprawnień

NCC wymaga ról uprawnień do uzyskiwania dostępu do określonych interfejsów API. Pamiętaj, aby skonfigurować użytkownika z wymaganymi rolami NCC w IAM.

Administratorowi osi w wielu projektach musi być przypisana co najmniej rola uprawnień „networkconnectivity.networkSpokeManager”. ”

W tabeli poniżej znajdziesz listę ról IAM wymaganych przez administratora NCC Hub i Spoke.

Rola/opis

Uprawnienia

networkconnectivity.networkAdmin – umożliwia administratorom sieci zarządzanie węzłami i ramieniem.

networkconnectivity.hubs.networkconnectivity.spokes.

networkconnectivity.networkSpokeManager – umożliwia dodawanie promieni i zarządzanie nimi w centrum. Do korzystania w współdzielonym środowisku VPC, w którym projekt główny jest właścicielem centrum, ale inni administratorzy w innych projektach mogą dodawać do niego promienie dla swoich załączników.

networkconnectivity.spokes.**

networkconnectivity.networkUsernetworkconnectivity.networkViewer – umożliwia użytkownikom sieci wyświetlanie różnych atrybutów osi i ramion.

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

Utwórz środowiska VPC i podsieci w ramach projektu wspólnego

Sieć VPC zawiera podsieci, w których zainstalujesz maszynę wirtualną GCE na potrzeby walidacji ścieżki danych.

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

Identyfikator URI projektu Centrum NCC

Aby znaleźć identyfikator URI NCC Hub, użyj tego polecenia gcloud. W następnym kroku ścieżka URI będzie Ci potrzebna do skonfigurowania usługi NCC w ramach wielu projektów.

gcloud network-connectivity hubs describe ncc-hub

VPC Spoke w ramach projektu

Zaloguj się w innym projekcie, w którym środowisko VPC NIE jest częścią projektu NCC Hub. W Cloud Shell użyj tego polecenia, aby skonfigurować sieć VPC jako ucho NCC.

  • HUB_URI powinien być identyfikatorem URI huba w innym projekcie.
  • Wartość VPC_URI powinna być w tym samym projekcie co promień.
  • VPC-network określa, że VPC w tym projekcie krzyżującym się połączy się z centrum NCC w innym projekcie.
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'

Jaki jest stan NCC w przypadku kręgu między projektami? Dlaczego?

6. Odrzucanie i akceptowanie sekcji obejmującej kilka projektów

Omówienie

Administratorzy centrum NCC muszą wyraźnie zaakceptować łącznik między projektami, aby dołączyć do centrum. Zapobiega to dołączaniu przez właścicieli projektów do globalnej tabeli routingu NCC nieautoryzowanych promień NCC. Po zaakceptowaniu lub odrzuceniu sekcji można ją odrzucić lub zaakceptować dowolną liczbę razy, wykonując podane powyżej polecenia.

Wróć do projektu, w którym znajduje się centrum NCC, logując się w Cloud Shell.

Identyfikowanie osób, które mogą sprawdzać projekty na poziomie interfejsu API

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

Akceptowanie koła

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

Opcjonalnie: odrzucanie koła

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

Wyświetlanie aktywnych kół w 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

Wyświetlanie listy tras podsieci na urządzeniu Hub

Czy w wyjściu widać trasy podsieci z promieniem w sieci 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. Prywatny NAT między VPC

Omówienie

W tej sekcji skonfigurujesz prywatny NAT dla nakładających się zakresów podsieci między dwoma VPC. Pamiętaj, że prywatny NAT między VPC wymaga NCC.

W poprzedniej sekcji VPC2 i VPC3 są skonfigurowane z nakładającymi się zakresami podsieci „10.3.3.0/24”. Obie sieci VPC są skonfigurowane jako promień NCC, aby wykluczyć możliwość umieszczenia na liście tras centrum NCC trasy do podsieci, która się z nią pokrywa. Oznacza to, że nie ma ścieżki danych na poziomie 3 do hostów znajdujących się w tej podsieci.

Użyj tych poleceń w projekcie centrum NCC, aby znaleźć nakładające się zakresy podsieci.

gcloud compute networks subnets list --network vpc2-ncc

gcloud compute networks subnets list --network vpc3-ncc

Jaka jest nazwa podsieci w vpc2-ncc, która zawiera nakładający się zakres adresów IP?

*Zanotuj i zapisz gdzieś nazwę podsieci. W tym zakresie skonfigurujesz NAT źródłowy.

Konfigurowanie prywatnego NAT

Przydziel przekierowalny zakres podsieci do ruchu źródłowego NAT z podsieci nakładającej się z VPC2. Konfigurując nienakładający się zakres podsieci za pomocą flagi „–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

Utwórz dedykowany router w chmurze, aby wykonać prywatny NAT

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

Skonfiguruj router w chmurze do źródłowego NAT w zakresie nakładającym się 10.3.3.0/24 z vpc2-ncc. W przykładowej konfiguracji poniżej „overlapping-vpc3” to nazwa nakładającej się podsieci. Słowo kluczowe „WSZYSTKIE” określa, że wszystkie zakresy adresów IP w podsieci będą miały źródłowy adres 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

W poprzednich krokach utworzono pulę zakresów adresów IP NAT i określony podsieć, która zostanie przetłumaczona. Na tym etapie utwórz regułę NAT „1”, która przekształca pakiety sieciowe pasujące do ruchu pochodzącego z nakładającego się zakresu podsieci, jeśli sieć docelowa korzysta z ścieżki z tabeli routingu centrum 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

Sprawdzanie prywatnego NAT

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

Przykładowe dane wyjściowe

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

Opcjonalnie:

  • Przełącz się na konsolę internetową
  • Otwórz „Usługi sieciowe > Cloud NAT > ncc2-nat”.

Sprawdź, czy dynamiczne przydzielanie portów jest domyślnie włączone.

114050bb65e0c4e2.png

Następnie zweryfikuj ścieżkę danych, która korzysta z prywatnej ścieżki NAT skonfigurowanej dla VPC2.

5035b181aeaa30a8.png

Otwórz sesję SSH do instancji vm1-vpc1-ncc i użyj polecenia tcpdump, aby przechwycić pakiety pochodzące z zakresu puli NAT "10.10.10.0/29".

vm1-vpc1-ncc

sudo tcpdump -i any net 10.10.10.0/29 -n

W chwili tworzenia tego Codelab prywatna brama NAT nie obsługuje pakietów ICMP. Sesja SSH do „pNat-vm-vpc2” i użycie polecenia curl, jak pokazano poniżej, aby połączyć się z „vm1-vpc1-ncc” na porcie TCP 80.

pnat-vm-vpc2

curl 10.1.1.2 -v 

Sprawdź dane wyjściowe tcpdump na "vm1-vpc1-ncc." Jaki jest adres IP źródłowy, z którego pochodzi sesja TCP do naszego serwera WWW na "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. Sprawdzanie połączenia ścieżki danych

Na diagramie sprawdź ścieżkę danych między poszczególnymi maszynami wirtualnymi.

424df0ebe4510ebb.png

Nawiązuj połączenie SSH z instancją „vm1-vpc1-ncc” i uruchom zrzut TCP, aby prześledzić pakiety ICMP z instancji „vm2-vpc2-ncc”. Przypominamy, że ta maszyna wirtualna znajduje się w VPC2.

vm1-vpc1-ncc

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

Utwórz sesję SSH do instancji vm1-vpc2-ncc i wykonaj polecenie „ping” do adresu IP instancji vm1-vpc1-ncc.

vm1-vpc2-ncc

ping 10.1.1.2

Utwórz połączenie SSH z hostem „vm1-vpc2-ncc” i wyślij pakiet „ping” do adresu IP hosta „vm1-vpc4-ncc”.

vm1-vpc2-ncc

ping 240.0.0.2

9. Czyszczenie

Zaloguj się w Cloud Shell i usuń maszyny wirtualne w sieciach huba i witryn podrzędnych.

Usuwanie prywatnych konfiguracji NAT-a w 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

Usuwanie promieni 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

Odrzucenie promienia w ramach projektu

Odrzuć promień VPC w projekcie z centrum NCC.

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

Usuwanie centrum NCC

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

Usuwanie reguł zapory sieciowej

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

Usuwanie instancji 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

Usuwanie podsieci 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

Usuwanie sieci VPC

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

10. Gratulacje!

Moduł Network Connectivity Center został ukończony.

Omówione kwestie

  • Skonfigurowana sieć VPC z pełnym połączeniem równorzędnym z węzłem NCC
  • Filtr wykluczenia promieni NCC
  • Pomoc dotycząca projektu Spoke w wielu projektach
  • Prywatny NAT między VPC

Następne kroki

©Google, LLC lub jej podmioty stowarzyszone. Wszelkie prawa zastrzeżone. Nie rozpowszechniaj.