Inicio rápido: usar Azure PowerShell para crear una red virtual

En este inicio rápido, se muestra cómo crear una red virtual mediante Azure PowerShell. A continuación, creará dos máquinas virtuales (VM) en la red, se conectará de forma segura a las máquinas virtuales desde Internet y se comunicará de forma privada entre las máquinas virtuales.

Una red virtual es el bloque de compilación fundamental para las redes privadas en Azure. Azure Virtual Network permite que los recursos de Azure, como las máquinas virtuales, se comuniquen de manera segura entre sí y con Internet.

Diagrama de recursos creados en el inicio rápido de la red virtual.

Requisitos previos

  • Una cuenta de Azure con una suscripción activa. También puede crear una cuenta de forma gratuita.

  • Azure Cloud Shell o Azure PowerShell.

    Los pasos de este inicio rápido ejecutarán los cmdlet de Azure PowerShell de forma interactiva en Azure Cloud Shell. Para ejecutar los comandos en Cloud Shell, seleccione Abrir CloudShell en la esquina superior derecha de un bloque de código. Seleccione Copiar para copiar el código y, a continuación, péguelo 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. Los pasos descritos en este artículo requieren el módulo Azure PowerShell versión 5.4.1 o posterior. Ejecute Get-Module -ListAvailable Az para buscar la versión instalada. Si necesitase actualizarlo, consulte Instalación del módulo Azure PowerShell.

    Si ejecutase PowerShell localmente, ejecute Connect-AzAccount para conectarse a Azure.

Crear un grupo de recursos

Use New-AzResourceGroup para crear un grupo de recursos para hospedar la red virtual. Ejecute el código siguiente para crear un grupo de recursos denominado test-rg en la región de Azure eastus2:

$rg = @{
    Name = 'test-rg'
    Location = 'eastus2'
}
New-AzResourceGroup @rg

Creación de una red virtual

  1. Use New-AzVirtualNetwork para crear una red virtual denominada vnet-1 con el prefijo de dirección IP 10.0.0.0/16 en el grupo de recursos test-rg y la ubicación eastus2:

    $vnet = @{
        Name = 'vnet-1'
        ResourceGroupName = 'test-rg'
        Location = 'eastus2'
        AddressPrefix = '10.0.0.0/16'
    }
    $virtualNetwork = New-AzVirtualNetwork @vnet
    
  2. Azure implementa recursos en una subred dentro de una red virtual. Use Add-AzVirtualNetworkSubnetConfig para crear una configuración de subred denominada subnet-1 con el prefijo de dirección 10.0.0.0/24:

    $subnet = @{
        Name = 'subnet-1'
        VirtualNetwork = $virtualNetwork
        AddressPrefix = '10.0.0.0/24'
    }
    $subnetConfig = Add-AzVirtualNetworkSubnetConfig @subnet
    
  3. A continuación, asocie la configuración de subred a la red virtual con Set-AzVirtualNetwork:

    $virtualNetwork | Set-AzVirtualNetwork
    

Implementación de Azure Bastion

Azure Bastion usa el explorador para conectarse a las máquinas virtuales de la red virtual a través del shell seguro (SSH) o el protocolo de escritorio remoto (RDP) mediante sus direcciones IP privadas. Las máquinas virtuales no necesitan direcciones IP públicas, software cliente ni configuración especial. Para más información sobre Bastion, consulte ¿Qué es Azure Bastion?

Los precios por hora comienzan desde el momento en que se implementa Bastion, independientemente del uso de datos salientes. Para más información, consulte Precios y SKU. Si va a implementar Bastion como parte de un tutorial o prueba, se recomienda eliminar este recurso una vez que haya terminado de usarlo.

  1. Configure la subred de Azure Bastion en la red virtual. Esta subred se reservará exclusivamente para los recursos de Azure Bastion y debe denominarse AzureBastionSubnet.

    $subnet = @{
        Name = 'AzureBastionSubnet'
        VirtualNetwork = $virtualNetwork
        AddressPrefix = '10.0.1.0/26'
    }
    $subnetConfig = Add-AzVirtualNetworkSubnetConfig @subnet
    
  2. Establezca la configuración:

    $virtualNetwork | Set-AzVirtualNetwork
    
  3. Cree una dirección IP pública para Bastion. El host de Bastion usa la dirección IP pública para acceder a SSH y RDP a través del puerto 443.

    $ip = @{
            ResourceGroupName = 'test-rg'
            Name = 'public-ip'
            Location = 'eastus2'
            AllocationMethod = 'Static'
            Sku = 'Standard'
            Zone = 1,2,3
    }
    New-AzPublicIpAddress @ip
    
  4. Use el comando New-AzBastion para crear un nuevo host de Bastion de SKU estándar en AzureBastionSubnet:

    $bastion = @{
        Name = 'bastion'
        ResourceGroupName = 'test-rg'
        PublicIpAddressRgName = 'test-rg'
        PublicIpAddressName = 'public-ip'
        VirtualNetworkRgName = 'test-rg'
        VirtualNetworkName = 'vnet-1'
        Sku = 'Basic'
    }
    New-AzBastion @bastion
    

