Ejercicio: Enrutamiento del tráfico a través de la NVA
Ahora que se han creado la aplicación virtual de red (NVA) y las máquinas virtuales (VM), enrutará el tráfico por medio de la NVA.
Creación de máquinas virtuales públicas y privadas
En los pasos siguientes se implementa una VM en las subredes públicas y privadas.
Abra el editor de Cloud Shell y cree un archivo denominado cloud-init.txt.
code cloud-init.txt
Agregue la información de configuración siguiente al archivo. Con esta configuración, se instala el paquete
inetutils-traceroute
al crear una máquina virtual. Este paquete contiene la utilidadtraceroute
que usará más adelante en este ejercicio.#cloud-config package_upgrade: true packages: - inetutils-traceroute
Presione Ctrl+S para guardar el archivo y, después, Ctr+Q para cerrar el editor.
Ejecute el comando siguiente en Cloud Shell para crear la máquina virtual pública. Reemplace
<password>
por una contraseña adecuada para la cuenta azureuser.az vm create \ --resource-group "<rgn>[sandbox resource group name]</rgn>" \ --name public \ --vnet-name vnet \ --subnet publicsubnet \ --image Ubuntu2204 \ --admin-username azureuser \ --no-wait \ --custom-data cloud-init.txt \ --admin-password <password>
Ejecute el comando siguiente para crear la máquina virtual privada. Reemplace
<password>
por una contraseña adecuada.az vm create \ --resource-group "<rgn>[sandbox resource group name]</rgn>" \ --name private \ --vnet-name vnet \ --subnet privatesubnet \ --image Ubuntu2204 \ --admin-username azureuser \ --no-wait \ --custom-data cloud-init.txt \ --admin-password <password>
Ejecute el siguiente comando
watch
de Linux para comprobar que las máquinas virtuales están en ejecución. El comandowatch
ejecuta periódicamente el comandoaz vm list
para que pueda supervisar el progreso de las máquinas virtuales.watch -d -n 5 "az vm list \ --resource-group "<rgn>[sandbox resource group name]</rgn>" \ --show-details \ --query '[*].{Name:name, ProvisioningState:provisioningState, PowerState:powerState}' \ --output table"
Un valor ProvisioningState de "Correcto" y un valor PowerState de "Máquina virtual en ejecución" indican que la implementación es correcta. Cuando las tres máquinas virtuales estén en ejecución, podrá continuar. Presione Ctrl-C para detener el comando y continuar con el ejercicio.
Ejecute el comando siguiente para guardar la dirección IP pública de la máquina virtual pública en la variable denominada
PUBLICIP
:PUBLICIP="$(az vm list-ip-addresses \ --resource-group "<rgn>[sandbox resource group name]</rgn>" \ --name public \ --query "[].virtualMachine.network.publicIpAddresses[*].ipAddress" \ --output tsv)" echo $PUBLICIP
Ejecute el comando siguiente para guardar la dirección IP pública de la máquina virtual privada en la variable denominada
PRIVATEIP
:PRIVATEIP="$(az vm list-ip-addresses \ --resource-group "<rgn>[sandbox resource group name]</rgn>" \ --name private \ --query "[].virtualMachine.network.publicIpAddresses[*].ipAddress" \ --output tsv)" echo $PRIVATEIP
Prueba del enrutamiento del tráfico a través de la aplicación virtual de red
Los últimos pasos consisten en usar la utilidad traceroute
de Linux para mostrar cómo se enruta el tráfico. Usará el comando ssh
para ejecutar traceroute
en cada máquina virtual. La primera prueba muestra la ruta que siguen los paquetes ICMP enviados desde la máquina virtual pública a la privada. La segunda prueba muestra la ruta que siguen los paquetes ICMP enviados desde la máquina virtual privada a la pública.
Ejecute el comando siguiente para hacer el seguimiento de la ruta de pública a privada. Cuando se le solicite, escriba la contraseña de la cuenta azureuser que ha especificado antes.
ssh -t -o StrictHostKeyChecking=no azureuser@$PUBLICIP 'traceroute private --type=icmp; exit'
Si recibe el mensaje error
bash: traceroute: command not found
, espere un minuto y vuelva a intentar el comando. La instalación automatizada detraceroute
puede tardar un minuto o dos después de la implementación de la máquina virtual. Después de que el comando termine de forma correcta, el resultado debe ser similar al ejemplo siguiente:traceroute to private.kzffavtrkpeulburui2lgywxwg.gx.internal.cloudapp.net (10.0.1.4), 64 hops max 1 10.0.2.4 0.710ms 0.410ms 0.536ms 2 10.0.1.4 0.966ms 0.981ms 1.268ms Connection to 52.165.151.216 closed.
Observe que el primer salto es a 10.0.2.4. Esta es la dirección IP privada de nva. El segundo salto es a 10.0.1.4, la dirección de privada. En el primer ejercicio ha agregado esta ruta a la tabla de rutas y ha vinculado la tabla a la subred publicsubnet. Por tanto, ahora todo el tráfico de pública a privada se enruta por medio de la aplicación virtual de red.
Ejecute el comando siguiente para hacer el seguimiento de la ruta de privada a pública. Cuando se le solicite, escriba la contraseña de la cuenta azureuser.
ssh -t -o StrictHostKeyChecking=no azureuser@$PRIVATEIP 'traceroute public --type=icmp; exit'
Debería ver que el tráfico va directamente a pública (10.0.0.4) y no a través de NVA, como se muestra en la salida del comando siguiente.
traceroute to public.kzffavtrkpeulburui2lgywxwg.gx.internal.cloudapp.net (10.0.0.4), 64 hops max 1 10.0.0.4 1.095ms 1.610ms 0.812ms Connection to 52.173.21.188 closed.
La máquina virtual privada usa rutas predeterminadas y el tráfico se enruta directamente de una subred a otra.
Ya ha configurado el enrutamiento entre subredes para dirigir el tráfico procedente de la red pública de Internet a través de la subred dmzsubnet antes de que llegue a la subred privada. En la subred dmzsubnet, ha agregado una máquina virtual que actúa como NVA. Puede configurar este NVA para detectar solicitudes potencialmente malintencionadas y bloquearlas antes de que lleguen a los destinos a los que se dirigen.