1. Wprowadzenie
Dzięki usłudze Private Service Connect możesz tworzyć prywatne punkty końcowe przy użyciu globalnych wewnętrznych adresów IP w sieci VPC, aby uzyskiwać dostęp do interfejsów API Google. Tym wewnętrznym adresom IP możesz przypisywać nazwy DNS, używając nazw, takich jak storage-pscendpoint.p.googleapis.com czy bigtable-adsteam.p.googleapis.com. Zamiast wysyłać żądania do interfejsu API do punktów końcowych usługi publicznej, takich jak storage.googleapis.com, możesz wysyłać żądania do punktu końcowego usługi Private Service Connect, który jest prywatny i wewnętrzny w Twojej sieci VPC.
Te nazwy i adresy IP są wewnętrzne w Twojej sieci VPC i we wszystkich sieciach lokalnych połączonych z nią przy użyciu tuneli Cloud VPN lub przyłączy Cloud Interconnect (VLAN).
Możesz kontrolować, który ruch trafia do którego punktu końcowego, i zademonstrować, że ruch pozostaje w obrębie Google Cloud.
Czego się nauczysz
- Przypadki użycia Private Service Connect
- Wymagania związane z siecią
- Obsługiwane interfejsy API
- Utwórz punkt końcowy Private Service Connect
- Tworzenie zasobnika w Cloud Storage
- Tworzenie i aktualizowanie stref prywatnych Cloud DNS
- Utwórz program NAT GW, aby uzyskać dostęp do publicznej platformy googleapis
- Tworzenie i aktualizowanie pliku konfiguracji BOTO
- Wykonaj listę gsutil dla maszyny wirtualnej 1 rozpoznanej względem punktu końcowego usługi PSC
- Wykonuj listę gsutil w maszynie wirtualnej2 rozwiązaną na publicznej stronie googleapis.com
- Używanie Tcpdump do weryfikacji rozpoznawania nazw DNS
Czego potrzebujesz
- Znajomość edytora DNS, nano lub vi
2. Przypadki użycia Private Service Connect
W tej samej sieci VPC możesz utworzyć wiele punktów końcowych Private Service Connect. Nie ma limitu przepustowości do określonego punktu końcowego. Punkty końcowe usługi Private Service Connect używają globalnych wewnętrznych adresów IP, więc mogą być używane przez dowolne zasoby w Twojej sieci VPC.
W przypadku wielu punktów końcowych możesz określać różne ścieżki sieciowe za pomocą routera Cloud Router i reguł zapory sieciowej.
- Możesz utworzyć reguły zapory sieciowej, aby uniemożliwić niektórym maszynom wirtualnym dostęp do interfejsów API Google przez punkt końcowy usługi Private Service Connect, a jednocześnie umożliwić dostęp innym maszynom wirtualnym.
- Możesz mieć regułę zapory sieciowej w instancji maszyny wirtualnej, która będzie blokować cały ruch do internetu. ruch wysyłany do punktów końcowych usługi Private Service Connect nadal dociera do Google.
- Jeśli masz hosty lokalne połączone z siecią VPC przez tunel Cloud VPN lub przyłącze Cloud Interconnect (VLAN), możesz wysyłać niektóre żądania przez tunel lub sieć VLAN, jednocześnie wysyłając inne żądania przez internet publiczny. Ta konfiguracja umożliwia omijanie tunelu lub sieci VLAN w przypadku usług, takich jak Książki Google, które nie są obsługiwane przez prywatny dostęp do Google. Aby utworzyć tę konfigurację, utwórz punkt końcowy Private Service Connect, rozgłaszaj adresy IP punktów końcowych Private Service Connect przy użyciu niestandardowych reklam kierowanych na router Cloud Router i włącz zasady przekierowania ruchu przychodzącego Cloud DNS. Aplikacja może wysyłać niektóre żądania przez tunel Cloud VPN lub przyłącze Cloud Interconnect (VLAN) przy użyciu nazwy punktu końcowego Private Service Connect, a inne przez internet, używając domyślnej nazwy DNS.
- Jeśli łączysz sieć lokalną z siecią VPC przy użyciu wielu przyłączy Cloud Interconnect (VLAN), możesz wysyłać część ruchu z sieci lokalnej przez jedną sieć VLAN, a resztę do innych, jak pokazano na ilustracji 2. Dzięki temu możesz korzystać z własnych sieci obejmujących szeroki zasięg, a nie z sieci Google, i kontrolować przenoszenie danych zgodnie z wymaganiami geograficznymi. Aby utworzyć tę konfigurację, utwórz 2 punkty końcowe Private Service Connect. Utwórz niestandardową reklamę trasy dla pierwszego punktu końcowego w sesji BGP routera Cloud Router zarządzającego pierwszą siecią VLAN, a także utwórz inną reklamę trasy niestandardowej dla drugiego punktu końcowego w sesji BGP routera Cloud Router zarządzającego drugą siecią VLAN. Hosty lokalne skonfigurowane pod kątem użycia nazwy punktu końcowego Private Service Connect wysyłają ruch przez odpowiednie przyłącze Cloud Interconnect (VLAN).
- Możesz też używać wielu przyłączy Cloud Interconnect (VLAN) w aktywnej lub aktywnej topologii. Jeśli reklamujesz ten sam adres IP punktu końcowego Private Service Connect za pomocą reklam kierowanych na niestandardowe trasy dla sesji BGP w routerach Cloud Router zarządzających sieciami VLAN, pakiety wysyłane z systemów lokalnych do punktów końcowych są kierowane przez sieci VLAN za pomocą ECMP.
Rysunek 1. Konfigurując usługę Private Service Connect, routera Cloud Router i hosty lokalne, możesz kontrolować, które przyłącze Cloud Interconnect (VLAN) ma być używane do wysyłania ruchu do interfejsów API Google.
3. Wymagania związane z siecią
Aby można było korzystać z usługi Private Service Connect, instancje maszyn wirtualnych bez zewnętrznych adresów IP muszą mieć podstawowy interfejs w podsieci z włączonym prywatnym dostępem do Google.
Maszyna wirtualna z zewnętrznym adresem IP może uzyskiwać dostęp do interfejsów API i usług Google przy użyciu punktów końcowych usługi Private Service Connect niezależnie od tego, czy w jej podsieci jest włączony prywatny dostęp do Google. Połączenia z punktem końcowym Private Service Connect pozostają w sieci Google.
Punkty końcowe Private Service Connect są niedostępne z równorzędnych sieci VPC.
Obsługiwane interfejsy API
Podczas tworzenia punktu końcowego usługi Private Service Connect wybierasz pakiet interfejsów API, do których chcesz mieć dostęp: all-apis lub vpc-sc.
Pakiety interfejsów API dają dostęp do tych samych interfejsów API, które są dostępne przez adresy VIP prywatnego dostępu do Google.
- Pakiet all-apis zapewnia dostęp do tych samych interfejsów API co private.googleapis.com.
- Pakiet vpc-sc zapewnia dostęp do tych samych interfejsów API, co restricted.googleapis.com.
4. Topologia ćwiczeń z programowania przypadek użycia
Rysunek 1. Topologia ćwiczeń z programowania
Przypadek użycia ćwiczeń z programowania –
Do przenoszenia danych w chmurze nasz klient wymaga zarówno prywatnego (połączenia międzysieciowego), jak i publicznego dostępu do usługi googleapis. Aby spełnić wymagania naszych klientów, wdrożymy usługę Private Service Connect zawierającą unikalny adres /32, konfigurację BOTO i aktualizację rekordu DNS. Maszyna wirtualna 1 będzie korzystać z PSC, aby uzyskać dostęp do zasobnika Cloud Storage. VM2 będzie natomiast używać publicznych zakresów adresów IP googleapis.com w ramach NAT GW.
Wszystkie aspekty modułu są wdrażane w Google Cloud Platform, ale ten sam przypadek użycia ma zastosowanie do wdrożenia w chmurze hybrydowej wymagającej rozdziału ruchu.
5. Konfiguracja i wymagania
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
Włącz interfejsy API
Sprawdź w Cloud Shell, czy identyfikator projektu jest skonfigurowany
gcloud config list project gcloud config set project [YOUR-PROJECT-NAME] projectname=YOUR-PROJECT-NAME echo $projectname
Włącz wszystkie niezbędne usługi
gcloud services enable compute.googleapis.com gcloud services enable servicedirectory.googleapis.com gcloud services enable dns.googleapis.com
7. Utwórz sieć VPC
Sieć VPC
Z Cloud Shell
gcloud compute networks create psc-lab --subnet-mode custom
Utwórz podsieć
Z Cloud Shell
gcloud compute networks subnets create psclab-subnet \ --network psc-lab --range 10.0.0.0/24 --region us-central1 --enable-private-ip-google-access
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-ssh \ --network psc-lab --allow tcp:22 --source-ranges=35.235.240.0/20
Utwórz instancję Cloud NAT
Tworzenie routera Cloud Router
Z Cloud Shell
gcloud compute routers create crnat \ --network psc-lab \ --asn 65000 \ --region us-central1
Tworzenie Cloud NAT
Z Cloud Shell
gcloud compute routers nats create cloudnat \ --router=crnat \ --auto-allocate-nat-external-ips \ --nat-all-subnet-ip-ranges \ --enable-logging \ --region us-central1
8. Utwórz punkt końcowy Private Service Connect
Podczas konfigurowania adresu IP punktu końcowego usługi Private Service Connect <pscendpointip>
musisz podać unikalny adres IP, który nie został zdefiniowany w sieci VPC.
Z Cloud Shell
gcloud compute addresses create psc-ip \ --global \ --purpose=PRIVATE_SERVICE_CONNECT \ --addresses=192.168.255.250 \ --network=psc-lab
Sklep „pscendpointip” na czas trwania modułu
pscendpointip=$(gcloud compute addresses list --filter=name:psc-ip --format="value(address)") echo $pscendpointip
Utwórz regułę przekierowania, aby połączyć punkt końcowy z interfejsami API i usługami Google.
Z Cloud Shell
gcloud compute forwarding-rules create pscendpoint \ --global \ --network=psc-lab \ --address=psc-ip \ --target-google-apis-bundle=all-apis
Wyświetlanie listy skonfigurowanych punktów końcowych Private Service Connect
Z Cloud Shell
gcloud compute forwarding-rules list \ --filter target="(all-apis OR vpc-sc)" --global
Opisywanie skonfigurowanych punktów końcowych Private Service Connect
Z Cloud Shell
gcloud compute forwarding-rules describe \ pscendpoint --global
9. Tworzenie zasobnika
Utwórz zasobnik Cloud Storage i zastąp BUCKET_NAME preferowaną, unikalną globalnie nazwą.
Z Cloud Shell
gsutil mb -l us-central1 -b on gs://BUCKET_NAME
Sklep „BUCKET_NAME” na czas trwania modułu
BUCKET_NAME=YOUR BUCKET NAME echo $BUCKET_NAME
10. Konfiguracja DNS
Gdy utworzysz punkt końcowy Private Service Connect, Service Directory wygeneruje rekord DNS dla interfejsów API i usług, które zostały udostępnione za pomocą tego punktu końcowego.
Rekordy DNS wskazują adres IP punktu końcowego Private Service Connect i mają format SERVICE-ENDPOINT.p.googleapis.com.
Tych nazw DNS możesz używać w żądaniach do interfejsu API, aby kierować żądania do punktu końcowego usługi Private Service Connect. Tych nazw DNS możesz też użyć w nagłówku Host swojego żądania.
Jeśli chcesz używać punktu końcowego usługi Private Service Connect z klientem lub aplikacją, która uzyskuje dostęp do interfejsów API i usług Google, zaktualizuj klienta lub aplikację tak, aby używała nazw DNS p.googleapis.com
Więcej informacji znajdziesz w dokumentacji klienta lub biblioteki klienta. Na przykład:
- Python: punkt api_endpoint możesz skonfigurować w klasie opcji klienta w pakiecie google-api-core.
- Go: możesz skonfigurować WithEndpoint w pakiecie opcji klienta w pakiecie api.
- gcloud: Za pomocą tego polecenia możesz skonfigurować api_endpoint_overrides. gcloud config set api_endpoint_overrides/SERVICE ENDPOINT_URL
Przykład: gcloud config set api_endpoint_overrides/storage https://storage-xyz.p.googleapis.com/storage/v1/
Jeśli nie możesz skonfigurować klienta lub aplikacji do używania innego punktu końcowego, utwórz rekordy DNS pasujące do domyślnych nazw DNS. Na przykład storage.googleapis.com. Zobacz Tworzenie rekordów DNS z użyciem domyślnych nazw DNS.
Zweryfikuj rekord DNS
W konsoli Cloud sprawdź wygenerowany wpis DNS znajdujący się w sekcji Usługi sieciowe → Cloud DNS. Zwróć uwagę na wygenerowaną nazwę DNS „p.googleapis.com”.
11. Tworzenie maszyn wirtualnych
Utwórz maszynę wirtualną (psc-instance-1) używaną do weryfikacji usługi Private Service Connect
Z Cloud Shell
gcloud compute instances create psc-instance-1 \ --subnet psclab-subnet \ --zone us-central1-a \ --image=centos-7-v20210122 \ --image-project=centos-cloud \ --no-address \ --metadata=startup-script=yum\ install\ tcpdump\ -y$'\n'yum\ install\ bind-utils\ -y$'\n'yum\ install\ nano\ -y
Zaloguj się do instancji maszyny wirtualnej (psc-instance-1)
Połącz się z maszyną wirtualną przez SSH przez Cloud Shell
gcloud compute ssh --zone "us-central1-a" "psc-instance-1" --project "$projectname"
Utwórz dodatkowe terminale Cloud Shell, klikając 3 razy + (zrzut ekranu poniżej).3 razy.
Utwórz maszynę wirtualną (psc-instance-2) używaną do weryfikacji publicznych zapisów Googleapis
Z karty 2
gcloud compute instances create psc-instance-2 \ --subnet psclab-subnet \ --zone us-central1-a \ --image=centos-7-v20210122 \ --image-project=centos-cloud \ --no-address \ --metadata=startup-script=yum\ install\ tcpdump\ -y$'\n'yum\ install\ bind-utils\ -y$'\n'yum\ install\ nano\ -y
Z karty 2 SSH połącz się z maszyną wirtualną przez Cloud Shell
gcloud config list project gcloud config set project [YOUR-PROJECT-NAME] projectname=YOUR-PROJECT-NAME echo $projectname gcloud compute ssh --zone "us-central1-a" "psc-instance-2" --project "$projectname"
Z karty 3 przez SSH do psc-instance-1 przez Cloud Shell
gcloud config list project gcloud config set project [YOUR-PROJECT-NAME] projectname=YOUR-PROJECT-NAME echo $projectname gcloud compute ssh --zone "us-central1-a" "psc-instance-1" --project "$projectname"
Z karty 4 powłoki SSH do psc-instance-2 przez Cloud Shell
gcloud config list project gcloud config set project [YOUR-PROJECT-NAME] projectname=YOUR-PROJECT-NAME echo $projectname gcloud compute ssh --zone "us-central1-a" "psc-instance-2" --project "$projectname"
12. Sprawdzanie istniejącego działania Gsutil
Na karcie 4 (psc-instance-2) uruchom tcpdump i monitoruj ruch DNS
sudo tcpdump -vv -i eth0 port 53
Sprawdź wyszukiwanie DNS zasobnika na dane na karcie 2 (psc-instance-2)
BUCKET_NAME=YOUR BUCKET NAME echo $BUCKET_NAME gsutil -D ls gs://$BUCKET_NAME
Sprawdź debugowanie gsutil – do rozpoznawania nazw DNS używana jest HOST storage.googleapis.com
<snip> send: 'GET /storage/v1/b/$BUCKET_NAME/o?delimiter=%2F&projection=noAcl&versions=False&fields=prefixes%2CnextPageToken%2Citems%2Fname&alt=json&maxResults=1000 HTTP/1.1\r\nHost: storage.googleapis.com\r\ncontent-length: 0\r\nauthorization: Bearer ya29.c.KpkB7wfaMjfc_WXEKCeNF4Md0fEHnfDU7tqBf3cd0u43yEmYXqj8fX_X5wWdNdDVH6k1EkjeAeIJDzKGvyjPOkf1Io2kVeUqYX69sDv53huW1NslffjAHKchbZ0CP3Cg83TS3Pa55jLcuE0TLbYycVrgSbD3H90LaapUGbWD3kj4IsJLf9J8R98Bqobu8HZwwqk92hlZ4zVzRqOM\r\naccept-encoding: gzip, deflate\r\naccept: application/json\r\nuser-agent: apitools Python/2.7.5 gsutil/4.57 (linux2) analytics/disabled interactive/True command/ls google-cloud-sdk/324.0.0\r\n\r\n' reply: 'HTTP/1.1 200 OK\r\n' <snip>
Na karcie 4 (psc-instance-2) sprawdź, czy do zasobnika na dane są używane publiczne rekordy A DNS GoogleAPI.com.
metadata.google.internal.domain > psc-instance-2.c.yourprojectname.internal.33973: [udp sum ok] 36442 q: A? storage.googleapis.com. 11/0/0 storage.googleapis.com. A 108.177.111.128, storage.googleapis.com. A 142.250.128.128, storage.googleapis.com. A 74.125.70.128, storage.googleapis.com. A 74.125.201.128, storage.googleapis.com. A 64.233.183.128, storage.googleapis.com. A 173.194.198.128, storage.googleapis.com. A 172.217.219.128, storage.googleapis.com. A 142.250.136.128, storage.googleapis.com. A 209.85.234.128, storage.googleapis.com. A 172.217.212.128, storage.googleapis.com. A 172.217.214.128
13. Modyfikowanie działania Gsutil
W poprzednim kroku utworzyliśmy prywatną strefę DNS i rekord A zmapowany na adres IP punktu końcowego PSC. W kolejnym kroku sprawdzimy działanie polecenia gsutil, aktualizując plik BOTO maszyny wirtualnej w psc-instance-1.
Wyświetl domyślną konfigurację BOTO z terminala instancji maszyny wirtualnej na karcie 1 (psc-instance-1)
[psc-instance ~]$ more /etc/boto.cfg
Dane wyjściowe (identyfikator projektu będzie inny)
[GSUtil] default_project_id = [your project number] default_api_version = 2 [GoogleCompute] service_account = default
Zaktualizuj konfigurację BOTO za pomocą edytora nano lub VI. Pamiętaj, aby skopiować i wkleić wszystkie wpisy.
Przykład: sudo nano /etc/boto.cfg
lub
Przykład: sudo vi /etc/boto.cfg
Na karcie 1 terminala instancji maszyny wirtualnej(psc-instance-1)
[Credentials] gs_host = storage-pscendpoint.p.googleapis.com gs_host_header = storage.googleapis.com gs_json_host = storage-pscendpoint.p.googleapis.com gs_json_host_header = www.googleapis.com
Zweryfikuj konfigurację, kolejność [Credentials] ma kluczowe znaczenie dla wyszukiwania DNS
more /etc/boto.cfg [Credentials] gs_host = storage-pscendpoint.p.googleapis.com gs_host_header = storage.googleapis.com gs_json_host = storage-pscendpoint.p.googleapis.com gs_json_host_header = www.googleapis.com [GSUtil] default_project_id = [your project number default_api_version = 2 [GoogleCompute] service_account = default
14. Sprawdź zaktualizowane działanie wyszukiwania polecenia gsutil
Na karcie 3 (psc-instance-1) uruchom tcpdump i monitoruj ruch DNS
sudo tcpdump -vv -i eth0 port 53
Sprawdź wyszukiwanie gsutil dla zasobnika na dane na karcie 1 (psc-instance-1)
BUCKET_NAME=YOUR BUCKET NAME echo $BUCKET_NAME gsutil -D ls gs://$BUCKET_NAME
Logi debugowania potwierdzają, że zasobnik na dane jest osiągalny przez punkt końcowy usługi Private Service Connect „pscendpoint”
Dane wyjściowe:
<snip> INFO 0131 22:14:18.795986 base_api.py] Making http GET to https://storage-pscendpoint.p.googleapis.com/storage/v1/b/$BUCKET_NAME/o?delimiter=%2F&projection=noAcl&versions=False&fields=prefixes%2CnextPageToken%2Citems%2Fname&alt=json&maxResults=1000 INFO 0131 22:14:18.796415 base_api.py] Headers: {u'Host': 'www.googleapis.com', 'accept': 'application/json', 'accept-encoding': 'gzip, deflate', 'content-length': '0', 'user-agent': 'apitools Python/2.7.5 gsutil/4.57 (linux2) analytics/disabled interactive/True command/ls google-cloud-sdk/324.0.0'} INFO 0131 22:14:18.796502 base_api.py] Body: (none) connect: (storage-pscendpoint.p.googleapis.com, 443) send: 'GET /storage/v1/b/psc-bucket/o?delimiter=%2F&projection=noAcl&versions=False&fields=prefixes%2CnextPageToken%2Citems%2Fname&alt=json&maxResults=1000 HTTP/1.1\r\ncontent-length: 0\r\naccept-encoding: gzip, deflate\r\naccept: application/json\r\nuser-agent: apitools Python/2.7.5 gsutil/4.57 (linux2) analytics/disabled interactive/True command/ls google-cloud-sdk/324.0.0\r\nhost: www.googleapis.com\r\nauthorization: Bearer ya29.c.KpkB7wd3XWiYeRyTuth5_HPlNV-hPwc2Nn7RSIeMpzrpa_j4EsMPl2m_mDGKAcGHvYIgiC5bT2UVQirAPpSbbpToa6G6lkaBbH5SZwHwgNXYfisp5Ww1UjXe4rTa69a_Wp0WesafcwPNnYzDo3xf5VGh3iGhySA04kTXuyT--MgOU8U-XLII2LJQxUWlV8KEdrvyCuqRb-jsDdk_\r\n\r\n' reply: 'HTTP/1.1 200 OK\r\n' <snip>
Na karcie 3 (psc-instance-1) sprawdź, czy adres IP punktu końcowego PSC jest rekordem A DNS używanym podczas próby uzyskania dostępu do zasobnika na dane.
@psc-instance-1 ~]$ sudo tcpdump -vv -i eth0 port 53 tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes 05:02:33.936256 IP (tos 0x0, ttl 64, id 55416, offset 0, flags [DF], proto UDP (17), length 82) psc-instance-1.c.yourprojectname.internal.42296 > metadata.google.internal.domain: [bad udp cksum 0x5e4e -> 0xcceb!] 34796+ A? storage-pscendpoint.p.googleapis.com. (54) 05:02:33.936269 IP (tos 0x0, ttl 64, id 55417, offset 0, flags [DF], proto UDP (17), length 82) psc-instance-1.c.yourprojectname.internal.42296 > metadata.google.internal.domain: [bad udp cksum 0x5e4e -> 0x3ebd!] 5632+ AAAA? storage-pscendpoint.p.googleapis.com. (54) 05:02:33.944018 IP (tos 0x0, ttl 64, id 0, offset 0, flags [none], proto UDP (17), length 98) metadata.google.internal.domain > psc-instance-1.c.yourprojectname.42296: [udp sum ok] 34796 q: A? storage-pscendpoint.p.googleapis.com. 1/0/0 storage-pscendpoint.p.googleapis.com. A 10.10.110.10 (70) 05:02:33.946005 IP (tos 0x0, ttl 64, id 0, offset 0, flags [none], proto UDP (17), length 175)
Sprawdź, czy adres IP punktu końcowego usługi Private Service Connect jest teraz używany do rozpoznawania nazw DNS
Z karty 1
nslookup storage-pscendpoint.p.googleapis.com
Wyniki
@psc-instance ~]$ nslookup storage-pscendpoint.p.googleapis.com Server: 169.254.169.254 Address: 169.254.169.254#53 Non-authoritative answer: Name: storage-pscendpoint.p.googleapis.com Address: <pscip>
15. Procedura czyszczenia
Wyjdź z instancji maszyny wirtualnej (wszystkie karty)
exit
Usuń komponenty modułu z jednego terminala Cloud Shell
gcloud compute routers nats delete cloudnat --router=crnat --region=us-central1 --quiet gcloud compute routers delete crnat --region=us-central1 --quiet gcloud compute forwarding-rules delete pscendpoint --global --quiet gcloud compute addresses delete psc-ip --global --quiet gsutil rm -r gs://$BUCKET_NAME gcloud compute instances delete psc-instance-1 --zone=us-central1-a --quiet gcloud compute instances delete psc-instance-2 --zone=us-central1-a --quiet gcloud compute firewall-rules delete psclab-ssh --quiet gcloud compute networks subnets delete psclab-subnet --region us-central1 --quiet gcloud compute networks delete psc-lab --quiet
W konsoli sprawdź, czy wyświetlasz właściwy projekt, a następnie wybierz Usługi sieciowe → Cloud DNS.
16. Gratulacje!
Gratulujemy ukończenia ćwiczeń z programowania.
Omówione zagadnienia
- Przypadki użycia Private Service Connect
- Wymagania związane z siecią
- Obsługiwane interfejsy API
- Utworzono punkt końcowy Private Service Connect
- Utworzono zasobnik Cloud Storage
- Zaktualizowano plik konfiguracji BOTO
- Utworzono GW NAT
- Wykonaj w maszynie wirtualnej 1 listę poleceń gsutil, która zostanie przesłana do punktu końcowego usługi PSC
- Wykonuj w maszynach wirtualnych2 listę poleceń gsutil, która działa względem publicznej witryny googleapis.com
- Używanie Tcpdump do weryfikacji rozpoznawania nazw DNS