1. Introducción
El Acceso privado a Google para hosts locales proporciona una forma de conectar sistemas locales a los servicios y las APIs de Google mediante el enrutamiento del tráfico a través de un túnel de Cloud VPN o un adjunto de VLAN para Cloud Interconnect. El Acceso privado a Google para hosts locales es una alternativa a la conexión a las APIs y los servicios de Google a través de Internet.
El Acceso privado a Google para hosts locales requiere que dirijas las solicitudes a las APIs de Google a direcciones IP virtuales (VIP). Para IPv6, se usan las siguientes direcciones IP:
- Para private.googleapis.com: 2600:2d00:0002:2000::/64
- Para restricted.googleapis.com: 2600:2d00:0002:1000::/64
La VIP que elijas determina a qué servicios puedes acceder. En este codelab, usaremos private.googleapis.com. Para obtener más información, consulta Opciones de dominio.
En este codelab, se describe cómo habilitar el Acceso privado a Google para hosts locales que usan direcciones IPv6. Configurarás una red de VPC llamada on-premises-vpc para representar un entorno local. En tu implementación, la VPC local no existiría. En su lugar, se usaría la red híbrida para tu centro de datos local o proveedor de servicios en la nube.
Qué compilarás
En este codelab, compilarás una red IPv6 de extremo a extremo que demuestre el acceso local a la API de Cloud Storage con el CNAME *.googleapis.com a la dirección IPv6 de private.googleapis.com 2600:2d00:0002:2000::/64, como se ilustra en la Figura 1.
Figura 1

Qué aprenderás
- Cómo crear una red de VPC de pila doble
- Cómo crear una VPN con alta disponibilidad con IPv6
- Cómo actualizar el DNS para acceder al Acceso privado a Google
- Cómo establecer y validar la conectividad del Acceso privado a Google
Requisitos
- Proyecto de Google Cloud
2. Antes de comenzar
Actualiza el proyecto para que sea compatible con el codelab
En este codelab, se usan variables para facilitar la implementación de la configuración de gcloud en Cloud Shell.
Dentro de Cloud Shell, haz lo siguiente:
gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectname=YOUR-PROJECT-NAME
echo $projectname
3. Crea la VPC de tránsito

Crea la red de VPC de tránsito
Dentro de Cloud Shell, haz lo siguiente:
gcloud compute networks create transit-vpc --project=$projectname --subnet-mode=custom --mtu=1460 --enable-ula-internal-ipv6 --bgp-routing-mode=regional
4. Crea la red local

Esta red de VPC representa un entorno local.
Crea la red de VPC local
Dentro de Cloud Shell, haz lo siguiente:
gcloud compute networks create on-premises-vpc --project=$projectname --subnet-mode=custom --mtu=1460 --enable-ula-internal-ipv6 --bgp-routing-mode=regional
Crea la subred
Dentro de Cloud Shell, haz lo siguiente:
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 con alta disponibilidad para transit-vpc y on-premises-vpc
Crea la puerta de enlace de VPN con alta disponibilidad para la VPC de tránsito

Cuando se crea cada puerta de enlace, se asignan de forma automática dos direcciones IPv4 externas, una para cada interfaz de puerta de enlace. Anota estas direcciones IP para usarlas más adelante en los pasos de configuración.
Dentro de Cloud Shell, crea la puerta de enlace de VPN con alta disponibilidad con el tipo de pila IPV4_IPV6.
gcloud compute vpn-gateways create transit-vpc-vpngw \
--network=transit-vpc\
--region=us-central1 \
--stack-type=IPV4_IPV6
Crea la puerta de enlace de VPN con alta disponibilidad para on-premises-vpc
Dentro de Cloud Shell, crea la puerta de enlace de VPN con alta disponibilidad con el tipo de pila IPV4_IPV6.
gcloud compute vpn-gateways create on-premises-vpc-vpngw \
--network=on-premises-vpc\
--region=us-central1 \
--stack-type=IPV4_IPV6
Valida la creación de la puerta de enlace de VPN con alta disponibilidad
En la consola, navega a Conectividad híbrida → VPN → PUERTAS DE ENLACE DE CLOUD VPN.

Crea el Cloud Router para transit-vpc
Dentro de Cloud Shell, crea el Cloud Router ubicado en us-central1.
gcloud compute routers create transit-vpc-cr-us-central1 \
--region=us-central1 \
--network=transit-vpc\
--asn=65001
Crea el Cloud Router para on-premises-vpc
Dentro de Cloud Shell, crea el Cloud Router ubicado en us-central1.
gcloud compute routers create on-premises-vpc-cr-us-central1 \
--region=us-central1 \
--network=on-premises-vpc \
--asn=65002
Crea los túneles VPN para transit-vpc
Crearás dos túneles VPN en cada puerta de enlace de VPN con alta disponibilidad.
Crea el túnel VPN0
Dentro de 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 el túnel VPN1
Dentro de 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 los túneles VPN para on-premises-vpc
Crearás dos túneles VPN en cada puerta de enlace de VPN con alta disponibilidad.
Crea el túnel VPN0
Dentro de 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 el túnel VPN1
Dentro de 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
Valida la creación del túnel VPN
En la consola, navega a Conectividad híbrida → VPN → TÚNELES DE CLOUD VPN.

Crea sesiones de BGP
En esta sección, configurarás interfaces de Cloud Router y pares de BGP.
Cuando crees túneles VPN que permitan el tráfico IPv6, especifica --enable-ipv6 cuando ejecutes el comando add-bgp-peer.
Crea una interfaz de BGP y un intercambio de tráfico para transit-vpc
Dentro de Cloud Shell, crea la interfaz de 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
Dentro de Cloud Shell, crea el par de 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
Dentro de Cloud Shell, crea la interfaz de 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
Dentro de Cloud Shell, crea el par de 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 una interfaz de BGP y un intercambio de tráfico para on-premises-vpc
Dentro de Cloud Shell, crea la interfaz de 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
Dentro de Cloud Shell, crea el par de 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
Dentro de Cloud Shell, crea la interfaz de 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
Dentro de Cloud Shell, crea el par de 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
Navega a Conectividad híbrida → VPN para ver los detalles del túnel de VPN.

Valida que transit-vpc esté aprendiendo rutas IPv4 e IPv6 a través de la VPN con alta disponibilidad
Debido a que se establecieron los túneles VPN con alta disponibilidad y las sesiones de BGP, las rutas de on-premises-vpc se aprenden de transit-vpc. En la consola, navega a Red de VPC → Redes de VPC → transit-vpc → RUTAS.
Observa las rutas dinámicas IPv4 e IPv6 aprendidas que se ilustran a continuación:

Valida que on-premises-vpc no esté aprendiendo rutas a través de la VPN con alta disponibilidad
La VPC de tránsito no tiene una subred, por lo que Cloud Router no anunciará ninguna subred a la VPC local. En la consola, navega a Red de VPC → Redes de VPC → on-premises-vpc → RUTAS.
6. Anuncia la VIP de private.googleapis.com de IPv6
Para acceder al Acceso privado a Google desde las instalaciones locales, deberás crear un anuncio de ruta personalizado desde transit-vpc. La dirección IPv6 2600:2d00:0002:2000:: se anunciará en el entorno local y las cargas de trabajo la usarán para acceder a las APIs de Google, como Cloud Storage, Cloud BigQuery y Cloud Bigtable, después de que se actualice el DNS local.
En este codelab, habilitarás el acceso a la API de la mayoría de los servicios y las APIs de Google, sin importar si son compatibles con los Controles del servicio de VPC.
En la consola, navega a Conectividad híbrida → Cloud Routers → transit-vpc-cr-us-central1 y, luego, selecciona EDITAR.

En la sección Rutas anunciadas, selecciona la opción Crear rutas personalizadas, actualiza los campos según el siguiente ejemplo, selecciona LISTO y, luego, haz clic en GUARDAR.

Valida que on-premises-vpc esté aprendiendo rutas IPv6
Ahora que el VIP de private.googleapis.com de IPv6 se anuncia desde transit-vpc, on-premises-vpc habrá aprendido las rutas dinámicas de IPv6 para el VIP. En la consola, navega a Red de VPC → Redes de VPC → on-premises-vpc → RUTAS.
Observa las rutas IPv6 anunciadas desde transit-vpc:

7. Establece la comunicación con las APIs de Google a través del Acceso privado a Google
En la siguiente sección, accederemos a Cloud Storage y validaremos la conectividad con él a través de la VIP privada de IPv6 private.googleapis.com. Para ello, debemos realizar las siguientes acciones en on-premises-vpc.
- Crea una regla de firewall de entrada para permitir el acceso de Identity-Aware Proxy (IAP) para el acceso SSH.
- Crea un Cloud Router y Cloud NAT para descargar tcpdump y dnsutils.
- Crea una zona privada de Cloud DNS para googleapis.com.
- Crear un bucket de Cloud Storage
Crea la regla de firewall de IAP
Para permitir que IAP se conecte a tus instancias de VM, crea una regla de firewall que cumpla con lo siguiente:
- Se aplica a todas las instancias de VM a las que deseas acceder mediante IAP.
- Permite el tráfico de entrada desde el rango de IP 35.235.240.0/20. Este rango contiene todas las direcciones IP que IAP usa para el reenvío de TCP.
Dentro de Cloud Shell, crea la regla de firewall de 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
Configuración de Cloud Router y NAT
Cloud NAT se usa en el codelab para la instalación de paquetes de software porque la instancia de VM no tiene una dirección IP externa.
Dentro de Cloud Shell, crea el Cloud Router.
gcloud compute routers create on-premises-cr-us-central1-nat --network on-premises-vpc --region us-central1
Dentro de Cloud Shell, crea la puerta de enlace 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 una instancia de prueba, on-premises-testbox
Crea una instancia de prueba que se usará para probar y validar la conectividad con la VIP de IPv6 private.googleapis.com.
Dentro de Cloud Shell, crea la instancia.
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 privada de Cloud DNS
Usaremos Cloud DNS para crear una zona privada y registros para *.googleapis.com. A continuación, se indican los pasos necesarios.
Dentro de Cloud Shell, crea una zona DNS privada v6-googleapis.com.
gcloud dns --project=$projectname managed-zones create v6-googleapis --description="" --dns-name="googleapis.com." --visibility="private" --networks="on-premises-vpc"
Dentro de Cloud Shell, crea el registro AAAA para private.googleapis.com que apunte a la dirección 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::"
Dentro de Cloud Shell, crea un CNAME para *.googleapis.com que apunte a private.googleapis.com.
gcloud dns --project=$projectname record-sets create *.googleapis.com. --zone="v6-googleapis" --type="CNAME" --ttl="300" --rrdatas="private.googleapis.com."
Valida la zona privada de Cloud DNS
Navega a Servicios de red → Cloud DNS → v6-googleapis.

Crea el bucket de Cloud Storage
Dentro de Cloud Shell, crea un bucket de Cloud Storage y reemplaza bucket_name por un nombre único a nivel global que prefieras. Si ya está en uso, prueba con otro nombre.
gsutil mb -l us-central1 -b on gs://bucket_name
8. Accede a las APIs de Google y valídalas con direcciones IPv6
En la siguiente sección, realizarás una conexión SSH a dos terminales de Cloud Shell. La primera terminal se usa para validar la búsqueda de IPv6 con tcpdump, mientras que la segunda se usa para acceder al bucket de Cloud Storage.
Dentro de Cloud Shell, realiza una conexión SSH a la instancia de prueba on-premises-testbox.
gcloud compute ssh --zone "us-central1-a" "on-premises-testbox" --project "$projectname"
En la terminal 1 de Cloud Shell, inicia tcpdump y supervisa el puerto 53 para el tráfico de DNS.
sudo tcpdump -nn -i ens4 port 53
Consulta un ejemplo a continuación.
user@on-premises-testbox:~$ sudo tcpdump -nn -i ens4 port 53
Abre una nueva terminal de Cloud Shell seleccionando el signo "+". Una vez que se abra la nueva pestaña, actualiza la variable del nombre del proyecto.
En Cloud Shell, actualiza la variable del nombre del proyecto.
gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectname=YOUR-PROJECT-NAME
echo $projectname
Dentro de Cloud Shell 2, realiza una conexión SSH a la instancia de prueba on-premises-testbox.
gcloud compute ssh --zone "us-central1-a" "on-premises-testbox" --project "$projectname"
Realiza una búsqueda con dig para validar la búsqueda de DNS
En la segunda terminal de Cloud Shell, ejecuta un comando dig en storage.googleapis.com.
dig AAAA storage.googleapis.com
Inspecciona la SECCIÓN DE RESPUESTAS, el almacenamiento de la zona de DNS privada storage.googleapis.com CNAME en private.googleapis.com AAAA 2600:2d00:2:2000::, como se muestra en el siguiente ejemplo:
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
Dentro de la terminal uno de Cloud Shell, inspecciona el tcpdump que confirma aún más la resolución de DNS en 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)
Según dig y tcpdump, podemos concluir que la resolución de DNS en storage.googleapis.com se logra a través de 2600:2d00:2:2000::, la dirección IPv6 de private.googleapis.com.
Realiza una lista de gsutil para validar el acceso a Cloud Storage
En la segunda terminal de Cloud Shell, realiza una lista en el bucket de almacenamiento creado anteriormente con gsutil. Cambia bucket_name por el bucket que creaste anteriormente.
gsutil -d ls gs://bucket_name
Ejemplo con el bucket de Cloud Storage codelab-ipv6. Inspecciona el resultado de depuración que indica storage.googleapis.com y 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:~$
Dentro de la terminal uno de Cloud Shell, inspecciona el tcpdump que confirma aún más la resolución de DNS en 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)
Sal del sistema operativo de la instancia de on-premises-testbox y vuelve al símbolo del sistema de Cloud Shell.
9. Limpieza
En Cloud Shell, haz lo siguiente:
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. Felicitaciones
Felicitaciones, configuraste y validaste correctamente un Acceso privado a Google con IPv6.
Creaste la infraestructura de tránsito y local, y creaste una zona de DNS privada que permite la resolución de dominios de la API de Google con IPv6. Aprendiste a probar y validar el acceso a IPv6 con dig y Cloud Storage.
Cosmopup cree que los codelabs son increíbles.

¿Qué sigue?
Consulta algunos codelabs sobre los siguientes temas: