Recursos identificados
- APIs habilitadas:
compute.googleapis.com. - Red principal: VPC auto mode
mynetwork, con subnetworks automáticas por región dentro del rango10.128.0.0/9. - Instancias usadas en el lab:
default-vm-1,mynet-vm-1ymynet-vm-2. - Firewall rules observadas o creadas: reglas
default-allow-*de la reddefault,mynetwork-ingress-allow-ssh-from-cs,mynetwork-ingress-allow-icmp-internal,mynetwork-ingress-deny-icmp-allymynetwork-egress-deny-icmp-all. - Etiquetas relevantes:
lab-sshpara limitar el acceso SSH a las VMs objetivo. - IAM relevante: no se crea IAM explícito; el lab usa las credenciales temporales del proyecto y los permisos ya otorgados.
- Integraciones: Cloud Shell como cliente SSH,
curlaapi.ipify.orgpara descubrir la IP pública y resolución DNS interna entre VMs.
Comandos ejecutados
En los comandos siguientes, reemplazá <ZONE_1>, <ZONE_2> y <EXTERNAL_IP_MYNET_VM_2> por los valores de tu lab.
Verificar autenticación y proyecto activo
gcloud auth list
gcloud config list project
Crear la VPC auto mode del lab
gcloud compute networks create mynetwork --subnet-mode=auto
Crear las instancias de prueba
gcloud compute instances create default-vm-1 \
--machine-type e2-micro \
--zone=<ZONE_1> \
--network=default
gcloud compute instances create mynet-vm-1 \
--machine-type e2-micro \
--zone=<ZONE_1> \
--network=mynetwork
gcloud compute instances create mynet-vm-2 \
--machine-type e2-micro \
--zone=<ZONE_2> \
--network=mynetwork
Probar SSH sin reglas personalizadas
gcloud compute ssh qwiklabs@mynet-vm-2 --zone <ZONE_2>
Obtener la IP pública de Cloud Shell
ip=$(curl -s https://api.ipify.org)
echo "My External IP address is: $ip"
Permitir SSH desde Cloud Shell
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
Asociar el tag lab-ssh a las VMs
gcloud compute instances add-tags mynet-vm-2 \
--zone <ZONE_2> \
--tags lab-ssh
gcloud compute instances add-tags mynet-vm-1 \
--zone <ZONE_1> \
--tags lab-ssh
Validar conectividad SSH luego de abrir el firewall
gcloud compute ssh qwiklabs@mynet-vm-2 --zone <ZONE_2>
exit
gcloud compute ssh qwiklabs@mynet-vm-1 --zone <ZONE_1>
Probar ping interno entre VMs
ping mynet-vm-2.<ZONE_2>
Permitir ICMP interno dentro de la VPC
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
Repetir la prueba de ping interno
ping mynet-vm-2.<ZONE_2>
Verificar que el ping a la IP externa siga bloqueado
ping <EXTERNAL_IP_MYNET_VM_2>
Crear una regla deny de ICMP con prioridad mayor
gcloud compute ssh qwiklabs@mynet-vm-1 --zone <ZONE_1>
ping mynet-vm-2.<ZONE_2>
gcloud compute firewall-rules create \
mynetwork-ingress-deny-icmp-all \
--network mynetwork \
--action DENY \
--direction INGRESS \
--rules icmp \
--priority 500
ping mynet-vm-2.<ZONE_2>
Bajar la prioridad de la regla deny
gcloud compute firewall-rules update \
mynetwork-ingress-deny-icmp-all \
--priority 2000
ping mynet-vm-2.<ZONE_2>
Inspeccionar las reglas de firewall de la red
gcloud compute firewall-rules list --filter="network:mynetwork"
Bloquear ICMP saliente
gcloud compute firewall-rules create \
mynetwork-egress-deny-icmp-all \
--network mynetwork \
--action DENY \
--direction EGRESS \
--rules icmp \
--priority 10000
gcloud compute firewall-rules list --filter="network:mynetwork"
ping mynet-vm-2.<ZONE_2>