1. Introducción
Con Private Service Connect, puedes crear extremos privados con direcciones IP internas globales dentro de tu red de VPC para acceder a las APIs de Google. Puedes asignar nombres de DNS a estas direcciones IP internas con nombres significativos, como storage-pscendpoint.p.googleapis.com y bigtable-adsteam.p.googleapis.com. En lugar de enviar solicitudes a la API a extremos de servicio público, como storage.googleapis.com, puedes enviar las solicitudes al extremo de Private Service Connect, que es interno y privado para tu red de VPC.
Estos nombres y direcciones IP son internos a tu red de VPC y a cualquier red local que esté conectada a ella con túneles de Cloud VPN o adjuntos de Cloud Interconnect (VLAN).
Puedes controlar qué tráfico se dirige a cada extremo y puedes demostrar que el tráfico permanece dentro de Google Cloud.
Qué aprenderás
- Casos de uso de Private Service Connect
- Requisitos de red
- API admitidas
- Crear un extremo de Private Service Connect
- Cree un bucket de Cloud Storage
- Crea y actualiza zonas privadas de Cloud DNS
- Crea una puerta de enlace NAT para acceder a googleapis público
- Crea y actualiza un archivo de configuración BOTO
- Realiza la lista de gsutil en VM1 resuelta en tu extremo de servicio de PSC
- Realiza la lista de gsutil en VM2 resuelta en googleapis.com pública
- Usa Tcpdump para validar la resolución de DNS
Requisitos
- Conocimientos de DNS, editor nano o vi
2. Casos de uso de Private Service Connect
Puedes crear varios extremos de Private Service Connect en la misma red de VPC. No hay límite en el ancho de banda para un extremo en particular. Debido a que los extremos de Private Service Connect usan direcciones IP internas globales, cualquier recurso de tu red de VPC puede usarlas.
Con varios extremos, puedes especificar diferentes rutas de red con Cloud Router y reglas de firewall.
- Puedes crear reglas de firewall para evitar que algunas VMs accedan a las APIs de Google a través de un extremo de Private Service Connect, y permitir que otras VMs tengan acceso.
- Puedes tener una regla de firewall en una instancia de VM que rechace todo el tráfico a Internet. el tráfico enviado a los extremos de Private Service Connect aún llega a Google.
- Si tienes hosts locales conectados a una VPC a través de un túnel de Cloud VPN o un adjunto de Cloud Interconnect (VLAN), puedes enviar algunas solicitudes a través del túnel o VLAN mientras envías otras solicitudes a través de la Internet pública. Esta configuración te permite omitir el túnel o la VLAN para servicios como Google Libros que no son compatibles con el Acceso privado a Google. Para crear esta configuración, crea un extremo de Private Service Connect, anuncia las direcciones IP del extremo de Private Service Connect con anuncios de ruta personalizados de Cloud Router y habilita una política de reenvío entrante de Cloud DNS. La aplicación puede enviar algunas solicitudes a través del túnel de Cloud VPN o del adjunto de Cloud Interconnect (VLAN) con el nombre del extremo de Private Service Connect y otras a través de Internet con el nombre DNS predeterminado.
- Si conectas tu red local a la red de VPC con varios adjuntos de Cloud Interconnect (VLAN), puedes enviar algo de tráfico desde la ubicación local a través de una VLAN y el resto sobre los demás, como se muestra en la figura 2. Esto te permite usar tus propias redes de área amplia en lugar de las de Google y controlar el movimiento de datos para cumplir con los requisitos geográficos. Para generar esta configuración, crea dos extremos de Private Service Connect. Crea un anuncio de ruta personalizado para el primer extremo de la sesión de BGP del Cloud Router que administra la primera VLAN y crea un anuncio de ruta personalizado diferente para el segundo extremo en la sesión de BGP del Cloud Router que administra la segunda VLAN. Los hosts locales que están configurados para usar el nombre del extremo de Private Service Connect envían tráfico a través del adjunto de Cloud Interconnect (VLAN) correspondiente.
- También puedes usar varios adjuntos de Cloud Interconnect (VLAN) en una topología activa/activa. Si anuncias la misma dirección IP del extremo de Private Service Connect con anuncios de ruta personalizados para las sesiones de BGP en los Cloud Routers que administran las VLAN, los paquetes enviados desde sistemas locales a los extremos se enrutan a través de las VLAN con ECMP.
Figura 1: Cuando configuras Private Service Connect, Cloud Router y los hosts locales, puedes controlar qué adjunto de Cloud Interconnect (VLAN) se usa para enviar tráfico a las APIs de Google.
3. Requisitos de red
Para usar Private Service Connect, las instancias de máquina virtual (VM) sin direcciones IP externas deben tener su interfaz principal en una subred con el Acceso privado a Google habilitado.
Una VM con una dirección IP externa puede acceder a los servicios y las APIs de Google con los extremos de Private Service Connect, sin importar si el Acceso privado a Google está habilitado para su subred. La conectividad con el extremo de Private Service Connect permanece dentro de la red de Google.
No se puede acceder a los extremos de Private Service Connect desde redes de VPC con intercambio de tráfico.
APIs admitidas
Cuando creas un extremo de Private Service Connect, eliges a qué paquete de APIs necesitas acceso: all-apis o vpc-sc.
Los paquetes de APIs otorgan acceso a las mismas APIs que están disponibles a través de las VIP del Acceso privado a Google.
- El paquete all-apis proporciona acceso a las mismas APIs que private.googleapis.com.
- El paquete vpc-sc proporciona acceso a las mismas APIs que restricted.googleapis.com.
4. Topología de codelabs y caso de uso
Figura 1: Topología del codelab
Caso de uso del codelab:
Nuestro cliente necesita una combinación de acceso privado (interconexión) y público de googleapis para la transferencia de datos del almacenamiento en la nube. Para cumplir con los requisitos de nuestros clientes, implementaremos Private Service Connect, que consta de una dirección única de /32, una configuración de BOTO y actualizaciones de registros DNS. La máquina virtual 1 usará PSC para acceder a los buckets de Cloud Storage. en cambio, la VM2 usará rangos de IP públicos de googleapis.com a través de la puerta de enlace NAT.
Todos los aspectos del lab se implementan en Google Cloud Platform, pero se aplica el mismo caso de uso a la implementación de nubes híbridas que requieren la separación del tráfico.
5. Configuración y requisitos
Configuración del entorno de autoaprendizaje
- Accede a la consola de Cloud y crea un proyecto nuevo o reutiliza uno existente. Si aún no tienes una cuenta de Gmail o de Google Workspace, debes crear una.
Recuerde el ID de proyecto, un nombre único en todos los proyectos de Google Cloud (el nombre anterior ya se encuentra en uso y no lo podrá usar). Se mencionará más adelante en este codelab como PROJECT_ID
.
- A continuación, deberás habilitar la facturación en la consola de Cloud para usar los recursos de Google Cloud recursos.
Ejecutar este codelab no debería costar mucho, tal vez nada. Asegúrate de seguir las instrucciones de la sección “Realiza una limpieza” en la que se aconseja cómo cerrar recursos para no incurrir en facturación más allá de este instructivo. Los usuarios nuevos de Google Cloud son aptos para participar en el programa Prueba gratuita de$300.
Inicia Cloud Shell
Si bien Google Cloud y Spanner se pueden operar de manera remota desde tu laptop, en este codelab usarás Google Cloud Shell, un entorno de línea de comandos que se ejecuta en la nube.
En GCP Console, haga clic en el ícono de Cloud Shell en la barra de herramientas superior derecha:
El aprovisionamiento y la conexión al entorno deberían tomar solo unos minutos. Cuando termine el proceso, debería ver algo como lo siguiente:
Esta máquina virtual está cargada con todas las herramientas de desarrollo que necesitarás. Ofrece un directorio principal persistente de 5 GB y se ejecuta en Google Cloud, lo que permite mejorar considerablemente el rendimiento de la red y la autenticación. Puedes realizar todo tu trabajo en este lab usando simplemente un navegador.
6. Antes de comenzar
Habilita las APIs
En Cloud Shell, asegúrate de que el ID del proyecto esté configurado
gcloud config list project gcloud config set project [YOUR-PROJECT-NAME] projectname=YOUR-PROJECT-NAME echo $projectname
Habilita todos los servicios necesarios
gcloud services enable compute.googleapis.com gcloud services enable servicedirectory.googleapis.com gcloud services enable dns.googleapis.com
7. Crear red de VPC
Red de VPC
Desde Cloud Shell
gcloud compute networks create psc-lab --subnet-mode custom
Crear subred
Desde Cloud Shell
gcloud compute networks subnets create psclab-subnet \ --network psc-lab --range 10.0.0.0/24 --region us-central1 --enable-private-ip-google-access
Crea reglas de firewall
Para permitir que IAP se conecte a tus instancias de VM, crea una regla de firewall que haga 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 del rango de IP 35.235.240.0/20. Este rango contiene todas las direcciones IP que IAP usa para el reenvío de TCP.
Desde Cloud Shell
gcloud compute firewall-rules create psclab-ssh \ --network psc-lab --allow tcp:22 --source-ranges=35.235.240.0/20
Crea una instancia de Cloud NAT
Crea un Cloud Router
Desde Cloud Shell
gcloud compute routers create crnat \ --network psc-lab \ --asn 65000 \ --region us-central1
Crea Cloud NAT
Desde Cloud Shell
gcloud compute routers nats create cloudnat \ --router=crnat \ --auto-allocate-nat-external-ips \ --nat-all-subnet-ip-ranges \ --enable-logging \ --region us-central1
8. Crea un extremo de Private Service Connect
Cuando configures la IP de extremo de Private Service Connect <pscendpointip>
, deberás proporcionar una dirección IP única que no esté definida en tu VPC.
Desde Cloud Shell
gcloud compute addresses create psc-ip \ --global \ --purpose=PRIVATE_SERVICE_CONNECT \ --addresses=192.168.255.250 \ --network=psc-lab
Almacena “pscendpointip” durante todo el lab
pscendpointip=$(gcloud compute addresses list --filter=name:psc-ip --format="value(address)") echo $pscendpointip
Crea una regla de reenvío para conectar el extremo a los servicios y las APIs de Google.
Desde Cloud Shell
gcloud compute forwarding-rules create pscendpoint \ --global \ --network=psc-lab \ --address=psc-ip \ --target-google-apis-bundle=all-apis
Genera una lista de los extremos configurados de Private Service Connect
Desde Cloud Shell
gcloud compute forwarding-rules list \ --filter target="(all-apis OR vpc-sc)" --global
Describir los extremos configurados de Private Service Connect
Desde Cloud Shell
gcloud compute forwarding-rules describe \ pscendpoint --global
9. Crea un bucket
Crea un bucket de Cloud Storage y reemplaza BUCKET_NAME por el nombre global único que prefieras.
Desde Cloud Shell
gsutil mb -l us-central1 -b on gs://BUCKET_NAME
Tienda “BUCKET_NAME” durante todo el lab
BUCKET_NAME=YOUR BUCKET NAME echo $BUCKET_NAME
10. Configuración de DNS
Cuando creas un extremo de Private Service Connect, el Directorio de servicios genera un registro DNS para las APIs y los servicios que se ponen a disposición con ese extremo.
Los registros DNS apuntan a la dirección IP de tu extremo de Private Service Connect y tienen el siguiente formato: SERVICE-ENDPOINT.p.googleapis.com.
Puedes usar estos nombres de DNS en tus solicitudes a la API para dirigir la solicitud a tu extremo de Private Service Connect. También puedes usar estos nombres de DNS en el encabezado del host de la solicitud.
Si quieres usar un extremo de Private Service Connect con un cliente o una aplicación que accede a las APIs y los servicios de Google, actualiza tu cliente o aplicación para que use los nombres de DNS de p.googleapis.com.
Consulta la documentación de tu cliente o biblioteca cliente para obtener detalles. Por ejemplo:
- Python: Puedes configurar api_endpoint en la clase de opciones del cliente en el paquete google-api-core.
- Go: Puedes configurar WithEndpoint en el paquete de opciones del cliente en el paquete de API.
- gcloud: puedes configurar api_endpoint_overrides con este comando. gcloud config set api_endpoint_overrides/SERVICE ENDPOINT_URL
Por ejemplo: gcloud config set api_endpoint_overrides/storage https://storage-xyz.p.googleapis.com/storage/v1/
Si no puedes configurar tu cliente o aplicación para que use un extremo diferente, crea registros DNS que coincidan con los nombres DNS predeterminados. Por ejemplo, storage.googleapis.com. Consulta Crea registros DNS con nombres DNS predeterminados.
Validar registro DNS
En la consola de Cloud, valida la entrada de DNS generada ubicada en Servicios de red → Cloud DNS. Anota el nombre de DNS generado “p.googleapis.com”.
11. Cree máquinas virtuales
Crear una máquina virtual (psc-instance-1) para validar Private Service Connect
Desde Cloud Shell
gcloud compute instances create psc-instance-1 \ --subnet psclab-subnet \ --zone us-central1-a \ --image=centos-7-v20210122 \ --image-project=centos-cloud \ --no-address \ --metadata=startup-script=yum\ install\ tcpdump\ -y$'\n'yum\ install\ bind-utils\ -y$'\n'yum\ install\ nano\ -y
Accede a la instancia de VM (psc-instance-1).
Establece una conexión SSH a la VM a través de Cloud Shell
gcloud compute ssh --zone "us-central1-a" "psc-instance-1" --project "$projectname"
Para crear terminales adicionales de Cloud Shell, haz clic en + (captura de pantalla a continuación) tres veces.
Crear una máquina virtual (psc-instance-2) que se usa para validar las APIs públicas de Google
De la pestaña 2
gcloud compute instances create psc-instance-2 \ --subnet psclab-subnet \ --zone us-central1-a \ --image=centos-7-v20210122 \ --image-project=centos-cloud \ --no-address \ --metadata=startup-script=yum\ install\ tcpdump\ -y$'\n'yum\ install\ bind-utils\ -y$'\n'yum\ install\ nano\ -y
Desde la pestaña 2, establece una conexión SSH a la VM a través de Cloud Shell
gcloud config list project gcloud config set project [YOUR-PROJECT-NAME] projectname=YOUR-PROJECT-NAME echo $projectname gcloud compute ssh --zone "us-central1-a" "psc-instance-2" --project "$projectname"
Desde la pestaña 3, establece una conexión SSH a psc-instance-1 a través de Cloud Shell
gcloud config list project gcloud config set project [YOUR-PROJECT-NAME] projectname=YOUR-PROJECT-NAME echo $projectname gcloud compute ssh --zone "us-central1-a" "psc-instance-1" --project "$projectname"
Desde la pestaña 4, establece una conexión SSH a psc-instance-2 a través de Cloud Shell
gcloud config list project gcloud config set project [YOUR-PROJECT-NAME] projectname=YOUR-PROJECT-NAME echo $projectname gcloud compute ssh --zone "us-central1-a" "psc-instance-2" --project "$projectname"
12. Verifica el comportamiento de Gsutil existente
En la pestaña 4 (psc-instance-2), inicia tcpdump y supervisa el tráfico de DNS.
sudo tcpdump -vv -i eth0 port 53
Inspecciona la búsqueda de DNS del bucket de almacenamiento en la pestaña 2 (psc-instance-2)
BUCKET_NAME=YOUR BUCKET NAME echo $BUCKET_NAME gsutil -D ls gs://$BUCKET_NAME
Inspecciona la depuración de gsutil. Se usa HOST storage.googleapis.com para la resolución de DNS.
<snip> send: 'GET /storage/v1/b/$BUCKET_NAME/o?delimiter=%2F&projection=noAcl&versions=False&fields=prefixes%2CnextPageToken%2Citems%2Fname&alt=json&maxResults=1000 HTTP/1.1\r\nHost: storage.googleapis.com\r\ncontent-length: 0\r\nauthorization: Bearer ya29.c.KpkB7wfaMjfc_WXEKCeNF4Md0fEHnfDU7tqBf3cd0u43yEmYXqj8fX_X5wWdNdDVH6k1EkjeAeIJDzKGvyjPOkf1Io2kVeUqYX69sDv53huW1NslffjAHKchbZ0CP3Cg83TS3Pa55jLcuE0TLbYycVrgSbD3H90LaapUGbWD3kj4IsJLf9J8R98Bqobu8HZwwqk92hlZ4zVzRqOM\r\naccept-encoding: gzip, deflate\r\naccept: application/json\r\nuser-agent: apitools Python/2.7.5 gsutil/4.57 (linux2) analytics/disabled interactive/True command/ls google-cloud-sdk/324.0.0\r\n\r\n' reply: 'HTTP/1.1 200 OK\r\n' <snip>
En la pestaña 4 (psc-instance-2), verifica que se usen los registros A de DNS públicos de GoogleAPI.com cuando se accede al bucket de almacenamiento.
metadata.google.internal.domain > psc-instance-2.c.yourprojectname.internal.33973: [udp sum ok] 36442 q: A? storage.googleapis.com. 11/0/0 storage.googleapis.com. A 108.177.111.128, storage.googleapis.com. A 142.250.128.128, storage.googleapis.com. A 74.125.70.128, storage.googleapis.com. A 74.125.201.128, storage.googleapis.com. A 64.233.183.128, storage.googleapis.com. A 173.194.198.128, storage.googleapis.com. A 172.217.219.128, storage.googleapis.com. A 142.250.136.128, storage.googleapis.com. A 209.85.234.128, storage.googleapis.com. A 172.217.212.128, storage.googleapis.com. A 172.217.214.128
13. Modifica el comportamiento de Gsutil
Recuerda que, en un paso anterior, creaste una zona de DNS privado y un registro A asignado a la dirección IP del extremo de PSC. En el siguiente paso, controlaremos el comportamiento de gsutil a través de la actualización del archivo BOTO de la VM en psc-instance-1.
Visualiza la configuración predeterminada de BOTO en la terminal de la instancia de VM de la pestaña 1 (psc-instance-1)
[psc-instance ~]$ more /etc/boto.cfg
Resultado (tu project_id será diferente)
[GSUtil] default_project_id = [your project number] default_api_version = 2 [GoogleCompute] service_account = default
Actualiza la configuración de BOTO con el editor nano o VI y asegúrate de copiar y pegar todas las entradas.
Ejemplo: sudo nano /etc/boto.cfg
o
Ejemplo: sudo vi /etc/boto.cfg
Desde la pestaña de la terminal 1 de la instancia de VM(psc-instance-1)
[Credentials] gs_host = storage-pscendpoint.p.googleapis.com gs_host_header = storage.googleapis.com gs_json_host = storage-pscendpoint.p.googleapis.com gs_json_host_header = www.googleapis.com
Valida la configuración; el orden de las [credenciales] es fundamental para la búsqueda de DNS
more /etc/boto.cfg [Credentials] gs_host = storage-pscendpoint.p.googleapis.com gs_host_header = storage.googleapis.com gs_json_host = storage-pscendpoint.p.googleapis.com gs_json_host_header = www.googleapis.com [GSUtil] default_project_id = [your project number default_api_version = 2 [GoogleCompute] service_account = default
14. Verifica el comportamiento actualizado de la búsqueda de gsutil
En la pestaña 3 (psc-instance-1), inicia tcpdump y supervisa el tráfico de DNS.
sudo tcpdump -vv -i eth0 port 53
Búsqueda de gsutil del bucket de almacenamiento de la pestaña 1 (psc-instance-1)
BUCKET_NAME=YOUR BUCKET NAME echo $BUCKET_NAME gsutil -D ls gs://$BUCKET_NAME
Los registros de depuración confirman que se puede acceder al bucket de almacenamiento a través del extremo “pscendpoint” de Private Service Connect
Resultado:
<snip> INFO 0131 22:14:18.795986 base_api.py] Making http GET to https://storage-pscendpoint.p.googleapis.com/storage/v1/b/$BUCKET_NAME/o?delimiter=%2F&projection=noAcl&versions=False&fields=prefixes%2CnextPageToken%2Citems%2Fname&alt=json&maxResults=1000 INFO 0131 22:14:18.796415 base_api.py] Headers: {u'Host': 'www.googleapis.com', 'accept': 'application/json', 'accept-encoding': 'gzip, deflate', 'content-length': '0', 'user-agent': 'apitools Python/2.7.5 gsutil/4.57 (linux2) analytics/disabled interactive/True command/ls google-cloud-sdk/324.0.0'} INFO 0131 22:14:18.796502 base_api.py] Body: (none) connect: (storage-pscendpoint.p.googleapis.com, 443) send: 'GET /storage/v1/b/psc-bucket/o?delimiter=%2F&projection=noAcl&versions=False&fields=prefixes%2CnextPageToken%2Citems%2Fname&alt=json&maxResults=1000 HTTP/1.1\r\ncontent-length: 0\r\naccept-encoding: gzip, deflate\r\naccept: application/json\r\nuser-agent: apitools Python/2.7.5 gsutil/4.57 (linux2) analytics/disabled interactive/True command/ls google-cloud-sdk/324.0.0\r\nhost: www.googleapis.com\r\nauthorization: Bearer ya29.c.KpkB7wd3XWiYeRyTuth5_HPlNV-hPwc2Nn7RSIeMpzrpa_j4EsMPl2m_mDGKAcGHvYIgiC5bT2UVQirAPpSbbpToa6G6lkaBbH5SZwHwgNXYfisp5Ww1UjXe4rTa69a_Wp0WesafcwPNnYzDo3xf5VGh3iGhySA04kTXuyT--MgOU8U-XLII2LJQxUWlV8KEdrvyCuqRb-jsDdk_\r\n\r\n' reply: 'HTTP/1.1 200 OK\r\n' <snip>
En la pestaña 3 (psc-instance-1), verifica que la IP del extremo de PSC sea el registro A del DNS que se usa cuando intentas acceder a tu bucket de almacenamiento.
@psc-instance-1 ~]$ sudo tcpdump -vv -i eth0 port 53 tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes 05:02:33.936256 IP (tos 0x0, ttl 64, id 55416, offset 0, flags [DF], proto UDP (17), length 82) psc-instance-1.c.yourprojectname.internal.42296 > metadata.google.internal.domain: [bad udp cksum 0x5e4e -> 0xcceb!] 34796+ A? storage-pscendpoint.p.googleapis.com. (54) 05:02:33.936269 IP (tos 0x0, ttl 64, id 55417, offset 0, flags [DF], proto UDP (17), length 82) psc-instance-1.c.yourprojectname.internal.42296 > metadata.google.internal.domain: [bad udp cksum 0x5e4e -> 0x3ebd!] 5632+ AAAA? storage-pscendpoint.p.googleapis.com. (54) 05:02:33.944018 IP (tos 0x0, ttl 64, id 0, offset 0, flags [none], proto UDP (17), length 98) metadata.google.internal.domain > psc-instance-1.c.yourprojectname.42296: [udp sum ok] 34796 q: A? storage-pscendpoint.p.googleapis.com. 1/0/0 storage-pscendpoint.p.googleapis.com. A 10.10.110.10 (70) 05:02:33.946005 IP (tos 0x0, ttl 64, id 0, offset 0, flags [none], proto UDP (17), length 175)
Verifica que la IP del extremo de Private Service Connect ahora se use para la resolución de DNS
De la pestaña 1
nslookup storage-pscendpoint.p.googleapis.com
Salida
@psc-instance ~]$ nslookup storage-pscendpoint.p.googleapis.com Server: 169.254.169.254 Address: 169.254.169.254#53 Non-authoritative answer: Name: storage-pscendpoint.p.googleapis.com Address: <pscip>
15. Pasos de limpieza
Salir de la instancia de VM (todas las pestañas)
exit
Borra los componentes del lab desde una sola terminal de Cloud Shell
gcloud compute routers nats delete cloudnat --router=crnat --region=us-central1 --quiet gcloud compute routers delete crnat --region=us-central1 --quiet gcloud compute forwarding-rules delete pscendpoint --global --quiet gcloud compute addresses delete psc-ip --global --quiet gsutil rm -r gs://$BUCKET_NAME gcloud compute instances delete psc-instance-1 --zone=us-central1-a --quiet gcloud compute instances delete psc-instance-2 --zone=us-central1-a --quiet gcloud compute firewall-rules delete psclab-ssh --quiet gcloud compute networks subnets delete psclab-subnet --region us-central1 --quiet gcloud compute networks delete psc-lab --quiet
En la consola, asegúrate de estar viendo el proyecto correcto y, luego, selecciona Servicios de red → Cloud DNS
16. ¡Felicitaciones!
Felicitaciones por completar el codelab.
Temas abordados
- Casos de uso de Private Service Connect
- Requisitos de red
- API admitidas
- Creaste un extremo de Private Service Connect
- Creaste un bucket de Cloud Storage
- Actualiza un archivo de configuración BOTO
- Creación de una puerta de enlace NAT
- Realiza la lista de gsutil en VM1 que se resuelve en el extremo del servicio de PSC.
- Realiza la lista de gsutil en VM2 que se resuelve en googleapis.com pública.
- Usa Tcpdump para validar la resolución de DNS