Używanie Private Service Connect do publikowania i używania usług

1. Wprowadzenie

Private Service Connect pozwala producentowi usług oferować prywatne usługi konsumentom usług. Usługa Private Service Connect zapewnia te korzyści:

  • Sieć VPC producenta usług może obsługiwać więcej niż 1 konsumenta usługi.
  • Każdy konsument łączy się ze zdefiniowanym przez siebie wewnętrznym adresem IP. Private Service Connect przeprowadza translację adresów sieciowych (NAT), aby kierować żądanie do producenta usługi.

45b90d50690dd111.png

Rysunek 2. Private Service Connect korzysta z punktów końcowych i przyłączy usług, aby umożliwić konsumentom usługi wysyłanie ruchu z sieci VPC konsumenta do usług w sieci VPC producenta usługi (kliknij, aby powiększyć).

Czego się nauczysz

  • Zalety Private Service Connect
  • Kluczowe pojęcia dla konsumentów usług
  • Najważniejsze pojęcia dla producentów usług
  • Tworzenie środowiska producenta
  • Udostępnianie usługi (środowisko producenta) za pomocą przyłącza usługi
  • Tworzenie środowiska konsumenta
  • Tworzenie reguły przekierowania w sieci konsumenta
  • Weryfikacja dostępu klienta TCP
  • Włącz & zweryfikuj protokół serwera proxy
  • Włącz kontrolę dostępu na podstawie zasad

Czego potrzebujesz

  • Wiedza na temat wewnętrznych systemów równoważenia obciążenia
  • Możliwość tworzenia środowisk VPC w 2 projektach

2. Zalety Private Service Connect

PSC zapewnia kilka korzyści w porównaniu ze stosowaniem połączeń równorzędnych VPC:

Lepsza kontrola nad przestrzenią prywatnych adresów IP

  • Jako konsument usługi masz kontrolę nad prywatnym adresem IP używanym do łączenia się z usługą zarządzaną, do której chcesz mieć dostęp.
  • Jako konsument usług nie musisz się martwić o rezerwowanie zakresów prywatnych adresów IP dla usług backendu używanych w Twojej sieci VPC. Wystarczy wybrać adres IP ze swojej podsieci, aby połączyć się z usługami producenta.
  • Jako producent usług możesz wdrożyć model wielu najemców, w którym Twoje środowisko VPC zawiera usługi obsługujące wiele środowisk VPC konsumenta. Konsumenci z nakładającymi się zakresami podsieci nie stanowią już problemu.
  • Jako dostawca usług możesz przeskalować swoją usługę na dowolną liczbę instancji maszyn wirtualnych bez konieczności kontaktowania się z klientem w celu uzyskania dodatkowych adresów IP.

Większe bezpieczeństwo i izolacja

  • Jako konsument usługi tylko Ty możesz zainicjować komunikację z producentem usługi. Takie połączenie jednokierunkowe drastycznie upraszcza konfigurację zapory sieciowej, ale również zmniejsza ryzyko związane z niepożądanym ruchem pochodzącym od producenta usługi.
  • Jako producent usług nie musisz zmieniać reguł zapory sieciowej na podstawie zakresów podsieci w sieci VPC konsumenta. Możesz po prostu utworzyć reguły zapory sieciowej dla zakresu adresów IP NAT skonfigurowanego dla Twojej usługi.

Lepsza skalowalność

  • PSC umożliwia wysoką skalowalność projektowania przez obsługę tysięcy konsumentów i pozwala producentom usług oferować wysoce skalowalne usługi obejmujące wielu najemców lub jednego najemcę.
  • Jako konsument usługi używający Private Service Connect możesz tworzyć zasoby zgodnie z wymaganiami w sieci VPC. Na skalę tego zjawiska nie ma wpływu liczba takich zasobów utworzonych w producenta VPC.

3. Kluczowe pojęcia dla konsumentów usług

punktów końcowych usługi Private Service Connect możesz używać do korzystania z usług spoza Twojej sieci VPC. Konsumenci usługi tworzą punkty końcowe Private Service Connect, które łączą się z usługą docelową.

Punkty końcowe

Punkty końcowe Private Service Connect umożliwiają łączenie się z usługą docelową. Punkty końcowe mają wewnętrzny adres IP w Twojej sieci VPC i opierają się na zasobie reguły przekierowania.

Wysyłasz ruch do punktu końcowego, który przekierowuje go do celów poza Twoją siecią VPC.

Cele

Punkty końcowe Private Service Connect mają lokalizację docelową, czyli usługę, z którą chcesz się połączyć:

  • Pakiet interfejsów API:
  • Wszystkie interfejsy API: większość interfejsów API Google
  • VPC-SC: interfejsy API obsługiwane przez Ustawienia usługi VPC
  • Opublikowana usługa w innej sieci VPC. Tą usługą może zarządzać Twoja organizacja lub inna firma.

Opublikowana usługa

Aby połączyć punkt końcowy z usługą producenta usługi, potrzebujesz przyłącza usługi dla usługi. Identyfikator URI przyłącza usługi ma ten format: projects/PROJEKT_USŁUGI/regions/REGION/serviceAttachments/NAZWA_USŁUGI

4. Najważniejsze pojęcia dla producentów usług

Aby udostępnić usługę klientom, musisz utworzyć co najmniej 1 podsieć, która będzie używana do translacji adresów sieciowych (NAT) konsumenta z adresów IP. Następnie możesz utworzyć przyłącze usługi odwołujące się do tych podsieci.

Podsieci Private Service Connect

Aby udostępnić usługę, producent usługi najpierw tworzy co najmniej 1 podsieć z przeznaczeniem Private Service Connect.

Gdy żądanie jest wysyłane z sieci VPC konsumenta, źródłowy adres IP konsumenta jest przekształcany przy użyciu source NAT (SNAT) na adres IP wybrany z jednej z podsieci Private Service Connect.

Jeśli chcesz zachować informacje o adresie IP połączenia konsumenta, zapoznaj się z sekcją Wyświetlanie informacji o połączeniu konsumenta.

Tych podsieci nie można używać na potrzeby zasobów takich jak instancje maszyn wirtualnych czy reguły przekierowania. Podsieci są używane wyłącznie do udostępniania adresów IP na potrzeby protokołu SNAT dla przychodzących połączeń konsumentów.

Podsieć Private Service Connect musi zawierać co najmniej 1 adres IP na każde 63 maszyny wirtualne,aby każda maszyna wirtualna konsumenta otrzymała 1024 krotki źródłowe na potrzeby translacji adresów sieciowych.

Minimalny rozmiar podsieci Private Service Connect to /24.

Przyłącza usługi

Producenci usług udostępniają swoją usługę za pomocą przyłącza usługi.

  • Aby udostępnić usługę, producent usługi tworzy przyłącze usługi odwołujące się do reguły przekierowania systemu równoważenia obciążenia w usłudze.
  • Aby uzyskać dostęp do usługi, konsument usługi tworzy punkt końcowy odwołujący się do przyłącza usługi.

Ustawienia połączeń

Podczas tworzenia usługi wybierasz sposób jej udostępniania. Możesz wybrać jedną z dwóch opcj:

  • Automatycznie akceptuj połączenia we wszystkich projektach – każdy konsument usługi może skonfigurować punkt końcowy i automatycznie połączyć się z usługą.
  • Akceptuj połączenia w wybranych projektach – konsumenci usługi konfigurują punkt końcowy tak, aby łączył się z usługą, a producent usługi akceptuje lub odrzuca żądania połączenia.

5. Środowisko testowe

Sieć konsumenta składa się ze statycznego adresu IP TCP używanego do wysyłania żądań do producenta usługi, a także przyłącza usługi docelowej, który jest mapowany na przyłącze usługi producenta (opublikowaną usługę).

Przyjrzyjmy się teraz sieci producentów. Zwróć uwagę, że sieć producentów nie ma mapowania na sieć konsumenta. Zamiast tego sieć producentów zawiera przyłącze usługi (opublikowaną usługę) używane przez konsumenta na potrzeby usług. Przyłącze usługi producenta w naszym module to wewnętrzny system równoważenia obciążenia warstwy 4 (reguła przekierowania producenta) zmapowany na usługę backendu obsługującą aplikację TCP.

Podsieć NAT i powiązane reguły zapory sieciowej umożliwiają komunikację z aplikacją producenta.

28b09284a99eb60b.png

Samodzielne konfigurowanie środowiska

  1. Zaloguj się w konsoli Google Cloud i utwórz nowy projekt lub wykorzystaj już istniejący. Jeśli nie masz jeszcze konta Gmail ani Google Workspace, musisz je utworzyć.

96a9c957bc475304.png

b9a10ebdf5b5a448.png

a1e3c01a38fa61c2.png

Zapamiętaj identyfikator projektu, unikalną nazwę we wszystkich projektach Google Cloud (powyższa nazwa jest już zajęta i nie będzie Ci odpowiadać). W dalszej części tego ćwiczenia w programie będzie ona określana jako PROJECT_ID.

  1. Następnie musisz włączyć płatności w Cloud Console, aby korzystać z zasobów Google Cloud.

Ukończenie tego ćwiczenia z programowania nie powinno kosztować zbyt wiele. Postępuj zgodnie z instrukcjami podanymi w sekcji „Czyszczenie” W tym samouczku znajdziesz wskazówki, jak wyłączyć zasoby, aby uniknąć naliczania opłat. Nowi użytkownicy Google Cloud mogą skorzystać z programu bezpłatnego okresu próbnego o wartości 300 USD.

Uruchamianie Cloud Shell

Google Cloud można obsługiwać zdalnie z laptopa, ale w ramach tego ćwiczenia z programowania wykorzystasz Google Cloud Shell – środowisko wiersza poleceń działające w Cloud.

W konsoli GCP kliknij ikonę Cloud Shell na górnym pasku narzędzi:

bce75f34b2c53987.png

Uzyskanie dostępu do środowiska i połączenie się z nim powinno zająć tylko kilka chwil. Po zakończeniu powinno pojawić się coś takiego:

f6ef2b5f13479f3a.png