Los recursos de Bastion tardarán aproximadamente 10 minutos en implementarse. En la siguiente sección, podrá crear una máquina virtual mientras Bastion se implementa en la red virtual.

Creación de máquinas virtuales

Use New-AzVM para crear dos máquinas virtuales denominadas vm-1 y vm-2 en la subred subnet-1 de la red virtual. Cuando se le pidan las credenciales, escriba los nombres de usuario y las contraseñas de las máquinas virtuales.

  1. Para crear la primera máquina virtual, use el código siguiente:

    # Set the administrator and password for the VM. ##
    $cred = Get-Credential
    
    ## Place the virtual network into a variable. ##
    $vnet = Get-AzVirtualNetwork -Name 'vnet-1' -ResourceGroupName 'test-rg'
    
    ## Create a network interface for the VM. ##
    $nic = @{
        Name = "nic-1"
        ResourceGroupName = 'test-rg'
        Location = 'eastus2'
        Subnet = $vnet.Subnets[0]
    }
    $nicVM = New-AzNetworkInterface @nic
    
    ## Create a virtual machine configuration. ##
    $vmsz = @{
        VMName = "vm-1"
        VMSize = 'Standard_DS1_v2'  
    }
    $vmos = @{
        ComputerName = "vm-1"
        Credential = $cred
    }
    $vmimage = @{
        PublisherName = 'Canonical'
        Offer = '0001-com-ubuntu-server-jammy'
        Skus = '22_04-lts-gen2'
        Version = 'latest'    
    }
    $vmConfig = New-AzVMConfig @vmsz `
        | Set-AzVMOperatingSystem @vmos -Linux `
        | Set-AzVMSourceImage @vmimage `
        | Add-AzVMNetworkInterface -Id $nicVM.Id
    
    ## Create the VM. ##
    $vm = @{
        ResourceGroupName = 'test-rg'
        Location = 'eastus2'
        VM = $vmConfig
    }
    New-AzVM @vm
    
  2. Para crear la segunda máquina virtual, use el código siguiente:

    # Set the administrator and password for the VM. ##
    $cred = Get-Credential
    
    ## Place the virtual network into a variable. ##
    $vnet = Get-AzVirtualNetwork -Name 'vnet-1' -ResourceGroupName 'test-rg'
    
    ## Create a network interface for the VM. ##
    $nic = @{
        Name = "nic-2"
        ResourceGroupName = 'test-rg'
        Location = 'eastus2'
        Subnet = $vnet.Subnets[0]
    }
    $nicVM = New-AzNetworkInterface @nic
    
    ## Create a virtual machine configuration. ##
    $vmsz = @{
        VMName = "vm-2"
        VMSize = 'Standard_DS1_v2'  
    }
    $vmos = @{
        ComputerName = "vm-2"
        Credential = $cred
    }
    $vmimage = @{
        PublisherName = 'Canonical'
        Offer = '0001-com-ubuntu-server-jammy'
        Skus = '22_04-lts-gen2'
        Version = 'latest'    
    }
    $vmConfig = New-AzVMConfig @vmsz `
        | Set-AzVMOperatingSystem @vmos -Linux `
        | Set-AzVMSourceImage @vmimage `
        | Add-AzVMNetworkInterface -Id $nicVM.Id
    
    ## Create the VM. ##
    $vm = @{
        ResourceGroupName = 'test-rg'
        Location = 'eastus2'
        VM = $vmConfig
    }
    New-AzVM @vm
    

Sugerencia

Puede usar la opción -AsJob para crear una máquina virtual en segundo plano mientras continúa con otras tareas. Por ejemplo, ejecute New-AzVM @vm1 -AsJob. Cuando Azure comience a crear la máquina virtual en segundo plano, obtendrá algo como el siguiente resultado:

Id     Name            PSJobTypeName   State         HasMoreData     Location             Command
--     ----            -------------   -----         -----------     --------             -------
1      Long Running... AzureLongRun... Running       True            localhost            New-AzVM

Azure tardará unos minutos en crear las máquinas virtuales. Cuando Azure termine de crear las máquinas virtuales, devolverá la salida a PowerShell.

Nota

