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
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
- Google Cloud-Projekt
- IAM-Berechtigungen
- Compute-Netzwerkadministrator (roles/compute.networkAdmin)
- Compute-Instanzadministrator (roles/compute.instanceAdmin)
- Compute-Sicherheitsadministrator (roles/compute.securityAdmin)
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!
Was liegt als Nächstes an?
Sehen Sie sich einige dieser Anleitungen an...
- Private Service Connect zum Veröffentlichen und Nutzen von Diensten mit GKE verwenden
- Private Service Connect zum Veröffentlichen und Nutzen von Diensten verwenden
- Mit Private Service Connect und einem internen TCP-Proxy-Load-Balancer über ein Hybridnetzwerk eine Verbindung zu lokalen Diensten herstellen
Weitere Informationen und Videos
- Private Service Connect – Übersicht
- Was ist Private Service Connect?
- Unterstützte Load-Balancer-Typen