Private Service Connect dla interfejsów API Google

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.

5e142c2fbf6f010e.png

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

2ac275eb86f26338.png

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

  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

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.

69ea94e1527912bb.png

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