Szybki start: tworzenie sieci wirtualnej przy użyciu programu Azure PowerShell

W tym przewodniku Szybki start pokazano, jak utworzyć sieć wirtualną przy użyciu programu Azure PowerShell. Następnie utworzysz dwie maszyny wirtualne w sieci, bezpiecznie połączysz się z maszynami wirtualnymi z Internetu i rozpoczniesz prywatną komunikację między maszynami wirtualnymi.

Sieć wirtualna to podstawowy blok konstrukcyjny dla sieci prywatnych na platformie Azure. Usługa Azure Virtual Network umożliwia zasobom platformy Azure, takich jak maszyny wirtualne, bezpieczne komunikowanie się ze sobą i Internetem.

Diagram zasobów utworzonych w przewodniku Szybki start dla sieci wirtualnej.

Wymagania wstępne

  • Konto platformy Azure z aktywną subskrypcją. Możesz bezpłatnie utworzyć konto.

  • Azure Cloud Shell lub Azure PowerShell.

    Kroki opisane w tym przewodniku Szybki start uruchamiają interaktywne polecenia cmdlet programu Azure PowerShell w usłudze Azure Cloud Shell. Aby uruchomić polecenia w usłudze Cloud Shell, wybierz pozycję Otwórz program CloudShell w prawym górnym rogu bloku kodu. Wybierz pozycję Kopiuj , aby skopiować kod, a następnie wklej go do usługi Cloud Shell, aby go uruchomić. Możesz również uruchomić usługę Cloud Shell z poziomu witryny Azure Portal.

    Możesz również zainstalować program Azure PowerShell lokalnie , aby uruchomić polecenia cmdlet. Kroki opisane w tym artykule wymagają modułu Azure PowerShell w wersji 5.4.1 lub nowszej. Uruchom polecenie Get-Module -ListAvailable Az , aby znaleźć zainstalowaną wersję. Jeśli chcesz uaktualnić, zobacz Aktualizowanie modułu programu Azure PowerShell.

    Jeśli uruchomisz program PowerShell lokalnie, uruchom polecenie Connect-AzAccount , aby nawiązać połączenie z platformą Azure.

Tworzenie grupy zasobów

Użyj polecenia New-AzResourceGroup , aby utworzyć grupę zasobów do hostowania sieci wirtualnej. Uruchom następujący kod, aby utworzyć grupę zasobów o nazwie test-rg w regionie platformy Azure eastus2 :

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

Tworzenie sieci wirtualnej

  1. Użyj polecenia New-AzVirtualNetwork, aby utworzyć sieć wirtualną o nazwie vnet-1 z prefiksem adresu IP 10.0.0.0/16 w grupie zasobów test-rg i lokalizacji eastus2:

    $vnet = @{
        Name = 'vnet-1'
        ResourceGroupName = 'test-rg'
        Location = 'eastus2'
        AddressPrefix = '10.0.0.0/16'
    }
    $virtualNetwork = New-AzVirtualNetwork @vnet
    
  2. Platforma Azure wdraża zasoby w podsieci w sieci wirtualnej. Użyj polecenia Add-AzVirtualNetworkSubnetConfig, aby utworzyć konfigurację podsieci o nazwie subnet-1 z prefiksem adresu 10.0.0.0/24:

    $subnet = @{
        Name = 'subnet-1'
        VirtualNetwork = $virtualNetwork
        AddressPrefix = '10.0.0.0/24'
    }
    $subnetConfig = Add-AzVirtualNetworkSubnetConfig @subnet
    
  3. Skojarz konfigurację podsieci z siecią wirtualną przy użyciu polecenia Set-AzVirtualNetwork:

    $virtualNetwork | Set-AzVirtualNetwork
    

Wdrażanie usługi Azure Bastion

Usługa Azure Bastion używa przeglądarki do łączenia się z maszynami wirtualnymi w sieci wirtualnej za pośrednictwem protokołu Secure Shell (SSH) lub protokołu RDP (Remote Desktop Protocol) przy użyciu ich prywatnych adresów IP. Maszyny wirtualne nie potrzebują publicznych adresów IP, oprogramowania klienckiego ani specjalnej konfiguracji. Aby uzyskać więcej informacji na temat usługi Bastion, zobacz Co to jest usługa Azure Bastion?.

Ceny godzinowe zaczynają się od momentu wdrożenia usługi Bastion, niezależnie od użycia danych wychodzących. Aby uzyskać więcej informacji, zobacz Cennik i jednostki SKU. Jeśli wdrażasz usługę Bastion w ramach samouczka lub testu, zalecamy usunięcie tego zasobu po zakończeniu korzystania z niego.

  1. Skonfiguruj podsieć bastionu dla sieci wirtualnej. Ta podsieć jest zarezerwowana wyłącznie dla zasobów usługi Bastion i musi mieć nazwę AzureBastionSubnet.

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

    $virtualNetwork | Set-AzVirtualNetwork
    
  3. Utwórz publiczny adres IP dla usługi Bastion. Host usługi Bastion używa publicznego adresu IP do uzyskiwania dostępu do protokołu SSH i protokołu RDP za pośrednictwem portu 443.

    $ip = @{
            ResourceGroupName = 'test-rg'
            Name = 'public-ip'
            Location = 'eastus2'
            AllocationMethod = 'Static'
            Sku = 'Standard'
            Zone = 1,2,3
    }
    New-AzPublicIpAddress @ip
    
  4. Użyj polecenia New-AzBastion, aby utworzyć nowego hosta usługi Bastion jednostki SKU w warstwie Standardowa w podsieci AzureBastionSubnet:

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

