Usługi zarządzane interfejsu Private Service Connect

1. Wprowadzenie

Interfejs usługi Private Service Connect to zasób, który umożliwia sieci prywatnego środowiska wirtualnego w chmurze (VPC) producenta inicjowania połączeń z różnymi miejscami docelowymi w sieci VPC konsumenta. Sieci producenta i konsumenta mogą znajdować się w różnych projektach i organizacjach.

Jeśli przyłącze sieci akceptuje połączenie z interfejsu Private Service Connect, Google Cloud przydzieli interfejsowi adres IP z podsieci klienta określonej przez przyłącze sieci. Sieci klienta i producenta są połączone i mogą komunikować się za pomocą wewnętrznych adresów IP.

Połączenie między przyłączem sieci a interfejsem Private Service Connect jest podobne do połączenia między punktem końcowym Private Service Connect a przyłączem usługi, ale ma 2 kluczowe różnice:

  • Przyłącze sieci pozwala sieci producenta inicjować połączenia z siecią konsumenta (ruch wychodzący usługi zarządzanej), natomiast punkt końcowy umożliwia sieci konsumenta inicjowanie połączeń z siecią producenta (ruch przychodzący usługi zarządzanej).
  • Połączenie interfejsu Private Service Connect jest przechodni. Oznacza to, że sieć producenta może komunikować się z innymi sieciami połączonymi z siecią konsumenta.

Co utworzysz

Utworzysz pojedynczy przyłącze sieci PSC w środowisku VPC konsumenta, co spowoduje, że 2 interfejsy PSC będą backendami wewnętrznego systemu równoważenia obciążenia L4. Tygrys VPC producenta wysyła curl do cosmo w backendzie VPC. W sieci VPC producenta utworzysz statyczną trasę do ruchu docelowego 192.168.20.0/28 następnego przeskoku jako wewnętrzny system równoważenia obciążenia, który będzie wykorzystywać backend i kolejne interfejsy PSC do kierowania ruchu do cosmo. Szczegółowe informacje na ten temat można znaleźć na Rysunku 1.

To samo podejście można zastosować w przypadku usług zarządzanych przez Google, które są połączone równorzędnie z siecią VPC klienta podczas korzystania z prywatnego dostępu do usług.

Rysunek 1.

36dbc7f825a21cbd.png

Czego się nauczysz

  • Jak utworzyć przyłącze sieci
  • Jak producent może wykorzystać przyłącze sieci do utworzenia interfejsu PSC jako backendów
  • Jak nawiązać komunikację między producentem a konsumentem przy użyciu wewnętrznego systemu równoważenia obciążenia jako następnego przeskoku
  • Jak zezwolić na dostęp z maszyny wirtualnej producenta (Tiger) do maszyny wirtualnej konsumenta (cosmo) przez połączenie równorzędne VPC

Czego potrzebujesz

2. Zanim zaczniesz

Aktualizowanie projektu na potrzeby samouczka

W tym samouczku używamy zmiennych $variables, które ułatwiają implementację konfiguracji gcloud w Cloud Shell.

W Cloud Shell wykonaj te czynności:

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

3. Konfiguracja dla klientów indywidualnych

Utwórz środowisko VPC dla klientów indywidualnych

W Cloud Shell wykonaj te czynności:

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

Tworzenie podsieci przyłącza sieci Private Service Connect

W Cloud Shell wykonaj te czynności:

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

Tworzenie backendu VPC

W Cloud Shell wykonaj te czynności:

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

Tworzenie podsieci VPC backendu

W Cloud Shell wykonaj te czynności:

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

Tworzenie reguł zapory sieciowej backendu VPC

Utwórz w Cloud Shell regułę ruchu przychodzącego dla ruchu z podsieci psc-network-attachment do 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

Konfiguracja Cloud Router i NAT

W samouczku do instalacji pakietu oprogramowania używana jest usługa Cloud NAT, ponieważ instancja maszyny wirtualnej nie ma publicznego adresu IP. Cloud NAT umożliwia maszynom wirtualnym z prywatnymi adresami IP dostęp do internetu.

Utwórz router Cloud Router w Cloud Shell.

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

Utwórz w Cloud Shell bramę NAT.

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. Włączanie IAP

Aby umożliwić IAP nawiązywanie połączeń z maszynami wirtualnymi, utwórz regułę zapory sieciowej, która:

  • Dotyczy wszystkich instancji maszyn wirtualnych, które mają być dostępne za pomocą IAP.
  • Zezwala na ruch przychodzący z zakresu adresów IP 35.235.240.0/20. Ten zakres zawiera wszystkie adresy IP używane przez IAP do przekierowywania TCP.

