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.
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.
Samodzielne konfigurowanie środowiska
- 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ć.
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
.
- 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:
Uzyskanie dostępu do środowiska i połączenie się z nim powinno zająć tylko kilka chwil. Po zakończeniu powinno pojawić się coś takiego:
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”. & „www-02” i uruchomić jedną sesję SSH na instancję.
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
- W konsoli Cloud wybierz Identity Operations Logging → Eksplorator logów.
- 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")
- Wyniki zapytania zawierają następujące dane dla każdego dostarczonego zrzutu ekranu
- 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.
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:
- W konsoli Cloud wybierz Identity Operations Logging → Eksplorator logów.
- 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")
- Wyniki zapytania zawierają następujące dane dla każdego dostarczonego zrzutu ekranu
- 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.
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.
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”. & „www-02” i uruchamiać jedną sesję na instancję.
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 |
| ||
Wersja, Protokół, Długość |
| ||
Adres IP Src |
|
| |
Doc. adres IP |
|
| |
Port Src |
|
| |
Port DS |
|
| |
Typ TLV (PP2_TYPE_GCP) |
| ||
Długość TLV |
| ||
pscConnectionId |
|
|
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
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
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