Schnellstart: Erstellen eines virtuellen Netzwerks mit Azure PowerShell

In dieser Schnellstartanleitung erfahren Sie, wie Sie mithilfe von Azure PowerShell ein virtuelles Netzwerk erstellen. Anschließend erstellen Sie zwei VMs im Netzwerk, stellen über das Internet eine sichere Verbindung mit den VMs her und starten die private Kommunikation zwischen den VMs.

Ein virtuelles Netzwerk ist der grundlegende Baustein für private Netzwerke in Azure. Über Azure Virtual Network können Azure-Ressourcen wie etwa VMs sicher miteinander und mit dem Internet kommunizieren.

Diagramm von Ressourcen, die im Schnellstart „virtuelles Netzwerk“ erstellt wurden.

Voraussetzungen

  • Ein Azure-Konto mit einem aktiven Abonnement. Sie können ein Konto kostenlos erstellen.

  • Azure Cloud Shell oder Azure PowerShell.

    Die Schritte in dieser Schnellstartanleitung führen die Azure PowerShell Cmdlets interaktiv in Azure Cloud Shell aus. Um die Befehle in der Cloud Shell auszuführen, wählen Sie in der oberen rechten Ecke eines Codeblocks Cloud Shell öffnen aus. Wählen Sie Kopieren aus, um den Code zu kopieren und fügen Sie ihn in Cloud Shell ein, um ihn auszuführen. Sie können Cloud Shell auch innerhalb des Azure-Portals ausführen.

    Sie können Azure PowerShell auch lokal installieren, um die Cmdlets auszuführen. Für die Beispiele in diesem Artikel muss Version 5.4.1 oder höher des Azure PowerShell-Moduls verwendet werden. Führen Sie Get-Module -ListAvailable Az aus, um die installierte Version zu ermitteln. Sollte ein Upgrade erforderlich sein, lesen Sie Aktualisieren des Azure PowerShell-Moduls.

    Wenn Sie PowerShell lokal ausführen, führen sie Connect-AzAccount aus, um eine Verbindung zu Azure herzustellen.

Erstellen einer Ressourcengruppe

Verwenden Sie New-AzResourceGroup, um eine Ressourcengruppe zum Hosten des virtuellen Netzwerks zu erstellen. Führen Sie den folgenden Code aus, um eine Ressourcengruppe mit dem Namen test-rg in der Azure-Region eastus2 zu erstellen.

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

Erstellen eines virtuellen Netzwerks

  1. Verwenden Sie New-AzVirtualNetwork, um ein virtuelles Netzwerk mit dem Namen vnet-1 und dem IP-Adresspräfix 10.0.0.0/16 in der Ressourcengruppe test-rg am Speicherort eastus2 zu erstellen.

    $vnet = @{
        Name = 'vnet-1'
        ResourceGroupName = 'test-rg'
        Location = 'eastus2'
        AddressPrefix = '10.0.0.0/16'
    }
    $virtualNetwork = New-AzVirtualNetwork @vnet
    
  2. Azure stellt Ressourcen in einem Subnetz innerhalb eines virtuellen Netzwerks bereit. Erstellen Sie mit Add-AzVirtualNetworkSubnetConfig eine Subnetzkonfiguration namens subnet-1 mit dem Adresspräfix 10.0.0.0/24.

    $subnet = @{
        Name = 'subnet-1'
        VirtualNetwork = $virtualNetwork
        AddressPrefix = '10.0.0.0/24'
    }
    $subnetConfig = Add-AzVirtualNetworkSubnetConfig @subnet
    
  3. Verknüpfen Sie mithilfe von Set-AzVirtualNetwork die Subnetzkonfiguration mit dem virtuellen Netzwerk.

    $virtualNetwork | Set-AzVirtualNetwork
    

Bereitstellen von Azure Bastion

Azure Bastion verwendet Ihren Browser, um mithilfe der privaten IP-Adressen eine Verbindung mit VMs in Ihrem virtuellen Netzwerk über Secure Shell (SSH) oder das Remotedesktopprotokoll (RDP) herzustellen. Die VMs benötigen keine öffentlichen IP-Adressen, keine Clientsoftware und keine spezielle Konfiguration. Weitere Informationen zu Bastion finden Sie unter Was ist Azure Bastion?.

Die Stundenpreise gelten ab dem Zeitpunkt der Bereitstellung von Bastion, unabhängig von der Nutzung ausgehender Daten. Weitere Informationen dazu finden Sie unter Preise und SKUs. Wenn Sie Bastion im Rahmen eines Tutorials oder Tests bereitstellen, empfiehlt es sich, diese Ressource zu löschen, sobald Sie sie nicht mehr benötigen.

  1. Konfigurieren Sie ein Bastion-Subnetz für Ihr virtuelles Netzwerk. Dieses Subnetz ist ausschließlich für Bastion-Ressourcen reserviert und muss den Namen AzureBastionSubnet haben.

    $subnet = @{
        Name = 'AzureBastionSubnet'
        VirtualNetwork = $virtualNetwork
        AddressPrefix = '10.0.1.0/26'
    }
    $subnetConfig = Add-AzVirtualNetworkSubnetConfig @subnet
    
  2. Legen Sie die Konfiguration fest:

    $virtualNetwork | Set-AzVirtualNetwork
    
  3. Erstellen Sie eine öffentliche IP-Adresse für Bastion. Der Bastion-Host verwendet die öffentliche IP-Adresse für den Zugriff auf SSH und RDP über Port 443.

    $ip = @{
            ResourceGroupName = 'test-rg'
            Name = 'public-ip'
            Location = 'eastus2'
            AllocationMethod = 'Static'
            Sku = 'Standard'
            Zone = 1,2,3
    }
    New-AzPublicIpAddress @ip
    
  4. Verwenden Sie den Befehl New-AzBastion, um einen neuen Azure Bastion-Host der Standard-SKU in AzureBastionSubnet zu erstellen:

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

