1. Wprowadzenie
Prywatny dostęp do Google dla hostów lokalnych umożliwia systemom lokalnym łączenie się z interfejsami API i usługami Google przez kierowanie ruchu przez tunel Cloud VPN lub przyłącze VLAN na potrzeby Cloud Interconnect. Prywatny dostęp do Google dla hostów lokalnych to alternatywa dla łączenia się z interfejsami API i usługami Google przez Internet.
Prywatny dostęp do Google w przypadku hostów lokalnych wymaga kierowania żądań do interfejsów API Google do adresów IP wirtualnych (VIP). W przypadku IPv6 używane są te adresy IP:
- W przypadku prywatnej usługi googleapis.com: 2600:2d00:0002:2000::/64
- W przypadku restricted.googleapis.com: 2600:2d00:0002:1000::/64
Wybrany przez Ciebie adres VIP określa, do których usług masz dostęp. W tym ćwiczeniu w Codelabs użyjemy private.googleapis.com. Więcej informacji znajdziesz w sekcji Opcje domeny.
W tym ćwiczeniu w Codelabs dowiesz się, jak włączyć prywatny dostęp do Google dla hostów lokalnych, które używają adresów IPv6. Skonfigurujesz sieć VPC o nazwie on-premises-vpc
, która będzie reprezentować środowisko lokalne. W przypadku Twojego wdrożenia nie istniałby lokalny serwer VPC. Użyta byłaby sieć hybrydowa łącząca lokalne centrum danych lub dostawcę chmury.
Co utworzysz
W ramach tego ćwiczenia w Codelabs utworzysz kompleksową sieć IPv6, która zademonstruje lokalny dostęp do interfejsu Cloud Storage API za pomocą rekordu CNAME *.googleapis.com do adresu private.googleapis.com IPv6 2600:2d00:0002:2000::/64
, jak pokazano na rys. 1.
Rysunek 1.
Czego się nauczysz
- Jak utworzyć sieć VPC o podwójnym stosie
- Jak utworzyć sieć VPN o wysokiej dostępności za pomocą IPv6
- Jak zaktualizować DNS, aby uzyskać dostęp do prywatnego dostępu do Google
- Jak nawiązać i zweryfikować połączenie z prywatnym dostępem do Google
Czego potrzebujesz
- Projekt Google Cloud
2. Zanim zaczniesz
Zaktualizuj projekt, aby zapewnić obsługę ćwiczeń z programowania
W tym ćwiczeniach z programowania korzystamy ze zmiennych $variables, aby ułatwić implementację konfiguracji gcloud w Cloud Shell.
W Cloud Shell wykonaj te czynności:
gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectname=YOUR-PROJECT-NAME
echo $projectname
3. Tworzenie pliku transit-vpc
Utwórz sieć VPC transportu publicznego
W Cloud Shell wykonaj te czynności:
gcloud compute networks create transit-vpc --project=$projectname --subnet-mode=custom --mtu=1460 --enable-ula-internal-ipv6 --bgp-routing-mode=regional
4. Tworzenie sieci lokalnej
Ta sieć VPC reprezentuje środowisko lokalne.
Tworzenie lokalnej sieci VPC
W Cloud Shell wykonaj te czynności:
gcloud compute networks create on-premises-vpc --project=$projectname --subnet-mode=custom --mtu=1460 --enable-ula-internal-ipv6 --bgp-routing-mode=regional
Tworzenie podsieci
W Cloud Shell wykonaj te czynności:
gcloud compute networks subnets create on-premises-subnet1-us-central1 --project=$projectname --range=172.16.10.0/27 --stack-type=IPV4_IPV6 --ipv6-access-type=INTERNAL --network=on-premises-vpc --region=us-central1
5. Utwórz sieć VPN o wysokiej dostępności dla transit-vpc i lokalnego serwera VPC
Tworzenie GW o wysokiej dostępności dla usługi transit-vpc
Podczas tworzenia każdej bramy automatycznie przyznawane są 2 zewnętrzne adresy IPv4, po jednym dla każdego interfejsu bramy. Zapisz te adresy IP, aby użyć ich później w krokach konfiguracji.
W Cloud Shell utwórz bramę VPN HA z typem stosu IPV4_IPV6.
gcloud compute vpn-gateways create transit-vpc-vpngw \
--network=transit-vpc\
--region=us-central1 \
--stack-type=IPV4_IPV6
Tworzenie GW o wysokiej dostępności dla lokalnego środowiska VPC
W Cloud Shell utwórz bramę VPN HA z typem stosu IPV4_IPV6.
gcloud compute vpn-gateways create on-premises-vpc-vpngw \
--network=on-premises-vpc\
--region=us-central1 \
--stack-type=IPV4_IPV6
Weryfikowanie tworzenia bramy sieci VPN o wysokiej dostępności
W konsoli wybierz Połączenia hybrydowe → VPN → GATEWAYS CLOUD VPN.
Utwórz router Cloud Router dla transit-vpc.
W Cloud Shell utwórz router Cloud Router w regionie us-central1.
gcloud compute routers create transit-vpc-cr-us-central1 \
--region=us-central1 \
--network=transit-vpc\
--asn=65001
Utwórz router Cloud Router dla VPC lokalnego.
Utwórz w Cloud Shell router Cloud Router znajdujący się w regionie us-central1.
gcloud compute routers create on-premises-vpc-cr-us-central1 \
--region=us-central1 \
--network=on-premises-vpc \
--asn=65002
Tworzenie tuneli VPN dla transit-vpc
Utworzysz 2 tunele VPN na każdej bramie sieci VPN o wysokiej dostępności.
Utwórz tunel VPN0
W Cloud Shell utwórz tunel0:
gcloud compute vpn-tunnels create transit-vpc-tunnel0 \
--peer-gcp-gateway on-premises-vpc-vpngw \
--region us-central1 \
--ike-version 2 \
--shared-secret [ZzTLxKL8fmRykwNDfCvEFIjmlYLhMucH] \
--router transit-vpc-cr-us-central1 \
--vpn-gateway transit-vpc-vpngw \
--interface 0
Utwórz tunel VPN1
W Cloud Shell utwórz tunel 1:
gcloud compute vpn-tunnels create transit-vpc-tunnel1 \
--peer-gcp-gateway on-premises-vpc-vpngw \
--region us-central1 \
--ike-version 2 \
--shared-secret [bcyPaboPl8fSkXRmvONGJzWTrc6tRqY5] \
--router transit-vpc-cr-us-central1 \
--vpn-gateway transit-vpc-vpngw \
--interface 1
Utwórz tunele VPN dla vpc-on-premises.
Utworzysz 2 tunele VPN na każdej bramie sieci VPN o wysokiej dostępności.
Utwórz tunel VPN0
W Cloud Shell utwórz tunel0:
gcloud compute vpn-tunnels create on-premises-tunnel0 \
--peer-gcp-gateway transit-vpc-vpngw \
--region us-central1 \
--ike-version 2 \
--shared-secret [ZzTLxKL8fmRykwNDfCvEFIjmlYLhMucH] \
--router on-premises-vpc-cr-us-central1 \
--vpn-gateway on-premises-vpc-vpngw \
--interface 0
Utwórz tunel VPN1
W Cloud Shell utwórz tunel 1:
gcloud compute vpn-tunnels create on-premises-tunnel1 \
--peer-gcp-gateway transit-vpc-vpngw \
--region us-central1 \
--ike-version 2 \
--shared-secret [bcyPaboPl8fSkXRmvONGJzWTrc6tRqY5] \
--router on-premises-vpc-cr-us-central1 \
--vpn-gateway on-premises-vpc-vpngw \
--interface 1
Sprawdź poprawność utworzenia tunelu VPN
W konsoli przejdź do opcji Połączenie hybrydowe → VPN → TUNELE CLOUD VPN.
Tworzenie sesji BGP
W tej sekcji skonfigurujesz interfejsy Cloud Router i peery w sieci BGP.
Podczas tworzenia tuneli VPN, które zezwalają na ruch IPv6, przy uruchamianiu polecenia add-bgp-peer
podaj --enable-ipv6
.
Tworzenie interfejsu BGP i połączenie równorzędne dla transit-vpc
W Cloud Shell utwórz interfejs BGP:
gcloud compute routers add-interface transit-vpc-cr-us-central1 \
--interface-name if-tunnel1-to-onpremise \
--ip-address 169.254.1.1 \
--mask-length 30 \
--vpn-tunnel transit-vpc-tunnel0 \
--region us-central1
W Cloud Shell utwórz peera BGP:
gcloud compute routers add-bgp-peer transit-vpc-cr-us-central1 \
--peer-name bgp-on-premises-tunnel0 \
--interface if-tunnel1-to-onpremise \
--peer-ip-address 169.254.1.2 \
--peer-asn 65002 \
--region us-central1 \
--enable-ipv6 \
--ipv6-nexthop-address 2600:2d00:0:3:0:0:0:1 \
--peer-ipv6-nexthop-address 2600:2d00:0:3:0:0:0:2
W Cloud Shell utwórz interfejs BGP:
gcloud compute routers add-interface transit-vpc-cr-us-central1 \
--interface-name if-tunnel2-to-onpremise \
--ip-address 169.254.2.1 \
--mask-length 30 \
--vpn-tunnel transit-vpc-tunnel1 \
--region us-central1
W Cloud Shell utwórz peera BGP:
gcloud compute routers add-bgp-peer transit-vpc-cr-us-central1 \
--peer-name bgp-on-premises-tunnel2 \
--interface if-tunnel2-to-onpremise \
--peer-ip-address 169.254.2.2 \
--peer-asn 65002 \
--region us-central1 \
--enable-ipv6 \
--ipv6-nexthop-address 2600:2d00:0:3:0:0:0:11 \
--peer-ipv6-nexthop-address 2600:2d00:0:3:0:0:0:12
Utwórz interfejs BGP i połączenie równorzędne dla lokalnego środowiska VPC
W Cloud Shell utwórz interfejs BGP:
gcloud compute routers add-interface on-premises-vpc-cr-us-central1\
--interface-name if-tunnel1-to-hub-vpc \
--ip-address 169.254.1.2 \
--mask-length 30 \
--vpn-tunnel on-premises-tunnel0 \
--region us-central1
W Cloud Shell utwórz peera BGP:
gcloud compute routers add-bgp-peer on-premises-vpc-cr-us-central1 \
--peer-name bgp-transit-vpc-tunnel0 \
--interface if-tunnel1-to-hub-vpc \
--peer-ip-address 169.254.1.1 \
--peer-asn 65001 \
--region us-central1 \
--enable-ipv6 \
--ipv6-nexthop-address 2600:2d00:0:3:0:0:0:2 \
--peer-ipv6-nexthop-address 2600:2d00:0:3:0:0:0:1
W Cloud Shell utwórz interfejs BGP:
gcloud compute routers add-interface on-premises-vpc-cr-us-central1\
--interface-name if-tunnel2-to-hub-vpc \
--ip-address 169.254.2.2 \
--mask-length 30 \
--vpn-tunnel on-premises-tunnel1 \
--region us-central1
W Cloud Shell utwórz peera BGP:
gcloud compute routers add-bgp-peer on-premises-vpc-cr-us-central1\
--peer-name bgp-transit-vpc-tunnel1\
--interface if-tunnel2-to-hub-vpc \
--peer-ip-address 169.254.2.1 \
--peer-asn 65001 \
--region us-central1 \
--enable-ipv6 \
--ipv6-nexthop-address 2600:2d00:0:3:0:0:0:12 \
--peer-ipv6-nexthop-address 2600:2d00:0:3:0:0:0:11
Aby wyświetlić szczegóły tunelu VPN, kliknij Połączenie hybrydowe → VPN.
Sprawdź, czy transit-vpc uczy się tras IPv4 i IPv6 w sieci VPN o wysokiej dostępności
Ze względu na to, że tworzone są tunele sieci VPN o wysokiej dostępności i sesje BGP, trasy z lokalnego serwera VPC są zapamiętywane z serwera transit-vpc. W konsoli wybierz sieć VPC → sieci VPC → transit-vpc → TRASY.
Zwróć uwagę na zapamiętane trasy dynamiczne IPv4 i IPv6 pokazane poniżej:
Sprawdź, czy sieć lokalna-VPC nie uczy się tras przez sieć VPN o wysokiej dostępności.
Transit-vpc nie ma podsieci, dlatego router Cloud Router nie rozgłasza żadnych podsieci do lokalnego serwera vpc. W konsoli wybierz sieć VPC → sieci VPC → lokalne-vpc → TRASY.
6. Reklamuj adres IPv6 private.googleapis.com VIP
Aby uzyskać lokalny dostęp do prywatnego dostępu do Google, musisz utworzyć niestandardową reklamę trasy z transit-vpc. Po zaktualizowaniu lokalnego DNS adres IPv6 2600:2d00:0002:2000::
będzie rozgłaszany w środowisku lokalnym i używany przez zadania do uzyskiwania dostępu do interfejsów API Google, takich jak Cloud Storage, Cloud BigQuery czy Cloud Bigtable.
W tym laboratorium programistycznym włączysz dostęp interfejsu API do większości interfejsów API i usług Google niezależnie od tego, czy są one obsługiwane przez ustawienia usługi VPC.
W konsoli przejdź do Hybrid Connectivity → Cloud Routers → transit-vpc-cr-us-central1, a następnie kliknij EDYTUJ.
W sekcji Reklamowane trasy wybierz opcję Utwórz trasy niestandardowe, zaktualizuj pola zgodnie z przykładem poniżej, wybierz GOTOWE, a potem kliknij ZAPISZ.
Sprawdź, czy vpc lokalna uczy się tras IPv6
Teraz, gdy VIP IPv6 private.googleapis.com jest reklamowany z transit-vpc, vpc lokalna będzie miała zapamiętane dynamiczne trasy IPv6 dla tego VIP. W konsoli wybierz sieć VPC → sieci VPC → lokalne-vpc → TRASY.
Obserwuj trasy IPv6 rozgłaszane z transit-vpc:
7. Nawiąż komunikację z interfejsami API Google za pomocą prywatnego dostępu do Google
W następnej sekcji uzyskamy dostęp do Cloud Storage i sprawdzimy połączenie za pomocą adresu IPv6 private.googleapis.com VIP. Aby to zrobić, musimy wykonać te czynności w VPC w środowisku lokalnym.
- Utwórz regułę zapory sieciowej dotyczącą ruchu przychodzącego, aby zezwolić na dostęp do usługi Identity-Aware Proxy (IAP) w celu uzyskania dostępu do SSH.
- Utwórz Cloud Router i Cloud NAT, aby pobrać tcpdump i dnsutils.
- Utwórz prywatną strefę Cloud DNS dla googleapis.com.
- utworzyć zasobnik Cloud Storage,
Tworzenie reguły zapory sieciowej IAP
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 przez 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.
W Cloud Shell utwórz regułę zapory sieciowej IAP.
gcloud compute firewall-rules create ssh-iap-on-premises-vpc \
--network on-premises-vpc \
--allow tcp:22 \
--source-ranges=35.235.240.0/20
Konfiguracja Cloud Router i NAT
Usługa Cloud NAT jest używana w ramach ćwiczeń w Codelabs do instalowania pakietu oprogramowania, ponieważ instancja maszyny wirtualnej nie ma zewnętrznego adresu IP.
W Cloud Shell utwórz router Cloud Router.
gcloud compute routers create on-premises-cr-us-central1-nat --network on-premises-vpc --region us-central1
W Cloud Shell utwórz bramę NAT.
gcloud compute routers nats create on-premises-nat-us-central1 --router=on-premises-cr-us-central1-nat --auto-allocate-nat-external-ips --nat-all-subnet-ip-ranges --region us-central1
Tworzenie testowej instancji, testowej skrzynki lokalnej
Utwórz instancję testową, która posłuży do testowania i sprawdzania połączeń z VIP IPv6 private.googleapis.com.
Utwórz instancję w Cloud Shell.
gcloud compute instances create on-premises-testbox \
--project=$projectname \
--machine-type=e2-micro \
--stack-type=IPV4_IPV6 \
--image-family debian-10 \
--no-address \
--image-project debian-cloud \
--zone us-central1-a \
--subnet=on-premises-subnet1-us-central1 \
--metadata startup-script="#! /bin/bash
sudo apt-get update
sudo apt-get install tcpdump -y
sudo apt-get install dnsutils -y"
Tworzenie strefy prywatnej Cloud DNS
Użyjemy Cloud DNS do utworzenia strefy prywatnej i rekordów dla domeny *.googleapis.com. Poniżej znajdziesz wymagane kroki.
Utwórz w Cloud Shell prywatną strefę DNS v6-googleapis.com.
gcloud dns --project=$projectname managed-zones create v6-googleapis --description="" --dns-name="googleapis.com." --visibility="private" --networks="on-premises-vpc"
W Cloud Shell utwórz rekord AAAA dla adresu private.googleapis.com, który wskazuje na adres IPv6 2600:2d00:0002:2000::
.
gcloud dns --project=$projectname record-sets create private.googleapis.com. --zone="v6-googleapis" --type="AAAA" --ttl="300" --rrdatas="2600:2d00:0002:2000::"
W Cloud Shell utwórz rekord CNAME dla *.googleapis.com, aby wskazywał adres private.googleapis.com.
gcloud dns --project=$projectname record-sets create *.googleapis.com. --zone="v6-googleapis" --type="CNAME" --ttl="300" --rrdatas="private.googleapis.com."
Sprawdzanie prywatnej strefy Cloud DNS
Przejdź do usług sieciowych → Cloud DNS → v6-googleapis.
Tworzenie zasobnika Cloud Storage
W Cloud Shell utwórz zasobnik Cloud Storage, w którym zastąp nazwę zasobnika „nazwa_zasobnika” wybraną globalnie, unikalną nazwą. Jeśli jest już używana, spróbuj użyć innej.
gsutil mb -l us-central1 -b on gs://bucket_name
8. Dostęp do interfejsów API Google i ich walidacja za pomocą adresów IPv6
W następnej sekcji połączysz się przez SSH z 2 terminalami Cloud Shell. Pierwszy terminal służy do weryfikacji wyszukiwania IPv6 za pomocą tcpdump, a drugi zapewnia dostęp do zasobnika Cloud Storage.
W Cloud Shell uruchom SSH, aby przetestować instancję on-premises-testbox.
gcloud compute ssh --zone "us-central1-a" "on-premises-testbox" --project "$projectname"
W terminalu 1 Cloud Shell uruchom tcpdump i sprawdź ruch DNS na porcie 53.
sudo tcpdump -nn -i ens4 port 53
Przykład poniżej.
user@on-premises-testbox:~$ sudo tcpdump -nn -i ens4 port 53
Otwórz nowy terminal Cloud Shell, klikając „+”. Po otwarciu nowej karty zaktualizuj zmienną nazwy projektu.
W Cloud Shell zaktualizuj zmienną nazwy projektu.
gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectname=YOUR-PROJECT-NAME
echo $projectname
W Cloud Shell 2 uruchom ssh do testowej instancji on-premises-testbox.
gcloud compute ssh --zone "us-central1-a" "on-premises-testbox" --project "$projectname"
Wykonaj kopiowanie, aby zweryfikować wyszukiwanie DNS
W drugim terminalu Cloud Shell wykonaj operację kopiowania względem storage.googleapis.com.
dig AAAA storage.googleapis.com
Sprawdź sekcję ODPOWIEDŹ, prywatny rekord CNAME strefy DNS storage.googleapis.com do AAAA private.googleapis.com 2600:2d00:2:2000::
, przykład poniżej:
user@on-premises-testbox:~$ dig AAAA storage.googleapis.com
; <<>> DiG 9.11.5-P4-5.1+deb10u8-Debian <<>> AAAA storage.googleapis.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 2782
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;storage.googleapis.com. IN AAAA
;; ANSWER SECTION:
storage.googleapis.com. 300 IN CNAME private.googleapis.com.
private.googleapis.com. 300 IN AAAA 2600:2d00:2:2000::
;; Query time: 9 msec
;; SERVER: 169.254.169.254#53(169.254.169.254)
;; WHEN: Mon Feb 20 01:56:33 UTC 2023
;; MSG SIZE rcvd: 101
W pierwszym terminalu Cloud Shell sprawdź plik tcpdump, który potwierdza rozpoznawanie nazw DNS na AAAA 2600:2d00:2:2000::
.
user@on-premises-testbox:~$ sudo tcpdump -nn -i ens4 port 53
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ens4, link-type EN10MB (Ethernet), capture size 262144 bytes
01:56:33.473208 IP 172.16.10.3.41476 > 169.254.169.254.53: 2782+ [1au] AAAA? storage.googleapis.com. (63)
01:56:33.482580 IP 169.254.169.254.53 > 172.16.10.3.41476: 2782 2/0/1 CNAME private.googleapis.com., AAAA 2600:2d00:2:2000:: (101)
Na podstawie poleceń dig i tcpdump możemy stwierdzić, że rozpoznawanie DNS adresu storage.googleapis.com odbywa się za pomocą adresu 2600:2d00:2:2000::
, czyli adresu IPv6 dla adresu private.googleapis.com.
Uruchom polecenie gsutil list, aby sprawdzić dostęp do Cloud Storage
W drugim terminalu Cloud Shell wykonaj listę dotyczącą wcześniej utworzonego zasobnika na dane za pomocą polecenia gsutil. Zmień nazwę zasobnika na nazwę utworzonego wcześniej zasobnika.
gsutil -d ls gs://bucket_name
Przykład użycia zasobnika Cloud Storage codelab-ipv6. Sprawdź dane wyjściowe debugowania, wskazując na storage.googleapis.com i HTTP/1.1 200 OK.
user@on-premises-testbox:~$ gsutil -d ls gs://codelab-ipv6
***************************** WARNING *****************************
*** You are running gsutil with debug output enabled.
*** Be aware that debug output includes authentication credentials.
*** Make sure to remove the value of the Authorization header for
*** each HTTP request printed to the console prior to posting to
*** a public medium such as a forum post or Stack Overflow.
***************************** WARNING *****************************
gsutil version: 5.19
checksum: 49a18b9e15560adbc187bab09c51b5fd (OK)
boto version: 2.49.0
python version: 3.9.16 (main, Jan 10 2023, 02:29:25) [Clang 12.0.1 ]
OS: Linux 4.19.0-23-cloud-amd64
multiprocessing available: True
using cloud sdk: True
pass cloud sdk credentials to gsutil: True
config path(s): /etc/boto.cfg
gsutil path: /usr/lib/google-cloud-sdk/bin/gsutil
compiled crcmod: True
installed via package manager: False
editable install: False
shim enabled: False
Command being run: /usr/lib/google-cloud-sdk/platform/gsutil/gsutil -o GSUtil:default_project_id=myprojectid -o GoogleCompute:service_account=default -d ls gs://codelab-ipv6
config_file_list: ['/etc/boto.cfg']
config: [('working_dir', '/mnt/pyami'), ('debug', '0'), ('https_validate_certificates', 'true'), ('working_dir', '/mnt/pyami'), ('debug', '0'), ('default_project_id', 'myproject'), ('default_api_version', '2')]
DEBUG 0220 02:01:14.713012 multiprocess_file_storage.py] Read credential file
INFO 0220 02:01:14.714742 base_api.py] Calling method storage.objects.list with StorageObjectsListRequest: <StorageObjectsListRequest
bucket: 'codelab-ipv6'
delimiter: '/'
maxResults: 1000
projection: ProjectionValueValuesEnum(noAcl, 1)
versions: False>
INFO 0220 02:01:14.715939 base_api.py] Making http GET to https://storage.googleapis.com/storage/v1/b/codelab-ipv6/o?alt=json&fields=prefixes%2Citems%2Fname%2CnextPageToken&delimiter=%2F&maxResults=1000&projection=noAcl&versions=False
INFO 0220 02:01:14.716369 base_api.py] Headers: {'accept': 'application/json',
'accept-encoding': 'gzip, deflate',
'content-length': '0',
'user-agent': 'apitools Python/3.9.16 gsutil/5.19 (linux) analytics/disabled '
'interactive/True command/ls google-cloud-sdk/416.0.0'}
INFO 0220 02:01:14.716875 base_api.py] Body: (none)
connect: (storage.googleapis.com, 443)
send: b'GET /storage/v1/b/codelab-ipv6/o?alt=json&fields=prefixes%2Citems%2Fname%2CnextPageToken&delimiter=%2F&maxResults=1000&projection=noAcl&versions=False HTTP/1.1\r\nHost: storage.googleapis.com\r\ncontent-length: 0\r\nuser-agent: apitools Python/3.9.16 gsutil/5.19 (linux) analytics/disabled
<SNIP>
reply: 'HTTP/1.1 200 OK\r\n'
header: X-GUploader-UploadID: ADPycdvunHlbN1WQBxDr_LefzLaH_HY1bBH22X7IxX9sF1G2Yo_7-nhYwjxUf6N7AF9Zg_JDwPxYtuNJiFutfd6qauEfohYPs7mE
header: Content-Type: application/json; charset=UTF-8
header: Date: Mon, 20 Feb 2023 02:01:14 GMT
header: Vary: Origin
header: Vary: X-Origin
header: Cache-Control: private, max-age=0, must-revalidate, no-transform
header: Expires: Mon, 20 Feb 2023 02:01:14 GMT
header: Content-Length: 3
header: Server: UploadServer
INFO 0220 02:01:14.803286 base_api.py] Response of type Objects: <Objects
items: []
prefixes: []>
user@on-premises-testbox:~$
W terminalu Cloud Shell 1 sprawdź tcpdump, który potwierdza rozpoznawanie nazw DNS jako AAAA 2600:2d00:2:2000::
.
eepakmichael@on-premises-testbox:~$ sudo tcpdump -nn -i ens4 port 53
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ens4, link-type EN10MB (Ethernet), capture size 262144 bytes
02:01:14.725000 IP 172.16.10.3.48792 > 169.254.169.254.53: 7056+ A? storage.googleapis.com. (40)
02:01:14.725106 IP 172.16.10.3.48792 > 169.254.169.254.53: 50841+ AAAA? storage.googleapis.com. (40)
02:01:14.732516 IP 169.254.169.254.53 > 172.16.10.3.48792: 50841 2/0/0 CNAME private.googleapis.com., AAAA 2600:2d00:2:2000:: (90)
Zamknij system operacyjny instancji testowej na komputerze lokalnym i wróć do wiersza poleceń Cloud Shell.
9. Czyszczenie
W Cloud Shell wykonaj te czynności:
gcloud compute vpn-tunnels delete transit-vpc-tunnel0 transit-vpc-tunnel1 on-premises-tunnel1 --region=us-central1 --quiet
gcloud compute vpn-tunnels delete on-premises-tunnel0 on-premises-tunnel1 --region=us-central1 --quiet
gcloud compute vpn-gateways delete on-premises-vpc-vpngw transit-vpc-vpngw --region=us-central1 --quiet
gcloud compute routers delete transit-vpc-cr-us-central1 on-premises-vpc-cr-us-central1 on-premises-cr-us-central1-nat --region=us-central1 --quiet
gcloud compute instances delete on-premises-testbox --zone=us-central1-a --quiet
gcloud compute networks subnets delete on-premises-subnet1-us-central1 --region=us-central1 --quiet
gcloud compute firewall-rules delete ssh-iap-on-premises-vpc --quiet
gcloud compute networks delete on-premises-vpc --quiet
gcloud compute networks delete transit-vpc --quiet
gsutil rb gs://bucket_name
gcloud dns record-sets delete *.googleapis.com. \
--type=CNAME \
--zone=v6-googleapis
gcloud dns record-sets delete private.googleapis.com. \
--type=AAAA \
--zone=v6-googleapis
gcloud dns managed-zones delete v6-googleapis
10. Gratulacje
Gratulujemy! Udało Ci się skonfigurować i zweryfikować prywatny dostęp do Google przez IPv6.
Udało Ci się utworzyć infrastrukturę transportu publicznego i lokalną oraz utworzyć prywatną strefę DNS, która umożliwia rozpoznawanie domen interfejsów API Google przy użyciu IPv6. Wiesz już, jak testować i weryfikować dostęp IPv6 za pomocą dig i cloud storage.
Cosmopup uważa, że ćwiczenia z programowania są niesamowite.
Co dalej?
Zapoznaj się z tymi ćwiczeniami z programowania...