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 conectarse a las APIs y a los servicios de Google a través de Internet.

El Acceso privado a Google para hosts locales requiere que dirijas las solicitudes de 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 los servicios a los que 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. Para tu implementación, la VPC on-premises no existiría, sino que se usaría una red híbrida a tu centro de datos local o al 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 almacenamiento en la nube con el CNAME *.googleapis.com a la dirección IPv6 2600:2d00:0002:2000::/64 de private.googleapis.com, 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 admitir el codelab

En este codelab, se usan $variables para ayudar a implementar la configuración de gcloud en Cloud Shell.

En Cloud Shell, haz lo siguiente:

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

3. Crea transit-vpc

f6932f551b5acac0.png

Crea la red de VPC de tránsito

En 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, realiza 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

En 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 transit-vpc

a0fc56abf24f3535.png

Cuando se crea cada puerta de enlace, se asignan automáticamente 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.

En 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

En 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 puertas de enlace de VPN con alta disponibilidad

En la consola, navega a Conectividad híbrida → VPN → GATEWAYS DE CLOUD VPN.

c8eed6ca929935bc.png

Crea el Cloud Router para transit-vpc

En 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

En 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

En 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

En 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

En 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

En 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

Validar la creación del túnel VPN

Con la consola, navega a Conectividad híbrida → VPN → TUNNELS DE VPN DE CLOUD.

85fd5aef4b2c4010.png

Crea sesiones de BGP

En esta sección, configurarás las interfaces de Cloud Router y los 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

En 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

En 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

En 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

En 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

En 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

En 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

En 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

En 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 una VPN con alta disponibilidad

Debido a que se establecen los túneles de 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 → RUTA.

Observa las rutas dinámicas IPv4 e IPv6 aprendidas que se ilustran a continuación:

216bde7d08d75ec4.png

Valida que on-premises-vpc no aprenda las rutas a través de una VPN con alta disponibilidad

Transit-vpc 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 → RUTA.

6. Anuncia el VIP de private.googleapis.com de IPv6

Para acceder al Acceso privado a Google desde las instalaciones, deberás crear un anuncio de ruta personalizado desde transit-vpc. La dirección IPv6 2600:2d00:0002:2000:: se anunciará al 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 para la mayoría de los servicios y las APIs de Google, independientemente de si son compatibles con los Controles del servicio de VPC.

En la consola, navega a Conectividad híbrida → Routers en la nube → 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 aprenda rutas IPv6

Ahora que la VIP de IPv6 private.googleapis.com se anuncia desde transit-vpc, on-premises-vpc habrá aprendido las rutas dinámicas IPv6 para la VIP. En la consola, navega a Red de VPC → Redes de VPC → on-premises-vpc → RUTA.

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 mediante el VIP private.googleapis.com de IPv6. 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 que se pueda 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.

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

En Cloud Shell, crea el Cloud Router.

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

En 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 el VIP private.googleapis.com de IPv6.

En 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 los registros de *.googleapis.com. Estos son los pasos obligatorios.

En 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"

En 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::"

En 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

En Cloud Shell, crea un bucket de Cloud Storage y reemplaza bucket_name por el 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 valida 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 para probar la instancia on-premises-testbox.

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

Dentro de la terminal uno de Cloud Shell, inicia tcpdump y supervisa el puerto 53 para detectar 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

Selecciona el signo "+" para abrir una terminal nueva de Cloud Shell. Cuando se abra la pestaña nueva, actualiza la variable del nombre del proyecto.

En Cloud Shell, actualiza la variable de nombre del proyecto.

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

En Cloud Shell dos, realiza un ssh para probar la instancia on-premises-testbox.

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

Realiza un comando dig para validar la búsqueda de DNS

Dentro de la terminal dos de Cloud Shell, realiza una excavación en storage.googleapis.com.

dig AAAA storage.googleapis.com

Inspecciona la SECCIÓN DE RESPUESTA, CNAME de la zona de DNS privada storage.googleapis.com a private.googleapis.com AAAA 2600:2d00:2:2000::, como se muestra a continuación:

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)

En función de dig y tcpdump, podemos concluir que la resolución de DNS a storage.googleapis.com se logra a través de 2600:2d00:2:2000::, la dirección IPv6 de private.googleapis.com.

Ejecuta gsutil list para validar el acceso a Cloud Storage

En la segunda terminal de Cloud Shell, crea una lista con 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 la 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:~$ 

En la terminal uno de Cloud Shell, inspecciona el tcpdump que confirma aún más la resolución de DNS a 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 la caja de prueba local y vuelve al mensaje 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 local y de tránsito, y también una zona DNS privada que habilitaba la resolución para los dominios de las APIs de Google con IPv6. Aprendiste a probar y validar el acceso IPv6 con dig y almacenamiento en la nube.

Cosmopup piensa que los codelabs son geniales.

8c2a10eb841f7b01.jpeg

¿Qué sigue?

Consulta algunos codelabs sobre los siguientes temas:

Lecturas y videos adicionales

Documentos de referencia