Las máquinas virtuales de una red virtual con un host bastión no necesitarán direcciones IP públicas. Bastion proporcionará la dirección IP pública y las máquinas virtuales usarán direcciones IP privadas para comunicarse dentro de la red. Es posible quitar las direcciones IP públicas de cualquier máquina virtual en redes virtuales hospedadas por Bastion. Para obtener más información, consulte Desasociación de una dirección IP pública de una máquina virtual de Azure.

Nota:

Azure proporciona una dirección IP de acceso de salida predeterminada para las máquinas virtuales que no tienen asignada una dirección IP pública o están en el grupo back-end de un equilibrador de carga de Azure básico interno. El mecanismo de dirección IP de acceso de salida predeterminado proporciona una dirección IP de salida que no se puede configurar.

La dirección IP de acceso de salida predeterminada está deshabilitada cuando se produce uno de los siguientes eventos:

  • Se asigna una dirección IP pública a la máquina virtual.
  • La máquina virtual se coloca en el grupo back-end de un equilibrador de carga estándar, con o sin reglas de salida.
  • Se asigna un recurso de Azure NAT Gateway a la subred de la máquina virtual.

Las máquinas virtuales creadas mediante conjuntos de escalado de máquinas virtuales en modo de orquestación flexible no tienen acceso de salida predeterminado.

Para más información sobre las conexiones de salida en Azure, vea Acceso de salida predeterminado en Azure y Uso de traducción de direcciones de red (SNAT) de origen para conexiones de salida.

Conexión a una máquina virtual

  1. En el portal, busque y seleccione Máquinas virtuales.

  2. En la página Máquinas virtuales, seleccione vm-1.

  3. En la información general de vm-1, seleccione Conectar.

  4. En la página Conexión a la máquina virtual, seleccione la pestaña Bastion.

  5. Seleccione Usar Bastion.

  6. Escriba el nombre de usuario y la contraseña que creó al crear la máquina virtual y, a continuación, seleccione Conectar.

Inicio de la comunicación entre las máquinas virtuales

  1. En el símbolo del sistema de Bash para vm-1, escriba ping -c 4 vm-2.

    Recibirá una respuesta similar al siguiente mensaje:

    azureuser@vm-1:~$ ping -c 4 vm-2
    PING vm-2.3bnkevn3313ujpr5l1kqop4n4d.cx.internal.cloudapp.net (10.0.0.5) 56(84) bytes of data.
    64 bytes from vm-2.internal.cloudapp.net (10.0.0.5): icmp_seq=1 ttl=64 time=1.83 ms
    64 bytes from vm-2.internal.cloudapp.net (10.0.0.5): icmp_seq=2 ttl=64 time=0.987 ms
    64 bytes from vm-2.internal.cloudapp.net (10.0.0.5): icmp_seq=3 ttl=64 time=0.864 ms
    64 bytes from vm-2.internal.cloudapp.net (10.0.0.5): icmp_seq=4 ttl=64 time=0.890 ms
    
  2. Cierre la conexión de Bastion a vm-1.

  3. Repita los pasos descritos en Conectar a una máquina virtual para conectarse a vm-2.

  4. En el símbolo del sistema de Bash para vm-2, escriba ping -c 4 vm-1.

    Recibirá una respuesta similar al siguiente mensaje:

    azureuser@vm-2:~$ ping -c 4 vm-1
    PING vm-1.3bnkevn3313ujpr5l1kqop4n4d.cx.internal.cloudapp.net (10.0.0.4) 56(84) bytes of data.
    64 bytes from vm-1.internal.cloudapp.net (10.0.0.4): icmp_seq=1 ttl=64 time=0.695 ms
    64 bytes from vm-1.internal.cloudapp.net (10.0.0.4): icmp_seq=2 ttl=64 time=0.896 ms
    64 bytes from vm-1.internal.cloudapp.net (10.0.0.4): icmp_seq=3 ttl=64 time=3.43 ms
    64 bytes from vm-1.internal.cloudapp.net (10.0.0.4): icmp_seq=4 ttl=64 time=0.780 ms
    
  5. Cierre la conexión de Bastion a vm-2.

Limpieza de recursos

Cuando haya terminado con la red virtual y las máquinas virtuales, use Remove-AzResourceGroup para quitar el grupo de recursos y todos sus recursos:

Remove-AzResourceGroup -Name 'test-rg' -Force

Pasos siguientes

En este inicio rápido, creó una red virtual con una subred predeterminada que contenía dos máquinas virtuales. Ha implementado Bastion y lo ha usado para conectarse a las máquinas virtuales y establecer la comunicación entre ellas. Para más información sobre la configuración de red virtual, consulte Crear, cambiar o eliminar una red virtual.

La comunicación privada entre máquinas virtuales en una red virtual no está restringida. Para más información sobre cómo configurar varios tipos de comunicaciones de red de máquinas virtuales, continúe con el siguiente artículo: