Guía de inicio rápido: diagnóstico de problemas al filtrar el tráfico de las máquinas virtuales con la CLI de Azure
En este inicio rápido, implementará una máquina virtual y usará la comprobación del flujo de IP de Network Watcher para probar la conectividad hacia y desde diferentes direcciones IP. Con los resultados de la comprobación del flujo de IP, se determina la regla de seguridad que bloquea el tráfico y produce el error de comunicación y se aprende cómo resolverlo. También aprenderá a usar reglas de seguridad eficaces para una interfaz de red a fin de determinar por qué una regla de seguridad permite o deniega el tráfico.
Si no tiene una suscripción a Azure, cree una cuenta gratuita antes de empezar.
Requisitos previos
Una cuenta de Azure con una suscripción activa.
Azure Cloud Shell o la CLI de Azure.
Los pasos de este artículo ejecutarán los comandos de la CLI de Azure de forma interactiva en Azure Cloud Shell. Para ejecutar los comandos en Cloud Shell, seleccione Abrir Cloud Shell en la esquina superior derecha de un bloque de código. Seleccione Copiar para copiar el código y péguelo en Cloud Shell para ejecutarlo. También podrá ejecutar Cloud Shell desde Azure Portal.
También puede instalar la CLI de Azure localmente para ejecutar los comandos. Para realizar este inicio rápido es necesaria la versión 2.0 o posterior de la CLI de Azure. Si ejecuta la CLI de Azure localmente, inicie sesión en Azure con el comando az login.
Creación de una máquina virtual
En esta sección, creará una red virtual y una subred en la región Este de EE. UU. A continuación, cree una máquina virtual en la subred con un grupo de seguridad de red predeterminado.
Para crear un grupo de recursos, use az group create. Un grupo de recursos de Azure es un contenedor lógico en el que se implementan y se administran los recursos de Azure.
# Create a resource group. az group create --name 'myResourceGroup' --location 'eastus'
Cree una red virtual con az network vnet create.
# Create a virtual network and a subnet. az network vnet create --resource-group 'myResourceGroup' --name 'myVNet' --subnet-name 'mySubnet' --subnet-prefixes 10.0.0.0/24
Cree un grupo de seguridad de red predeterminado mediante az network nsg create.
# Create a default network security group. az network nsg create --name 'myVM-nsg' --resource-group 'myResourceGroup' --location 'eastus'
Cree una máquina virtual con az vm create. Cuando se le solicite, escriba un nombre de usuario y una contraseña.
# Create a Linux virtual machine using the latest Ubuntu 20.04 LTS image. az vm create --resource-group 'myResourceGroup' --name 'myVM' --location 'eastus' --vnet-name 'myVNet' --subnet 'mySubnet' --public-ip-address '' --nsg 'myVM-nsg' --image 'Canonical:0001-com-ubuntu-server-focal:20_04-lts-gen2:latest'
Prueba de la comunicación de red mediante la comprobación del flujo de IP
En esta sección, se usará la capacidad de verificación del flujo IP de Network Watcher para probar la comunicación de red hacia y desde la máquina virtual.
Use el comando az network watcher test-ip-flow para probar la comunicación saliente de myVM a 13.107.21.200 mediante la comprobación del flujo de IP (
13.107.21.200
es una de las IP públicas que usawww.bing.com
):# Start the IP flow verify session to test outbound flow to www.bing.com. az network watcher test-ip-flow --direction 'outbound' --protocol 'TCP' --local '10.0.0.4:60000' --remote '13.107.21.200:80' --vm 'myVM' --nic 'myVmVMNic' --resource-group 'myResourceGroup' --out 'table'
Después de unos segundos, obtendrá una salida similar al ejemplo siguiente:
Access RuleName ------ -------- Allow defaultSecurityRules/AllowInternetOutBound
El resultado de la prueba indica que se permite el acceso a 13.107.21.200 debido a la regla de seguridad predeterminada AllowInternetOutBound. De forma predeterminada, las máquinas virtuales de Azure pueden acceder a Internet.
Cambie RemoteIPAddress a 10.0.1.10 y repita la prueba. 10.0.1.10 es una dirección IP privada en el espacio de direcciones myVNet.
# Start the IP flow verify session to test outbound flow to 10.0.1.10. az network watcher test-ip-flow --direction 'outbound' --protocol 'TCP' --local '10.0.0.4:60000' --remote '10.0.1.10:80' --vm 'myVM' --nic 'myVmVMNic' --resource-group 'myResourceGroup' --out 'table'
Después de unos segundos, obtendrá una salida similar al ejemplo siguiente:
Access RuleName ------ -------- Allow defaultSecurityRules/AllowVnetOutBound
El resultado de la segunda prueba indica que se permite el acceso a 10.0.1.10 debido a la regla de seguridad predeterminada AllowVnetOutBound. De forma predeterminada, una máquina virtual de Azure puede acceder a todas las direcciones IP del espacio de direcciones de su red virtual.
Cambie RemoteIPAddress a 10.10.10.10 y repita la prueba. 10.10.10.10 es una dirección IP privada que no está en el espacio de direcciones myVNet.
# Start the IP flow verify session to test outbound flow to 10.10.10.10. az network watcher test-ip-flow --direction 'outbound' --protocol 'TCP' --local '10.0.0.4:60000' --remote '10.10.10.10:80' --vm 'myVM' --nic 'myVmVMNic' --resource-group 'myResourceGroup' --out 'table'
Después de unos segundos, obtendrá una salida similar al ejemplo siguiente:
Access RuleName ------ -------- Allow defaultSecurityRules/DenyAllOutBound
El resultado de la tercera prueba indica que se deniega el acceso a 10.10.10.10debido a la regla de seguridad predeterminada DenyAllOutBound.
Cambie la dirección a entrante, el puerto local a 80 y el puerto remoto a 60000 y luego repita la prueba.
# Start the IP flow verify session to test inbound flow from 10.10.10.10. az network watcher test-ip-flow --direction 'inbound' --protocol 'TCP' --local '10.0.0.4:80' --remote '10.10.10.10:6000' --vm 'myVM' --nic 'myVmVMNic' --resource-group 'myResourceGroup' --out 'table'
Después de unos segundos, obtendrá una salida similar al ejemplo siguiente:
Access RuleName ------ -------- Allow defaultSecurityRules/DenyAllInBound
El resultado de la cuarta prueba indica que se deniega el acceso a 10.10.10.10 debido a la regla de seguridad predeterminada DenyAllOutBound. De forma predeterminada, se deniega todo el acceso a una máquina virtual de Azure desde fuera de la red virtual.
Ver detalles de una regla de seguridad
Para determinar por qué las reglas de la sección anterior permiten o deniegan la comunicación, revise las reglas de seguridad vigentes para la interfaz de red de la máquina virtual myVM mediante el comando az network nic list-effective-nsg:
# Get the effective security rules for the network interface of myVM.
az network nic list-effective-nsg --resource-group 'myResourceGroup' --name 'myVmVMNic'
La salida devuelta contiene la siguiente información de la regla AllowInternetOutbound, que permite el acceso de salida a www.bing.com
:
{
"access": "Allow",
"destinationAddressPrefix": "Internet",
"destinationAddressPrefixes": [
"Internet"
],
"destinationPortRange": "0-65535",
"destinationPortRanges": [
"0-65535"
],
"direction": "Outbound",
"expandedDestinationAddressPrefix": [
"1.0.0.0/8",
"2.0.0.0/7",
"4.0.0.0/9",
"4.144.0.0/12",
"4.160.0.0/11",
"4.192.0.0/10",
"5.0.0.0/8",
"6.0.0.0/7",
"8.0.0.0/7",
"11.0.0.0/8",
"12.0.0.0/8",
"13.0.0.0/10",
"13.64.0.0/11",
"13.104.0.0/13",
"13.112.0.0/12",
"13.128.0.0/9",
"14.0.0.0/7",
...
...
...
"200.0.0.0/5",
"208.0.0.0/4"
],
"name": "defaultSecurityRules/AllowInternetOutBound",
"priority": 65001,
"protocol": "All",
"sourceAddressPrefix": "0.0.0.0/0",
"sourceAddressPrefixes": [
"0.0.0.0/0",
"0.0.0.0/0"
],
"sourcePortRange": "0-65535",
"sourcePortRanges": [
"0-65535"
]
},
Puede ver en la salida que el prefijo de dirección 13.104.0.0/13 está entre los prefijos de dirección de la regla AllowInternetOutBound. Este prefijo abarca la dirección IP 13.107.21.200, que utilizó para probar la comunicación saliente con www.bing.com
.
Del mismo modo, puede consultar las demás reglas para ver los prefijos de direcciones IP de origen y destino de cada regla.
Limpieza de recursos
Cuando ya no sea necesario, use az group delete para eliminar el grupo de recursos myResourceGroup y todos los recursos que contiene:
# Delete the resource group and all resources it contains.
az group delete --name 'myResourceGroup' --yes