Share via


Diagnosticar problemas de enrutamiento en una red de máquinas virtuales: Azure PowerShell

En este artículo implementará una máquina virtual (VM) y comprobará las comunicaciones hacia una dirección IP y una dirección URL. Además, va a determinar la causa de un error de comunicación y cómo puede resolverlo.

Si no tiene una suscripción a Azure, cree una cuenta gratuita antes de empezar.

Azure Cloud Shell

En Azure se hospeda Azure Cloud Shell, un entorno de shell interactivo que puede utilizar mediante el explorador. Puede usar Bash o PowerShell con Cloud Shell para trabajar con los servicios de Azure. Puede usar los comandos preinstalados de Cloud Shell para ejecutar el código de este artículo sin tener que instalar nada en su entorno local.

Para iniciar Azure Cloud Shell:

Opción Ejemplo o vínculo
Seleccione Pruébelo en la esquina superior derecha de un bloque de código o de comandos. Solo con seleccionar Pruébelo no se copia automáticamente el código o comando en Cloud Shell. Captura de pantalla que muestra un ejemplo de la opción Pruébelo para Azure Cloud Shell.
Vaya a https://shell.azure.com o seleccione el botón Iniciar Cloud Shell para abrir Cloud Shell en el explorador. Botón para iniciar Azure Cloud Shell.
Seleccione el botón Cloud Shell en la barra de menús de la esquina superior derecha de Azure Portal. Captura de pantalla que muestra el botón de Cloud Shell en Azure Portal

Para usar Azure Cloud Shell:

  1. Inicie Cloud Shell.

  2. Seleccione el botón Copiar en un bloque de código (o bloque de comandos) para copiar el código o comando.

  3. Pegue el código o comando en la sesión de Cloud Shell. Para ello, seleccione Ctrl+Mayús+V en Windows y Linux, o bien seleccione Cmd+Mayús+V en macOS.

  4. Seleccione Intro para ejecutar el código o comando.

Si decide instalar y usar PowerShell localmente, en este artículo se requiere el módulo Az de 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.

Crear una VM

Para poder crear una máquina virtual, debe crear un grupo de recursos que contenga la máquina virtual. Cree un grupo de recursos con New-AzResourceGroup. En el ejemplo siguiente, se crea un grupo de recursos denominado myResourceGroup en la ubicación eastus.

New-AzResourceGroup -Name myResourceGroup -Location EastUS

Cree la máquina virtual con New-AzVM. Cuando se realiza este paso, se le solicitará las credenciales. Los valores que especifique se configuran como el nombre de usuario y la contraseña de la máquina virtual.

$vM = New-AzVm `
    -ResourceGroupName "myResourceGroup" `
    -Name "myVm" `
    -Location "East US"

La máquina virtual tarda en crearse unos minutos. No continúe con los pasos restantes hasta que la máquina virtual se haya creado y PowerShell devuelva la salida.

Prueba de la comunicación de red

Para probar la comunicación de red con Network Watcher, primero debe habilitar un monitor de red en la región en la que quiere probar la máquina virtual y, a continuación, usar la funcionalidad de próximo salto de Network Watcher para probar la comunicación.

Habilitación de Network Watcher

Si ya tiene un monitor de red habilitado en la región Este de EE. UU., use Get-AzNetworkWatcher para recuperarlo. En el ejemplo siguiente, se recupera un monitor de red existente llamado NetworkWatcher_eastus que se encuentra en el grupo de recursos NetworkWatcherRG:

$networkWatcher = Get-AzNetworkWatcher `
  -Name NetworkWatcher_eastus `
  -ResourceGroupName NetworkWatcherRG

Si aún no tiene un monitor de red habilitado en la región Este de EE. UU., use New-AzNetworkWatcher para crearlo:

$networkWatcher = New-AzNetworkWatcher `
  -Name "NetworkWatcher_eastus" `
  -ResourceGroupName "NetworkWatcherRG" `
  -Location "East US"

Use el próximo salto

