Descripción general
En este lab, analizarás las redes de nube privada virtual (VPC) y crearás reglas de firewall para permitir y denegar el acceso a una red y a instancias.
Para comenzar, crearás una red de VPC automática, una personalizada y algunas instancias de VPC en esas redes. Deberás verificar que la regla de firewall default-allow-ssh esté funcionando y, luego, compararla con la red personalizada creada por el usuario para verificar que no se permita ninguna entrada sin reglas de firewall personalizadas.
Después de borrar la red predeterminada, usarás las prioridades de reglas de firewall para permitir la entrada y la salida de tráfico de red a tus VMs.
Objetivos
En este lab, aprenderás lo siguiente:
- Crear una red de modo automático, una red de modo personalizado y subredes asociadas
- Investigar las reglas de firewall en la red predeterminada para después borrarla
- Usar las funciones de reglas de firewall para tener un control más preciso y flexible de las conexiones
Configuración y requisitos
En cada lab, recibirás un proyecto de Google Cloud y un conjunto de recursos nuevos por tiempo limitado y sin costo adicional.
-
Haz clic en el botón Comenzar lab. Si debes pagar por el lab, se abrirá una ventana emergente para que selecciones tu forma de pago.
A la izquierda, se encuentra el panel Detalles del lab, que tiene estos elementos:
- El botón Abrir la consola de Google Cloud
- El tiempo restante
- Las credenciales temporales que debes usar para el lab
- Otra información para completar el lab, si es necesaria
-
Haz clic en Abrir la consola de Google Cloud (o haz clic con el botón derecho y selecciona Abrir el vínculo en una ventana de incógnito si ejecutas el navegador Chrome).
El lab inicia recursos y abre otra pestaña en la que se muestra la página de acceso.
Sugerencia: Ordena las pestañas en ventanas separadas, una junto a la otra.
Nota: Si ves el diálogo Elegir una cuenta, haz clic en Usar otra cuenta.
-
De ser necesario, copia el nombre de usuario a continuación y pégalo en el diálogo Acceder.
{{{user_0.username | "Username"}}}
También puedes encontrar el nombre de usuario en el panel Detalles del lab.
-
Haz clic en Siguiente.
-
Copia la contraseña que aparece a continuación y pégala en el diálogo Te damos la bienvenida.
{{{user_0.password | "Password"}}}
También puedes encontrar la contraseña en el panel Detalles del lab.
-
Haz clic en Siguiente.
Importante: Debes usar las credenciales que te proporciona el lab. No uses las credenciales de tu cuenta de Google Cloud.
Nota: Usar tu propia cuenta de Google Cloud para este lab podría generar cargos adicionales.
-
Haga clic para avanzar por las páginas siguientes:
- Acepta los Términos y Condiciones.
- No agregues opciones de recuperación o autenticación de dos factores (esta es una cuenta temporal).
- No te registres para obtener pruebas gratuitas.
Después de un momento, se abrirá la consola de Google Cloud en esta pestaña.
Nota: Para ver un menú con una lista de productos y servicios de Google Cloud, haz clic en el menú de navegación que se encuentra en la parte superior izquierda o escribe el nombre del servicio o producto en el campo Búsqueda.
Activa Google Cloud Shell
Google Cloud Shell es una máquina virtual que cuenta con herramientas para desarrolladores. Ofrece un directorio principal persistente de 5 GB y se ejecuta en Google Cloud.
Google Cloud Shell proporciona acceso de línea de comandos a tus recursos de Google Cloud.
-
En la consola de Cloud, en la barra de herramientas superior derecha, haz clic en el botón Abrir Cloud Shell.

-
Haz clic en Continuar.
El aprovisionamiento y la conexión al entorno demorarán unos minutos. Cuando te conectes, habrás completado la autenticación, y el proyecto estará configurado con tu PROJECT_ID. Por ejemplo:

gcloud es la herramienta de línea de comandos de Google Cloud. Viene preinstalada en Cloud Shell y es compatible con el completado de línea de comando.
- Puedes solicitar el nombre de la cuenta activa con este comando:
gcloud auth list
Resultado:
Credentialed accounts:
- @.com (active)
Resultado de ejemplo:
Credentialed accounts:
- google1623327_student@qwiklabs.net
- Puedes solicitar el ID del proyecto con este comando:
gcloud config list project
Resultado:
[core]
project =
Resultado de ejemplo:
[core]
project = qwiklabs-gcp-44776a13dea667a6
Nota:
La documentación completa de gcloud está disponible en la
guía de descripción general de gcloud CLI
.
Tarea 1: Crea instancias y redes de VPC
En esta tarea, crearás una red de VPC automática y una personalizada, además de algunas instancias iniciales de VPC en ellas.
- Para abrir Cloud Shell, haz clic en Activar Cloud Shell (
) en la barra de título de la consola de Google Cloud. Si se te solicita, haz clic en Continuar.
- Para crear la red mynetwork con subredes automáticas, ejecuta el siguiente comando:
gcloud compute networks create mynetwork --subnet-mode=auto
Nota: Cuando se crea una red de VPC en modo automático, se crea en ella una subred de cada región automáticamente. Estas subredes usan un conjunto de rangos de IP predefinidos que se ajustan al bloque de CIDR 10.128.0.0/9.
Ahora crearás una red con subredes personalizadas. Puedes elegir cualquier bloque privado de CIDR conforme a RFC 1918 para el rango principal de direcciones IP de las subredes.
- Ejecuta el siguiente comando para crear la red privatenet con subredes personalizadas:
gcloud compute networks create privatenet \
--subnet-mode=custom
- Para crear una subred personalizada en la red privatenet, ejecuta el siguiente comando:
gcloud compute networks subnets create privatesubnet \
--network=privatenet --region={{{project_0.default_region|Region}}} \
--range=10.0.0.0/24 --enable-private-ip-google-access
- Si quieres crear algunas instancias y usarlas más adelante para realizar pruebas en todas las redes, ejecuta estos comandos:
gcloud compute instances create default-vm-1 \
--machine-type e2-micro \
--zone={{{project_0.default_zone | Zone 1}}} --network=default
gcloud compute instances create mynet-vm-1 \
--machine-type e2-micro \
--zone={{{project_0.default_zone | Zone 1}}} --network=mynetwork
gcloud compute instances create mynet-vm-2 \
--machine-type e2-micro \
--zone={{{project_0.default_zone_2| Zone 2}}} --network=mynetwork
gcloud compute instances create privatenet-bastion \
--machine-type e2-micro \
--zone={{{project_0.startup_script.gcp_region_zone2| Zone }}} --subnet=privatesubnet --can-ip-forward
gcloud compute instances create privatenet-vm-1 \
--machine-type e2-micro \
--zone={{{project_0.startup_script.gcp_region_zone3| Zone }}} --subnet=privatesubnet
Haz clic en Revisar mi progreso para verificar el objetivo.
Crear instancias y redes de VPC
Tarea 2: Investiga la red predeterminada
En esta tarea, explorarás la red predeterminada y verificarás que esté funcionando la regla de firewall default-allow-ssh. Más adelante, borrarás la instancia default-vm-1 y la red predeterminada porque ya no las necesitarás.
Regresa a la consola de Cloud y consulta las reglas de firewall.
- En el menú de navegación, haz clic en Red de VPC > Firewall.
Se crean las siguientes cuatro reglas predeterminadas para la red predeterminada:

Recuerda, todas las redes también tienen las siguientes 2 reglas que no aparecen en la consola:

Para comprobar que funciona la regla de firewall default-allow-ssh, establece una conexión SSH a la instancia default-vm-1 en la red predeterminada y realiza la prueba.
-
Para ver una lista de instancias de VM, haz clic en Compute Engine > Instancias de VM en el menú de navegación.
-
En la fila de la instancia default-vm-1, haz clic en SSH.
Podrás conectarte a la instancia a través de SSH correctamente gracias a la regla default-allow-ssh. Puedes hacer ping a www.google.com
para probar la conectividad de salida. Presiona Ctrl + C para detener el ping.
Borra la instancia default-vm-1
Ahora, borra la instancia default-vm-1 porque ya no la necesitas.
-
En el menú de navegación, haz clic en Compute Engine > Instancias de VM, selecciona la instancia default-vm-1 y, luego, haz clic en Borrar.
-
En el cuadro de confirmación, haz clic en Borrar.
Borra la red predeterminada
Nota: Como la red predeterminada permite un acceso relativamente abierto, te recomendamos borrarla para los proyectos de producción.
-
En el menú de navegación, haz clic en Red de VPC > Redes de VPC para ver la lista de redes de VPC en la consola de Cloud.
-
Haz clic en la red predeterminada para ver sus detalles.
-
Haz clic en Borrar red de VPC.
-
En el cuadro de confirmación, haz clic en Borrar.
-
Espera a que se borre la red y verifica que la red predeterminada ya no aparezca en la página Redes de VPC.
Tarea 3: Investiga las redes creadas por el usuario
En esta tarea, explorarás las redes creadas por el usuario para verificar que no se permita ninguna entrada sin reglas de firewall personalizadas.
Verifica que no se permita ninguna entrada sin reglas de firewall personalizadas
Recuerda que todas las redes tienen 2 reglas (que no aparecen en la consola) para bloquear todo el tráfico entrante y permitir todo el tráfico saliente. A diferencia de la red predeterminada, las redes creadas por el usuario no tienen ninguna otra regla predeterminada, por lo que, actualmente, no se permite el tráfico entrante.

-
Para ver una lista de instancias de VM, haz clic en Compute Engine > Instancias de VM en el menú de navegación.
-
En la fila de mynet-vm-1 o mynet-vm-2, haz clic en SSH.
NO deberías poder conectarte a las instancias a través de SSH.
Ahora, intentarás establecer una conexión SSH a una instancia desde Cloud Shell.
-
Regresa a Cloud Shell o vuelve a abrirlo.
-
Para intentar establecer una conexión SSH a la instancia mynet-vm-2, ejecuta el siguiente comando:
gcloud compute ssh qwiklabs@mynet-vm-2 --zone {{{project_0.default_zone_2| Zone 2}}}
Si se te solicita, escribe Y
y presiona Intro dos veces para continuar.
NO deberías poder conectarte a las instancias a través de SSH. Actualmente, no se permite el acceso entrante.
Pasa por alto el mensaje de error ERROR: (gcloud.compute.ssh) [/usr/bin/ssh] exited with return code [255].
Tarea 4: Crea reglas personalizadas de firewall de entrada
En esta tarea, usarás Cloud Shell como el host cliente para probar la conectividad SSH a las instancias. La dirección IP externa de la instancia de Cloud Shell puede recuperarse fácilmente.
Sin embargo, la dirección IP de tu instancia de Cloud Shell puede cambiar si la cierras y vuelves a abrir, o si se recicla debido a inactividad. Esto no debería ser un problema durante el lab. En un proyecto “real”, permitirías la dirección IP del host cliente SSH y no debería haber problemas.
Nota: Como acabas de comprobar, la función SSH de la consola basada en el navegador que se usa para conectarse a instancias de VM no funciona en este momento. Si quieres permitirla, necesitas una regla de firewall que permita la dirección IP de origen. Sin embargo, la consola de Cloud asigna de manera dinámica las direcciones IP de origen a sesiones SSH basadas en el navegador, y esas direcciones pueden variar de una sesión a otra.
Para que la función se ejecute correctamente, debes permitir conexiones desde cualquier dirección IP o desde el rango de direcciones IP de Google que puedes recuperar con registros SPF públicos. Cualquiera de estas opciones puede suponer riesgos inaceptables, según tus requisitos. En su lugar, permite la dirección IP de los clientes SSH que usas para conectarte.
Permite el SSH desde Cloud Shell
-
Regresa a Cloud Shell o vuelve a abrirlo.
-
Para recuperar la dirección IP externa de la instancia de Cloud Shell, ejecuta los siguientes comandos:
ip=$(curl -s https://api.ipify.org)
echo "My External IP address is: $ip"
Resultado de muestra (tu IP será diferente):
My External IP address is: 35.229.72.135
- Para agregar una regla de firewall que permita el tráfico del puerto 22 (SSH) desde la dirección IP de Cloud Shell, ejecuta el siguiente comando:
gcloud compute firewall-rules create \
mynetwork-ingress-allow-ssh-from-cs \
--network mynetwork --action ALLOW --direction INGRESS \
--rules tcp:22 --source-ranges $ip --target-tags=lab-ssh
A esta regla de firewall también se le asigna una etiqueta de destino de lab-ssh, que significa que se aplica solo a las instancias que se etiquetan con lab-ssh.
- Para ver la regla de firewall en la consola de Cloud, en el menú de navegación, haz clic en Red de VPC > Firewall.
Tendrá un aspecto similar al siguiente, pero tu dirección IP será distinta:

Esta regla de firewall se aplicará solo a las instancias etiquetadas con lab-ssh. Actualmente no se aplica a ninguna instancia.
Nota: Acabas de crear y aplicar una regla de firewall con una etiqueta. Un problema con las etiquetas es que deben agregarse a las instancias y podrían agregarse o quitarse por accidente. La cuenta de servicio utilizada también puede aplicar las reglas de firewall a instancias. Estas reglas se aplicarán automáticamente a todas las instancias que usan la cuenta de servicio especificada.
- Para agregar la etiqueta de red lab-ssh a las instancias mynet-vm-2 y mynet-vm-1, ejecuta los siguientes comandos en Cloud Shell:
gcloud compute instances add-tags mynet-vm-2 \
--zone {{{project_0.default_zone_2| Zone 2}}} \
--tags lab-ssh
gcloud compute instances add-tags mynet-vm-1 \
--zone {{{project_0.default_zone | Zone 1}}} \
--tags lab-ssh
Firewalls con estado
En las redes de VPC, las reglas de firewall tienen estado. Por lo tanto, para cada conexión iniciada a la que se le realiza un seguimiento con reglas de permiso en una dirección, el tráfico de retorno se permite automáticamente, independiente de las reglas.
- Para establecer una conexión SSH a la instancia mynet-vm-2, ejecuta el siguiente comando en Cloud Shell:
gcloud compute ssh qwiklabs@mynet-vm-2 --zone {{{project_0.default_zone_2| Zone 2}}}
Negociar las claves SSH tardará varios segundos, pero la conexión debería establecerse correctamente. Esto verifica que la regla de firewall está permitiendo el tráfico.
-
Escribe exit
para salir de la instancia mynet-vm-2.
-
Para establecer una conexión SSH a la instancia mynet-vm-1, ejecuta el siguiente comando en Cloud Shell:
gcloud compute ssh qwiklabs@mynet-vm-1 --zone {{{project_0.default_zone | Zone 1}}}
Esta conexión también debería establecerse correctamente porque la instancia mynet-vm-1 se encuentra en la misma red y la regla de firewall que creaste permite el acceso a todas las instancias.
Permite que todas las instancias de la misma red se comuniquen a través de ping
- Mientras la conexión a la instancia mynet-vm-1 aún está activa, intenta hacer ping a la instancia mynet-vm-2 con el comando que aparece a continuación. Reemplaza [PROJECT_ID] por el PROJECT_ID del ejercicio del lab.
ping mynet-vm-2.{{{project_0.default_zone_2| Zone 2}}}.c.[PROJECT_ID].internal
El comando de ping no tendrá éxito. Aunque las instancias mynet-vm-1 y mynet-vm-2 están en la misma red de VPC, todo el tráfico se bloquea de forma predeterminada, a menos que exista una regla de firewall que lo permita.
-
Presiona Ctrl + C para detener el ping si es necesario. No salgas aún de la instancia mynet-vm-1.
-
Para abrir una nueva ventana de Cloud Shell, haz clic en Abrir una pestaña nueva (+).
-
Para agregar una regla de firewall que permita que TODAS las instancias de la VPC mynetwork se hagan ping entre sí, ejecuta el siguiente comando:
gcloud compute firewall-rules create \
mynetwork-ingress-allow-icmp-internal --network \
mynetwork --action ALLOW --direction INGRESS --rules icmp \
--source-ranges 10.128.0.0/9
Nota: Esta regla de firewall no usa una etiqueta de destino y, por lo tanto, se aplica a todas las instancias de la red de forma predeterminada. No es necesario etiquetar ninguna instancia para que esta regla se aplique. Este tipo de regla de firewall es útil si todas las instancias de una red necesitan la misma regla, pero también debería usarse con precaución porque afecta a todas las instancias.
- Regresa a la primera sesión de Cloud Shell que está conectada a mynet-vm-1 y vuelve a ejecutar el ping. Esta vez debería funcionar.
ping mynet-vm-2.{{{project_0.default_zone_2| Zone 2}}}.c.[PROJECT_ID].internal
Observa que el nombre de host mynet-vm-2 se resolvió en la dirección IP interna de la instancia. Esta dirección comenzará con 10.132.0 (por ejemplo, 10.132.0.2). Google Cloud se encarga de resolver los nombres de host internos.
-
Presiona Ctrl + C para detener el ping.
-
También puede funcionar hacer ping directamente a la dirección IP interna. Presiona Ctrl + C para detener el ping.
-
Para ubicar la dirección IP externa de mynet-vm-2, en el menú de navegación, haz clic en Compute Engine > Instancias de VM.
-
Haz clic en mynet-vm-2, ubica la dirección IP externa de la instancia y cópiala.
-
En la sesión de Cloud Shell que está conectada a mynet-vm-1, intenta hacer ping a la dirección IP externa de la instancia mynet-vm-2:
ping
Esto NO debería funcionar. Cuando haces ping a la dirección IP externa, la conexión se realiza a través de la puerta de enlace de Internet, lo que causa que la solicitud use NAT. La solicitud ahora proviene de la dirección IP externa de la instancia mynet-vm-1. La regla de firewall solo permitirá las solicitudes de ICMP provenientes de direcciones IP internas.
- Presiona Ctrl + C para detener el ping.
Haz clic en Revisar mi progreso para verificar el objetivo.
Crear reglas personalizadas de firewall de entrada
Tarea 5: Establece la prioridad de la regla de firewall
En esta tarea, establecerás la prioridad de la regla de firewall para denegar el tráfico de ICMP. Luego, deberás verificar que se esté denegando el tráfico que no coincida con la prioridad de la regla.
Hasta el momento, las reglas creadas han sido reglas de permiso de entrada, por lo que la prioridad no ha sido importante. Las reglas de firewall pueden ser de permiso y denegación, pueden especificar la entrada y la salida, y tienen una prioridad de 0 a 65,535. Si no estableces la prioridad, la predeterminada es 1,000. Las reglas se evalúan en función de su prioridad, a partir del valor más bajo. Se aplica la primera regla que coincida.
- En la primera sesión de Cloud Shell, verifica que la conexión a la instancia mynet-vm-1 aún esté activa. Si lo está, el prompt será
qwiklabs@mynet-vm-1:~$
.
Si la conexión se detuvo, usa el siguiente comando para volver a establecerla:
gcloud compute ssh qwiklabs@mynet-vm-1 --zone {{{project_0.default_zone | Zone 1}}}
- Verifica que aún puedas hacer ping a la instancia mynet-vm-2:
ping mynet-vm-2.{{{project_0.default_zone_2| Zone 2}}}.c.[PROJECT_ID].internal
-
Presiona Ctrl + C para detener el ping.
-
Ve a la segunda ventana de Cloud Shell o abre una nueva.
-
En la segunda ventana de Cloud Shell, crea una regla de firewall de entrada para denegar el tráfico de ICMP desde cualquier IP con una prioridad de 500:
gcloud compute firewall-rules create \
mynetwork-ingress-deny-icmp-all --network \
mynetwork --action DENY --direction INGRESS --rules icmp \
--priority 500
- Regresa a la primera ventana de Cloud Shell que está conectada a la instancia mynet-vm-1 y trata de hacer ping a la instancia mynet-vm-2:
ping mynet-vm-2.{{{project_0.default_zone_2| Zone 2}}}.c.[PROJECT_ID].internal
Ya no debería funcionar. Esta nueva regla tiene una prioridad de 500 y la regla de permiso, una de 1,000.
- Presiona Ctrl + C para detener el ping.
Ahora, deberás cambiar la prioridad de la regla de denegación a 2,000.
- En la segunda ventana de Cloud Shell, modifica la regla de firewall recién creada y cambia la prioridad a
2000
:
gcloud compute firewall-rules update \
mynetwork-ingress-deny-icmp-all \
--priority 2000
- Vuelve a la primera ventana de Cloud Shell que está conectada a la instancia mynet-vm-1 y trata de hacer ping a la instancia mynet-vm-2 nuevamente:
ping mynet-vm-2.{{{project_0.default_zone_2| Zone 2}}}.c.[PROJECT_ID].internal
Esta vez sí funcionará porque la regla de denegación tiene una prioridad más baja, por lo que la regla de permiso es la primera que coincide.
- Presiona Ctrl + C para detener el ping.
Tarea 6: Configura reglas de firewall de salida
En esta tarea, crearás una regla de firewall de salida y establecerás la prioridad en 10,000. Luego, deberás verificar que tanto la regla de entrada como la de salida permitan ese tráfico.
- En la segunda ventana de Cloud Shell, genera una lista de todas las reglas actuales de firewall:
gcloud compute firewall-rules list \
--filter="network:mynetwork"
En este momento, las VMs aún pueden hacerse ping entre sí porque la regla que deniega el ICMP tiene una prioridad más alta que la regla que lo permite.
Ahora prueba una regla de salida.
- Crea una regla de salida de firewall para bloquear el tráfico de ICMP proveniente de cualquier IP con una prioridad de
10000
:
gcloud compute firewall-rules create \
mynetwork-egress-deny-icmp-all --network \
mynetwork --action DENY --direction EGRESS --rules icmp \
--priority 10000
- Vuelve a generar una lista de todas las reglas actuales de firewall:
gcloud compute firewall-rules list \
--filter="network:mynetwork"
Observa que la prioridad de la regla de salida está configurada en 10,000, por lo que es mucho más alta que las de las reglas creadas antes.
- Regresa a la primera ventana de Cloud Shell que está conectada a la instancia mynet-vm-1 y trata de hacer ping a la instancia mynet-vm-2:
ping mynet-vm-2.{{{project_0.default_zone_2| Zone 2}}}.c.[PROJECT_ID].internal
Ya no debería funcionar. Aunque la regla de salida tiene una prioridad mucho más alta (10,000), todavía bloquea el tráfico. Esto se debe a que, para que se permita el tráfico, debe haber una regla de entrada y una de salida que lo haga. La prioridad de las reglas de entrada no afecta la prioridad de las reglas de salida.
- Presiona Ctrl + C para detener el ping.
Haz clic en Revisar mi progreso para verificar el objetivo.
Crear una regla de firewall con prioridad y una regla de firewall de salida
¡Felicitaciones!
En este lab, realizaste las siguientes tareas:
- Creaste una red de modo automático, una red de modo personalizado y subredes asociadas.
- Investigaste las reglas de firewall en la red predeterminada y, luego, borraste esta red.
- Usaste las funciones de reglas de firewall para tener un control más preciso y flexible de las conexiones.
Finalice su lab
Cuando haya completado el lab, haga clic en Finalizar lab. Google Cloud Skills Boost quitará los recursos que usó y limpiará la cuenta.
Tendrá la oportunidad de calificar su experiencia en el lab. Seleccione la cantidad de estrellas que corresponda, ingrese un comentario y haga clic en Enviar.
La cantidad de estrellas indica lo siguiente:
- 1 estrella = Muy insatisfecho
- 2 estrellas = Insatisfecho
- 3 estrellas = Neutral
- 4 estrellas = Satisfecho
- 5 estrellas = Muy satisfecho
Puede cerrar el cuadro de diálogo si no desea proporcionar comentarios.
Para enviar comentarios, sugerencias o correcciones, use la pestaña Asistencia.
Copyright 2020 Google LLC. All rights reserved. Google y el logotipo de Google son marcas de Google LLC. Los demás nombres de productos y empresas pueden ser marcas de las respectivas empresas a las que estén asociados.