Ejercicio: Configuración del acceso de red

Completado

En este ejercicio, configurarás el acceso a la máquina virtual (VM) que has creado antes en este módulo.

Importante

El espacio aislado de Microsoft Learn debe seguir en ejecución. Si se ha agotado el tiempo de espera del espacio aislado, tendrá que repetir el ejercicio anterior (Ejercicio: Creación de una máquina virtual de Azure).

Para comprobar que la máquina virtual que creó anteriormente todavía se está ejecutando, use el siguiente comando:

az vm list


Si recibe una respuesta vacía [], debe completar de nuevo el primer ejercicio de este módulo. Si el resultado muestra la máquina virtual actual y su configuración, puede continuar.

En este momento, la máquina virtual que ha creado y en la que ha instalado Nginx no es accesible desde Internet. Crearás un grupo de seguridad de red que lo cambiará y permitirá el acceso HTTP de entrada en el puerto 80.

Tarea 1: Acceso al servidor web

En este procedimiento se obtiene la dirección IP de la máquina virtual y se intenta acceder a la página principal del servidor web.

  1. Ejecute el siguiente comando az vm list-ip-addresses para obtener la dirección IP de la máquina virtual y almacenar el resultado como una variable de Bash:

    IPADDRESS="$(az vm list-ip-addresses \
      --resource-group "<rgn>[sandbox resource group name]</rgn>" \
      --name my-vm \
      --query "[].virtualMachine.network.publicIpAddresses[*].ipAddress" \
      --output tsv)"    
    
  2. Ejecuta el siguiente comando curl para descargar la página principal:

    curl --connect-timeout 5 http://$IPADDRESS
    

    El argumento --connect-timeout especifica que se conceden hasta cinco segundos para que se produzca la conexión. Después de cinco segundos, verás un mensaje de error que indica que se ha agotado el tiempo de espera de la conexión:

    curl: (28) Connection timed out after 5001 milliseconds
    

    Este mensaje significa que no se pudo acceder a la máquina virtual dentro del tiempo de espera.

  3. Como paso opcional, intenta acceder al servidor web desde un explorador:

    1. Ejecuta lo siguiente para imprimir la dirección IP de la máquina virtual en la consola:

      echo $IPADDRESS       
      

      Verás una dirección IP, por ejemplo, 23.102.42.235.

    2. Copia en el portapapeles la dirección IP que vea.

    3. Abre una nueva pestaña del explorador y vayas al servidor web. Transcurridos unos instantes, verás que la conexión no se está produciendo. Si esperas a que se agote el tiempo de espera del explorador, verás algo parecido a esto:

      Screenshot of a web browser showing an error message that says the connection timed out.

    4. Mantén la pestaña abierta para usarla más tarde.

Tarea 2: Enumeración de las reglas de grupo de seguridad de red actuales

No se pudo acceder al servidor web. Para averiguar el motivo, vamos a examinar las reglas actuales del grupo de seguridad de red.

  1. Ejecuta el siguiente comando az network nsg list para que muestre los grupos de seguridad de red asociados a la máquina virtual:

    az network nsg list \
      --resource-group "<rgn>[sandbox resource group name]</rgn>" \
      --query '[].name' \
      --output tsv    
    

    Verá lo siguiente:

    my-vmNSG
    
    
    

    Cada máquina virtual de Azure está asociada a, al menos, un grupo de seguridad de red. En este caso, Azure te creó un grupo de seguridad de red denominadomy-vmNSG.

  2. Ejecuta el siguiente comando az network nsg rule list mostrar las reglas asociadas al grupo de seguridad de red denominado my-vmNSG:

    az network nsg rule list \
      --resource-group "<rgn>[sandbox resource group name]</rgn>" \
      --nsg-name my-vmNSG    
    

    Verás un bloque grande de texto en formato JSON en la salida. En el paso siguiente, ejecutarás un comando similar que facilita la lectura de este resultado.

  3. Ejecuta por segunda vez el comando az network nsg rule list. Esta vez, use el argumento --query para recuperar solo el nombre, la prioridad, los puertos afectados y el acceso (Permitir o Denegar) para cada regla. El argumento --output da formato a la salida como una tabla para que sea fácil de leer.

    az network nsg rule list \
      --resource-group "<rgn>[sandbox resource group name]</rgn>" \
      --nsg-name my-vmNSG \
      --query '[].{Name:name, Priority:priority, Port:destinationPortRange, Access:access}' \
      --output table    
    

    Verá lo siguiente:

    Name              Priority    Port    Access
    -----------------  ----------  ------  --------
    default-allow-ssh  1000        22      Allow
    
    

    Verás la regla predeterminada default-allow-ssh. Esta regla permite conexiones entrantes a través del puerto 22 (SSH). SSH (Secure Shell) es un protocolo que se usa en Linux para permitir que los administradores accedan al sistema de forma remota. La prioridad de esta entrada es 1000. Las reglas se procesan en orden de prioridad, donde los números más bajos se procesan antes que los números más altos.

