Verwenden virtueller Netzwerkgeräte in einem virtuellen Netzwerk

Gilt für Windows Server 2022, Windows Server 2019, Windows Server 2016, Azure Stack HCI (Version 21H2 und 20H2)

In diesem Artikel erfahren Sie, wie Sie virtuelle Netzwerkgeräte in virtuellen Mandantennetzwerken bereitstellen. Sie können Netzwerken, die benutzerdefinierte Routing- und Portspiegelungsfunktionen ausführen, virtuelle Netzwerkgeräte hinzufügen.

Typen von virtuellen Netzwerkgeräten

Sie können einen der beiden Typen von virtuellen Geräten verwenden:

  1. Benutzerdefiniertes Routing: Ersetzt verteilte Router im virtuellen Netzwerk durch die Routingfunktionen des virtuellen Geräts Beim benutzerdefinierten Routing wird das virtuelle Gerät als Router zwischen den virtuellen Subnetzen im virtuellen Netzwerk verwendet.

  2. Portspiegelung: Der gesamte am überwachten Port ein- und ausgehende Netzwerkdatenverkehr wird dupliziert und zur Analyse an ein virtuelles Gerät gesendet.

Bereitstellen eines virtuellen Netzwerkgeräts

Um ein virtuelles Netzwerkgerät bereitzustellen, müssen Sie zuerst einen virtuellen Computer erstellen, auf dem das Gerät verfügbar ist, und dann die VM mit den entsprechenden Subnetzen des virtuellen Netzwerks verbinden. Weitere Informationen finden Sie unter Erstellen einer Mandanten-VM und Herstellen einer Verbindung mit einem virtuellen Mandantennetzwerk oder VLAN.

Einige Appliances benötigen mehrere virtuelle Netzwerkadapter. In der Regel ist ein Netzwerkadapter für die Applianceverwaltung reserviert, und zusätzliche Adapter verarbeiten den Datenverkehr. Wenn Ihre Appliance mehrere Netzwerkadapter benötigt, müssen Sie jede Netzwerkschnittstelle im Netzwerkcontroller erstellen. Außerdem müssen Sie auf jedem Host eine Schnittstellen-ID für jeden der zusätzlichen Adapter zuweisen, die sich in unterschiedlichen virtuellen Subnetzen befinden.

Nachdem Sie das virtuelle Netzwerkgerät bereitgestellt haben, können Sie die Appliance für definiertes Routing und Portspiegelung verwenden.

Beispiel: Benutzerdefiniertes Routing

Für die meisten Umgebungen benötigen Sie nur die bereits vom verteilten Router des virtuellen Netzwerks definierten Systemrouten. Möglicherweise müssen Sie in bestimmten Fällen jedoch eine Routingtabelle erstellen und dieser eine oder mehrere Routen hinzufügen. Die gilt z. B. für:

  • Tunnelerzwingung für das Internet über das lokale Netzwerk.
  • Verwenden von virtuellen Geräten in Ihrer Umgebung

Für diese Szenarios müssen Sie eine Routingtabelle erstellen und ihr benutzerdefinierte Routen hinzufügen. Sie können über mehrere Routingtabellen verfügen, wobei eine Routingtabelle einem oder mehreren Subnetzen zugeordnet werden kann. Sie können jedes Subnetz nur einer einzelnen Routingtabelle zuordnen. Alle virtuellen Computer in einem Subnetz verwenden die diesem Subnetz zugeordnete Routingtabelle.

Für die Subnetze gelten die Systemrouten solange, bis ihm eine Routingtabelle zugeordnet wird. Sobald eine Zuordnung vorhanden ist, erfolgt das Routing beruhend auf der längsten Präfixübereinstimmung (Longest Prefix Match, LPM) zwischen den benutzerdefinierten Routen und Systemrouten. Wenn mehrere Routen mit derselben LPM vorhanden sind, wird zuerst die benutzerdefinierte Route vor der Systemroute ausgewählt.

