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
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
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
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
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.
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.
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.
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:
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.
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 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:
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.
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.
¿Qué sigue?
Consulta algunos codelabs sobre los siguientes temas: