Verwaltete Dienste der Private Service Connect-Schnittstelle

1. Einführung

Eine Private Service Connect-Schnittstelle ist eine Ressource, mit der das VPC-Netzwerk (Virtual Private Cloud) eines Erstellers Verbindungen zu verschiedenen Zielen in einem Nutzer-VPC-Netzwerk initiieren kann. Ersteller- und Nutzernetzwerke können sich in verschiedenen Projekten und Organisationen befinden.

Wenn ein Netzwerkanhang eine Verbindung von einer Private Service Connect-Schnittstelle akzeptiert, weist Google Cloud der Schnittstelle eine IP-Adresse aus einem vom Netzwerkanhang bestimmten Nutzersubnetz zu. Die Nutzer- und Erstellernetzwerke sind verbunden und können über interne IP-Adressen kommunizieren.

Eine Verbindung zwischen einem Netzwerkanhang und einer Private Service Connect-Schnittstelle ähnelt der Verbindung zwischen einem Private Service Connect-Endpunkt und einem Dienstanhang, weist aber zwei wichtige Unterschiede auf:

  • Mit einem Netzwerkanhang kann ein Erstellernetzwerk Verbindungen zu einem Nutzernetzwerk initiieren (verwalteter ausgehender Dienst), während ein Endpunkt es einem Nutzernetzwerk ermöglicht, Verbindungen zu einem Erstellernetzwerk zu initiieren (verwalteter Dienst).
  • Private Service Connect-Schnittstellenverbindungen sind transitiv. Dies bedeutet, dass ein Erstellernetzwerk mit anderen Netzwerken kommunizieren kann, die mit dem Nutzernetzwerk verbunden sind.

Aufgaben

Sie erstellen eine einzelne psc-network-attachment in der Consumer-VPC, was zu zwei PSC-Schnittstellen als Back-Ends für den internen L4-Load-Balancer führt. Von der Producer-VPC aus sendet Tiger einen Curl an Cosmo in der Backend-VPC. In der VPC des Producers erstellen Sie eine statische Route für Ziel-Traffic 192.168.20.0/28 mit dem internen Load-Balancer als nächsten Hop, der Backend- und nachfolgende PSC-Schnittstellen verwendet, um Traffic an Cosmo weiterzuleiten. Eine Übersicht finden Sie in Abbildung 1.

Derselbe Ansatz kann für von Google verwaltete Dienste verwendet werden, die über VPC-Peering mit der Kunden-VPC verbunden sind, wenn Zugriff auf private Dienste verwendet wird.

Abbildung 1

36dbc7f825a21cbd.png

Lerninhalte

  • Netzwerkanhang erstellen
  • So kann ein Produzent einen Netzwerkanhang verwenden, um eine PSC-Schnittstelle als Backends zu erstellen
  • Kommunikation vom Ersteller zum Nutzer mit ILB als nächsten Hop herstellen
  • Zugriff von der Ersteller-VM (tiger) auf die Nutzer-VM (cosmo) über VPC-Peering zulassen

Voraussetzungen

2. Hinweis

Projekt für das Tutorial aktualisieren

In dieser Anleitung werden $variables verwendet, um die Implementierung der gcloud-Konfiguration in Cloud Shell zu erleichtern.

Führen Sie in Cloud Shell folgende Schritte aus:

gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectid=YOUR-PROJECT-NAME
echo $projectid

3. Einrichtung durch Nutzer

Nutzer-VPC erstellen

Führen Sie in Cloud Shell folgende Schritte aus:

gcloud compute networks create consumer-vpc --project=$projectid --subnet-mode=custom

Subnetz für Private Service Connect-Netzwerkanhang erstellen

Führen Sie in Cloud Shell folgende Schritte aus:

gcloud compute networks subnets create intf-subnet --project=$projectid --range=192.168.10.0/28 --network=consumer-vpc --region=us-central1

Backend-VPC erstellen

Führen Sie in Cloud Shell folgende Schritte aus:

gcloud compute networks create backend-vpc --project=$projectid --subnet-mode=custom

Backend-VPC-Subnetze erstellen

Führen Sie in Cloud Shell folgende Schritte aus:

gcloud compute networks subnets create cosmo-subnet-1 --project=$projectid --range=192.168.20.0/28 --network=backend-vpc --region=us-central1

Firewallregeln für das Backend-VPC erstellen

Erstellen Sie in Cloud Shell eine Ingress-Regel für Traffic vom Subnetz „psc-network-attachment“ zu „cosmo“.