Vorgehensweise:

  1. Erstellen Sie die Routingtabelleneigenschaften, die alle benutzerdefinierten Routen enthalten.

    Systemrouten gelten weiterhin gemäß den oben definierten Regeln.

     $routetableproperties = new-object Microsoft.Windows.NetworkController.RouteTableProperties
    
  2. Fügen Sie den Routingtabelleneigenschaften eine Route hinzu.

    Jede Route für das Subnetz 12.0.0.0/8 wird an das virtuelle Gerät unter 192.168.1.10 weitergeleitet. Die Appliance muss über einen virtuellen Netzwerkadapter verfügen, der an das virtuelle Netzwerk angefügt ist, wobei diese IP-Adresse einer Netzwerkschnittstelle zugewiesen ist.

     $route = new-object Microsoft.Windows.NetworkController.Route
     $route.ResourceID = "0_0_0_0_0"
     $route.properties = new-object Microsoft.Windows.NetworkController.RouteProperties
     $route.properties.AddressPrefix = "0.0.0.0/0"
     $route.properties.nextHopType = "VirtualAppliance"
     $route.properties.nextHopIpAddress = "192.168.1.10"
     $routetableproperties.routes += $route
    

    Tipp

    Wenn Sie weitere Routen hinzufügen möchten, wiederholen Sie diesen Schritt für jede Route, die Sie definieren möchten.

  3. Fügen Sie die Routingtabelle dem Netzwerkcontroller hinzu.

     $routetable = New-NetworkControllerRouteTable -ConnectionUri $uri -ResourceId "Route1" -Properties $routetableproperties
    
  4. Wenden Sie die Routingtabelle auf das virtuelle Subnetz an.

    Wenn Sie die Routingtabelle auf das virtuelle Subnetz anwenden, verwendet das erste virtuelle Subnetz im Netzwerk Tenant1_Vnet1 die Routingtabelle. Sie können die Routingtabelle beliebig vielen Subnetzen im virtuellen Netzwerk zuweisen.

     $vnet = Get-NetworkControllerVirtualNetwork -ConnectionUri $uri -ResourceId "Tenant1_VNet1"
     $vnet.properties.subnets[0].properties.RouteTable = $routetable
     new-networkcontrollervirtualnetwork -connectionuri $uri -properties $vnet.properties -resourceId $vnet.resourceid
    

Sobald Sie die Routingtabelle auf das virtuelle Netzwerk anwenden, wird der Datenverkehr an das virtuelle Gerät weitergeleitet. Sie müssen die Routingtabelle im virtuellen Gerät konfigurieren, um den Datenverkehr in einer für Ihre Umgebung geeigneten Weise weiterzuleiten.

Beispiel: Portspiegelung

In diesem Beispiel konfigurieren Sie den Datenverkehr für MyVM_Ethernet1, um Appliance_Ethernet1 zu spiegeln. Wir gehen davon aus, dass Sie zwei VMs bereitgestellt haben – eine als Appliance und die andere als VM zum Überwachen mit Spiegelung.

Die Appliance muss über eine zweite Netzwerkschnittstelle für die Verwaltung verfügen. Nachdem Sie die Spiegelung als Ziel auf Appliciance_Ethernet1 aktiviert haben, empfängt sie keinen Datenverkehr mehr, der für die dort konfigurierte IP-Schnittstelle bestimmt ist.