Ta maszyna wirtualna ma wszystkie potrzebne narzędzia dla programistów. Zawiera stały katalog domowy o pojemności 5 GB i działa w Google Cloud, znacząco zwiększając wydajność sieci i uwierzytelnianie. Wszystkie zadania w tym module możesz wykonać w przeglądarce.

6. Zanim zaczniesz

Ćwiczenia z programowania wymagają 2 projektów, choć nie są one wymagane w przypadku PSC. Zwróć uwagę na odwołania do obsługi jednego lub wielu projektów.

Pojedynczy projekt – zaktualizuj projekt, aby obsługiwać sieć producenta i konsumenta

Sprawdź w Cloud Shell, czy identyfikator projektu jest skonfigurowany

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

Wiele projektów – zaktualizuj projekt, aby obsługiwać sieć producenta

Sprawdź w Cloud Shell, czy identyfikator projektu jest skonfigurowany

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

7. Utwórz sieć VPC producenta

Uwaga: w tej sekcji wykonaj aktualizacje konfiguracji w projekcie zawierającym usługę producenta

Sieć VPC

Z Cloud Shell

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

Utwórz podsieć

Z Cloud Shell

gcloud compute networks subnets create vpc-demo-us-west2 --project=$prodproject --range=10.0.2.0/24 --network=vpc-demo-producer --region=us-west2

Utwórz instancję Cloud NAT

Cloud NAT nie jest tą samą usługą NAT jak w PSC. Usługa Cloud NAT jest bezpośrednio używana do uzyskiwania dostępu do internetu w celu pobierania pakietów aplikacji.

Tworzenie routera Cloud Router

Z Cloud Shell

gcloud compute routers create crnatprod --network vpc-demo-producer --region us-west2

Tworzenie Cloud NAT

Z Cloud Shell

gcloud compute routers nats create cloudnatprod --router=crnatprod --auto-allocate-nat-external-ips --nat-all-subnet-ip-ranges --enable-logging --region us-west2

8. Tworzenie instancji obliczeniowych

W Cloud Shell utwórz instancję www-01

gcloud compute instances create www-01 \
    --zone=us-west2-a \
    --image-family=debian-9 \
    --image-project=debian-cloud \
    --subnet=vpc-demo-us-west2 --no-address \
    --metadata=startup-script='#! /bin/bash
apt-get update
apt-get install tcpdump -y
apt-get install apache2 -y
a2ensite default-ssl
apt-get install iperf3 -y
a2enmod ssl
vm_hostname="$(curl -H "Metadata-Flavor:Google" \
http://169.254.169.254/computeMetadata/v1/instance/name)"
filter="{print \$NF}"
vm_zone="$(curl -H "Metadata-Flavor:Google" \
http://169.254.169.254/computeMetadata/v1/instance/zone \
| awk -F/ "${filter}")"
echo "Page on $vm_hostname in $vm_zone" | \
tee /var/www/html/index.html
systemctl restart apache2
iperf3 -s -p 5050'

W Cloud Shell utwórz instancję www-02

gcloud compute instances create www-02 \
    --zone=us-west2-a \
    --image-family=debian-9 \
    --image-project=debian-cloud \
    --subnet=vpc-demo-us-west2 --no-address \
    --metadata=startup-script='#! /bin/bash
apt-get update
apt-get install tcpdump -y
apt-get install apache2 -y
a2ensite default-ssl
apt-get install iperf3 -y
a2enmod ssl
vm_hostname="$(curl -H "Metadata-Flavor:Google" \
http://169.254.169.254/computeMetadata/v1/instance/name)"
filter="{print \$NF}"
vm_zone="$(curl -H "Metadata-Flavor:Google" \
http://169.254.169.254/computeMetadata/v1/instance/zone \
| awk -F/ "${filter}")"
echo "Page on $vm_hostname in $vm_zone" | \
tee /var/www/html/index.html
systemctl restart apache2
iperf3 -s -p 5050'

9. Utwórz niezarządzaną grupę instancji

Utwórz niezarządzaną grupę instancji składającą się z ciągu www-01 & www-02

Z Cloud Shell

gcloud compute instance-groups unmanaged create vpc-demo-ig-www --zone=us-west2-a

gcloud compute instance-groups unmanaged add-instances vpc-demo-ig-www --zone=us-west2-a --instances=www-01,www-02

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

10. Tworzenie usług backendu TCP, reguł przekierowania i zapora sieciowa

Utwórz usługę backendu w Cloud Shell.

gcloud compute backend-services create vpc-demo-www-be-tcp --load-balancing-scheme=internal --protocol=tcp --region=us-west2 --health-checks=hc-http-80

gcloud compute backend-services add-backend vpc-demo-www-be-tcp --region=us-west2 --instance-group=vpc-demo-ig-www --instance-group-zone=us-west2-a

Utwórz regułę przekierowania w Cloud Shell

gcloud compute forwarding-rules create vpc-demo-www-ilb-tcp --region=us-west2 --load-balancing-scheme=internal --network=vpc-demo-producer --subnet=vpc-demo-us-west2 --address=10.0.2.10 --ip-protocol=TCP --ports=all --backend-service=vpc-demo-www-be-tcp --backend-service-region=us-west2

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

