Accedi alle API di Google da host on-premise utilizzando indirizzi IPv6

1. Introduzione

L'accesso privato Google per gli host on-premise consente ai sistemi on-premise di connettersi alle API e ai servizi Google instradando il traffico tramite un tunnel Cloud VPN o un collegamento VLAN per Cloud Interconnect. L'accesso privato Google per gli host on-premise è un'alternativa alla connessione alle API e ai servizi Google su internet.

L'accesso privato Google per gli host on-premise richiede di indirizzare le richieste delle API di Google agli indirizzi IP virtuali (VIP). Per IPv6, vengono utilizzati i seguenti indirizzi IP:

  • Per private.googleapis.com: 2600:2d00:0002:2000::/64
  • Per restricted.googleapis.com: 2600:2d00:0002:1000::/64

Il VIP che scegli determina i servizi a cui puoi accedere. In questo codelab, utilizzeremo private.googleapis.com. Per ulteriori informazioni, vedi Opzioni di dominio.

Questo codelab descrive come abilitare l'accesso privato Google per gli host on-premise che utilizzano indirizzi IPv6. Configurerai una rete VPC denominata on-premises-vpc per rappresentare un ambiente on-premise. Per il tuo deployment, la VPC on-premise non esisterebbe, ma verrà utilizzata la rete ibrida per il tuo data center on-premise o il tuo provider cloud.

Cosa creerai

In questo codelab, creerai una rete IPv6 end-to-end che dimostri l'accesso on-premise all'API Cloud Storage utilizzando il CNAME *.googleapis.com all'indirizzo IPv6 private.googleapis.com 2600:2d00:0002:2000::/64 come illustrato nella Figura 1.

Figura 1

a0fc56abf24f3535.png

Obiettivi didattici

  • Come creare una rete VPC a doppio stack
  • Come creare una VPN ad alta disponibilità con IPv6
  • Come aggiornare il DNS per accedere all'accesso privato Google
  • Come stabilire e convalidare la connettività di Accesso privato Google

Che cosa ti serve

  • Progetto Google Cloud

2. Prima di iniziare

Aggiorna il progetto per supportare il codelab

Questo codelab utilizza le variabili $per facilitare l'implementazione della configurazione di gcloud in Cloud Shell.

In Cloud Shell, svolgi i seguenti passaggi:

gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectname=YOUR-PROJECT-NAME
echo $projectname

3. Crea il transit-vpc

f6932f551b5acac0.png

Crea la rete VPC di transito

All'interno di Cloud Shell, esegui queste operazioni:

gcloud compute networks create transit-vpc --project=$projectname --subnet-mode=custom --mtu=1460 --enable-ula-internal-ipv6 --bgp-routing-mode=regional

4. Crea la rete on-premise

58d75cbc9cb20a51.png

Questa rete VPC rappresenta un ambiente on-premise.

Crea la rete VPC on-premise

All'interno di Cloud Shell, esegui queste operazioni:

gcloud compute networks create on-premises-vpc --project=$projectname --subnet-mode=custom --mtu=1460 --enable-ula-internal-ipv6 --bgp-routing-mode=regional

Crea la subnet

In Cloud Shell, svolgi i seguenti passaggi:

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. Crea una VPN ad alta disponibilità per transit-vpc e on-premise-vpc

Crea il GW VPN ad alta disponibilità per transit-vpc

a0fc56abf24f3535.png

Quando viene creato ciascun gateway, vengono automaticamente allocati due indirizzi IPv4 esterni, uno per ogni interfaccia del gateway. Prendi nota di questi indirizzi IP da utilizzare in seguito nei passaggi di configurazione.

In Cloud Shell, crea il gateway VPN ad alta disponibilità con tipo di stack IPV4_IPV6.

gcloud compute vpn-gateways create transit-vpc-vpngw \
   --network=transit-vpc\
   --region=us-central1 \
   --stack-type=IPV4_IPV6

Crea il GW VPN ad alta disponibilità per il VPC on-premise

In Cloud Shell, crea il gateway VPN ad alta disponibilità con tipo di stack IPV4_IPV6

gcloud compute vpn-gateways create on-premises-vpc-vpngw \
   --network=on-premises-vpc\
   --region=us-central1 \
   --stack-type=IPV4_IPV6

Convalida la creazione del gateway VPN ad alta disponibilità

Nella console, vai a Connettività ibrida → VPN → GATEWAY CLOUD VPN.

c8eed6ca929935bc.png

Crea il router Cloud per transit-vpc

In Cloud Shell, crea il router Cloud che si trova in us-central1

gcloud compute routers create transit-vpc-cr-us-central1 \
   --region=us-central1 \
   --network=transit-vpc\
   --asn=65001

Crea il router Cloud per il VPC on-premise

In Cloud Shell, crea il router Cloud che si trova in us-central1

gcloud compute routers create on-premises-vpc-cr-us-central1 \
   --region=us-central1 \
   --network=on-premises-vpc \
   --asn=65002

Crea i tunnel VPN per transit-vpc

Creerai due tunnel VPN su ciascun gateway VPN ad alta disponibilità.

Crea tunnel VPN0

