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
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
- Google Cloud-Projekt
- IAM-Berechtigungen
- Compute-Netzwerkadministrator (roles/compute.networkAdmin)
- Compute-Instanzadministrator (roles/compute.instanceAdmin)
- Compute-Sicherheitsadministrator (roles/compute.securityAdmin)
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!
Was liegt als Nächstes an?
Hier findest du einige Anleitungen:
- Private Service Connect zum Veröffentlichen und Nutzen von Diensten mit GKE verwenden
- Private Service Connect zum Veröffentlichen und Nutzen von Diensten verwenden
- Über Private Service Connect und einen internen TCP-Proxy-Load Balancer eine Verbindung zu On-Premise-Diensten über Hybridnetzwerke herstellen
Weitere Lesematerialien und Videos
- Private Service Connect – Übersicht
- Was ist Private Service Connect?
- Unterstützte Load Balancer-Typen