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. Es gibt dabei aber zwei wichtige Unterschiede:

  • 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-Netzwerkverbindung im Verbraucher-VPC, was zwei PSC-Schnittstellen als Back-Ends für den internen L4-Load Balancer zur Folge hat. Vom Ersteller-VPC sendet Tiger einen Curl an Cosmo im Backend-VPC. Im VPC des Produzenten erstellst du eine statische Route zum Ziel-Traffic 192.168.20.0/28 als nächsten Hop für den internen Load Balancer, der das Backend und die nachfolgenden PSC-Schnittstellen nutzt, um Traffic an Cosmo weiterzuleiten. Abbildung 1 bietet eine Übersicht.

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

Abbildung 1

36dbc7f825a21cbd.png

Aufgaben in diesem Lab

  • Netzwerkanhang erstellen
  • So können Produzenten mit einem Netzwerkanhang eine PSC-Schnittstelle als Backends erstellen
  • Kommunikation vom Producer zum Consumer mit ILB als Next Hop herstellen
  • Zugriff von der Producer-VM (Tiger) auf die Consumer-VM (Cosmo) über VPC-Peering zulassen

Voraussetzungen

2. Hinweis

Projekt für die Anleitung aktualisieren

In dieser Anleitung werden $-Variablen verwendet, um die Implementierung der gcloud-Konfiguration in Cloud Shell zu unterstützen.

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 für Verbraucher

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

VPC-Subnetze für das Backend 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

Erstellen Sie die Firewallregeln für das Backend-VPC.

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

In dieser Anleitung wird Cloud NAT für die Installation des Softwarepakets verwendet, da die VM-Instanz keine öffentliche IP-Adresse hat. Cloud NAT ermöglicht es VMs mit privaten IP-Adressen, auf das Internet zuzugreifen.

Erstellen Sie in Cloud Shell den Cloud Router.

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

Erstellen Sie in Cloud Shell das NAT-Gateway.

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. VM-Instanzen für Nutzer erstellen

Erstellen Sie in Cloud Shell die VM-Instanz „cosmo“ für den Nutzer.

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 eine Beschreibung der 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 ordnen einem Netzwerkanhang ein einzelnes Subnetz zu 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 in Cloud Shell den Netzwerkanhang.

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 in Cloud Shell die Netzwerkverbindung auf.

gcloud compute network-attachments list

Netzwerkanhänge beschreiben

Beschreiben Sie in Cloud Shell den Netzwerkanschluss.

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

Notieren Sie sich den URI des psc-network-attachments, der vom Ersteller beim Erstellen der Private Service Connect-Schnittstellen verwendet wird. Beispiel unten:

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 Verbraucher- und dem Backend-VPC herstellen

Sie erstellen eine VPC-Peering-Verbindung zwischen dem Verbraucher- und dem Backend-VPC. So wird nachgestellt, wie Google Verbindungen zu Kunden-VPCs für verwaltete Dienste sowie organisationsübergreifendes Peering für die Netzwerkkonnektivität herstellt. Das VPC-Peering muss in jeder VPC konfiguriert werden.

VPC-Peering zwischen Nutzer-VPC und 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 zum 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 des Erstellers

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

In dieser Anleitung wird Cloud NAT für die Installation des Softwarepakets verwendet, da die VM-Instanz keine öffentliche IP-Adresse hat. Cloud NAT ermöglicht es VMs mit privaten IP-Adressen, auf das Internet zuzugreifen.

Erstellen Sie in Cloud Shell den Cloud Router.

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

Erstellen Sie in Cloud Shell das NAT-Gateway.

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

VM-Instanzen für Produzenten erstellen

Erstellen Sie in Cloud Shell die VM-Instanz „tiger“ für den Nutzer.

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 den Eingang, 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 Produzenten.

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 der Anleitung erstellen Sie zwei Instanzen mit dem Private Service Connect-Netzwerkanhang, der das Backend für den internen Load Balancer ist.

Erstellen Sie in der Cloud Shell die Private Service Connect-Schnittstelle (rabbit) und fügen Sie den zuvor ermittelten psc-network-attachment-URI aus der Ausgabe der Beschreibung des Netzwerkanhangs 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 der Cloud Shell die Private Service Connect-Schnittstelle (fox) und fügen Sie den zuvor ermittelten psc-network-attachment-URI aus der Ausgabe der Beschreibung des Netzwerkanhangs 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 NICs

Prüfen Sie, ob die PSC-Schnittstelle mit der richtigen IP-Adresse konfiguriert ist. vNIC0 verwendet das Prod-Subnetz des Producers (10.20.1.0/28) und vNIC1 das Intf-Subnetz des Verbrauchers (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. Rabbit und Fox in eine nicht verwaltete Instanzgruppe einfügen

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

Erstellen Sie in Cloud Shell die nicht verwaltete Instanzgruppe.

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 Back-End-Systemdiagnose.

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

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

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

Weiterleitungsregel in Cloud Shell erstellen

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 Back-End-Systemdiagnosen 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-Schnittstellen erstellen – rabbit

Konfigurieren Sie über die PSC-Schnittstelleninstanz Linux-IP-Tabellen, um die Kommunikation zwischen Produzenten und Nutzersubnetzen zu ermöglichen.

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 unterscheidet sich vom Namen der Schnittstelle in Google Cloud.

Melden Sie sich in Cloud Shell mit IAP in 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 der 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

Beispiel für das Standard-Gateway 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 Kundensubnetze hinzufügen

Sie müssen für jedes Nutzersubnetz, das eine Verbindung zu Ihrer Private Service Connect-Schnittstelle herstellt, eine Route zum Standard-Gateway Ihrer Private Service Connect-Schnittstelle hinzufügen. So wird sichergestellt, dass Traffic, der an das Nutzernetzwerk gebunden 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 

Regeln für IP-Tabellen 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-Schnittstellen erstellen – fox

Konfigurieren Sie über die PSC-Schnittstelleninstanz Linux-IP-Tabellen, um die Kommunikation zwischen Produzenten und Nutzersubnetzen zu ermöglichen.

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 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 in 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 der 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

Beispiel für das Standard-Gateway 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 Kundensubnetze hinzufügen

Sie müssen für jedes Nutzersubnetz, das eine Verbindung zu Ihrer Private Service Connect-Schnittstelle herstellt, eine Route zum Standard-Gateway Ihrer Private Service Connect-Schnittstelle hinzufügen. So wird sichergestellt, dass Traffic, der an das Nutzernetzwerk gebunden 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

Regeln für IP-Tabellen 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 in Cloud Shell die IP-Tabellen.

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. Routentabelle aktualisieren

Erstellen Sie im Producer-VPC eine statische Route zum Verbrauchersubnetz 192.168.20.0/28 mit dem internen Load Balancer als nächsten Hop. Nach dem Erstellen werden alle Pakete (innerhalb des Producer-VPC) an das 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

Prüfen wir mit einem Curl-Befehl, ob die VM-Instanz „tiger“ des Erstellers mit der Instanz „cosmo“ des Nutzers kommunizieren kann.

Ö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-Vorgang über die IP-Adresse von Cosmo aus, die Sie zuvor in dieser Anleitung in der Instanz „tiger“ ermittelt haben.

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 mit einem Curl-Befehl überprüft.

17. Bereinigen

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

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 konfiguriert und validiert und die Verbindung zwischen Nutzer und Ersteller über VPC-Peering validiert.

Sie haben die Nutzerinfrastruktur erstellt und einen Netzwerkanhang hinzugefügt, mit dem der Produzent eine VM mit mehreren NICs erstellen konnte, 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, indem ein interner Load Balancer und eine statische Route im VPC des Erstellers verwendet werden.

Cosmopup findet Tutorials super!

e6d3675ca7c6911f.jpeg

Was liegt als Nächstes an?

Hier findest du einige Anleitungen:

Weitere Lesematerialien und Videos

Referenzdokumente