In Cloud Shell, crea tunnel0:

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

Crea tunnel VPN1

In Cloud Shell, crea tunnel1:

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

Crea i tunnel VPN per on-premises-vpc

Dovrai creare due tunnel VPN su ogni gateway VPN ad alta disponibilità.

Crea tunnel VPN0

In Cloud Shell, crea tunnel0:

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

Crea tunnel VPN1

In Cloud Shell, crea tunnel1:

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

Convalida la creazione del tunnel VPN

Nella console, vai a Connettività ibrida → VPN → TUNNEL VPN CLOUD.

85fd5aef4b2c4010.png

Crea sessioni BGP

In questa sezione, devi configurare le interfacce e i peer BGP di Cloud Router.

Quando crei tunnel VPN che consentono il traffico IPv6, specifica --enable-ipv6 quando esegui il comando add-bgp-peer.

Crea un'interfaccia BGP e il peering per Transit-vpc

In Cloud Shell, crea l'interfaccia 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

In Cloud Shell, crea il peer 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

In Cloud Shell, crea l'interfaccia 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

In Cloud Shell, crea il peer 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

Crea un'interfaccia BGP e un peering per on-premises-vpc

In Cloud Shell, crea l'interfaccia 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

In Cloud Shell, crea il peer 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

In Cloud Shell, crea l'interfaccia 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

In Cloud Shell, crea il peer 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

Vai a Connettività ibrida → VPN per visualizzare i dettagli del tunnel VPN.

e100e31ea22c8124.png

Verifica che transit-vpc apprenda le route IPv4 e IPv6 tramite la VPN ad alta disponibilità

Poiché sono stati stabiliti i tunnel VPN ad alta disponibilità e le sessioni BGP, le route da VPC on-premise vengono apprese da transit-vpc. Nella console, vai a Rete VPC → Reti VPC → transit-vpc → ROUTES.

Osserva le route dinamiche IPv4 e IPv6 apprese illustrate di seguito:

216bde7d08d75ec4.png

Verifica che on-premises-vpc non apprenda le route tramite VPN ad alta disponibilità

Transit-vpc non ha una subnet, pertanto il router Cloud non pubblicizzerà alcuna subnet alla VPC on-premise. Utilizzando la console, vai a Rete VPC → Reti VPC → on-premise-vpc → ROUTES.

6. Pubblicizza il VIP private.googleapis.com IPv6

Per accedere all'accesso privato Google da on-premise, devi creare un annuncio di route personalizzato dalla VPC di transito. L'indirizzo IPv6 2600:2d00:0002:2000:: verrà pubblicizzato nell'ambiente on-premise e utilizzato dai carichi di lavoro per accedere alle API Google come Cloud Storage, Cloud BigQuery e Cloud Bigtable dopo l'aggiornamento del DNS locale.

In questo codelab, attiverai l'accesso API alla maggior parte delle API e dei servizi Google, indipendentemente dal fatto che siano supportati dai Controlli di servizio VPC.

Dalla console vai a Connettività ibrida → Router Cloud → transit-vpc-cr-us-central1, quindi seleziona MODIFICA.

3e36e3b5ea741ec5.png

Nella sezione Percorsi pubblicizzati, seleziona l'opzione Crea percorsi personalizzati, aggiorna i campi in base all'esempio riportato di seguito, seleziona FINE e poi fai clic su SALVA.

9283aba7b214f70d.png

Verifica che la VPN on-premise stia imparando le route IPv6

Ora che il VIP IPv6 private.googleapis.com è pubblicizzato da transit-vpc, on-premise-vpc avrà appreso le route dinamiche IPv6 per il VIP. Nella console, vai a Rete VPC → Reti VPC → on-premises-vpc → ROUTE.

Osserva le route IPv6 annunciate da transit-vpc:

caf3b79b035b2a20.png

7. Stabilire la comunicazione con le API di Google utilizzando l'accesso privato Google

Nella sezione seguente, accederemo e convalideremo la connettività a Cloud Storage utilizzando l'IPv6 private.googleapis.com VIP. Per farlo, dobbiamo eseguire le azioni seguenti nella rete VPC on-premise.

  • Crea una regola firewall in entrata per consentire l'accesso mediante Identity Aware Proxy (IAP) per l'accesso SSH.
  • Crea un router Cloud e Cloud NAT per scaricare tcpdump e dnsutils.
  • Crea una zona Cloud DNS privata per googleapis.com.
  • Creare un bucket Cloud Storage.

Crea la regola firewall IAP

Per consentire a IAP di connettersi alle tue istanze VM, crea una regola firewall che:

  • Si applica a tutte le istanze VM a cui vuoi accedere tramite IAP.
  • Consente il traffico in entrata dall'intervallo IP 35.235.240.0/20. Questo intervallo contiene tutti gli indirizzi IP utilizzati da IAP per l'inoltro TCP.

In Cloud Shell, crea la regola firewall 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

Router Cloud e configurazione NAT

Cloud NAT viene utilizzato nel codelab per l'installazione del pacchetto software perché l'istanza VM non ha un indirizzo IP esterno.

In Cloud Shell, crea il router Cloud.

