Accede a las APIs de Google desde hosts locales mediante direcciones IPv6

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

a0fc56abf24f3535.png

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

f6932f551b5acac0.png

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

58d75cbc9cb20a51.png

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

a0fc56abf24f3535.png

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.

c8eed6ca929935bc.png

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.

85fd5aef4b2c4010.png

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.

e100e31ea22c8124.png

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:

216bde7d08d75ec4.png

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.

3e36e3b5ea741ec5.png

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.

9283aba7b214f70d.png

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:

caf3b79b035b2a20.png

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.

455e355195a2a48f.png

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.

8c2a10eb841f7b01.jpeg

¿Qué sigue?

Consulta algunos codelabs sobre los siguientes temas:

Lecturas y videos adicionales

Documentos de referencia