Guida introduttiva: Usare Azure PowerShell per creare una rete virtuale

Questa guida introduttiva illustra come creare una rete virtuale usando Azure PowerShell. Si creano quindi due macchine virtuali (VM) nella rete, si connettono in modo sicuro alle macchine virtuali da Internet e si avviano le comunicazioni private tra le macchine virtuali.

Una rete virtuale è il blocco predefinito fondamentale per le reti private in Azure. Il servizio Rete virtuale di Microsoft Azure consente alle risorse di Azure, come le VM, di comunicare in modo sicuro tra loro e con Internet.

Diagramma delle risorse create nella guida introduttiva alla rete virtuale.

Prerequisiti

  • Un account Azure con una sottoscrizione attiva. È possibile creare gratuitamente un account.

  • Azure Cloud Shell o Azure PowerShell.

    I passaggi descritti in questa guida introduttiva eseguono i cmdlet di Azure PowerShell in modo interattivo in Azure Cloud Shell. Per eseguire i comandi in Cloud Shell, selezionare Apri Cloud Shell nell'angolo superiore destro di un blocco di codice. Selezionare Copia per copiare il codice e incollarlo in Cloud Shell per eseguirlo. È anche possibile eseguire Cloud Shell dal portale di Azure.

    È anche possibile installare Azure PowerShell in locale per eseguire i cmdlet. I passaggi di questo articolo richiedono il modulo Azure PowerShell versione 5.4.1 o successiva. Eseguire Get-Module -ListAvailable Az per trovare la versione installata. Se è necessario eseguire l'aggiornamento, vedere Installare e configurare Azure PowerShell.

    Se si esegue PowerShell in locale, eseguire Connect-AzAccount per connettersi ad Azure.

Creare un gruppo di risorse

Usare New-AzResourceGroup per creare un gruppo di risorse per ospitare la rete virtuale. Eseguire il codice seguente per creare un gruppo di risorse denominato test-rg nell'area di Azure eastus2 :

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

Creare una rete virtuale

  1. Usare New-AzVirtualNetwork per creare una rete virtuale denominata vnet-1 con prefisso indirizzo IP 10.0.0.0/16 nel gruppo di risorse test-rg e nella località eastus2 :

    $vnet = @{
        Name = 'vnet-1'
        ResourceGroupName = 'test-rg'
        Location = 'eastus2'
        AddressPrefix = '10.0.0.0/16'
    }
    $virtualNetwork = New-AzVirtualNetwork @vnet
    
  2. Azure distribuisce le risorse in una subnet all'interno di una rete virtuale. Usare Add-AzVirtualNetworkSubnetConfig per creare una configurazione della subnet denominata subnet-1 con prefisso indirizzo 10.0.0.0/24:

    $subnet = @{
        Name = 'subnet-1'
        VirtualNetwork = $virtualNetwork
        AddressPrefix = '10.0.0.0/24'
    }
    $subnetConfig = Add-AzVirtualNetworkSubnetConfig @subnet
    
  3. Associare la configurazione della subnet alla rete virtuale usando Set-AzVirtualNetwork:

    $virtualNetwork | Set-AzVirtualNetwork
    

Distribuire Azure Bastion

Azure Bastion usa il browser per connettersi alle macchine virtuali nella rete virtuale tramite Secure Shell (SSH) o Remote Desktop Protocol (RDP) usando gli indirizzi IP privati. Le macchine virtuali non necessitano di indirizzi IP pubblici, software client o configurazione speciale. Per altre informazioni su Bastion, vedere Che cos'è Azure Bastion?.

La tariffa oraria inizia dal momento in cui viene distribuito Bastion, a prescindere dall'utilizzo dei dati in uscita. Per altre informazioni, vedere Prezzi e SKU. Se si distribuisce Bastion nel corso di un'esercitazione o di un test, è consigliabile eliminare questa risorsa dopo averla usata.

  1. Configurare una subnet Bastion per la rete virtuale. Questa subnet è riservata esclusivamente alle risorse Bastion e deve essere denominata AzureBastionSubnet.

    $subnet = @{
        Name = 'AzureBastionSubnet'
        VirtualNetwork = $virtualNetwork
        AddressPrefix = '10.0.1.0/26'
    }
    $subnetConfig = Add-AzVirtualNetworkSubnetConfig @subnet
    
  2. Impostare la configurazione:

    $virtualNetwork | Set-AzVirtualNetwork
    
  3. Creare un indirizzo IP pubblico per Bastion. L'host Bastion usa l'indirizzo IP pubblico per accedere a SSH e RDP sulla porta 443.

    $ip = @{
            ResourceGroupName = 'test-rg'
            Name = 'public-ip'
            Location = 'eastus2'
            AllocationMethod = 'Static'
            Sku = 'Standard'
            Zone = 1,2,3
    }
    New-AzPublicIpAddress @ip
    
  4. Usare il comando New-AzBastion per creare un nuovo host Bastion SKU Standard in AzureBastionSubnet:

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

La distribuzione delle risorse Bastion richiede circa 10 minuti. È possibile creare macchine virtuali nella sezione successiva mentre Bastion viene distribuito nella rete virtuale.

Creare macchine virtuali

Usare New-AzVM per creare due macchine virtuali denominate vm-1 e vm-2 nella subnet subnet-1 della rete virtuale. Quando vengono richieste le credenziali, immettere nomi utente e password per le macchine virtuali.

  1. Per creare la prima macchina virtuale, usare il codice seguente:

    # 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. Per creare la seconda macchina virtuale, usare il codice seguente:

    # 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
    

Suggerimento

È possibile usare l'opzione -AsJob per creare una macchina virtuale in background mentre si continua con altre attività. Eseguire, ad esempio, New-AzVM @vm1 -AsJob. Quando Azure inizia a creare la macchina virtuale in background, si ottiene un output simile al seguente:

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

Per creare le macchine virtuali, Azure richiede alcuni minuti. Al termine della creazione delle macchine virtuali, Azure restituisce l'output in PowerShell.

Nota

Le macchine virtuali in una rete virtuale con un host Bastion non necessitano di indirizzi IP pubblici. Bastion fornisce l'indirizzo IP pubblico e le macchine virtuali usano indirizzi IP privati per comunicare all'interno della rete. È possibile rimuovere gli INDIRIZZI IP pubblici da qualsiasi macchina virtuale in reti virtuali ospitate in Bastion. Per altre informazioni, vedere Annullare l'dissociazione di un indirizzo IP pubblico da una macchina virtuale di Azure.

Nota

Azure fornisce un IP di accesso in uscita predefinito per le macchine virtuali a cui non è stato assegnato un indirizzo IP pubblico o che si trovano nel pool back-end di un servizio del bilanciamento del carico di base di Azure. Il meccanismo dell'IP di accesso in uscita predefinito fornisce un IP in uscita non configurabile.

L'IP di accesso in uscita predefinito è disabilitato quando si verifica uno degli eventi seguenti:

  • Alla macchina virtuale viene assegnato un indirizzo IP pubblico.
  • La macchina virtuale è posizionata nel pool back-end di un servizio di bilanciamento del carico standard, con o senza regole in uscita.
  • Una risorsa gateway NAT di Azure viene assegnata alla subnet della macchina virtuale.

Le macchine virtuali create usando set di scalabilità di macchine virtuali in modalità di orchestrazione flessibile non hanno l'accesso in uscita predefinito.

Per altre informazioni sulle connessioni in uscita in Azure, vedere Accesso in uscita predefinito in Azure e Uso di Source Network Address Translation (SNAT) per le connessioni in uscita.

Connettersi a una macchina virtuale

  1. Nel portale cercare e selezionare Macchine virtuali.

  2. Nella pagina Macchine virtuali selezionare vm-1.

  3. In Informazioni generali per vm-1 selezionare Connessione.

  4. Nella pagina Connessione alla macchina virtuale selezionare la scheda Bastion.

  5. Selezionare Usa Bastion.

  6. Immettere il nome utente e la password creati al momento della creazione della macchina virtuale e quindi selezionare Connessione.

Avviare la comunicazione tra macchine virtuali

  1. Al prompt bash per vm-1 immettere ping -c 4 vm-2.

    Viene visualizzata una risposta simile al messaggio seguente:

    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. Chiudere la connessione Bastion a vm-1.

  3. Ripetere i passaggi in Connessione a una macchina virtuale per connettersi a vm-2.

  4. Al prompt bash per vm-2 immettere ping -c 4 vm-1.

    Viene visualizzata una risposta simile al messaggio seguente:

    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. Chiudere la connessione Bastion a vm-2.

Pulire le risorse

Al termine della rete virtuale e delle macchine virtuali, usare Remove-AzResourceGroup per rimuovere il gruppo di risorse e tutte le relative risorse:

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

Passaggi successivi

In questa guida introduttiva è stata creata una rete virtuale con una subnet predefinita che contiene due macchine virtuali. Bastion è stato distribuito ed è stato usato per connettersi alle macchine virtuali e stabilire la comunicazione tra le macchine virtuali. Per altre informazioni sulle impostazioni della rete virtuale, vedere Creare, modificare o eliminare una rete virtuale.

La comunicazione privata tra macchine virtuali in una rete virtuale non è limitata. Per altre informazioni sulla configurazione di vari tipi di comunicazioni di rete di macchine virtuali, continuare con l'articolo successivo: