Moduł: VPC NCC jako promień

1. Wprowadzenie

Omówienie

W tym module użytkownicy dowiedzą się, jak używać Network Connectivity Center(NCC) do nawiązywania połączeń między sieciami VPC na dużą skalę przy użyciu promieni VPC. Gdy użytkownicy zdefiniują sieć VPC jako promień VPC, będą mogli połączyć je z wieloma sieciami VPC razem przez NCC Hub. NCC z konfiguracją promieni VPC zmniejsza złożoność operacyjną zarządzania połączeniami między sieciami VPC w parze przez połączenia równorzędne VPC, zamiast korzystać z modelu scentralizowanego zarządzania połączeniami.

Przypomnijmy, że Network Connectivity Center (NCC) to model platformy sterującej centrum i promieni do zarządzania połączeniami sieciowymi w Google Cloud. Zasób centrum zapewnia scentralizowany model zarządzania połączeniami do połączenia promieni.

Co utworzysz

W ramach tego ćwiczenia w Codelabs utworzysz centrum logiczne i topologię promieni z centrum NCC. Wdrożysz w pełni siatkową tkaninę połączeń VPC w 3 różnych środowiskach VPC.

Czego się nauczysz

  • Pełne połączenie VPC sieci typu mesh z NCC
  • Prywatny NAT w VPC

Czego potrzebujesz

  • Wiedza na temat sieci VPC GCP
  • Wiedza na temat routera Cloud Router i routingu BGP
  • 2 osobne projekty GCP
  • To ćwiczenia z programowania wymaga 5 sieci VPC. Jedna z tych sieci VPC musi znajdować się w innym projekcie niż centrum NCC
  • Sprawdź Limity:Sieci i w razie potrzeby poproś o dodatkowe sieci. Zrzut ekranu poniżej:

6d1b99c6da87fd84.png

Cele

  • Konfigurowanie środowiska GCP
  • Skonfiguruj Network Connectivity Center z VPC jako promieniem
  • Zweryfikuj ścieżkę danych
  • Poznaj funkcje użyteczności NCC
  • Usuń używane zasoby

Zanim zaczniesz

Konsola Google Cloud i Cloud Shell

W tym module będziemy używać zarówno konsoli Google Cloud, jak i Cloud Shell.

Projekt NCC Hubkonsola Google Cloud

Konsola Cloud jest dostępna na stronie https://console.cloud.google.com.

Aby ułatwić sobie konfigurowanie Network Connectivity Center, skonfiguruj te elementy w Google Cloud:

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

Uruchom Cloud Shell. W tym ćwiczeniach z programowania korzystamy ze zmiennych $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ń dostępu do określonych interfejsów API. Pamiętaj, aby skonfigurować dla użytkownika odpowiednie role uprawnień NCC.

Rola/opis

Uprawnienia

networkconnectivity.networkAdmin – umożliwia administratorom sieci zarządzanie centrum i promieniami.

networkconnectivity.hubs.networkconnectivity.spokes.

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

networkconnectivity.prokes.**

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

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 ilustruje środowisko sieciowe, które zostanie skonfigurowane w tym kroku.

Aby zademonstrować obsługę promieni między projektami, w późniejszym kroku wdrożymy reguły VPC i zapory sieciowej w innym projekcie.

245f1002db33ca98.png

Utwórz sieci VPC i podsieci

Sieć VPC zawiera podsieci, które zainstalujesz maszynę wirtualną GCE na potrzeby weryfikacji ś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 zaimportuje nakładających się zakresów adresów IP do tabeli tras centrali. Użytkownicy ominą to ograniczenie w późniejszym kroku. Na razie utwórz dwa pokrywające się 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 dozwolone reguły zapory sieciowej w każdej sieci VPC

  • 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 instalować pakiety na „vm1-vpc1-ncc”, musisz mieć tymczasowy dostęp do internetu.

Utwórz 4 maszyny wirtualne, a każda maszyna wirtualna 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 centrum NCC za pomocą poleceń gcloud. Centrum NCC będzie pełnić funkcję platformy sterującej odpowiedzialnej za tworzenie konfiguracji routingu między każdym promieniem VPC.

8acc7651f52e251e.png

Włącz usługi API

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

gcloud services enable networkconnectivity.googleapis.com

Utwórz 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. Zapisz 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 NCC Hub wprowadziliśmy tabelę routingu, która definiuje platformę sterującą służą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 tras domyślnych 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'

Wyświetl zawartość domyślnej tabeli routingu centrum NCC. Uwaga* Tabela tras NCC Hub będzie pusta, dopóki promienie nie będą

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 sieci VPC jako promień NCC za pomocą poleceń gcloud.

a70bc80037927bb0.png

Konfigurowanie sieci VPC jako promienia NCC

Skonfiguruj następujące sieci VPC jako promienie NCC w tej kolejności

  • VPC4
  • VPC1
  • VPC2
  • VPC3

Skonfiguruj VPC4 jako promień NCC i przypisz go do utworzonego wcześniej centrum NCC. Wywołania interfejsu API promieni NCC wymagają określenia lokalizacji. Flaga „–global” upraszcza składnię gcloud, pozwalając użytkownikowi uniknąć określania pełnej ścieżki identyfikatora URI podczas konfigurowania nowego promienia 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ą wykluczać trasy podsieci z możliwości eksportowania promieni VPC do tabeli tras centrum NCC. W tej części ćwiczenia w Codelabs utwórz regułę wykluczania eksportu na podstawie prefiksu podsumowania, aby zapobiec wyeksportowaniu podsieci VPC1 do tabeli tras Centrum NCC.

Użyj tego polecenia gcloud, aby wyświetlić listę wszystkich podsieci należących 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 tabeli routingu centrum za pomocą funkcji „export-export-ranges” słowo kluczowe, aby filtrować trasę podsumowania /24 z wybranego 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ć maksymalnie 16 unikalnych zakresów adresów IP na promień NCC.

Wyświetl zawartość domyślnej tabeli routingu centrum NCC. 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

Skonfiguruj VPC2 jako promień 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 pokrywające się zakresy adresów IP z VPC2. Zwróć uwagę, że VPC2 i VPC3 były skonfigurowane z tą samą podsiecią IP 10.3.3.0/24.

Filtrowanie nakładających się zakresów adresów IP za pomocą funkcji Wyklucz eksport

W momencie pisania tego ćwiczenia w Codelabs występuje znany problem polegający na tym, że użytkownicy muszą usunąć i ponownie utworzyć promienie NCC, aby wprowadzić zmiany w konfiguracji filtra eksportu.

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

Uwaga: usunięcie promienia VPC powiązanego z konkretną siecią VPC wymaga 10-minutowego okresu oczekiwania, aby można było odtworzyć nowy promień, który odwołuje się do tego samego 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 zakończyć się powodzeniem.

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

Wyświetl zawartość domyślnej tabeli routingu centrum NCC i sprawdź dane wyjściowe.

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

Pokrywające się zakresy adresów IP z VPC2 i VPC3 są wykluczane. Tabela routingu centrum NCC obsługuje wszystkie prawidłowe typy zakresów IPv4 oprócz używanych prywatnie publicznych adresów IP (PUPI).

5. NCC z promieniami międzyprojektowymi

Omówienie

Jak dotąd masz skonfigurowane promienie NCC, które należą do tego samego projektu co centrum. W tej sekcji skonfigurujesz VPC jako promień NCC z innego projektu niż Centrum NCC, korzystając z poleceń gcloud.

Dzięki temu właściciele projektów, którzy zarządzają własnymi sieciami VPC, mogą korzystać z połączeń sieciowych z NCC Hub.

e1190fa898c5097d.png

Między projektami: konsola Google Cloud i Cloud Shell

W tym module będziemy używać zarówno konsoli Google Cloud, jak i Cloud Shell.

Konsola Google Cloud do obsługi połączeń między projektami

Konsola Cloud jest dostępna na stronie https://console.cloud.google.com.

Aby ułatwić sobie konfigurowanie Network Connectivity Center, skonfiguruj te elementy w Google Cloud:

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

Uruchom Cloud Shell. W tym ćwiczeniach z programowania korzystamy ze zmiennych $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ń dostępu do określonych interfejsów API. Pamiętaj, aby skonfigurować dla użytkownika odpowiednie role uprawnień NCC.

Co najmniej administrator promieni między projektami musi mieć przypisaną rolę uprawnień „networkconnectivity.networkSpokeManager. ”

W tabeli poniżej znajdziesz role uprawnień wymagane przez administratora centrum NCC i Spoke.

Rola/opis

Uprawnienia

networkconnectivity.networkAdmin – umożliwia administratorom sieci zarządzanie centrum i promieniami.

networkconnectivity.hubs.networkconnectivity.spokes.

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

networkconnectivity.prokes.**

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

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

Tworzenie sieci VPC i podsieci w projekcie obejmującym wiele projektów

Sieć VPC zawiera podsieci, które zainstalujesz maszynę wirtualną GCE na potrzeby weryfikacji ś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 NCC Hub

Aby znaleźć identyfikator URI centrum NCC, użyj tego polecenia gcloud. Ścieżka URI będzie Ci potrzebna w następnym kroku do skonfigurowania promienia NCC w różnych projektach.

gcloud network-connectivity hubs describe ncc-hub

Sieć VPC Spoke między projektami

Zaloguj się do innego projektu, w którym sieć VPC NIE jest częścią projektu Centrum NCC. W Cloud Shell użyj tego polecenia, aby skonfigurować VPC jako promień NCC.

  • Wartość HUB_URI powinna być identyfikatorem URI centrum w innym projekcie.
  • Identyfikator VPC_URI powinien być w tym samym projekcie co promień
  • Sieć VPC określa sieć VPC w tym wielu projekcie, która dołączy do 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 promienia NCC w różnych projektach? Dlaczego?

6. Odrzuć lub akceptuj promień międzyprojektowy

Omówienie

Aby dołączyć do centrum, administratorzy NCC Hub muszą jawnie zaakceptować promień między projektami. Uniemożliwia to właścicielom projektu dołączanie nieuczciwych promieni NCC do globalnej tabeli routingu NCC. Po zaakceptowaniu lub odrzuceniu promienia można go odrzucić lub zaakceptować dowolną liczbę razy, uruchamiając powyższe polecenia.

Zaloguj się w Cloud Shell, aby wrócić do projektu, w którym znajduje się centrum NCC.

Określ promienie międzyprojektowe do sprawdzenia

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

Akceptowanie promienia

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

Opcjonalnie: odrzucanie promienia

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

Wyświetlanie aktywnych promieni w centrum

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 w Centrum

Czy na podstawie danych wyjściowych możesz wyświetlić trasy podsieci z innych promieni 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 sieciami VPC

Omówienie

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

W poprzedniej sekcji VPC2 i VPC3 są skonfigurowane z pokrywającym się zakresem podsieci „10.3.3.0/24”. Oba sieci VPC są skonfigurowane jako promienie NCC w celu wykluczenia nakładającej się podsieci z tabeli tras centrum NCC. Oznacza to, że nie ma ścieżki danych warstwy 3 umożliwiającej dotarcie do hostów znajdujących się w tej podsieci.

Za pomocą tych poleceń w projekcie centrum NCC możesz znaleźć pokrywające się zakresy podsieci.

gcloud compute networks subnets list --network vpc2-ncc

gcloud compute networks subnets list --network vpc3-ncc

Jaka jest nazwa podsieci z pokrywającym się zakresem adresów IP w przypadku vpc2-ncc?

*Zapisz i zapisz nazwę podsieci. Skonfigurujesz źródłową NAT dla tego zakresu.

Skonfiguruj Private NAT

Przypisz do kierowania zakres podsieci do źródłowego ruchu NAT z nakładającej się podsieci VPC2. Konfigurując nienakładający się zakres podsieci za pomocą parametru „–apply=PRIVATE_NAT” flaga.

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

Tworzenie dedykowanego routera Cloud Router do wykonywania prywatnego NAT

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

Skonfiguruj źródłową NAT w routerze Cloud Router o pokrywającym się zakresie 10.3.3.0/24 z vpc2-ncc. W przykładowej konfiguracji poniżej: „overlausing-vpc3” to nazwa nakładającej się podsieci. „ALL” słowo kluczowe określa, że wszystkie zakresy adresów IP w podsieci będą korzystać ze źródłowego 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 utworzyliśmy pulę zakresów adresów IP NAT oraz konkretną podsieć do translacji. W tym kroku utwórz regułę NAT „1” który tłumaczy pakiety sieciowe pasujące do ruchu pochodzącego z nakładającego się zakresu podsieci, jeśli sieć docelowa korzysta ze ś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:

  • Przejdź 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 sprawdzisz ścieżkę danych, która korzysta z prywatnej ścieżki NAT skonfigurowanej dla VPC2.

5035b181aeaa30a8.png

Otwórz sesję SSH dla instancji "vm1-vpc1-ncc" i użyj poniższego 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 momencie pisania tego ćwiczenia z programowania usługa NAT nie obsługuje pakietów ICMP. Sesja SSH do połączenia „pNat-vm-vpc2” i użyj polecenia curl zgodnie z poniższym opisem, 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 narzędzia tcpdump w parametrze „vm1-vpc1-ncc”. Jaki jest źródłowy adres IP, który w vm1-vpc1-ncc rozpoczął sesję TCP na nasz serwer WWW?

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. Zweryfikuj połączenia ścieżki danych

Na podstawie diagramu sprawdź ścieżkę danych między każdą maszyną wirtualną.

424df0ebe4510ebb.png

Połącz się z „vm1-vpc1-ncc” przez SSH i uruchom zrzut TCP, aby śledzić pakiety ICMP z serwera vm2-vpc2-ncc”. Przypominamy, że ta maszyna wirtualna znajduje się w VPC2.

vm1-vpc1-ncc

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

Ustanów sesję SSH dla kontrolerów „vm1-vpc2-ncc” i „ping” adres IP instancji „vm1-vpc1-ncc”.

vm1-vpc2-ncc

ping 10.1.1.2

Ustanowienie połączenia SSH z serwerami „vm1-vpc2-ncc” i „ping” adres IP instancji „vm1-vpc4-ncc”.

vm1-vpc2-ncc

ping 240.0.0.2

9. Czyszczenie

Logowanie się do Cloud Shell i usuwanie instancji maszyn wirtualnych w sieciach witryny centrum i gałęzi

Usuwanie prywatnych konfiguracji VPC Nat

gcloud compute routers nats rules delete 1 \
--nat=ncc2-nat \
--router=private-nat-cr \
--region=us-central1 \
--quiet

gcloud compute routers nats delete ncc2-nat \
--router=private-nat-cr \
--router-region=us-central1 \
--quiet

gcloud compute routers delete private-nat-cr \
--region=us-central1 \
--quiet

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

Odrzuć promień między projektami

Odrzuć promień VPC między projektami 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

Usuń 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

Usuń sieci VPC

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

10. Gratulacje!

Udało Ci się ukończyć laboratorium Network Connectivity Center.

Co zostało omówione

  • Skonfigurowano równorzędną sieć VPC z pełną funkcjonalnością sieci VPC z centrum NCC
  • Filtr wykluczania promieni NCC
  • Obsługa promieni między projektami
  • Prywatny NAT między VPC

Dalsze kroki

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