Snabbstart: Använda Azure PowerShell för att skapa ett virtuellt nätverk

Den här snabbstarten visar hur du skapar ett virtuellt nätverk med hjälp av Azure PowerShell. Sedan skapar du två virtuella datorer i nätverket, ansluter säkert till de virtuella datorerna från Internet och startar privat kommunikation mellan de virtuella datorerna.

Ett virtuellt nätverk är den grundläggande byggstenen för privata nätverk i Azure. Med Azure Virtual Network kan Azure-resurser som virtuella datorer kommunicera säkert med varandra och Internet.

Diagram över resurser som skapats i snabbstarten för det virtuella nätverket.

Förutsättningar

  • Ett Azure-konto med en aktiv prenumeration. Du kan skapa ett konto kostnadsfritt.

  • Azure Cloud Shell eller Azure PowerShell.

    Stegen i den här snabbstarten kör Azure PowerShell-cmdletarna interaktivt i Azure Cloud Shell. Om du vill köra kommandona i Cloud Shell väljer du Öppna Cloudshell i det övre högra hörnet i ett kodblock. Välj Kopiera för att kopiera koden och klistra sedan in den i Cloud Shell för att köra den. Du kan också köra Cloud Shell inifrån Azure-portalen.

    Du kan också installera Azure PowerShell lokalt för att köra cmdletarna. Stegen i den här artikeln kräver Azure PowerShell-modulversion 5.4.1 eller senare. Kör Get-Module -ListAvailable Az för att hitta den installerade versionen. Om du behöver uppgradera kan du läsa Uppdatera Azure PowerShell-modulen.

    Om du kör PowerShell lokalt kör du Connect-AzAccount för att ansluta till Azure.

Skapa en resursgrupp

Använd New-AzResourceGroup för att skapa en resursgrupp som värd för det virtuella nätverket. Kör följande kod för att skapa en resursgrupp med namnet test-rg i Azure-regionen eastus2 :

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

Skapa ett virtuellt nätverk

  1. Använd New-AzVirtualNetwork för att skapa ett virtuellt nätverk med namnet vnet-1 med IP-adressprefixet 10.0.0.0/16 i resursgruppen test-rg och eastus2 :

    $vnet = @{
        Name = 'vnet-1'
        ResourceGroupName = 'test-rg'
        Location = 'eastus2'
        AddressPrefix = '10.0.0.0/16'
    }
    $virtualNetwork = New-AzVirtualNetwork @vnet
    
  2. Azure distribuerar resurser till ett undernät i ett virtuellt nätverk. Använd Add-AzVirtualNetworkSubnetConfig för att skapa en undernätskonfiguration med namnet subnet-1 med adressprefixet 10.0.0.0/24:

    $subnet = @{
        Name = 'subnet-1'
        VirtualNetwork = $virtualNetwork
        AddressPrefix = '10.0.0.0/24'
    }
    $subnetConfig = Add-AzVirtualNetworkSubnetConfig @subnet
    
  3. Associera undernätskonfigurationen med det virtuella nätverket med hjälp av Set-AzVirtualNetwork:

    $virtualNetwork | Set-AzVirtualNetwork
    

Distribuera Azure Bastion

Azure Bastion använder webbläsaren för att ansluta till virtuella datorer i ditt virtuella nätverk via Secure Shell (SSH) eller Remote Desktop Protocol (RDP) med hjälp av sina privata IP-adresser. De virtuella datorerna behöver inte offentliga IP-adresser, klientprogramvara eller särskild konfiguration. Mer information om Bastion finns i Vad är Azure Bastion?.

Priserna per timme börjar från det ögonblick då Bastion distribueras, oavsett utgående dataanvändning. Mer information finns i Priser och SKU:er. Om du distribuerar Bastion som en del av en självstudie eller ett test rekommenderar vi att du tar bort den här resursen när du har använt den.

  1. Konfigurera ett Bastion-undernät för ditt virtuella nätverk. Det här undernätet är endast reserverat för Bastion-resurser och måste ha namnet AzureBastionSubnet.

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

    $virtualNetwork | Set-AzVirtualNetwork
    
  3. Skapa en offentlig IP-adress för Bastion. Bastion-värden använder den offentliga IP-adressen för att få åtkomst till SSH och RDP via port 443.

    $ip = @{
            ResourceGroupName = 'test-rg'
            Name = 'public-ip'
            Location = 'eastus2'
            AllocationMethod = 'Static'
            Sku = 'Standard'
            Zone = 1,2,3
    }
    New-AzPublicIpAddress @ip
    
  4. Använd kommandot New-AzBastion för att skapa en ny Standard SKU Bastion-värd i AzureBastionSubnet:

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

Det tar cirka 10 minuter att distribuera Bastion-resurserna. Du kan skapa virtuella datorer i nästa avsnitt medan Bastion distribueras till ditt virtuella nätverk.

Skapa virtuella datorer

Använd New-AzVM för att skapa två virtuella datorer med namnet vm-1 och vm-2 i undernätet-1 i det virtuella nätverket. När du uppmanas att ange autentiseringsuppgifter anger du användarnamn och lösenord för de virtuella datorerna.

  1. Använd följande kod för att skapa den första virtuella datorn:

    # 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. Använd följande kod för att skapa den andra virtuella datorn:

    # 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
    

Dricks

Du kan använda alternativet -AsJob för att skapa en virtuell dator i bakgrunden medan du fortsätter med andra uppgifter. Kör till exempel New-AzVM @vm1 -AsJob. När Azure börjar skapa den virtuella datorn i bakgrunden får du ungefär följande utdata:

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

Azure tar några minuter att skapa de virtuella datorerna. När Azure har skapat de virtuella datorerna returneras utdata till PowerShell.

Kommentar

Virtuella datorer i ett virtuellt nätverk med en Bastion-värd behöver inte offentliga IP-adresser. Bastion tillhandahåller den offentliga IP-adressen och de virtuella datorerna använder privata IP-adresser för att kommunicera i nätverket. Du kan ta bort offentliga IP-adresser från alla virtuella datorer i virtuella Bastion-värdbaserade nätverk. Mer information finns i Koppla bort en offentlig IP-adress från en virtuell Azure-dator.

Kommentar

Azure tillhandahåller en standard-IP för utgående åtkomst för virtuella datorer som antingen inte har tilldelats någon offentlig IP-adress eller som finns i serverdelspoolen för en intern grundläggande Azure-lastbalanserare. Ip-mekanismen för utgående åtkomst har en utgående IP-adress som inte kan konfigureras.

Standard-IP för utgående åtkomst inaktiveras när någon av följande händelser inträffar:

  • En offentlig IP-adress tilldelas till den virtuella datorn.
  • Den virtuella datorn placeras i serverdelspoolen för en standardlastbalanserare, med eller utan regler för utgående trafik.
  • En Azure NAT Gateway-resurs tilldelas till den virtuella datorns undernät.

Virtuella datorer som du skapar med hjälp av vm-skalningsuppsättningar i flexibelt orkestreringsläge har inte standardåtkomst till utgående trafik.

Mer information om utgående anslutningar i Azure finns i Standardutgående åtkomst i Azure och Använda SNAT (Source Network Address Translation) för utgående anslutningar.

Ansluta till en virtuell dator

  1. I portalen söker du efter och väljer Virtuella datorer.

  2. På sidan Virtuella datorer väljer du vm-1.

  3. I Översiktsinformation för vm-1 väljer du Anslut.

  4. På sidan Anslut till virtuell dator väljer du fliken Bastion.

  5. Välj Använd Bastion.

  6. Ange användarnamnet och lösenordet som du skapade när du skapade den virtuella datorn och välj sedan Anslut.

Starta kommunikationen mellan virtuella datorer

  1. I bash-prompten för vm-1 anger du ping -c 4 vm-2.

    Du får ett svar som liknar följande meddelande:

    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. Stäng Bastion-anslutningen till vm-1.

  3. Upprepa stegen i Anslut till en virtuell dator för att ansluta till vm-2.

  4. I bash-prompten för vm-2 anger du ping -c 4 vm-1.

    Du får ett svar som liknar följande meddelande:

    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. Stäng Bastion-anslutningen till vm-2.

Rensa resurser

När du är klar med det virtuella nätverket och de virtuella datorerna använder du Remove-AzResourceGroup för att ta bort resursgruppen och alla dess resurser:

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

Nästa steg

I den här snabbstarten skapade du ett virtuellt nätverk med ett standardundernät som innehåller två virtuella datorer. Du distribuerade Azure Bastion och använde den för att ansluta till de virtuella datorerna och kommunicerade säkert mellan de virtuella datorerna. Mer information om inställningar för virtuella nätverk finns i Skapa, ändra eller ta bort ett virtuellt nätverk.