gcloud compute routers create on-premises-cr-us-central1-nat --network on-premises-vpc --region us-central1

In Cloud Shell, crea il gateway 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

Crea un'istanza di test, on-premise-testbox

Crea un'istanza di test che verrà utilizzata per testare e convalidare la connettività al VIP IPv6 private.googleapis.com.

In Cloud Shell, crea l'istanza.

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"

Crea la zona privata di Cloud DNS

Utilizzeremo Cloud DNS per creare una zona privata e i record per *.googleapis.com. Di seguito sono riportati i passaggi necessari.

In Cloud Shell, crea una zona DNS privata v6-googleapis.com.

gcloud dns --project=$projectname managed-zones create v6-googleapis --description="" --dns-name="googleapis.com." --visibility="private" --networks="on-premises-vpc"

In Cloud Shell, crea il record AAAA per private.googleapis.com che rimandi all'indirizzo 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::"

In Cloud Shell, crea un CNAME per *.googleapis.com in modo che punti a private.googleapis.com.

gcloud dns --project=$projectname record-sets create *.googleapis.com. --zone="v6-googleapis" --type="CNAME" --ttl="300" --rrdatas="private.googleapis.com."

Convalida la zona privata di Cloud DNS

Vai a Servizi di rete → Cloud DNS → v6-googleapis.

455e355195a2a48f.png

crea il bucket Cloud Storage

In Cloud Shell, crea un bucket Cloud Storage e sostituisci bucket_name con un nome univoco a livello globale che preferisci. Prova un altro nome se è già in uso.

gsutil mb  -l us-central1 -b on gs://bucket_name

8. Accedi e convalida le API di Google utilizzando indirizzi IPv6

Nella sezione seguente, eseguirai una connessione tramite SSH in due terminali Cloud Shell. Il primo terminale viene utilizzato per convalidare la ricerca IPv6 utilizzando tcpdump, mentre il secondo viene utilizzato per accedere al bucket di archiviazione sul cloud.

In Cloud Shell, esegui un comando ssh per testare l'istanza on-premises-testbox.

 gcloud compute ssh --zone "us-central1-a" "on-premises-testbox" --project "$projectname"

Nel terminale 1 di Cloud Shell, avvia tcpdump e monitora la porta 53 per il traffico DNS.

sudo tcpdump -nn -i ens4 port 53

Esempio di seguito.

user@on-premises-testbox:~$ sudo tcpdump -nn -i ens4 port 53

Apri un nuovo terminale Cloud Shell selezionando "+". Una volta aperta la nuova scheda, aggiorna la variabile del nome del progetto.

In Cloud Shell, aggiorna la variabile del nome del progetto.

gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectname=YOUR-PROJECT-NAME
echo $projectname

In Cloud Shell 2, esegui un comando ssh per testare l'istanza on-premises-testbox.

gcloud compute ssh --zone "us-central1-a" "on-premises-testbox" --project "$projectname"

Esegui una ricerca per convalidare la ricerca DNS

Nel terminale 2 di Cloud Shell, esegui una ricerca su storage.googleapis.com.

dig AAAA storage.googleapis.com

Controlla la SEZIONE RISPOSTA, la zona DNS privata storage.googleapis.com CNAME a private.googleapis.com AAAA 2600:2d00:2:2000::, esempio di seguito:

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

Nel terminale Cloud Shell 1, controlla il tcpdump che conferma ulteriormente la risoluzione DNS in 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)

In base a dig e tcpdump, possiamo concludere che la risoluzione DNS di storage.googleapis.com viene eseguita tramite 2600:2d00:2:2000::, l'indirizzo IPv6 di private.googleapis.com.

Esegui gsutil list per convalidare l'accesso a Cloud Storage

Nel secondo terminale Cloud Shell, esegui un elenco nel bucket di archiviazione creato in precedenza utilizzando gsutil. Modifica bucket_name con il bucket che hai creato in precedenza.

gsutil -d ls gs://bucket_name

Esempio di utilizzo del bucket Cloud Storage codelab-ipv6: controlla l'output di debug che indica storage.googleapis.com e 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:~$ 

All'interno del terminale 1 di Cloud Shell, ispeziona il tcpdump che conferma ulteriormente la risoluzione DNS in 2600:2d00:2:2000:: AAAA.

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)

Esci dal sistema operativo dell'istanza on-premise-testbox, tornando al prompt di Cloud Shell.

9. Esegui la pulizia

In Cloud Shell, svolgi i seguenti passaggi:

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. Complimenti

Congratulazioni, hai configurato e convalidato correttamente un accesso privato Google con IPv6.

Hai creato l'infrastruttura on-premise e per il trasporto pubblico e hai creato una zona DNS privata che abilita la risoluzione per i domini API di Google utilizzando IPv6. Hai imparato a testare e convalidare l'accesso IPv6 utilizzando dig e Cloud Storage.

Cosmopup pensa che i codelab siano fantastici.

8c2a10eb841f7b01.jpeg

Passaggi successivi

Dai un'occhiata ad alcuni di questi codelab…

Letture e video di approfondimento

Documenti di riferimento