1. Wprowadzenie
Usługa Private Service Connect umożliwia tworzenie prywatnych punktów końcowych z użyciem globalnych wewnętrznych adresów IP w sieci VPC, aby uzyskiwać dostęp do interfejsów Google API. Możesz przypisać do tych wewnętrznych adresów IP nazwy DNS, takie jak storage-pscendpoint.p.googleapis.com i bigtable-adsteam.p.googleapis.com. Zamiast wysyłać żądania do interfejsu API do publicznych punktów końcowych usług, takich jak storage.googleapis.com, możesz wysyłać je do punktu końcowego Private Service Connect, który jest prywatny i wewnętrzny w Twojej sieci VPC.
Te nazwy i adresy IP są wewnętrzne w sieci VPC i wszystkich sieciach lokalnych, które są z nią połączone za pomocą tuneli Cloud VPN lub przyłączy Cloud Interconnect (sieci VLAN).
Możesz kontrolować, który ruch trafia do którego punktu końcowego, i wykazać, że pozostaje on w Google Cloud.
Czego się nauczysz
- Przypadki użycia Private Service Connect
- Wymagania związane z siecią
- Obsługiwane interfejsy API
- Tworzenie punktu końcowego Private Service Connect
- Tworzenie zasobnika w Cloud Storage
- Tworzenie i aktualizowanie stref prywatnych Cloud DNS
- Tworzenie bramy NAT w celu uzyskania dostępu do publicznych interfejsów API Google
- Tworzenie i aktualizowanie pliku konfiguracji BOTO
- Wykonaj polecenie gsutil list na maszynie wirtualnej VM1, które zostanie rozwiązane w odniesieniu do punktu końcowego usługi PSC.
- Wykonaj polecenie gsutil list na maszynie wirtualnej VM2, które zostanie rozpoznane w publicznym googleapis.com.
- Sprawdzanie rozpoznawania nazw DNS za pomocą narzędzia Tcpdump
Czego potrzebujesz
- Znajomość DNS, edytora nano lub vi
2. Przypadki użycia Private Service Connect
W tej samej sieci VPC możesz utworzyć wiele punktów końcowych usługi Private Service Connect. Nie ma limitu przepustowości dla konkretnego 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 dowolny zasób w sieci VPC.
W przypadku wielu punktów końcowych możesz określić 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 zezwolić na dostęp innym maszynom wirtualnym.
- Możesz mieć regułę zapory sieciowej na instancji maszyny wirtualnej, która blokuje cały ruch do internetu. Ruch wysyłany do punktów końcowych Private Service Connect nadal dociera do Google.
- Jeśli masz hosty lokalne połączone z siecią VPC za pomocą tunelu Cloud VPN lub przyłącza połączenia międzysieciowego (VLAN), możesz wysyłać niektóre żądania przez tunel lub VLAN, a inne przez internet publiczny. Ta konfiguracja umożliwia pominięcie 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 punktu końcowego Private Service Connect za pomocą niestandardowych rozgłaszania tras Cloud Router i włącz zasady przekazywania przychodzącego Cloud DNS. Aplikacja może wysyłać niektóre żądania przez tunel Cloud VPN lub przyłącze połączenia międzysieciowego Cloud Interconnect (sieć VLAN) za pomocą nazwy punktu końcowego Private Service Connect, a inne przez internet za pomocą domyślnej nazwy DNS.
- Jeśli połączysz sieć lokalną z siecią VPC za pomocą kilku przyłączy Cloud Interconnect (sieci VLAN), możesz wysyłać część ruchu z sieci lokalnej przez jedną sieć VLAN, a resztę przez inne, jak pokazano na rysunku 2. Dzięki temu możesz używać własnej sieci rozległej zamiast sieci Google i kontrolować przesyłanie danych, aby spełniać wymagania geograficzne. Aby utworzyć tę konfigurację, utwórz 2 punkty końcowe Private Service Connect. Utwórz niestandardowe rozgłaszanie tras dla pierwszego punktu końcowego w sesji BGP routera Cloud Router zarządzającego pierwszą siecią VLAN i utwórz inne niestandardowe rozgłaszanie tras dla drugiego punktu końcowego w sesji BGP routera Cloud Router zarządzającego drugą siecią VLAN. Hosty lokalne skonfigurowane do używania nazwy punktu końcowego Private Service Connect wysyłają ruch przez odpowiednie przyłącze połączenia międzysieciowego Cloud Interconnect (VLAN).
- Możesz też używać wielu przyłączy Cloud Interconnect (sieci VLAN) w topologii aktywnej/aktywnej. Jeśli rozgłaszasz ten sam adres IP punktu końcowego Private Service Connect za pomocą niestandardowych rozgłoszeń tras w sesjach BGP na 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 Private Service Connect, Cloud Router i hosty lokalne, możesz określić, które przyłącze połączenia międzysieciowego Cloud Interconnect (VLAN) ma być używane do wysyłania ruchu do interfejsów API Google.
3. Wymagania związane z siecią
Aby korzystać z Private Service Connect, instancje maszyn wirtualnych bez zewnętrznych adresów IP muszą mieć interfejs podstawowy 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 Google i usług za pomocą punktów końcowych Private Service Connect niezależnie od tego, czy w jej podsieci jest włączony prywatny dostęp do Google. Połączenie z punktem końcowym Private Service Connect pozostaje w sieci Google.
Punkty końcowe usługi Private Service Connect nie są dostę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órego chcesz mieć dostęp: all-apis lub vpc-sc.
Pakiety interfejsów API zapewniają dostęp do tych samych interfejsów API, które są dostępne za pomocą wirtualnych adresów IP 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 i przypadek użycia ćwiczenia z programowania

Rysunek 1. Topologia ćwiczeń z programowania
Przypadek użycia ćwiczeń z programowania:
Nasz klient wymaga dostępu do googleapis zarówno w sieci prywatnej (połączenie wzajemne), jak i publicznej na potrzeby przesyłania danych z usługi Cloud Storage. Aby spełnić wymagania klientów, wdrożymy Private Service Connect, który będzie się składać z unikalnego adresu /32, konfiguracji BOTO i aktualizacji rekordu DNS. Maszyna wirtualna 1 będzie korzystać z PSC w celu uzyskania dostępu do zasobnika pamięci w chmurze, a maszyna wirtualna 2 będzie używać publicznych zakresów adresów IP googleapis.com za pośrednictwem bramy NAT.
Wszystkie aspekty laboratorium są wdrażane w Google Cloud Platform, ale ten sam przypadek użycia ma zastosowanie w przypadku wdrożenia w chmurze hybrydowej, które wymaga rozdzielenia ruchu.
5. Konfiguracja i wymagania
Samodzielne konfigurowanie środowiska
- Zaloguj się w konsoli Google Cloud i utwórz nowy projekt lub użyj istniejącego. Jeśli nie masz jeszcze konta Gmail ani Google Workspace, musisz je utworzyć.



Zapamiętaj identyfikator projektu, czyli unikalną nazwę we wszystkich projektach Google Cloud (podana powyżej nazwa jest już zajęta i nie będzie działać w Twoim przypadku). W dalszej części tego laboratorium będzie on nazywany PROJECT_ID.
- Następnie musisz włączyć rozliczenia w konsoli Cloud, aby korzystać z zasobów Google Cloud.
Ukończenie tego laboratorium nie powinno wiązać się z dużymi kosztami, a nawet z żadnymi. Wykonaj instrukcje z sekcji „Czyszczenie”, w której znajdziesz informacje o tym, jak wyłączyć zasoby, aby uniknąć naliczenia opłat po zakończeniu tego samouczka. Nowi użytkownicy Google Cloud mogą skorzystać z bezpłatnego okresu próbnego, w którym mają do dyspozycji środki w wysokości 300 USD.
Uruchamianie Cloud Shell
Z Google Cloud można korzystać zdalnie na laptopie, ale w tym module praktycznym będziesz używać Google Cloud Shell, czyli środowiska wiersza poleceń działającego w chmurze.
W konsoli GCP kliknij ikonę Cloud Shell na pasku narzędzi w prawym górnym rogu:

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

Ta maszyna wirtualna zawiera wszystkie potrzebne narzędzia dla programistów. Zawiera również stały katalog domowy o pojemności 5 GB i działa w Google Cloud, co znacznie zwiększa wydajność sieci i usprawnia proces uwierzytelniania. Wszystkie zadania w tym module możesz wykonać w przeglądarce.
6. Zanim zaczniesz
Włącz interfejsy API
W Cloud Shell sprawdź, 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 połączenie z instancjami maszyn wirtualnych, utwórz regułę zapory sieciowej, która:
- Dotyczy wszystkich instancji maszyn wirtualnych, które mają być dostępne przez IAP.
- Zezwala na ruch przychodzący z zakresu adresów IP 35.235.240.0/20. Ten zakres zawiera wszystkie adresy IP, których IAP używa 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
Tworzenie instancji Cloud NAT
Utwórz router Cloud Router
Z Cloud Shell
gcloud compute routers create crnat \
--network psc-lab \
--asn 65000 \
--region us-central1
Utwórz 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. Tworzenie punktu końcowego Private Service Connect
Podczas konfigurowania adresu IP punktu końcowego usługi Private Service Connect <pscendpointip> musisz podać unikalny adres IP, który nie jest 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
Przechowywanie wartości „pscendpointip” przez 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 Google i usługami.
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 usługi 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. Utwórz zasobnik
Utwórz zasobnik Cloud Storage i zastąp BUCKET_NAME globalnie niepowtarzalną nazwą.
Z Cloud Shell
gsutil mb -l us-central1 -b on gs://BUCKET_NAME
Przechowywanie „BUCKET_NAME” przez czas trwania modułu
BUCKET_NAME=YOUR BUCKET NAME echo $BUCKET_NAME
10. Konfiguracja DNS
Gdy tworzysz punkt końcowy usługi Private Service Connect, Service Directory generuje rekord DNS dla interfejsów API i usług udostępnianych za pomocą tego punktu końcowego.
Rekordy DNS wskazują adres IP punktu końcowego usługi Private Service Connect i mają format SERVICE-ENDPOINT.p.googleapis.com.
Możesz używać tych nazw DNS w żądaniach API, aby kierować je do punktu końcowego Private Service Connect. Możesz też używać tych nazw DNS w nagłówku Host żą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ę, aby używać nazw DNS p.googleapis.com.
Szczegółowe informacje znajdziesz w dokumentacji klienta lub biblioteki klienta. Na przykład:
- Python: możesz skonfigurować api_endpoint w klasie opcji klienta w pakiecie google-api-core.
- Możesz skonfigurować WithEndpoint w pakiecie opcji klienta w pakiecie api.
- gcloud: You can configure api_endpoint_overrides using this command. 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 tak, aby korzystały z innego punktu końcowego, utwórz rekordy DNS pasujące do domyślnych nazw DNS. Na przykład storage.googleapis.com. Więcej informacji znajdziesz w artykule Tworzenie rekordów DNS przy użyciu domyślnych nazw DNS.
Weryfikowanie rekordu DNS
W konsoli Cloud sprawdź wygenerowany wpis DNS w sekcji Usługi sieciowe → Cloud DNS. Zanotuj wygenerowaną nazwę DNS „p.googleapis.com”.
11. Tworzenie maszyn wirtualnych
Tworzenie maszyny wirtualnej (psc-instance-1) używanej do weryfikacji 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ę w instancji maszyny wirtualnej (psc-instance-1).
Łączenie się z maszyną wirtualną przez SSH za pomocą Cloud Shell
gcloud compute ssh --zone "us-central1-a" "psc-instance-1" --project "$projectname"
Utwórz dodatkowe terminale Cloud Shell, klikając + (zrzut ekranu poniżej) 3 razy.

Utwórz maszynę wirtualną (psc-instance-2) używaną do weryfikacji publicznych interfejsów Google API.
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
Na karcie 2 połącz się z maszyną wirtualną przez SSH za pomocą 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"
Na karcie 3 połącz się z instancją psc-instance-1 przez SSH za pomocą 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"
Na karcie 4 połącz się z instancją psc-instance-2 przez SSH w 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 dotychczasowego działania Gsutil
Na karcie 4 (psc-instance-2) uruchom tcpdump i monitoruj ruch DNS.
sudo tcpdump -vv -i eth0 port 53
Sprawdzanie wyszukiwania 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żywany 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 podczas uzyskiwania dostępu do zasobnika pamięci używane są 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 mapowany na adres IP punktu końcowego PSC. W następnym kroku określimy działanie gsutil, aktualizując plik BOTO na maszynie wirtualnej psc-instance-1.
Wyświetl domyślną konfigurację BOTO w terminalu instancji maszyny wirtualnej na karcie 1 (psc-instance-1).
[psc-instance ~]$ more /etc/boto.cfg
Dane wyjściowe (Twój 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. Skopiuj i wklej wszystkie wpisy.
Przykład: sudo nano /etc/boto.cfg
lub
Przykład: sudo vi /etc/boto.cfg
Na karcie terminala instancji maszyny wirtualnej 1(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
Sprawdź konfigurację. Kolejność [Credentials] ma kluczowe znaczenie w przypadku 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. Sprawdzanie zaktualizowanego działania wyszukiwania gsutil
Na karcie 3 (psc-instance-1) uruchom tcpdump i monitoruj ruch DNS.
sudo tcpdump -vv -i eth0 port 53
Sprawdzanie zasobnika na dane za pomocą narzędzia gsutil na karcie 1 (psc-instance-1)
BUCKET_NAME=YOUR BUCKET NAME echo $BUCKET_NAME gsutil -D ls gs://$BUCKET_NAME
Dzienniki debugowania potwierdzają, że do zasobnika pamięci można uzyskać dostęp za pomocą punktu końcowego 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 DNS A używanym podczas próby uzyskania dostępu do zasobnika pamięci.
@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 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
Zamykanie instancji maszyny wirtualnej (wszystkie karty)
exit
Usuwanie komponentów laboratorium 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świetlany jest właściwy projekt, a następnie wybierz Usługi sieciowe → Cloud DNS.
16. Gratulacje!
Gratulujemy ukończenia ćwiczenia.
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 bramę NAT
- Wykonaj polecenie gsutil list na maszynie wirtualnej VM1, które będzie odwoływać się do punktu końcowego usługi PSC.
- Wykonaj polecenie gsutil list na maszynie wirtualnej VM2, które jest rozpoznawane w publicznym googleapis.com.
- Sprawdzanie rozpoznawania nazw DNS za pomocą narzędzia Tcpdump