Vorgehensweise:

  1. Rufen Sie das virtuelle Netzwerk ab, in dem sich Ihre VMs befinden.

    $vnet = Get-NetworkControllerVirtualNetwork -ConnectionUri $uri -ResourceId "Tenant1_VNet1"
    
  2. Rufen Sie die Netzwerkschnittstellen des Netzwerkcontrollers für die Spiegelungsquelle und das Ziel ab.

    $dstNic = get-networkcontrollernetworkinterface -ConnectionUri $uri -ResourceId "Appliance_Ethernet1"
    $srcNic = get-networkcontrollernetworkinterface -ConnectionUri $uri -ResourceId "MyVM_Ethernet1"
    
  3. Erstellen Sie ein serviceinsertionproperties-Objekt, das die Portspiegelungsregeln und das Element enthält, das die Zielschnittstelle darstellt.

    $portmirror = [Microsoft.Windows.NetworkController.ServiceInsertionProperties]::new()
    $portMirror.Priority = 1
    
  4. Erstellen Sie ein serviceinsertionrules-Objekt, das die Regeln enthält, die übereinstimmen müssen, damit der Datenverkehr an die Appliance gesendet wird.

    Die unten definierten Regeln entsprechen dem gesamten eingehenden und ausgehenden Datenverkehr, der eine herkömmliche Spiegelung darstellt. Sie können diese Regeln anpassen, wenn Sie einen bestimmten Port oder eine bestimmten Quelle bzw. bestimmte Zielen spiegeln möchten.

    $portmirror.ServiceInsertionRules = [Microsoft.Windows.NetworkController.ServiceInsertionRule[]]::new(1)
    
    $portmirror.ServiceInsertionRules[0] = [Microsoft.Windows.NetworkController.ServiceInsertionRule]::new()
    $portmirror.ServiceInsertionRules[0].ResourceId = "Rule1"
    $portmirror.ServiceInsertionRules[0].Properties = [Microsoft.Windows.NetworkController.ServiceInsertionRuleProperties]::new()
    
    $portmirror.ServiceInsertionRules[0].Properties.Description = "Port Mirror Rule"
    $portmirror.ServiceInsertionRules[0].Properties.Protocol = "All"
    $portmirror.ServiceInsertionRules[0].Properties.SourcePortRangeStart = "0"
    $portmirror.ServiceInsertionRules[0].Properties.SourcePortRangeEnd = "65535"
    $portmirror.ServiceInsertionRules[0].Properties.DestinationPortRangeStart = "0"
    $portmirror.ServiceInsertionRules[0].Properties.DestinationPortRangeEnd = "65535"
    $portmirror.ServiceInsertionRules[0].Properties.SourceSubnets = "*"
    $portmirror.ServiceInsertionRules[0].Properties.DestinationSubnets = "*"
    
  5. Erstellen Sie ein serviceinsertionelements-Objekt, das die Netzwerkschnittstelle der gespiegelten Appliance enthält.

    $portmirror.ServiceInsertionElements = [Microsoft.Windows.NetworkController.ServiceInsertionElement[]]::new(1)
    
    $portmirror.ServiceInsertionElements[0] = [Microsoft.Windows.NetworkController.ServiceInsertionElement]::new()
    $portmirror.ServiceInsertionElements[0].ResourceId = "Element1"
    $portmirror.ServiceInsertionElements[0].Properties = [Microsoft.Windows.NetworkController.ServiceInsertionElementProperties]::new()
    
    $portmirror.ServiceInsertionElements[0].Properties.Description = "Port Mirror Element"
    $portmirror.ServiceInsertionElements[0].Properties.NetworkInterface = $dstNic
    $portmirror.ServiceInsertionElements[0].Properties.Order = 1
    
  6. Fügen Sie das Diensteinfügungsobjekt im Netzwerkcontroller hinzu.

    Wenn Sie diesen Befehl ausgeben, wird der gesamte Datenverkehr an die im vorherigen Schritt angegebene Appliance-Netzwerkschnittstelle angehalten.

    $portMirror = New-NetworkControllerServiceInsertion -ConnectionUri $uri -Properties $portmirror -ResourceId "MirrorAll"
    
  7. Aktualisieren Sie die Netzwerkschnittstelle der Quelle, die gespiegelt werden soll.

    $srcNic.Properties.IpConfigurations[0].Properties.ServiceInsertion = $portMirror
    $srcNic = New-NetworkControllerNetworkInterface -ConnectionUri $uri  -Properties $srcNic.Properties -ResourceId $srcNic.ResourceId
    

Nach Abschluss dieser Schritte spiegelt die Appliance_Ethernet1-Schnittstelle den Datenverkehr der MyVM_Ethernet1-Schnittstelle.