gcloud compute firewall-rules create allow-ingress-to-cosmo \
    --network=backend-vpc \
    --action=ALLOW \
    --rules=ALL \
    --direction=INGRESS \
    --priority=1000 \
    --source-ranges="192.168.10.0/28" \
    --destination-ranges="192.168.20.0/28" \
    --enable-logging

Cloud Router- und NAT-Konfiguration

Cloud NAT wird in der Anleitung für die Installation von Softwarepaketen verwendet, da die VM-Instanz keine öffentliche IP-Adresse hat. Cloud NAT ermöglicht VMs mit privaten IP-Adressen den Zugriff auf das Internet.

Erstellen Sie den Cloud Router in Cloud Shell.

gcloud compute routers create cloud-router-for-nat --network backend-vpc --region us-central1

Erstellen Sie das NAT-Gateway in Cloud Shell.

gcloud compute routers nats create cloud-nat-us-central1 --router=cloud-router-for-nat --auto-allocate-nat-external-ips --nat-all-subnet-ip-ranges --region us-central1

4. IAP aktivieren

Damit IAP eine Verbindung zu Ihren VM-Instanzen herstellen kann, erstellen Sie eine Firewallregel, die:

  • Gilt für alle VM-Instanzen, die über IAP zugänglich sein sollen.
  • Lässt eingehenden Traffic aus dem IP-Bereich 35.235.240.0/20 zu. Dieser Bereich enthält alle IP-Adressen, die IAP für die TCP-Weiterleitung verwendet.

Erstellen Sie in Cloud Shell die IAP-Firewallregel.

gcloud compute firewall-rules create ssh-iap-consumer \
    --network backend-vpc \
    --allow tcp:22 \
    --source-ranges=35.235.240.0/20

5. Consumer-VM-Instanzen erstellen

Erstellen Sie in Cloud Shell die Consumer-VM-Instanz „cosmo“.

gcloud compute instances create cosmo \
    --project=$projectid \
    --machine-type=e2-micro \
    --image-family debian-11 \
    --no-address \
    --image-project debian-cloud \
    --zone us-central1-a \
    --subnet=cosmo-subnet-1 \
    --metadata startup-script="#! /bin/bash
      sudo apt-get update
      sudo apt-get install tcpdump
      sudo apt-get install apache2 -y
      sudo service apache2 restart
      echo 'Welcome to cosmo's backend server !!' | tee /var/www/html/index.html
      EOF"

Rufen Sie die IP-Adressen der Instanzen ab und speichern Sie sie:

Führen Sie in Cloud Shell einen „describe“-Befehl für die Cosmo-VM-Instanzen aus.

gcloud compute instances describe cosmo --zone=us-central1-a | grep  networkIP:

6. Private Service Connect-Netzwerkanhang

Netzwerkanhänge sind regionale Ressourcen, die die Nutzerseite einer Private Service Connect-Schnittstelle darstellen. Sie verknüpfen ein einzelnes Subnetz mit einem Netzwerkanhang und der Ersteller weist der Private Service Connect-Schnittstelle IP-Adressen aus diesem Subnetz zu. Das Subnetz muss sich in derselben Region wie der Netzwerkanhang befinden. Netzwerkanhänge müssen sich in derselben Region wie deren Produzentendienst befinden.

Netzwerkanhang erstellen

Erstellen Sie den Netzwerkanhang in Cloud Shell.

gcloud compute network-attachments create psc-network-attachment \
    --region=us-central1 \
    --connection-preference=ACCEPT_MANUAL \
    --producer-accept-list=$projectid \
    --subnets=intf-subnet

Netzwerkanhänge auflisten

Listen Sie die Netzwerkverbindung in Cloud Shell auf.

gcloud compute network-attachments list

Netzwerkanhänge beschreiben

Beschreiben Sie den Netzwerkanhang in Cloud Shell.

gcloud compute network-attachments describe psc-network-attachment --region=us-central1

Notieren Sie sich den URI des PSC-Netzwerk-Anhangs, der vom Dienstersteller beim Erstellen der Private Service Connect-Schnittstellen verwendet wird. Beispiel:

user$ gcloud compute network-attachments describe psc-network-attachment --region=us-central1
connectionPreference: ACCEPT_MANUAL
creationTimestamp: '2023-06-07T11:27:33.116-07:00'
fingerprint: 8SDsvG6TfYQ=
id: '5014253525248340730'
kind: compute#networkAttachment
name: psc-network-attachment
network: https://www.googleapis.com/compute/v1/projects/$projectid/global/networks/consumer-vpc
producerAcceptLists:
- $projectid
region: https://www.googleapis.com/compute/v1/projects/$projectid/regions/us-central1
selfLink: https://www.googleapis.com/compute/v1/projects/$projectid/regions/us-central1/networkAttachments/psc-network-attachment
subnetworks:
- https://www.googleapis.com/compute/v1/projects/$projectid/regions/us-central1/subnetworks/intf-subnet

7. VPC-Peering zwischen dem VPC-Netzwerk des Nutzers und dem Backend-VPC-Netzwerk einrichten

Sie erstellen eine VPC-Peering-Verbindung zwischen der Consumer- und der Backend-VPC. So stellt Google zusätzlich zum organisationsübergreifenden Peering für die Netzwerkverbindung Verbindungen zu Kunden-VPCs für verwaltete Dienste her. VPC-Peering muss für jede VPC konfiguriert werden.

VPC-Peering von Nutzer-VPC zu Backend-VPC

VPC-Peering-Verbindung vom Nutzer- zum Backend-VPC erstellen

Führen Sie in Cloud Shell folgende Schritte aus:

gcloud compute networks peerings create consumer-to-backend-vpc \
    --network=consumer-vpc \
    --peer-project=$projectid \
    --peer-network=backend-vpc \
    --stack-type=IPV4_ONLY

VPC-Peering-Verbindung vom Backend zur Nutzer-VPC erstellen

Führen Sie in Cloud Shell folgende Schritte aus:

gcloud compute networks peerings create backend-to-consumer-vpc \
    --network=backend-vpc \
    --peer-project=$projectid \
    --peer-network=consumer-vpc \
    --stack-type=IPV4_ONLY

Details zum VPC-Peering-Status prüfen

Prüfen Sie in Cloud Shell, ob das VPC-Peering den Status „Aktiv“ und „Verbunden“ hat.

gcloud compute networks peerings list

Beispiel:

user@cloudshell$ gcloud compute networks peerings list
NAME: backend-to-consumer-vpc
NETWORK: backend-vpc
PEER_PROJECT: $projectid
PEER_NETWORK: consumer-vpc
STACK_TYPE: IPV4_ONLY
PEER_MTU: 
IMPORT_CUSTOM_ROUTES: False
EXPORT_CUSTOM_ROUTES: False
STATE: ACTIVE
STATE_DETAILS: [2023-06-07T11:42:27.634-07:00]: Connected.

NAME: consumer-to-backend-vpc
NETWORK: consumer-vpc
PEER_PROJECT: $projectid
PEER_NETWORK: backend-vpc
STACK_TYPE: IPV4_ONLY
PEER_MTU: 
IMPORT_CUSTOM_ROUTES: False
EXPORT_CUSTOM_ROUTES: False
STATE: ACTIVE
STATE_DETAILS: [2023-06-07T11:42:27.634-07:00]: Connected.

8. Einrichtung für Ersteller

Ersteller-VPC erstellen

Führen Sie in Cloud Shell folgende Schritte aus:

gcloud compute networks create producer-vpc --project=$projectid --subnet-mode=custom

Producer-Subnetze erstellen

Erstellen Sie in Cloud Shell das Subnetz, das für die vNIC0 der PSC-Schnittstelle(n) verwendet wird.

gcloud compute networks subnets create prod-subnet --project=$projectid --range=10.20.1.0/28 --network=producer-vpc --region=us-central1

Erstellen Sie in Cloud Shell das Subnetz, das für die Instanz „tiger“ verwendet wird.

gcloud compute networks subnets create prod-subnet-2 --project=$projectid --range=10.30.1.0/28 --network=producer-vpc --region=us-central1

Erstellen Sie in Cloud Shell das Subnetz, das für den internen Load Balancer verwendet wird.

gcloud compute networks subnets create prod-subnet-3 --project=$projectid --range=172.16.10.0/28 --network=producer-vpc --region=us-central1

Cloud Router- und NAT-Konfiguration

Cloud NAT wird in der Anleitung für die Installation von Softwarepaketen verwendet, da die VM-Instanz keine öffentliche IP-Adresse hat. Cloud NAT ermöglicht VMs mit privaten IP-Adressen den Zugriff auf das Internet.

Erstellen Sie den Cloud Router in Cloud Shell.

gcloud compute routers create cloud-router-for-nat-producer --network producer-vpc --region us-central1

Erstellen Sie das NAT-Gateway in Cloud Shell.

gcloud compute routers nats create cloud-nat-us-central1-producer --router=cloud-router-for-nat-producer --auto-allocate-nat-external-ips --nat-all-subnet-ip-ranges --region us-central1

IAP aktivieren

