Verwaltete Dienste der Private Service Connect-Schnittstelle

1. Einführung

Eine Private Service Connect-Schnittstelle ist eine Ressource, mit der ein Ersteller-VPC-Netzwerk (Virtual Private Cloud) 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 Nutzersubnetz zu, das im Netzwerkanhang angegeben ist. 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 wesentliche Unterschiede auf:

  • Mit einem Netzwerkanhang kann ein Produzentennetzwerk Verbindungen zu einem Nutzernetzwerk initiieren (ausgehender Traffic eines verwalteten Dienstes), während ein Nutzernetzwerk über einen Endpunkt Verbindungen zu einem Produzentennetzwerk initiieren kann (eingehender Traffic eines verwalteten Dienstes).
  • Private Service Connect-Schnittstellenverbindungen sind transitiv. Das bedeutet, dass ein Produzentennetzwerk mit anderen Netzwerken kommunizieren kann, die mit dem Nutzernetzwerk verbunden sind.

Aufgaben

Sie erstellen einen einzelnen psc-network-attachment in der Nutzer-VPC. Dadurch entstehen zwei PSC-Schnittstellen als Back-Ends für den internen L4-Load-Balancer. Der Tiger des Producer sendet im Backend-VPC-Netzwerk einen curl-Befehl an Cosmo. In der VPC des Producers erstellen Sie eine statische Route zum Zieltraffic 192.168.20.0/28 als nächsten Hop als internen Load-Balancer, der das Back-End und nachfolgende PSC-Schnittstellen nutzt, um Traffic an Cosmo weiterzuleiten. Eine Übersicht finden Sie in Abbildung 1.

Derselbe Ansatz kann mit von Google verwalteten Diensten verwendet werden, die per VPC-Peering mit der VPC des Kunden verbunden sind, wenn privater Dienstzugriff verwendet wird.

Abbildung 1

36dbc7f825a21cbd.png

Aufgaben in diesem Lab

  • So erstellen Sie einen Netzwerkanhang
  • Wie ein Ersteller einen Netzwerkanhang verwenden kann, um eine PSC-Schnittstelle als Back-Ends zu erstellen
  • Kommunikation vom Producer zum Nutzer mit einem internen Load-Balancer als nächsten Hop herstellen
  • Anleitung zum Zulassen des Zugriffs von der Produzenten-VM (Tiger) auf die Nutzer-VM (Cosmo) über VPC-Peering

Voraussetzungen

2. Hinweis

Projekt aktualisieren, um das Tutorial zu unterstützen

In dieser Anleitung wird mithilfe von $variables die Implementierung der gcloud-Konfiguration in Cloud Shell unterstützt.

Führen Sie in Cloud Shell die folgenden Schritte aus:

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

3. Nutzereinrichtung

Nutzer-VPC erstellen

Führen Sie in Cloud Shell die folgenden Schritte aus:

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

Subnetz des Private Service Connect-Netzwerkanhangs erstellen

Führen Sie in Cloud Shell die folgenden 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 die folgenden Schritte aus:

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

VPC-Subnetze für das Back-End erstellen

Führen Sie in Cloud Shell die folgenden Schritte aus:

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

Backend-VPC-Firewallregeln erstellen

Erstellen Sie in Cloud Shell eine Eingangsregel für Traffic vom Subnetz „psc-network-attachment“ an 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 der Anleitung wird Cloud NAT 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, müssen Sie eine Firewallregel erstellen, die:

  • Gilt für alle VM-Instanzen, die mit 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. Nutzer-VM-Instanzen erstellen

Erstellen Sie in Cloud Shell die Nutzer-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 eine Beschreibung 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 aus diesem Subnetz IP-Adressen zu. Das Subnetz muss sich in derselben Region wie der Netzwerkanhang befinden. Ein Netzwerkanhang muss sich in derselben Region wie der Producer-Dienst 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 den Netzwerkanhang in Cloud Shell auf.

gcloud compute network-attachments list

Netzwerkanhänge beschreiben

Beschreiben Sie in Cloud Shell den Netzwerkanhang.

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

Notieren Sie sich den psc-network-attachment-URI, der vom Producer beim Erstellen der Private Service Connect-Schnittstelle(n) 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 Nutzer- und Backend-VPC einrichten

Sie erstellen eine VPC-Peering-Verbindung zwischen der Nutzer- und der Back-End-VPC. Dadurch wird repliziert, wie Google zusätzlich zum organisationsübergreifenden Peering für Netzwerkverbindungen Verbindungen zu Kunden-VPCs für verwaltete Dienste herstellt. VPC-Peering muss von jeder VPC aus konfiguriert werden.

Nutzer-VPC-zu-Back-End-VPC-Peering

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

Führen Sie in Cloud Shell die folgenden 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 Back-End zum VPC-Nutzer-VPN erstellen

Führen Sie in Cloud Shell die folgenden 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 validieren

Prüfen Sie in Cloud Shell, ob sich das VPC-Peering im Status „Aktiv“ befindet und „Verbunden“ Bundesstaat.

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. Producer-Einrichtung

Producer-VPC erstellen

Führen Sie in Cloud Shell die folgenden 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 für den internen Load-Balancer.

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 der Anleitung wird Cloud NAT 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, müssen Sie eine Firewallregel erstellen, die:

  • Gilt für alle VM-Instanzen, die mit 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 Nutzer-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. Ersteller-Firewallregeln erstellen

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

Erstellen Sie in Cloud Shell die Producer-Firewallregel.

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 ein Ersteller-VPC-Netzwerk (Virtual Private Cloud) 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 Nutzersubnetz zu, das im Netzwerkanhang angegeben ist. Die Nutzer- und Erstellernetzwerke sind verbunden und können über interne IP-Adressen kommunizieren.

In dieser Anleitung erstellen Sie zwei Instanzen mit dem Netzwerkanhang für den privaten Dienst, der als Back-End für den internen Load-Balancer dient.

Erstellen Sie in Cloud Shell die Private Service Connect-Schnittstelle (rabbit) und fügen Sie die zuvor identifizierte psc-network-attachment UR aus der Beschreibungsausgabe 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 Cloud Shell die Private Service Connect-Schnittstelle (fox) und fügen Sie die zuvor identifizierte psc-network-attachment UR aus der Beschreibungsausgabe 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"

Multi-NIC-Validierung

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 verwendet das intf-Subnetz des Nutzers (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 nicht verwaltete Instanzgruppe erstellen

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

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, Back-End-Dienste, Weiterleitungsregel und Firewall

Erstellen Sie in Cloud Shell die Back-End-Systemdiagnose.

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

Back-End-Dienst in Cloud Shell erstellen

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-Schnittstelle(n) erstellen – rabbit

Konfigurieren Sie in der Instanz der PSC-Schnittstelle Linux-IP-Tabellen, um die Kommunikation des Erstellers mit den Subnetzen der Nutzer zu ermöglichen.

Namen des Gastbetriebssystems der Private Service Connect-Schnittstelle ermitteln

Zum Konfigurieren des Routings müssen Sie den Namen des Gastbetriebssystems Ihrer Private Service Connect-Schnittstelle kennen. Dieser unterscheidet sich vom Namen der Schnittstelle in Google Cloud.

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

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

Rufen Sie in Cloud Shell die IP-Adresse der Instanz „psc-interface“ 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 und speichern Sie in der Liste der Netzwerkschnittstellen den Schnittstellennamen, der der IP-Adresse Ihrer Private Service Connect-Schnittstelle zugeordnet ist, z. B. ens5 (vNIC1).

Zum Konfigurieren des Routings müssen Sie die IP-Adresse des Standardgateways Ihrer Private Service Connect-Schnittstelle kennen

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

Im Beispiel wird der Standard-gw 192.168.10.1 erstellt.

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 Nutzersubnetze hinzufügen

Sie müssen dem Standardgateway Ihrer Private Service Connect-Schnittstelle für jedes Nutzersubnetz, das eine Verbindung zu Ihrer Private Service Connect-Schnittstelle herstellt, eine Route hinzufügen. Dadurch wird sichergestellt, dass der für das Nutzernetzwerk gebundene Traffic von der Private Service Connect-Schnittstelle ausgeht.

Routingtabelle validieren

Validieren Sie die aktuellen Routen in Cloud Shell.

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

Routingtabelle validieren

Validieren 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

Validieren 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

Validieren 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 Instanz der PSC-Schnittstelle Linux-IP-Tabellen, um die Kommunikation des Erstellers mit den Subnetzen der Nutzer zu ermöglichen.

Namen des Gastbetriebssystems der Private Service Connect-Schnittstelle ermitteln

Zum Konfigurieren des Routings müssen Sie den Namen des Gastbetriebssystems Ihrer Private Service Connect-Schnittstelle kennen. Dieser unterscheidet sich vom Namen der Schnittstelle in Google Cloud.

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

Führen Sie in Cloud Shell die folgenden Schritte aus:

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

Melden Sie sich mit IAP in Cloud Shell 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 Instanz „psc-interface“ 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 und speichern Sie in der Liste der Netzwerkschnittstellen den Schnittstellennamen, der der IP-Adresse Ihrer Private Service Connect-Schnittstelle zugeordnet ist, z. B. ens5 (vNIC1).

Zum Konfigurieren des Routings müssen Sie die IP-Adresse des Standardgateways Ihrer Private Service Connect-Schnittstelle kennen

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

Im Beispiel wird der Standard-gw 192.168.10.1 erstellt.

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 Nutzersubnetze hinzufügen

Sie müssen dem Standardgateway Ihrer Private Service Connect-Schnittstelle für jedes Nutzersubnetz, das eine Verbindung zu Ihrer Private Service Connect-Schnittstelle herstellt, eine Route hinzufügen. Dadurch wird sichergestellt, dass der für das Nutzernetzwerk gebundene Traffic von der Private Service Connect-Schnittstelle ausgeht.

Routingtabelle validieren

Validieren Sie die aktuellen Routen in Cloud Shell.

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

Routingtabelle validieren

Validieren 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

Validieren 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

Validieren 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 Nutzersubnetz 192.168.20.0/28, dem nächsten Hop als internem Load-Balancer. Nach der Erstellung wird jedes Paket (innerhalb der Producer-VPC) für das Ziel 192.168.20.0/28 an den internen Load-Balancer weitergeleitet.

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

Führen Sie in Cloud Shell die folgenden 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 Producer-vpc-Routentabelle 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 zwischen Tiger und Cosmo validieren

Curl-Validierung

Bestätigen Sie, dass die Producer-VM-Instanz "tiger" mit der Nutzerinstanz "cosmo" kommunizieren kann, indem Sie einen curl-Befehl ausführen.

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

Führen Sie in Cloud Shell die folgenden Schritte aus:

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

Melden Sie sich mit IAP in Cloud Shell bei der Tigerinstanz an.

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

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

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-VCC zum Backend-VPC mit einem curl-Befehl validiert.

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 nun eine Private Service Connect-Schnittstelle konfiguriert und validiert sowie die Nutzer- und Producer-Konnektivität über VPC-Peering validiert.

Sie haben die Consumer-Infrastruktur erstellt und einen Netzwerkanhang hinzugefügt, mit dem der Producer eine Multi-NIC-VM erstellen konnte, um die Nutzer- und Producer-Kommunikation zu verbinden. 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 im VPC-Netzwerk des Erstellers verwendet.

Cosmopup findet die Anleitungen super!

e6d3675ca7c6911f.jpeg

Was liegt als Nächstes an?

Sehen Sie sich einige dieser Anleitungen an...

Weitere Informationen und Videos

Referenzdokumente