gcloud compute firewall-rules create vpc-demo-health-checks --allow tcp:80,tcp:443 --network vpc-demo-producer --source-ranges 130.211.0.0/22,35.191.0.0/16 --enable-logging

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.

Z Cloud Shell

gcloud compute firewall-rules create psclab-iap-prod --network vpc-demo-producer --allow tcp:22 --source-ranges=35.235.240.0/20 --enable-logging

11. Utwórz podsieć TCP NAT

Z Cloud Shell

gcloud compute networks subnets create vpc-demo-us-west2-psc-tcp --network=vpc-demo-producer --region=us-west2 --range=192.168.0.0/24 --purpose=private-service-connect

12. Tworzenie przyłącza usługi TCP i reguł zapory sieciowej

W Cloud Shell utwórz przyłącze usługi TCP

gcloud compute service-attachments create vpc-demo-psc-west2-tcp --region=us-west2 --producer-forwarding-rule=vpc-demo-www-ilb-tcp --connection-preference=ACCEPT_AUTOMATIC --nat-subnets=vpc-demo-us-west2-psc-tcp

Zweryfikuj przyłącze usługi TCP

gcloud compute service-attachments describe vpc-demo-psc-west2-tcp --region us-west2

W Cloud Shell utwórz regułę zapory sieciowej umożliwiającą dostęp do podsieci TCP NAT w backendzie wewnętrznego systemu równoważenia obciążenia

gcloud compute --project=$prodproject firewall-rules create vpc-demo-allowpsc-tcp --direction=INGRESS --priority=1000 --network=vpc-demo-producer --action=ALLOW --rules=all --source-ranges=192.168.0.0/24 --enable-logging

13. Utwórz sieć VPC klientów

Uwaga: w tej sekcji wykonaj aktualizacje konfiguracji w projekcie zawierającym Twoją usługę konsumenta

W tej sekcji środowisko VPC konsumenta zostało skonfigurowane w oddzielnym projekcie. Komunikacja między siecią konsumenta a siecią producenta odbywa się przez przyłącze usługi zdefiniowane w sieci konsumenta.

Sieć VPC

Ćwiczenia z programowania wymagają 2 projektów, choć nie są one wymagane w przypadku PSC. Zwróć uwagę na odwołania do obsługi jednego lub wielu projektów.

Pojedynczy projekt – zaktualizuj projekt, aby obsługiwać sieć producenta i konsumenta

Sprawdź w Cloud Shell, czy identyfikator projektu jest skonfigurowany

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

Wiele projektów – zaktualizuj projekt, aby obsługiwać konsumenta sieci

Sprawdź w Cloud Shell, czy identyfikator projektu jest skonfigurowany

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

Z Cloud Shell

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

Utwórz podsieć dla PSC

Z Cloud Shell

gcloud compute networks subnets create consumer-subnet --project=$consumerproject  --range=10.0.60.0/24 --network=vpc-demo-consumer --region=us-west2

Tworzenie statycznego adresu IP dla aplikacji TCP

Z Cloud Shell

gcloud compute addresses create vpc-consumer-psc-tcp --region=us-west2 --subnet=consumer-subnet --addresses 10.0.60.100

Tworzenie reguł zapory sieciowej

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.

Z Cloud Shell

gcloud compute firewall-rules create psclab-iap-consumer --network vpc-demo-consumer --allow tcp:22 --source-ranges=35.235.240.0/20 --enable-logging

Chociaż nie jest to wymagane przez PSC, utworzenie reguły zapory sieciowej dotyczącej ruchu wychodzącego w celu monitorowania ruchu PSC konsumenta do przyłącza usługi producentów

gcloud compute --project=$consumerproject firewall-rules create vpc-consumer-psc --direction=EGRESS --priority=1000 --network=vpc-demo-consumer --action=ALLOW --rules=all --destination-ranges=10.0.60.0/24 --enable-logging

Utwórz instancję Cloud NAT

Cloud NAT nie jest tą samą usługą NAT jak w PSC. Usługa Cloud NAT jest bezpośrednio używana do uzyskiwania dostępu do internetu w celu pobierania pakietów aplikacji

Tworzenie routera Cloud Router

Z Cloud Shell

gcloud compute routers create crnatconsumer --network vpc-demo-consumer --region us-west2

Tworzenie Cloud NAT

Z Cloud Shell

gcloud compute routers nats create cloudnatconsumer --router=crnatconsumer --auto-allocate-nat-external-ips --nat-all-subnet-ip-ranges --enable-logging --region us-west2

14. Utwórz maszynę wirtualną instancji testowej

Z Cloud Shell

gcloud compute instances create test-instance-1 \
    --zone=us-west2-a \
    --image-family=debian-9 \
    --image-project=debian-cloud \
    --subnet=consumer-subnet --no-address \
    --metadata=startup-script='#! /bin/bash
apt-get update
apt-get install iperf3 -y
apt-get install tcpdump -y'

15. Utwórz przyłącze usługi TCP

Z Cloud Shell

gcloud compute forwarding-rules create vpc-consumer-psc-fr-tcp --region=us-west2 --network=vpc-demo-consumer --address=vpc-consumer-psc-tcp --target-service-attachment=projects/$prodproject/regions/us-west2/serviceAttachments/vpc-demo-psc-west2-tcp

16. Weryfikacja

Będziemy używać poleceń CURL, TCPDUMP logów zapory sieciowej do weryfikacji komunikacji między klientem a producentem.

W projekcie klienta statyczne adresy IP służą do inicjowania komunikacji z producentem. Mapowanie statycznego adresu IP na regułę przekierowania klienta jest weryfikowane przez wykonanie tej składni.

Uwaga: w tej sekcji wykonaj aktualizacje konfiguracji w projekcie zawierającym Twoją usługę konsumenta

Zidentyfikuj regułę przekierowania TCP i statyczny adres IP w Cloud Shell sieci VPC klienta

gcloud compute forwarding-rules describe vpc-consumer-psc-fr-tcp --region us-west2

Dane wyjściowe:

IPAddress: 10.0.60.100
IPProtocol: TCP
creationTimestamp: '2021-07-14T13:34:23.359-07:00'
id: '2768158450402915488'
kind: compute#forwardingRule
labelFingerprint: 42WmSpB8rSM=
name: vpc-consumer-psc-fr-tcp
<snip>

17. Walidacja TCP

Uwaga: w tej sekcji wykonaj aktualizacje konfiguracji w projekcie zawierającym usługę producenta

Na podstawie nazwy „www-01” na kanale Producer Project wpisz nazwę „www-01”. &amp; „www-02” i uruchomić jedną sesję SSH na instancję.

6d0bb8c5cb115876.png

Z „www-01” wykonaj TCPDUMP, aby monitorować NAT

sudo tcpdump -i any net 192.168.0.0/16 -n

Z „www-02” wykonaj TCPDUMP, aby monitorować NAT

sudo tcpdump -i any net 192.168.0.0/16 -n

Uwaga: w tej sekcji wykonaj aktualizacje konfiguracji w projekcie zawierającym Twoją usługę konsumenta

Na poziomie Consumer Project wyszukaj „test-instance-1”. i rozpocząć 2 sesje.

Z „test-instance-1” sesja pierwsza: wykonanie TCPDUMP, aby monitorować konsumenta

sudo tcpdump -i any host 10.0.60.100 -n

Z „test-instance-1” sesja 2 przeprowadza weryfikację TCP

curl -v 10.0.60.100 

18. Obserwacje – klient

Z „test-instance-1” 2. sesja CURL zakończyła się powodzeniem i zwraca wartość 200 OK.