Die Bereitstellung der Bastion-Ressourcen dauert etwa 10 Minuten. Sie können im nächsten Abschnitt VMs erstellen, während Bastion in Ihrem virtuellen Netzwerk bereitgestellt wird.

Erstellen von virtuellen Computern

Verwenden Sie New-AzVM, um zwei VMs mit den Namen vm-1 und vm-2 im Subnetz subnet-1 des virtuellen Netzwerks zu erstellen. Wenn Sie zur Eingabe von Anmeldeinformationen aufgefordert werden, geben Sie Benutzernamen und Kennwörter für die VMs ein.

  1. Erstellen Sie die erste VM mit folgendem Code:

    # 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. Erstellen Sie die zweite VM mit folgendem Code:

    # 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
    

Tipp

Sie können die Option -AsJob verwenden, um im Hintergrund eine VM zu erstellen, während Sie mit anderen Aufgaben fortfahren. Führen Sie dazu z. B. New-AzVM @vm1 -AsJobaus. Wenn Azure beginnt, die VM im Hintergrund zu erstellen, wird in etwas folgendes zurückgegeben:

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

Azure benötigt für das Erstellen der VMs einige Minuten. Wenn Azure die Erstellung der VMs abgeschlossen hat, wird eine Ausgabe an PowerShell zurückgegeben.

Hinweis

VMs in einem virtuellen Netzwerk mit einem Bastion-Host benötigen keine öffentlichen IP-Adressen. Bastion stellt die öffentliche IP-Adresse bereit und die VMs verwenden private IP-Adressen für die Kommunikation innerhalb des Netzwerks. Sie können die öffentlichen IP-Adressen von allen VMs in von Bastion gehosteten virtuellen Netzwerken entfernen. Weitere Informationen finden Sie unter Trennen einer öffentlichen IP-Adresse von einer Azure-VM.

Hinweis

Azure stellt eine ausgehende Standardzugriffs-IP für VMs bereit, denen keine öffentliche IP-Adresse zugewiesen ist oder die sich im Backendpool eines internen grundlegenden Azure-Lastenausgleichs befinden. Der Mechanismus für Standard-IP-Adressen für den ausgehenden Zugriff stellt eine ausgehende IP-Adresse bereit, die nicht konfigurierbar ist.

Die Standard-IP-Adresse für ausgehenden Zugriff ist deaktiviert, wenn eines der folgenden Ereignisse auftritt:

  • Dem virtuellen Computer wird eine öffentliche IP-Adresse zugewiesen.
  • Die VM wird im Backendpool eines Standardlastenausgleichs platziert (mit oder ohne Ausgangsregeln).
  • Dem Subnetz der VM wird eine Azure NAT Gateway-Ressource zugewiesen.

VMs, die Sie mithilfe von VM-Skalierungsgruppen im Orchestrierungsmodus „Flexibel“ erstellen, haben keinen ausgehenden Standardzugriff.

Weitere Informationen zu ausgehenden Verbindungen in Azure finden Sie unter Standardzugriff in ausgehender Richtung und Verwenden von SNAT (Source Network Address Translation) für ausgehende Verbindungen.

Herstellen einer Verbindung mit einem virtuellen Computer

  1. Suchen Sie im Portal nach Virtuelle Computer, und klicken Sie darauf.

  2. Wählen Sie auf der Seite Virtuelle Computer die Option vm-1 aus.

  3. Wählen Sie in den Übersichtsinformationen für vm-1 die Option Verbinden aus.

  4. Wählen Sie auf der Seite Verbindung mit virtuellem Computer herstellen die Registerkarte Bastion aus.

  5. Klicken Sie auf Bastion verwenden.

  6. Geben Sie den Benutzernamen und das Kennwort ein, die Sie beim Erstellen der VM erstellt haben, und wählen Sie Verbinden aus.

Starten der Kommunikation zwischen VMs

  1. Geben Sie an der Bash-Eingabeaufforderung für vm-1 den Wert ping -c 4 vm-2 ein.

    Sie erhalten eine Antwort ähnlich der folgenden Meldung:

    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. Schließen Sie die Bastion-Verbindung mit vm-1.

  3. Wiederholen Sie die Schritte unter Herstellen einer Verbindung mit einer VM, um eine Verbindung mit vm-2 herzustellen.

  4. Geben Sie an der Bash-Eingabeaufforderung für vm-2 den Wert ping -c 4 vm-1 ein.

    Sie erhalten eine Antwort ähnlich der folgenden Meldung:

    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. Schließen Sie die Bastion-Verbindung zu vm-2.

Bereinigen von Ressourcen

Wenn Sie die Bearbeitung des virtuellen Netzwerks und der VMs abgeschlossen haben, verwenden Sie Remove-AzResourceGroup, um die Ressourcengruppe und alle darin enthaltenen Ressourcen zu löschen:

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

Nächste Schritte

In dieser Schnellstartanleitung haben Sie ein virtuelles Netzwerk mit einem Standardsubnetz erstellt, das zwei VMs enthält. Sie haben Azure Bastion bereitgestellt und verwendet, um eine Verbindung mit den VMs herzustellen und sicher zwischen den VMs zu kommunizieren. Weitere Informationen zu VNET-Einstellungen finden Sie unter Erstellen, Ändern oder Löschen eines virtuellen Netzwerks.