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.
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
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
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
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.
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
Impostare la configurazione:
$virtualNetwork | Set-AzVirtualNetwork
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
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.
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
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
Nel portale, cercare e selezionare Macchine virtuali.
Nella pagina Macchine virtuali selezionare vm-1.
In Informazioni generali per vm-1 selezionare Connetti.
Nella pagina Connetti alla macchina virtuale selezionare la scheda Bastion .
Selezionare Usa Bastion.
Immettere il nome utente e la password creati al momento della creazione della macchina virtuale e quindi selezionare Connetti.
Avviare la comunicazione tra macchine virtuali
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
Chiudere la connessione Bastion a vm-1.
Ripetere i passaggi descritti in Connettersi a una macchina virtuale per connettersi a vm-2.
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
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. Azure Bastion è stato distribuito e usato per connettersi alle macchine virtuali e comunicare in modo sicuro tra le macchine virtuali. Per altre informazioni sulle impostazioni della rete virtuale, vedere Creare, modificare o eliminare una rete virtuale.