Damit IAP eine Verbindung zu Ihren VM-Instanzen herstellen kann, erstellen Sie eine Firewallregel, die:

  • Gilt für alle VM-Instanzen, die über IAP zugänglich sein sollen.
  • Lässt eingehenden Traffic aus dem IP-Bereich 35.235.240.0/20 zu. Dieser Bereich enthält alle IP-Adressen, die IAP für die TCP-Weiterleitung verwendet.

Erstellen Sie in Cloud Shell die IAP-Firewallregel.

gcloud compute firewall-rules create ssh-iap-producer \
    --network producer-vpc \
    --allow tcp:22 \
    --source-ranges=35.235.240.0/20

Producer-VM-Instanzen erstellen

Erstellen Sie in Cloud Shell die Consumer-VM-Instanz „tiger“.

gcloud compute instances create tiger \
    --project=$projectid \
    --machine-type=e2-micro \
    --image-family debian-11 \
    --no-address \
    --image-project debian-cloud \
    --zone us-central1-a \
    --subnet=prod-subnet-2 \
    --metadata startup-script="#! /bin/bash
      sudo apt-get update
      sudo apt-get install tcpdump"

9. Firewallregeln für Produzenten erstellen

Erstellen Sie im Produzenten-VPC eine Firewallregel für eingehenden Traffic, die die Kommunikation von prod-subnet-2 zu allen Instanzen im Produzenten-VPC zulässt.

Erstellen Sie in Cloud Shell die Firewallregel für den Producer.

gcloud compute --project=$projectid firewall-rules create allow-tiger-ingress --direction=INGRESS --priority=1000 --network=producer-vpc --action=ALLOW --rules=all --source-ranges=10.30.1.0/28 --enable-logging

10. Private Service Connect-Schnittstelle erstellen

Eine Private Service Connect-Schnittstelle ist eine Ressource, mit der das VPC-Netzwerk (Virtual Private Cloud) eines Erstellers Verbindungen zu verschiedenen Zielen in einem Nutzer-VPC-Netzwerk initiieren kann. Ersteller- und Nutzernetzwerke können sich in verschiedenen Projekten und Organisationen befinden.

Wenn ein Netzwerkanhang eine Verbindung von einer Private Service Connect-Schnittstelle akzeptiert, weist Google Cloud der Schnittstelle eine IP-Adresse aus einem vom Netzwerkanhang bestimmten Nutzersubnetz zu. Die Nutzer- und Erstellernetzwerke sind verbunden und können über interne IP-Adressen kommunizieren.

In diesem Tutorial erstellen Sie zwei Instanzen mit der Private Service Connect-Netzwerkverbindung, die das Backend für den internen Load-Balancer bilden.

Erstellen Sie in Cloud Shell die Private Service Connect-Schnittstelle (rabbit) und fügen Sie den zuvor ermittelten psc-network-attachment URI aus der Ausgabe von „network attachment describe“ ein.

gcloud compute instances create rabbit --zone us-central1-a --machine-type=f1-micro --can-ip-forward --network-interface subnet=prod-subnet,network=producer-vpc,no-address --network-interface network-attachment=https://www.googleapis.com/compute/v1/projects/$projectid/regions/us-central1/networkAttachments/psc-network-attachment --metadata startup-script="#! /bin/bash
      sudo apt-get update
      sudo apt-get install tcpdump
      sudo apt-get install apache2 -y
      sudo service apache2 restart"

Erstellen Sie in Cloud Shell die Private Service Connect-Schnittstelle (fox) und fügen Sie den zuvor ermittelten psc-network-attachment-URI aus der Ausgabe von „network-attachment describe“ ein.

gcloud compute instances create fox --zone us-central1-a --machine-type=f1-micro --can-ip-forward --network-interface subnet=prod-subnet,network=producer-vpc,no-address --network-interface network-attachment=https://www.googleapis.com/compute/v1/projects/$projectid/regions/us-central1/networkAttachments/psc-network-attachment --metadata startup-script="#! /bin/bash
      sudo apt-get update
      sudo apt-get install tcpdump
      sudo apt-get install apache2 -y
      sudo service apache2 restart"

Validierung mehrerer Nischen

Prüfen Sie, ob die PSC-Schnittstelle mit der entsprechenden IP-Adresse konfiguriert ist. vNIC0 verwendet das Producer-Subnetz (10.20.1.0/28) und vNIC1 das Consumer-Subnetz (192.168.10.0/28).

gcloud compute instances describe rabbit --zone=us-central1-a | grep networkIP:

gcloud compute instances describe fox --zone=us-central1-a | grep networkIP:

Beispiel:

user$ gcloud compute instances describe rabbit --zone=us-central1-a | grep networkIP:
  networkIP: 10.20.1.2
  networkIP: 192.168.10.2

user$ gcloud compute instances describe fox --zone=us-central1-a | grep networkIP:
  networkIP: 10.20.1.3
  networkIP: 192.168.10.3

11. Kaninchen und Fuchs in einer nicht verwalteten Instanzgruppe erstellen und hinzufügen

Im folgenden Abschnitt erstellen Sie eine nicht verwaltete Instanzgruppe, die aus den PSC-Schnittstelleninstanzen „rabbit“ und „fox“ besteht.

Erstellen Sie die nicht verwaltete Instanzgruppe in Cloud Shell.

gcloud compute instance-groups unmanaged create psc-interface-instances-ig --project=$projectid --zone=us-central1-a

Fügen Sie in Cloud Shell der Instanzgruppe die Instanzen „fox“ und „rabbit“ hinzu.

gcloud compute instance-groups unmanaged add-instances psc-interface-instances-ig --project=$projectid --zone=us-central1-a --instances=fox,rabbit

12. TCP-Systemdiagnose, Backend-Dienste, Weiterleitungsregel und Firewall erstellen

Erstellen Sie in Cloud Shell die Systemdiagnose für das Backend.

gcloud compute health-checks create http hc-http-80 --port=80

Erstellen Sie den Back-End-Dienst in Cloud Shell.

gcloud compute backend-services create psc-interface-backend --load-balancing-scheme=internal --protocol=tcp --region=us-central1 --health-checks=hc-http-80
gcloud compute backend-services add-backend psc-interface-backend --region=us-central1 --instance-group=psc-interface-instances-ig --instance-group-zone=us-central1-a

Erstellen Sie die Weiterleitungsregel in Cloud Shell.

gcloud compute forwarding-rules create psc-ilb --region=us-central1 --load-balancing-scheme=internal --network=producer-vpc --subnet=prod-subnet-3 --address=172.16.10.10 --ip-protocol=TCP --ports=all --backend-service=psc-interface-backend --backend-service-region=us-central1

Erstellen Sie in Cloud Shell eine Firewallregel, um Systemdiagnosen für Back-Ends zu aktivieren.

gcloud compute firewall-rules create ilb-health-checks --allow tcp:80,tcp:443 --network producer-vpc --source-ranges 130.211.0.0/22,35.191.0.0/16 

13. Linux-IP-Tabellen für die PSC-Schnittstelle(n) erstellen – rabbit

Konfigurieren Sie in der PSC-Schnittstelleninstanz Linux-IP-Tabellen, um die Kommunikation des Erstellers mit den Nutzer-Subnetzen zuzulassen.

Namen des Gastbetriebssystems der Private Service Connect-Schnittstelle ermitteln

Zum Konfigurieren des Routings benötigen Sie den Namen des Gastbetriebssystems Ihrer Private Service Connect-Schnittstelle. Dieser Name unterscheidet sich vom Namen der Schnittstelle in Google Cloud.

Melden Sie sich mit IAP in Cloud Shell bei der VM „psc-interface“, „rabbit“ an.

gcloud compute ssh rabbit --project=$projectid --zone=us-central1-a --tunnel-through-iap

Rufen Sie in Cloud Shell die IP-Adresse der psc-interface-Instanz ab.

ip a

Beispiel:

user@rabbit:~$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens4: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1460 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 42:01:0a:14:01:02 brd ff:ff:ff:ff:ff:ff
    altname enp0s4
    inet 10.20.1.2/32 brd 10.20.1.2 scope global dynamic ens4
       valid_lft 59396sec preferred_lft 59396sec
    inet6 fe80::4001:aff:fe14:102/64 scope link 
       valid_lft forever preferred_lft forever
3: ens5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1460 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 42:01:c0:a8:0a:02 brd ff:ff:ff:ff:ff:ff
    altname enp0s5
    inet 192.168.10.2/32 brd 192.168.10.2 scope global dynamic ens5
       valid_lft 66782sec preferred_lft 66782sec
    inet6 fe80::4001:c0ff:fea8:a02/64 scope link 
       valid_lft forever preferred_lft forever

Gateway-IP-Adresse Ihrer PSC-Schnittstelle ermitteln

Suchen Sie in der Liste der Netzwerkschnittstellen den Namen der Schnittstelle, der der IP-Adresse Ihrer Private Service Connect-Schnittstelle zugeordnet ist, z. B. ens5 (vNIC1).

Zum Konfigurieren des Routings benötigen Sie die IP-Adresse des Standardgateways Ihrer Private Service Connect-Schnittstelle.

In Cloud Shell verwenden wir 1, da die PSC-Schnittstelle mit vNIC1 verknüpft ist.

curl http://metadata.google.internal/computeMetadata/v1/instance/network-interfaces/1/gateway -H "Metadata-Flavor: Google" && echo

Das Beispiel erzeugt das Standardgateway 192.168.10.1.

user@rabbit:~$ curl http://metadata.google.internal/computeMetadata/v1/instance/network-interfaces/1/gateway -H "Metadata-Flavor: Google" && echo
192.168.10.1

Routen für Consumer-Subnetze hinzufügen

Sie müssen für jedes Nutzersubnetz, das eine Verbindung zu Ihrer Private Service Connect-Schnittstelle herstellt, eine Route zum Standardgateway der Private Service Connect-Schnittstelle hinzufügen. So wird sichergestellt, dass Traffic, der für das Nutzernetzwerk bestimmt ist, über die Private Service Connect-Schnittstelle ausgeht.

Routentabelle prüfen

Prüfen Sie in Cloud Shell die aktuellen Routen.

ip route show

Example.

user@rabbit:~$ ip route show
default via 10.20.1.1 dev ens4 
10.20.1.0/28 via 10.20.1.1 dev ens4 
10.20.1.1 dev ens4 scope link 
192.168.10.0/28 via 192.168.10.1 dev ens5 
192.168.10.1 dev ens5 scope link 

Fügen Sie in Cloud Shell die Route zu „cosmo-subnet-1“ hinzu.

sudo ip route add 192.168.20.0/28 via 192.168.10.1 dev ens5

Routentabelle prüfen

Prüfen Sie in Cloud Shell die aktualisierten hinzugefügten Routen.

ip route show

Example.

user@rabbit:~$ ip route show
default via 10.20.1.1 dev ens4 
10.20.1.0/28 via 10.20.1.1 dev ens4 
10.20.1.1 dev ens4 scope link 
192.168.10.0/28 via 192.168.10.1 dev ens5 
192.168.10.1 dev ens5 scope link 
192.168.20.0/28 via 192.168.10.1 dev ens5 

IP-Tabellenregeln erstellen

Prüfen Sie in Cloud Shell die aktuellen IP-Tabellen.

sudo iptables -t nat -L -n -v

Beispiel:

user@rabbit:~$ sudo iptables -t nat -L -n -v
Chain PREROUTING (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination  

IP-Tabellen in Cloud Shell aktualisieren

sudo iptables -t nat -A POSTROUTING -o ens5 -j MASQUERADE
sudo sysctl net.ipv4.ip_forward=1

Prüfen Sie in Cloud Shell die aktualisierten IP-Tabellen.

sudo iptables -t nat -L -n -v

Beispiel:

user@rabbit:~$ sudo iptables -t nat -L -n -v
Chain PREROUTING (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 MASQUERADE  all  --  *      ens5    0.0.0.0/0            0.0.0.0/0

14. Linux-IP-Tabellen für die PSC-Schnittstelle(n) erstellen – fox

Konfigurieren Sie in der PSC-Schnittstelleninstanz Linux-IP-Tabellen, um die Kommunikation des Erstellers mit den Nutzer-Subnetzen zuzulassen.

Namen des Gastbetriebssystems der Private Service Connect-Schnittstelle ermitteln

Zum Konfigurieren des Routings benötigen Sie den Namen des Gastbetriebssystems Ihrer Private Service Connect-Schnittstelle. Dieser Name unterscheidet sich vom Namen der Schnittstelle in Google Cloud.

Öffnen Sie einen neuen Cloud Shell-Tab und aktualisieren Sie die Projekteinstellungen.

Führen Sie in Cloud Shell folgende Schritte aus:

gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectid=YOUR-PROJECT-NAME
echo $projectid

Melden Sie sich in Cloud Shell mit IAP bei der VM „psc-interface“ (fox) an.

gcloud compute ssh fox --project=$projectid --zone=us-central1-a --tunnel-through-iap

Rufen Sie in Cloud Shell die IP-Adresse der psc-interface-Instanz ab.

ip a

Beispiel:

user@fox:~$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens4: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1460 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 42:01:0a:14:01:03 brd ff:ff:ff:ff:ff:ff
    altname enp0s4
    inet 10.20.1.3/32 brd 10.20.1.3 scope global dynamic ens4
       valid_lft 65601sec preferred_lft 65601sec
    inet6 fe80::4001:aff:fe14:103/64 scope link 
       valid_lft forever preferred_lft forever
3: ens5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1460 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 42:01:c0:a8:0a:03 brd ff:ff:ff:ff:ff:ff
    altname enp0s5
    inet 192.168.10.3/32 brd 192.168.10.3 scope global dynamic ens5
       valid_lft 63910sec preferred_lft 63910sec
    inet6 fe80::4001:c0ff:fea8:a03/64 scope link 
       valid_lft forever preferred_lft forever

Gateway-IP-Adresse Ihrer PSC-Schnittstelle ermitteln

Suchen Sie in der Liste der Netzwerkschnittstellen den Namen der Schnittstelle, der der IP-Adresse Ihrer Private Service Connect-Schnittstelle zugeordnet ist, z. B. ens5 (vNIC1).

Zum Konfigurieren des Routings benötigen Sie die IP-Adresse des Standardgateways Ihrer Private Service Connect-Schnittstelle.

In Cloud Shell verwenden wir 1, da die PSC-Schnittstelle mit vNIC1 verknüpft ist.

curl http://metadata.google.internal/computeMetadata/v1/instance/network-interfaces/1/gateway -H "Metadata-Flavor: Google" && echo

Das Beispiel erzeugt das Standardgateway 192.168.10.1.

user@fox:~$ curl http://metadata.google.internal/computeMetadata/v1/instance/network-interfaces/1/gateway -H "Metadata-Flavor: Google" && echo
192.168.10.1

Routen für Consumer-Subnetze hinzufügen

Sie müssen für jedes Nutzersubnetz, das eine Verbindung zu Ihrer Private Service Connect-Schnittstelle herstellt, eine Route zum Standardgateway der Private Service Connect-Schnittstelle hinzufügen. So wird sichergestellt, dass Traffic, der für das Nutzernetzwerk bestimmt ist, über die Private Service Connect-Schnittstelle ausgeht.

Routentabelle prüfen

Prüfen Sie in Cloud Shell die aktuellen Routen.

ip route show

Example.

user@fox:~$ ip route show
default via 10.20.1.1 dev ens4 
10.20.1.0/28 via 10.20.1.1 dev ens4 
10.20.1.1 dev ens4 scope link 
192.168.10.0/28 via 192.168.10.1 dev ens5 
192.168.10.1 dev ens5 scope link 

Fügen Sie in Cloud Shell die Route zu „cosmo-subnet-1“ hinzu.

sudo ip route add 192.168.20.0/28 via 192.168.10.1 dev ens5

Routentabelle prüfen

Prüfen Sie in Cloud Shell die aktualisierten hinzugefügten Routen.

ip route show

Example.

user@fox:~$ ip route show
default via 10.20.1.1 dev ens4 
10.20.1.0/28 via 10.20.1.1 dev ens4 
10.20.1.1 dev ens4 scope link 
192.168.10.0/28 via 192.168.10.1 dev ens5 
192.168.10.1 dev ens5 scope link 
192.168.20.0/28 via 192.168.10.1 dev ens5

IP-Tabellenregeln erstellen

Prüfen Sie in Cloud Shell die aktuellen IP-Tabellen.

sudo iptables -t nat -L -n -v

Beispiel:

user@fox:~$ sudo iptables -t nat -L -n -v
Chain PREROUTING (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Aktualisieren Sie IP-Tabellen in Cloud Shell.

sudo iptables -t nat -A POSTROUTING -o ens5 -j MASQUERADE
sudo sysctl net.ipv4.ip_forward=1

Prüfen Sie in Cloud Shell die aktualisierten IP-Tabellen.

sudo iptables -t nat -L -n -v

Beispiel:

user@fox:~$ sudo iptables -t nat -L -n -v
Chain PREROUTING (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 MASQUERADE  all  --  *      ens5    0.0.0.0/0            0.0.0.0/0  

15. Routingtabelle aktualisieren

Erstellen Sie im Producer-VPC eine statische Route zum Subnetz des Consumers 192.168.20.0/28 mit dem internen Load-Balancer als nächsten Hop. Nach der Erstellung wird jedes Paket (innerhalb der Producer-VPC) mit dem Ziel 192.168.20.0/28 an den internen Load-Balancer weitergeleitet.

Öffnen Sie einen neuen Cloud Shell-Tab und aktualisieren Sie die Projekteinstellungen.

Führen Sie in Cloud Shell folgende Schritte aus:

gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectid=YOUR-PROJECT-NAME
echo $projectid

Aktualisieren Sie in Cloud Shell die Routentabelle des Producer-VPC mit einer statischen Route.

gcloud beta compute routes create producer-to-cosmo-subnet-1 --project=$projectid --network=producer-vpc --priority=1000 --destination-range=192.168.20.0/28 --next-hop-ilb=psc-ilb --next-hop-ilb-region=us-central1

16. Erfolgreiche Verbindung von „tiger“ zu „cosmo“ prüfen

Curl-Validierung

Wir prüfen, ob die Ersteller-VM-Instanz „tiger“ mit der Nutzerinstanz „cosmo“ kommunizieren kann, indem wir einen curl-Befehl ausführen.

Öffnen Sie einen neuen Cloud Shell-Tab und aktualisieren Sie die Projekteinstellungen.

Führen Sie in Cloud Shell folgende Schritte aus:

gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectid=YOUR-PROJECT-NAME
echo $projectid

Melden Sie sich in Cloud Shell mit IAP bei der Tiger-Instanz an.

gcloud compute ssh tiger --project=$projectid --zone=us-central1-a --tunnel-through-iap

Führen Sie einen Curl-Befehl für die Cosmo-IP-Adresse aus, die Sie zuvor in der Anleitung ermittelt haben, und zwar von der Tiger-Instanz aus.

curl -v <cosmo's IP Address>

Beispiel:

user@tiger:~$ curl -v 192.168.20.2
*   Trying 192.168.20.2:80...
* Connected to 192.168.20.2 (192.168.20.2) port 80 (#0)
> GET / HTTP/1.1
> Host: 192.168.20.2
> User-Agent: curl/7.74.0
> Accept: */*
> 
* Mark bundle as not supporting multiuse
< HTTP/1.1 200 OK
< Date: Fri, 09 Jun 2023 03:49:42 GMT
< Server: Apache/2.4.56 (Debian)
< Last-Modified: Fri, 09 Jun 2023 03:28:37 GMT
< ETag: "27-5fda9f6ea060e"
< Accept-Ranges: bytes
< Content-Length: 39
< Content-Type: text/html
< 
Welcome to cosmo's backend server !!

Glückwunsch! Sie haben die Verbindung vom Producer-VPC zum Backend-VPC erfolgreich mit einem curl-Befehl getestet.

17. Bereinigen

Löschen Sie die Komponenten der Anleitung in Cloud Shell.

gcloud compute instances delete cosmo --zone=us-central1-a --quiet

gcloud compute instances delete rabbit --zone=us-central1-a --quiet

gcloud compute instances delete fox --zone=us-central1-a --quiet

gcloud compute instances delete tiger --zone=us-central1-a --quiet

gcloud compute network-attachments delete psc-network-attachment --region=us-central1 --quiet

gcloud compute firewall-rules delete allow-ingress-to-cosmo allow-tiger-ingress ilb-health-checks ssh-iap-consumer   ssh-iap-producer --quiet

gcloud beta compute routes delete producer-to-cosmo-subnet-1 --quiet 

gcloud compute forwarding-rules delete psc-ilb --region=us-central1 --quiet
gcloud compute backend-services delete psc-interface-backend --region=us-central1 --quiet
gcloud compute instance-groups unmanaged delete psc-interface-instances-ig --zone=us-central1-a --quiet
gcloud compute health-checks delete hc-http-80 --quiet
gcloud compute networks subnets delete cosmo-subnet-1 prod-subnet prod-subnet-2 prod-subnet-3 intf-subnet --region=us-central1 --quiet

gcloud compute routers delete cloud-router-for-nat --region=us-central1 --quiet

gcloud compute routers delete cloud-router-for-nat-producer --region=us-central1 --quiet

gcloud compute networks delete consumer-vpc --quiet

gcloud compute networks delete producer-vpc --quiet

gcloud compute networks delete backend-vpc --quiet

18. Glückwunsch

Sie haben eine Private Service Connect-Schnittstelle erfolgreich konfiguriert und validiert und die Verbindung zwischen Nutzer und Ersteller über VPC-Peering validiert.

Sie haben die Nutzerinfrastruktur erstellt und einen Netzwerkanhang hinzugefügt, der es dem Produzenten ermöglichte, eine VM mit mehreren NICs zu erstellen, um die Kommunikation zwischen Nutzer und Produzent zu ermöglichen. Sie haben gelernt, wie die PSC-Schnittstelle verwendet werden kann, um über VPC-Peering mit 1P-/3P-Diensten zu kommunizieren. Dazu werden ein interner Load-Balancer und eine statische Route in der VPC des Erstellers verwendet.

Cosmopup findet Tutorials toll!!

e6d3675ca7c6911f.jpeg

Nächste Schritte

Hier findest du einige Tutorials:

Weitere Informationen und Videos

Referenzdokumente