Wdrożenie zasobów usługi Bastion trwa około 10 minut. Maszyny wirtualne można utworzyć w następnej sekcji podczas wdrażania usługi Bastion w sieci wirtualnej.

Tworzenie maszyn wirtualnych

Użyj polecenia New-AzVM , aby utworzyć dwie maszyny wirtualne o nazwie vm-1 i vm-2 w podsieci podsieci-1 sieci wirtualnej. Po wyświetleniu monitu o podanie poświadczeń wprowadź nazwy użytkownika i hasła dla maszyn wirtualnych.

  1. Aby utworzyć pierwszą maszynę wirtualną, użyj następującego kodu:

    # 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. Aby utworzyć drugą maszynę wirtualną, użyj następującego kodu:

    # 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
    

Napiwek

Możesz użyć -AsJob opcji , aby utworzyć maszynę wirtualną w tle podczas wykonywania innych zadań. Na przykład uruchom polecenie New-AzVM @vm1 -AsJob. Gdy platforma Azure zacznie tworzyć maszynę wirtualną w tle, otrzymujesz dane wyjściowe podobne do następujących:

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

Utworzenie maszyn wirtualnych na platformie Azure zajmuje kilka minut. Po zakończeniu tworzenia maszyn wirtualnych platforma Azure zwraca dane wyjściowe do programu PowerShell.

Uwaga

Maszyny wirtualne w sieci wirtualnej z hostem usługi Bastion nie wymagają publicznych adresów IP. Usługa Bastion udostępnia publiczny adres IP, a maszyny wirtualne używają prywatnych adresów IP do komunikacji w sieci. Publiczne adresy IP można usunąć ze wszystkich maszyn wirtualnych w sieciach wirtualnych hostowanych w usłudze Bastion. Aby uzyskać więcej informacji, zobacz Usuwanie skojarzenia publicznego adresu IP z maszyny wirtualnej platformy Azure.

Uwaga

Platforma Azure udostępnia domyślny adres IP dostępu wychodzącego dla maszyn wirtualnych, które nie są przypisane do publicznego adresu IP lub znajdują się w puli zaplecza wewnętrznego podstawowego modułu równoważenia obciążenia platformy Azure. Domyślny mechanizm adresów IP dostępu wychodzącego zapewnia wychodzący adres IP, który nie jest konfigurowalny.

Domyślny adres IP dostępu wychodzącego jest wyłączony, gdy wystąpi jedno z następujących zdarzeń:

  • Publiczny adres IP jest przypisywany do maszyny wirtualnej.
  • Maszyna wirtualna jest umieszczana w puli zaplecza standardowego modułu równoważenia obciążenia z regułami ruchu wychodzącego lub bez tych reguł.
  • Zasób usługi Azure NAT Gateway jest przypisywany do podsieci maszyny wirtualnej.

Maszyny wirtualne tworzone przy użyciu zestawów skalowania maszyn wirtualnych w trybie elastycznej aranżacji nie mają domyślnego dostępu wychodzącego.

Aby uzyskać więcej informacji na temat połączeń wychodzących na platformie Azure, zobacz Domyślny dostęp wychodzący na platformie Azure i Używanie źródłowego tłumaczenia adresów sieciowych (SNAT) dla połączeń wychodzących.

Nawiązywanie połączenia z maszyną wirtualną

  1. W portalu wyszukaj i wybierz pozycję Maszyny wirtualne.

  2. Na stronie Maszyny wirtualne wybierz pozycję vm-1.

  3. W obszarze Informacje o przeglądzie maszyny wirtualnej vm-1 wybierz pozycję Połączenie.

  4. Na stronie Połączenie do maszyny wirtualnej wybierz kartę Bastion.

  5. Wybierz pozycję Użyj usługi Bastion.

  6. Wprowadź nazwę użytkownika i hasło utworzone podczas tworzenia maszyny wirtualnej, a następnie wybierz pozycję Połączenie.

Rozpoczynanie komunikacji między maszynami wirtualnymi

  1. W wierszu polecenia powłoki bash dla maszyny wirtualnej VM-1 wprowadź wartość ping -c 4 vm-2.

    Otrzymasz odpowiedź podobną do następującej:

    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. Zamknij połączenie usługi Bastion z maszyną wirtualną-1.

  3. Powtórz kroki opisane w Połączenie z maszyną wirtualną, aby nawiązać połączenie z maszyną wirtualną VM-2.

  4. W wierszu polecenia powłoki bash dla maszyny wirtualnej VM-2 wprowadź .ping -c 4 vm-1

    Otrzymasz odpowiedź podobną do następującej:

    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. Zamknij połączenie usługi Bastion z maszyną wirtualną-2.

Czyszczenie zasobów

Po zakończeniu pracy z siecią wirtualną i maszynami wirtualnymi użyj polecenia Remove-AzResourceGroup , aby usunąć grupę zasobów i wszystkie jej zasoby:

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

Następne kroki

W tym przewodniku Szybki start utworzono sieć wirtualną z domyślną podsiecią zawierającą dwie maszyny wirtualne. Wdrożono usługę Azure Bastion i użyto jej do łączenia się z maszynami wirtualnymi oraz bezpiecznego komunikowania się między maszynami wirtualnymi. Aby dowiedzieć się więcej na temat ustawień sieci wirtualnej, zobacz Tworzenie, zmienianie lub usuwanie sieci wirtualnej.