De forma predeterminada, un grupo de seguridad de red de una máquina virtual de una máquina virtual Linux solo permite el acceso a la red en el puerto 22. Esto permite que los administradores accedan al sistema. También debe permitir las conexiones entrantes en el puerto 80, que permite el acceso a través de HTTP.

Tarea 3: Creación de la regla de seguridad de red

En este caso, crearás una regla de seguridad de red que permita el acceso de entrada en el puerto 80 (HTTP).

  1. Ejecute el siguiente comando az network nsg rule create para crear una regla denominada allow-http que permita el acceso entrante en el puerto 80:

    az network nsg rule create \
      --resource-group "<rgn>[sandbox resource group name]</rgn>" \
      --nsg-name my-vmNSG \
      --name allow-http \
      --protocol tcp \
      --priority 100 \
      --destination-port-range 80 \
      --access Allow    
    

    Con fines de aprendizaje, aquí establecerá la prioridad en 100. En este caso, la prioridad no importa. Tendriás que tener en cuenta la prioridad si tuvieras intervalos de puertos superpuestos.

  2. Para comprobar la configuración, ejecuta az network nsg rule list para ver la lista actualizada de reglas:

    az network nsg rule list \
      --resource-group "<rgn>[sandbox resource group name]</rgn>" \
      --nsg-name my-vmNSG \
      --query '[].{Name:name, Priority:priority, Port:destinationPortRange, Access:access}' \
      --output table    
    

    Verás las dos reglas, default-allow-ssh y la nueva regla allow-http:

    Name              Priority    Port    Access
    -----------------  ----------  ------  --------
    default-allow-ssh  1000        22      Allow
    allow-http          100        80      Allow    
    

Tarea 4: Nuevo acceso al servidor web

Ahora que has configurado el acceso de red al puerto 80, vamos a intentar acceder al servidor web una segunda vez.

Nota:

Después de actualizar el grupo de seguridad de red, las reglas actualizadas pueden tardar unos instantes en propagarse. Vuelve a intentar el paso siguiente, con pausas entre intentos, hasta que obtén los resultados deseados.

  1. Ejecuta el mismo comando curl que has ejecutado antes:

    curl --connect-timeout 5 http://$IPADDRESS
    

    Verá lo siguiente:

    <html><body><h2>Welcome to Azure! My name is my-vm.</h2></body></html>
    
  2. Como paso opcional, actualiza la pestaña que apunta al servidor web. Verá lo siguiente:

    A screenshot of a web browser showing the home page from the web server. The home page displays a welcome message.

Buen trabajo. En la práctica, puedes crear un grupo de seguridad de red independiente que incluya las reglas de acceso de red entrantes y salientes que necesite. Si tienes varias máquinas virtuales que tienen el mismo propósito, puedes asignar ese grupo de seguridad de red a cada máquina virtual en el momento de crearla. Esta técnica permite controlar el acceso de red a varias máquinas virtuales en un único conjunto central de reglas.

Limpieza

El espacio aislado limpia los recursos automáticamente cuando haya terminado con este módulo.

Al trabajar en una suscripción propia, se recomienda identificar al final de un proyecto si aún necesita los recursos creados. Los recursos que dejas en ejecución pueden costar dinero. Puede eliminar los recursos de forma individual o eliminar el grupo de recursos para eliminar todo el conjunto de recursos.