Utwórz w Cloud Shell regułę zapory sieciowej IAP.

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

5. Tworzenie instancji maszyn wirtualnych konsumenta

Utwórz w Cloud Shell instancję maszyny wirtualnej klienta 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"

Uzyskaj i przechowuj adresy IP instancji:

W Cloud Shell wykonaj opis dla instancji maszyny wirtualnej cosmo.

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

6. Przyłącze sieci Private Service Connect

Przyłącza sieci to zasoby regionalne, które reprezentują interfejs Private Service Connect po stronie klienta. Powiązasz jedną podsieć z przyłączem sieci, a producent przypisuje adresy IP do interfejsu Private Service Connect z tej podsieci. Podsieć musi być w tym samym regionie co przyłącze sieci. Przyłącze sieci musi być w tym samym regionie co usługa producenta.

Utwórz przyłącze sieci

Utwórz przyłącze sieci w Cloud Shell.

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

Wyświetl listę przyłączy sieci

Wyświetl w Cloud Shell przyłącze sieci.

gcloud compute network-attachments list

Opisz przyłącza sieci

Opisz przyłącze sieci w Cloud Shell.

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

Zanotuj identyfikator URI psc-network-attachment, który będzie używany przez producenta podczas tworzenia interfejsów Private Service Connect. Przykład poniżej:

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. Ustanowienie połączenia równorzędnego VPC między konsumentem a siecią VPC backendu

Utworzysz równorzędne połączenie VPC między konsumentem a siecią VPC backendu. Powiela to sposób, w jaki Google nawiązuje połączenia ze środowiskami VPC klienta w przypadku usług zarządzanych, a nie tylko połączenia równorzędne między organizacjami na potrzeby połączeń sieciowych. Połączenie równorzędne VPC należy skonfigurować z każdej sieci VPC.

Połączenie równorzędne VPC klienta z backendem

Utwórz połączenie równorzędne VPC z klienta konsumenta do serwera VPC backendu

W Cloud Shell wykonaj te czynności:

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

Utwórz połączenie równorzędne VPC z backendu do VPC dla klientów indywidualnych

W Cloud Shell wykonaj te czynności:

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

Sprawdź szczegóły stanu połączenia równorzędnego VPC

Sprawdź w Cloud Shell, czy połączenie równorzędne VPC jest w stanie „Aktywne” i „Połączono” stanu.

gcloud compute networks peerings list

Przykład:

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. Konfiguracja producenta

Tworzenie producenta VPC

W Cloud Shell wykonaj te czynności:

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

Tworzenie podsieci producenta

Utwórz w Cloud Shell podsieć używaną na potrzeby vNIC0 interfejsów psc

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

W Cloud Shell utwórz podsieć używaną na potrzeby instancji tygrys.

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

Utwórz w Cloud Shell podsieć używaną na potrzeby wewnętrznego systemu równoważenia obciążenia.

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

Konfiguracja Cloud Router i NAT

W samouczku do instalacji pakietu oprogramowania używana jest usługa Cloud NAT, ponieważ instancja maszyny wirtualnej nie ma publicznego adresu IP. Cloud NAT umożliwia maszynom wirtualnym z prywatnymi adresami IP dostęp do internetu.

Utwórz router Cloud Router w Cloud Shell.

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

Utwórz w Cloud Shell bramę NAT.

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

Włączanie IAP

Aby umożliwić IAP nawiązywanie połączeń z maszynami wirtualnymi, utwórz regułę zapory sieciowej, która:

  • Dotyczy wszystkich instancji maszyn wirtualnych, które mają być dostępne za pomocą IAP.
  • Zezwala na ruch przychodzący z zakresu adresów IP 35.235.240.0/20. Ten zakres zawiera wszystkie adresy IP używane przez IAP do przekierowywania TCP.

Utwórz w Cloud Shell regułę zapory sieciowej IAP.

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

Tworzenie instancji maszyn wirtualnych producenta

Utwórz w Cloud Shell instancję maszyny wirtualnej klienta o nazwie 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. Utwórz reguły zapory sieciowej producenta

W środowisku VPC producenta utwórz regułę zapory sieciowej dla ruchu przychodzącego, która umożliwia komunikację między prod-subnet-2 a wszystkimi instancjami w Producer-vpc.

Utwórz w Cloud Shell regułę zapory sieciowej producenta.

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. Tworzenie interfejsu Private Service Connect

Interfejs usługi Private Service Connect to zasób, który umożliwia sieci prywatnego środowiska wirtualnego w chmurze (VPC) producenta inicjowania połączeń z różnymi miejscami docelowymi w sieci VPC konsumenta. Sieci producenta i konsumenta mogą znajdować się w różnych projektach i organizacjach.

Jeśli przyłącze sieci akceptuje połączenie z interfejsu Private Service Connect, Google Cloud przydzieli interfejsowi adres IP z podsieci klienta określonej przez przyłącze sieci. Sieci klienta i producenta są połączone i mogą komunikować się za pomocą wewnętrznych adresów IP.

W tym samouczku utworzysz 2 instancje z przyłączem sieci Private Service Connect, które będzie backendem wewnętrznego systemu równoważenia obciążenia.

W Cloud Shell utwórz interfejs usługi Private Service Connect (królik) i wstaw wskazany wcześniej URCI z przyłącza sieciowego, który opisuje dane wyjściowe.

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"

W Cloud Shell utwórz interfejs Private Service Connect (fox) i wstaw wskazany wcześniej URCI z opisu danych wyjściowych przyłącza sieci.

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"

Weryfikacja wielu układów NIC

Sprawdź, czy interfejs PSC jest skonfigurowany za pomocą odpowiedniego adresu IP. vNIC0 używa prod-subnetu (10.20.1.0/28), a vNIC1 – podsieci intf-subnet klienta (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:

Przykład:

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. Utwórz i dodaj królików i lisów do niezarządzanej grupy instancji

W tej sekcji utworzysz niezarządzaną grupę instancji, która będzie składać się z instancji interfejsu PSC: królik i lis.

Utwórz niezarządzaną grupę instancji w Cloud Shell.

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

W Cloud Shell dodaj do grupy instancji instancje: lis i królik.

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

12. Utwórz kontrolę stanu TCP, usługi backendu, regułę przekierowania zapora sieciowa

Utwórz w Cloud Shell kontrolę stanu backendu.

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

Tworzenie usługi backendu w Cloud Shell

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

Tworzenie reguły przekierowania w Cloud Shell

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

W Cloud Shell utwórz regułę zapory sieciowej, aby włączyć kontrole stanu backendu

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. Tworzenie tabel adresów IP w systemie Linux dla interfejsów PSC – królik

Z poziomu instancji interfejsu PSC skonfiguruj tabele adresów IP Linuksa, aby umożliwić komunikację producenta z podsieciami klienta.

Znajdź nazwę systemu operacyjnego gościa w interfejsie Private Service Connect

Aby skonfigurować routing, musisz znać nazwę systemu operacyjnego gościa w interfejsie Private Service Connect, która różni się od nazwy interfejsu w Google Cloud.

Zaloguj się do maszyny wirtualnej psc-interface (rabbit) przy użyciu IAP w Cloud Shell.

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

Uzyskaj w Cloud Shell adres IP instancji psc-interface

ip a

Przykład:

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

Znajdowanie adresu IP bramy interfejsu PSC

Na liście interfejsów sieci znajdź i zapisz nazwę interfejsu powiązaną z adresem IP interfejsu Private Service Connect, na przykład ens5 (vNIC1)

Aby skonfigurować routing, musisz znać adres IP domyślnej bramy interfejsu Private Service Connect

W Cloud Shell użyjemy wartości 1, ponieważ interfejs PSC jest powiązany z vNIC1.

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

Przykład powoduje wygenerowanie domyślnego gw 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

Dodaj trasy dla podsieci klienta

Dla każdej podsieci klienta, która łączy się z interfejsem Private Service Connect, musisz dodać trasę do domyślnej bramy interfejsu Private Service Connect. Dzięki temu ruch wychodzący z sieci konsumenta będzie powiązany z interfejsem Private Service Connect.

Zweryfikuj tabelę tras

Sprawdź w Cloud Shell bieżące trasy.

ip route show

Przykład.

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 

W Cloud Shell dodaj trasę do podsieci cosmo-subnet-1

sudo ip route add 192.168.20.0/28 via 192.168.10.1 dev ens5

Zweryfikuj tabelę tras

Sprawdź w Cloud Shell zaktualizowane dodane trasy.

ip route show

Przykład.

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 

Tworzenie reguł dotyczących tabel adresów IP

Sprawdź w Cloud Shell bieżące tabele adresów IP.

sudo iptables -t nat -L -n -v

Przykład:

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  

Aktualizowanie tabel adresów IP w Cloud Shell

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

Sprawdź w Cloud Shell zaktualizowane tabele adresów IP.

sudo iptables -t nat -L -n -v

Przykład:

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. Tworzenie tabel adresów IP w systemie Linux dla interfejsów PSC – fox

Z poziomu instancji interfejsu PSC skonfiguruj tabele adresów IP Linuksa, aby umożliwić komunikację producenta z podsieciami klienta.

Znajdź nazwę systemu operacyjnego gościa w interfejsie Private Service Connect

Aby skonfigurować routing, musisz znać nazwę systemu operacyjnego gościa w interfejsie Private Service Connect, która różni się od nazwy interfejsu w Google Cloud.

Otwórz nową kartę Cloud Shell i zaktualizuj ustawienia projektu.

W Cloud Shell wykonaj te czynności:

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

Zaloguj się do maszyny wirtualnej psc-interface, fox, przy użyciu IAP w Cloud Shell.

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

Uzyskaj w Cloud Shell adres IP instancji psc-interface

ip a

Przykład:

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

Znajdowanie adresu IP bramy interfejsu PSC

Na liście interfejsów sieci znajdź i zapisz nazwę interfejsu powiązaną z adresem IP interfejsu Private Service Connect, na przykład ens5 (vNIC1)

Aby skonfigurować routing, musisz znać adres IP domyślnej bramy interfejsu Private Service Connect

W Cloud Shell użyjemy wartości 1, ponieważ interfejs PSC jest powiązany z vNIC1.

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

Przykład powoduje wygenerowanie domyślnego gw 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

Dodaj trasy dla podsieci klienta

Dla każdej podsieci klienta, która łączy się z interfejsem Private Service Connect, musisz dodać trasę do domyślnej bramy interfejsu Private Service Connect. Dzięki temu ruch wychodzący z sieci konsumenta będzie powiązany z interfejsem Private Service Connect.

Zweryfikuj tabelę tras

Sprawdź w Cloud Shell bieżące trasy.

ip route show

Przykład.

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 

W Cloud Shell dodaj trasę do podsieci cosmo-subnet-1

sudo ip route add 192.168.20.0/28 via 192.168.10.1 dev ens5

Zweryfikuj tabelę tras

Sprawdź w Cloud Shell zaktualizowane dodane trasy.

ip route show

Przykład.

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

Tworzenie reguł dotyczących tabel adresów IP

Sprawdź w Cloud Shell bieżące tabele adresów IP.

sudo iptables -t nat -L -n -v

Przykład:

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         

Aktualizowanie tabel adresów IP w Cloud Shell.

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

Sprawdź w Cloud Shell zaktualizowane tabele adresów IP.

sudo iptables -t nat -L -n -v

Przykład:

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. Zaktualizuj tabelę tras

W instancji Producer-vpc utwórz statyczną trasę do podsieci konsumentów 192.168.20.0/28, następny przeskok jako wewnętrzny system równoważenia obciążenia. Po utworzeniu każdy pakiet (w ramach instancji Producer-vpc) prowadzący do miejsca docelowego 192.168.20.0/28 będzie kierowany do wewnętrznego systemu równoważenia obciążenia.

Otwórz nową kartę Cloud Shell i zaktualizuj ustawienia projektu.

W Cloud Shell wykonaj te czynności:

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

W Cloud Shell zaktualizuj tabelę tras producenta-vpc przy użyciu trasy statycznej.

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. Sprawdź połączenie między tygrysem a kosmosem

Walidacja skrętu

Potwierdźmy, że maszyna wirtualna producenta – tygrys – może komunikować się z instancją konsumenta, cosmo, wykonując curl.

Otwórz nową kartę Cloud Shell i zaktualizuj ustawienia projektu.

W Cloud Shell wykonaj te czynności:

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

Zaloguj się do instancji tygrysa za pomocą IAP w Cloud Shell.

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

Wykonaj „curl” na podstawie adresu IP serwera cosmo wskazanego wcześniej w samouczku z instancji tygrysa.

curl -v <cosmo's IP Address>

Przykład:

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

Gratulacje! Udało Ci się zweryfikować połączenie między serwerem Producer-vpc a backendem-vpc wykonując polecenie curl.

17. Czyszczenie danych

Usuń z Cloud Shell komponenty samouczka.

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. Gratulacje

Gratulujemy! Udało Ci się skonfigurować i zweryfikować interfejs usługi Private Service Connect oraz zweryfikować połączenia konsumenta i producenta przez połączenie równorzędne VPC.

Udało Ci się utworzyć infrastrukturę konsumenta i dodać przyłącze sieci, które pozwoliło producentowi utworzyć maszynę wirtualną typu multi-Nic, aby pomostować komunikację między konsumentem a producentem. Wiesz już, jak używać interfejsu PSC do komunikowania się z usługami własnymi/3P przez połączenie równorzędne VPC przy użyciu wewnętrznego systemu równoważenia obciążenia i trasy statycznej w vpc producenta.

Cosmopup uważa, że samouczki są świetne!

e6d3675ca7c6911f.jpeg

Co dalej?

Przejrzyj te samouczki...

Więcej informacji filmy,

Dokumentacja