@test-instance-1:~$ curl -v 10.0.60.100 
* Rebuilt URL to: 10.0.60.100/
*   Trying 10.0.60.100...
* TCP_NODELAY set
* Connected to 10.0.60.100 (10.0.60.100) port 80 (#0)
> GET / HTTP/1.1
> Host: 10.0.60.100
> User-Agent: curl/7.52.1
> Accept: */*
> 
< HTTP/1.1 200 OK
< Date: Wed, 14 Jul 2021 21:20:22 GMT
< Server: Apache/2.4.25 (Debian)
< Last-Modified: Wed, 14 Jul 2021 20:09:09 GMT
< ETag: "1d-5c71aed5edabd"
< Accept-Ranges: bytes
< Content-Length: 29
< Content-Type: text/html
< 
Page on www-01 in us-west2-a
* Curl_http_done: called premature == 0
* Connection #0 to host 10.0.60.100 left intact

Z „test-instance-1” sesja pierwsza TCPDUMP identyfikuje instancję maszyny wirtualnej → TCP ze statycznym adresem IP komunikacja i odpowiedź

21:20:22.572052 IP 10.0.60.2.59432 > 10.0.60.100.80: Flags [P.], seq 1:76, ack 1, win 222, options [nop,nop,TS val 634554 ecr 998739], length 75: HTTP: GET / HTTP/1.1

21:20:22.572688 IP 10.0.60.100.80 > 10.0.60.2.59432: Flags [P.], seq 1:257, ack 76, win 220, options [nop,nop,TS val 998739 ecr 634554], length 256: HTTP: HTTP/1.1 200 OK

Logowanie zapory sieciowej

Za pomocą eksploratora logów zweryfikuj regułę zapory sieciowej „vpc-consumner-psc” przechwytuje przepływ między instancją maszyny wirtualnej a statycznym adresem IP

  1. W konsoli Cloud wybierz Identity Operations Logging → Eksplorator logów.
  2. W polu Zapytanie zaktualizuj poniższy wpis przy użyciu swojego projektu klienta i wybierz „Uruchom zapytanie”

logName:(projects/yourconsumerproject/logs/compute.googleapis.com%2Ffirewall) AND jsonPayload.rule_details.reference:("network:vpc-demo-consumer/firewall:vpc-consumer-psc")

  1. Wyniki zapytania zawierają następujące dane dla każdego dostarczonego zrzutu ekranu

b573c878a8d6d01f.png

  1. Rozwiń dziennik i znajdź widoczne poniżej dane wyjściowe. Zwróć uwagę na dest_ip: 10.0.60.100 to STATYCZNY adres IP TCP, a src_ip: 10.0.60.2 to adres IP instancji maszyny wirtualnej.

1b4f46b3e61f6f12.png

19. Obserwacje – producent

Z instancji backendowej „www-01” lub „www-02” obserwowana jest poniższa komunikacja między podsiecią TCP NAT a wewnętrznym systemem równoważenia obciążenia TCP.

21:20:22.572186 IP 192.168.0.2.1024 > 10.0.2.10.80: Flags [P.], seq 1:76, ack 1, win 222, options [nop,nop,TS val 634554 ecr 998739], length 75: HTTP: GET / HTTP/1.1

21:20:22.572679 IP 10.0.2.10.80 > 192.168.0.2.1024: Flags [P.], seq 1:257, ack 76, win 220, options [nop,nop,TS val 998739 ecr 634554], length 256: HTTP: HTTP/1.1 200 OK

20. Logowanie zapory sieciowej

Za pomocą eksploratora logów zweryfikuj regułę zapory sieciowej „vpc-demo-allowpsc-tcp” przechwytuje TCP NAT Przepływ wewnętrznego systemu równoważenia obciążenia TCP, wykonując te czynności:

  1. W konsoli Cloud wybierz Identity Operations Logging → Eksplorator logów.
  2. W polu Zapytanie uzupełnij poniższy wpis o swój projekt i wybierz „Uruchom zapytanie”

logName:(projects/yourprodproject/logs/compute.googleapis.com%2Ffirewall) AND jsonPayload.rule_details.reference:("network:vpc-demo-Produce/firewall:vpc-demo-allowpsc-tcp")

  1. Wyniki zapytania zawierają następujące dane dla każdego dostarczonego zrzutu ekranu

8ce6b0d17d76ad6d.png

  1. Rozwiń dziennik i znajdź widoczne poniżej dane wyjściowe. Zapisz wartość doc_ip TCP wewnętrznego systemu równoważenia obciążenia: 10.0.2.10 oraz zakres źródłowy TCP NAT (192.168.0.0/24) & odpowiedni atrybut src_ip: 192.168.0.2.

e157a7af8cb667e.png

21. Włącz protokół serwera proxy

Domyślnie Private Service Connect tłumaczy źródłowy adres IP konsumenta na adres w jednej z podsieci Private Service Connect w sieci VPC producenta usług. Jeśli zamiast tego chcesz wyświetlać pierwotny źródłowy adres IP konsumenta, możesz włączyć protokół PROXY. Jeśli włączony jest protokół PROXY, możesz uzyskać źródłowy adres IP klienta i identyfikator połączenia PSC z nagłówka protokołu ProXY.

e9d1c49971b10ed0.png

Odniesienie do dokumentacji

Usuń usługi opublikowane przez producentów

Uwaga: w tej sekcji wykonaj aktualizacje konfiguracji w projekcie zawierającym usługę producenta

Usuń przyłącza usługi TCP z Cloud Shell

gcloud compute service-attachments delete vpc-demo-psc-west2-tcp --region=us-west2 --quiet

Z Cloud Shell – sprawdź, czy przyłącza usługi zostały usunięte (0 elementów na liście)

gcloud compute service-attachments list

Utwórz przyłącze usługi TCP z włączonym protokołem proxy

gcloud compute service-attachments create vpc-demo-psc-west2-tcp --region=us-west2 \
--producer-forwarding-rule=vpc-demo-www-ilb-tcp \
--connection-preference=ACCEPT_AUTOMATIC \
--nat-subnets=vpc-demo-us-west2-psc-tcp \
--enable-proxy-protocol

Z Cloud Shell sprawdź, czy przyłącza usługi zostały utworzone z włączonym protokołem proxy (prawda)

gcloud compute service-attachments describe vpc-demo-psc-west2-tcp --region=us-west2 | grep -i enableProxyProtocol:

Uwaga: w tej sekcji wykonaj aktualizacje konfiguracji w projekcie zawierającym Twoją usługę konsumenta

Usuń reguły przekierowania TCP z Cloud Shell

gcloud compute forwarding-rules delete vpc-consumer-psc-fr-tcp --region=us-west2 --quiet

Utwórz ponownie reguły przekierowania TCP, aby powiązać je z utworzonym wcześniej przyłączem usługi (producenta)

Utwórz regułę przekierowania TCP w Cloud Shell

gcloud compute forwarding-rules create vpc-consumer-psc-fr-tcp \
--region=us-west2 --network=vpc-demo-consumer \
--address=vpc-consumer-psc-tcp \
--target-service-attachment=projects/$prodproject/regions/us-west2/serviceAttachments/vpc-demo-psc-west2-tcp

Weryfikacja protokołu proxy

Uwaga: w tej sekcji wykonaj aktualizacje konfiguracji w projekcie zawierającym usługę producenta

Na podstawie nazwy „www-01” na kanale Producer Project wpisz nazwę „www-01”. &amp; „www-02” i uruchamiać jedną sesję na instancję.

6d0bb8c5cb115876.png

Z „www-01” wykonaj TCPDUMP, aby monitorować NAT

sudo tcpdump -nnvvXSs 1514 net 192.168.0.0/16

Z „www-02” wykonaj TCPDUMP, aby monitorować NAT

sudo tcpdump -nnvvXSs 1514 net 192.168.0.0/16

Uwaga: w tej sekcji wykonaj aktualizacje konfiguracji w projekcie zawierającym Twoją usługę konsumenta

Na poziomie Consumer Project wyszukaj „test-instance-1”. i uruchomić jedną sesję

Z „test-instance-1” sesja wykonywania zwijania

curl 10.0.60.100 

Obserwacje – klient

Pamiętaj, że jeśli protokół PROXY w wersji 2 jest włączony, ale aplikacja nie jest na nim skonfigurowana, przy nawiązywaniu połączenia z klienta zgodnie z poniższym przykładem zobaczysz komunikat o błędzie. W celu umieszczenia dodatkowego nagłówka serwera proxy v2 wymagane są aktualizacje serwera Apache nie są omówione w tym ćwiczeniu.

Z „test-instance-1” sesja CURL wygeneruje spodziewanych 400 żądań nieprawidłowych, mimo że zapytanie backendu zakończy się powodzeniem.

@test-instance-1:~$ curl 10.0.60.100 
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>400 Bad Request</title>
</head><body>
<h1>Bad Request</h1>
<p>Your browser sent a request that this server could not understand.<br />
</p>
<hr>
<address>Apache/2.4.25 (Debian) Server at www-02.c.deepakmichaelprod.internal Port 80</address>

Obserwacje – klient

Z instancji backendowej „www-01” lub „www-02” poniższa komunikacja między podsiecią TCP NAT a wewnętrznym systemem równoważenia obciążenia TCP z użyciem protokołu serwera proxy osadzonego w przechwytywaniu jest obserwowana.

W większości przypadków trzeci pakiet w tcpdump zawiera odpowiednie elementy informacyjne o protokole serwera proxy (IE). Opcjonalnie wskaż pakiet o długości 39 bajtów, który zawiera protokół serwera proxy IE.

192.168.0.3.1025 > 10.0.2.10.80: Flags [P.], cksum 0xb617 (correct), seq 2729454396:2729454435, ack 1311105819, win 28160, length 39: HTTP
        0x0000:  4500 004f 0000 4000 4006 6df4 c0a8 0003  E..O..@.@.m.....
        0x0010:  0a00 020a 0401 0050 a2b0 2b3c 4e25 e31b  .......P..+<N%..
        0x0020:  5018 6e00 b617 0000 0d0a 0d0a 000d 0a51  P.n............Q
        0x0030:  5549 540a 2111 0017 0a00 3c02 0a00 3c64  UIT.!.....<...<d
        0x0040:  8138 0050 e000 0800 9b34 d70a 003c 64    .8.P.....4...<d

Zidentyfikuj podpis protokołu PROXY: 0d0a0d0a000d0a515549540a podczas przechwytywania pakietów

Dzięki identyfikacji podpisu protokołu PROXY można go podzielić i zdekodować w następujący sposób:

Podpis protokołu PROXY: 0d0a0d0a000d0a515549540a

Inne pola protokołu PROXY: 21 11 00 17

Adresy IP i porty: 0a003c02 0a003c64 8138 0050

Typ TLV: e0

Długość TLV: 00 08

Identyfikator połączenia psc: 009b34d70a003c64

Kod szesnastkowy

Dziesiętne / IP

Podpis protokołu PROXY

0d0a0d0a000d0a515549540a

Wersja, Protokół, Długość

21 11 0017

Adres IP Src

0a003c02

10.0.60.2

Doc. adres IP

0a003c64

10.0.60.100

Port Src

8138

33080

Port DS

0050

80

Typ TLV (PP2_TYPE_GCP)

e0

Długość TLV

0008

pscConnectionId

00004dde290a003c64

43686719580552292

Parametr pscConnectionId można też zweryfikować, opisując regułę przekierowania klienta tak, jak poniżej, i upewniając się, że jest ona zgodna:

Uwaga: w tej sekcji wykonaj aktualizacje konfiguracji w projekcie zawierającym Twoją usługę konsumenta

Opis reguł przekierowania TCP w Cloud Shell

gcloud compute forwarding-rules describe vpc-consumer-psc-fr-tcp --region=us-west2

Dane wyjściowe opisujące identyfikator pscConnectionID

$ gcloud compute forwarding-rules describe vpc-consumer-psc-fr-tcp --region=us-west2
IPAddress: 10.0.60.100
IPProtocol: TCP
creationTimestamp: '2021-07-14T16:50:31.766-07:00'
id: '4443494505307621032'
kind: compute#forwardingRule
labelFingerprint: 42WmSpB8rSM=
name: vpc-consumer-psc-fr-tcp
network: https://www.googleapis.com/compute/v1/projects/deepakmichaeldev/global/networks/vpc-demo-consumer
networkTier: PREMIUM
pscConnectionId: '43686719580552292'
pscConnectionStatus: ACCEPTED

22. Zasada połączenia

W przypadku opublikowanej usługi możesz przełączać się między automatyczną a jawną akceptacją projektu.

Zmiana akceptacji automatycznej na jawną nie ma wpływu na punkty końcowe konsumenta, które połączyły się z usługą przed tą zmianą. Istniejące punkty końcowe konsumenta mogą łączyć się z opublikowaną usługą, dopóki przyłącze usługi nie zostanie usunięte. Nowe punkty końcowe konsumenta muszą zostać zaakceptowane, zanim będą mogły połączyć się z usługą. Więcej informacji znajdziesz w artykule Zarządzanie prośbami o dostęp do opublikowanej usługi.

W tej części modułu zmodyfikujesz zasadę połączenia producenta, tak aby jawnie zatwierdziła przyłącze usługi konsumenta.

Uwaga: w tej sekcji wykonaj aktualizacje konfiguracji w projekcie zawierającym usługę producenta

W Cloud Shell usługi Producer zmień zasadę preferencji połączenia z opcji „Akceptuję automatycznie” na akceptuj ręcznie.

gcloud compute service-attachments update vpc-demo-psc-west2-tcp --region=us-west2 --connection-preference ACCEPT_MANUAL

Zidentyfikuj stan punktu końcowego, wybierając kolejno Usługi sieciowe → Private Service Connect → Opublikowane usługi → vpc-demo-psc-west2-tcp → Połączone projekty

e1d90d1563e10731.png

Uwaga: projekt klienta został zmieniony na „Oczekujący” w sekcji Połączone projekty.

Zaakceptuj projekt konsumentów, wykonując w Cloud Shell to polecenie; pamiętaj o dodaniu odpowiedniej nazwy projektu

gcloud compute service-attachments update vpc-demo-psc-west2-tcp --region=us-west2 --consumer-accept-list $consumerproject=20

Zidentyfikuj stan punktu końcowego, wybierając kolejno Usługi sieciowe → Private Service Connect → Opublikowane usługi → vpc-demo-psc-west2-tcp → Połączone projekty

35cba9ac640594a2.png

Uwaga: projekt konsumenta został zmieniony na „Zaakceptowano” w sekcji Połączone projekty.

23. Procedura czyszczenia

Kroki czyszczenia sieci producenta

Uwaga: w tej sekcji wykonaj aktualizacje konfiguracji w projekcie zawierającym usługę producenta

Z pojedynczej powłoki Cloud Shell w terminalu projektu Producer, usuń komponenty modułu

gcloud compute routers nats delete cloudnatprod --router=crnatprod --region=us-west2 --quiet

gcloud compute routers delete crnatprod --region=us-west2 --quiet

gcloud compute instances delete www-01 --zone=us-west2-a --quiet

gcloud compute instances delete www-02 --zone=us-west2-a --quiet

gcloud compute service-attachments delete vpc-demo-psc-west2-tcp --region=us-west2 --quiet

gcloud compute forwarding-rules delete vpc-demo-www-ilb-tcp --region=us-west2 --quiet

gcloud compute backend-services delete vpc-demo-www-be-tcp --region=us-west2 --quiet

gcloud compute instance-groups unmanaged delete vpc-demo-ig-www --zone=us-west2-a --quiet

gcloud compute health-checks delete hc-http-80 --quiet

gcloud compute firewall-rules delete vpc-demo-allowpsc-tcp --quiet

gcloud compute firewall-rules delete vpc-demo-health-checks --quiet

gcloud compute firewall-rules delete psclab-iap-prod --quiet

gcloud compute networks subnets delete vpc-demo-us-west2 --region=us-west2 --quiet

gcloud compute networks subnets delete vpc-demo-us-west2-psc-tcp --region=us-west2 --quiet

gcloud compute networks delete vpc-demo-producer --quiet

Uwaga: w tej sekcji wykonaj aktualizacje konfiguracji w projekcie zawierającym Twoją usługę konsumenta

Kroki czyszczenia sieci klienta

Z pojedynczej powłoki Cloud Shell w terminalu projektu Producer, usuń komponenty modułu

gcloud compute routers nats delete cloudnatconsumer --router=crnatconsumer --region=us-west2 --quiet

gcloud compute routers delete crnatconsumer --region=us-west2 --quiet

gcloud compute instances delete test-instance-1 --zone=us-west2-a --quiet

gcloud compute forwarding-rules delete vpc-consumer-psc-fr-tcp --region=us-west2 --quiet

gcloud compute addresses delete vpc-consumer-psc-tcp --region=us-west2 --quiet

gcloud compute firewall-rules delete psclab-iap-consumer --quiet

gcloud compute networks subnets delete consumer-subnet --region=us-west2 --quiet

gcloud compute firewall-rules delete vpc-consumer-psc --quiet

gcloud compute networks delete vpc-demo-consumer --quiet

24. Gratulacje!

Gratulujemy ukończenia ćwiczeń z programowania.

Omówione zagadnienia

  • Zalety Private Service Connect
  • Kluczowe pojęcia dla konsumentów usług
  • Najważniejsze pojęcia dla producentów usług
  • Tworzenie środowiska producenta
  • Udostępnianie usługi (środowisko producenta) za pomocą przyłącza usługi
  • Tworzenie środowiska konsumenta
  • Tworzenie reguły przekierowania w sieci konsumenta
  • Weryfikacja dostępu klienta TCP
  • Włącz & zweryfikuj protokół serwera proxy
  • Włącz kontrolę dostępu na podstawie zasad