Guía de inicio rápido: Diagnóstico de problemas al filtrar el tráfico de las máquinas virtuales con Azure PowerShell

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.

Diagrama que muestra los recursos creados en el inicio rápido de Network Watcher.

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 Azure PowerShell.

    Los pasos de este artículo ejecutarán los cmdlets de Azure PowerShell 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, a continuación, en Cloud Shell para ejecutarlo. También podrá ejecutar Cloud Shell desde Azure Portal.

    También podrá instalar Azure PowerShell localmente para ejecutar los cmdlet. En este inicio rápido se requiere el módulo Az PowerShell. Para más información, vea Instalación de Azure PowerShell. Ejecute Get-InstalledModule -Name Az para ver cuál es la versión instalada. Si ejecuta PowerShell localmente, inicie sesión en Azure con el cmdlet Connect-AzAccount.

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.

  1. Cree un grupo de recursos con New-AzResourceGroup. 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.
    New-AzResourceGroup -Name 'myResourceGroup' -Location 'eastus' 
    
  2. Cree una configuración de subred para la subred de la máquina virtual y la subred del host de Bastion mediante New-AzVirtualNetworkSubnetConfig.

    # Create subnets configuration.
    $Subnet = New-AzVirtualNetworkSubnetConfig -Name 'mySubnet' -AddressPrefix '10.0.0.0/24'
    
  3. Cree una red virtual mediante New-AzVirtualNetwork.

    # Create a virtual network.
    New-AzVirtualNetwork -Name 'myVNet' -ResourceGroupName 'myResourceGroup' -Location 'eastus' -AddressPrefix '10.0.0.0/16' -Subnet $Subnet
    
  4. Cree un grupo de seguridad de red predeterminado con New-AzNetworkSecurityGroup.

    # Create a network security group. 
    New-AzNetworkSecurityGroup -Name 'myVM-nsg' -ResourceGroupName 'myResourceGroup' -Location  'eastus'
    
  5. Cree una máquina virtual mediante New-AzVM. 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.
    New-AzVm -ResourceGroupName 'myResourceGroup' -Name 'myVM' -Location 'eastus' -VirtualNetworkName 'myVNet' -SubnetName 'mySubnet' -SecurityGroupName '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.

  1. Use Test-AzNetworkWatcherIPFlow 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 usa www.bing.com):

    # Place myVM configuration into a variable.
    $vm = Get-AzVM -ResourceGroupName 'myResourceGroup' -Name 'myVM'
    
    # Start the IP flow verify session to test outbound flow to www.bing.com.
    Test-AzNetworkWatcherIPFlow -Location 'eastus' -TargetVirtualMachineId $vm.Id -Direction 'Outbound' -Protocol 'TCP' -RemoteIPAddress '13.107.21.200' -RemotePort '80' -LocalIPAddress '10.0.0.4' -LocalPort '60000'
    

    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.

  2. 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.
    Test-AzNetworkWatcherIPFlow -Location 'eastus' -TargetVirtualMachineId $vm.Id -Direction 'Outbound' -Protocol 'TCP' -RemoteIPAddress '10.0.1.10' -RemotePort '80' -LocalIPAddress '10.0.0.4' -LocalPort '60000'
    

    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.

  3. 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.
    Test-AzNetworkWatcherIPFlow -Location 'eastus' -TargetVirtualMachineId $vm.Id -Direction 'Outbound' -Protocol 'TCP' -RemoteIPAddress '10.10.10.10' -RemotePort '80' -LocalIPAddress '10.0.0.4' -LocalPort '60000'
    

    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.

  4. Cambie la Dirección a Entrante, el LocalPort a 80 y el RemotePort a 60000 y luego repita la prueba.

    # Start the IP flow verify session to test inbound flow from 10.10.10.10.
    Test-AzNetworkWatcherIPFlow -Location 'eastus' -TargetVirtualMachineId $vm.Id -Direction 'Inbound' -Protocol 'TCP' -RemoteIPAddress '10.10.10.10' -RemotePort '60000' -LocalIPAddress '10.0.0.4' -LocalPort '80'
    

    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 cmdlet Get-AzEffectiveNetworkSecurityGroup:

# Get the effective security rules for the network interface of myVM.
Get-AzEffectiveNetworkSecurityGroup -NetworkInterfaceName 'myVM' -ResourceGroupName 'myResourceGroup'

La salida devuelta contiene la siguiente información de la regla AllowInternetOutbound, que permite el acceso de salida a www.bing.com:

{
 "Name": "defaultSecurityRules/AllowInternetOutBound",
 "Protocol": "All",
 "SourcePortRange": [
   "0-65535"
 ],
 "DestinationPortRange": [
   "0-65535"
 ],
 "SourceAddressPrefix": [
   "0.0.0.0/0",
   "0.0.0.0/0"
 ],
 "DestinationAddressPrefix": [
   "Internet"
 ],
 "ExpandedSourceAddressPrefix": [],
 "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"
 ],
 "Access": "Allow",
 "Priority": 65001,
 "Direction": "Outbound"
},

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 lo necesite, utilice Remove-AzResourceGroup para eliminar el grupo de recursos y todos los recursos que contiene:

# Delete the resource group and all resources it contains.
Remove-AzResourceGroup -Name 'myResourceGroup' -Force

Pasos siguientes

En esta guía de inicio rápido, ha creado una máquina virtual y diagnosticado los filtros del tráfico de entrada y de salida. Ha aprendido que las reglas de grupo de seguridad de red permiten o deniegan el tráfico de entrada y salida de una máquina virtual. Más información acerca de las reglas de seguridad y cómo crearlas.

Incluso con los filtros de tráfico de red adecuados, la comunicación con una máquina virtual puede fallar debido a la configuración del enrutamiento. Para saber cómo diagnosticar problemas de enrutamiento de máquinas virtuales, consulte Diagnóstico de un problema de enrutamiento de red de máquina virtual. Para diagnosticar problemas de enrutamiento, latencia y filtrado de tráfico de salida con una herramienta, consulte Solución de problemas de conexión con Azure Network Watcher.