Azure crea rutas automáticamente a los destinos predeterminados. Es posible crear rutas personalizadas que reemplacen las rutas predeterminadas. En ocasiones, las rutas personalizadas pueden provocar errores de comunicación. Para probar el enrutamiento desde una máquina virtual, use el comando Get-AzNetworkWatcherNextHop para determinar el siguiente salto de enrutamiento cuando el tráfico esté destinado a una dirección específica.

Pruebe la comunicación de salida entre la máquina virtual y una de las direcciones IP de www.bing.com:

Get-AzNetworkWatcherNextHop `
  -NetworkWatcher $networkWatcher `
  -TargetVirtualMachineId $VM.Id `
  -SourceIPAddress 192.168.1.4 `
  -DestinationIPAddress 13.107.21.200

Después de unos segundos, el resultado le informa que el valor de NextHopType es Internet y que el valor de RouteTableId es Ruta del sistema. Este resultado le permite saber que hay una ruta válida para el destino.

Pruebe la comunicación de salida entre la máquina virtual y 172.31.0.100:

Get-AzNetworkWatcherNextHop `
  -NetworkWatcher $networkWatcher `
  -TargetVirtualMachineId $VM.Id `
  -SourceIPAddress 192.168.1.4 `
  -DestinationIPAddress 172.31.0.100

El resultado que se devuelve le informa que Ninguno es el valor de NextHopType y que el valor de RouteTableId también es Ruta del sistema. Este resultado le permite saber que, aunque no hay una ruta de sistema válida para el destino, no hay ningún próximo salto para enrutar el tráfico al destino.

Vista de los detalles de una ruta

Para analizar el enrutamiento detenidamente, revise las rutas efectivas para la interfaz de red con el comando Get-AzEffectiveRouteTable:

Get-AzEffectiveRouteTable `
  -NetworkInterfaceName myVm `
  -ResourceGroupName myResourceGroup |
  Format-table

Se devuelve una salida que incluye el texto siguiente:

Name State  Source  AddressPrefix           NextHopType NextHopIpAddress
---- -----  ------  -------------           ----------- ----------------
     Active Default {192.168.0.0/16}        VnetLocal   {}              
     Active Default {0.0.0.0/0}             Internet    {}              
     Active Default {10.0.0.0/8}            None        {}              
     Active Default {100.64.0.0/10}         None        {}              
     Active Default {172.16.0.0/12}         None        {}              

Como puede ver en la salida anterior, la ruta con AddressPrefix de 0.0.0.0/0 enruta todo el tráfico no destinado a direcciones dentro de otros prefijos de direcciones de ruta con un próximo salto de Internet. Como también puede ver en el resultado, aunque hay una ruta predeterminada hacia el prefijo 172.16.0.0/12 (que incluye la dirección 172.31.0.100), el valor de nextHopType es Ninguno. Azure crea una ruta predeterminada a 172.16.0.0/12, pero no especifica un tipo de próximo salto hasta que haya un motivo para hacerlo. Por ejemplo, si se agrega el intervalo de direcciones 172.16.0.0/12 al espacio de direcciones de la red virtual, Azure cambia el valor de nextHopType a Red Virtual para la ruta. A continuación, se muestra una marca de verificación de Red virtual como valor de nextHopType.

Limpieza de recursos

Cuando ya no lo necesite, puede usar Remove-AzResourceGroup para quitar el grupo de recursos y todos los recursos que contiene:

Remove-AzResourceGroup -Name myResourceGroup -Force

Pasos siguientes

En este artículo creó una máquina virtual y diagnosticó el enrutamiento de red a partir de esa máquina virtual. Se informó que Azure crear varias rutas predeterminadas y prueba el enrutamiento a dos destinos diferentes. Obtenga más información sobre enrutamiento en Azure y cómo crear rutas personalizadas.

Para las conexiones de máquinas virtuales salientes, también puede determinar la latencia y el tráfico de red permitido o denegado entre la máquina virtual y un punto de conexión mediante la funcionalidad de resolución de problemas de conexión de Network Watcher. Puede supervisar la comunicación entre una máquina virtual y un punto de conexión, como una dirección IP o una URL, gracias a la funcionalidad de supervisión de conexiones de Network Watcher. Para más información, consulte Supervisión de una conexión de red.