다음을 통해 공유


가상 네트워크에서 네트워크 가상 어플라이언스 사용

적용 대상: Windows Server 2022, Windows Server 2019, Windows Server 2016, Azure Stack HCI, 21H2 및 20H2 버전

이 토픽에서는 테넌트 가상 네트워크에 네트워크 가상 어플라이언스를 배포하는 방법에 대해 알아봅니다. 사용자 정의 라우팅 및 포트 미러링 기능을 수행하는 네트워크에 네트워크 가상 어플라이언스를 추가할 수 있습니다.

네트워크 가상 어플라이언스 유형

다음 두 가지 유형의 가상 어플라이언스 중 하나를 사용할 수 있습니다.

  1. 사용자 정의 라우팅 - 가상 네트워크의 분산 라우터를 가상 어플라이언스의 라우팅 기능으로 대체합니다. 사용자 정의 라우팅을 사용하면 가상 어플라이언스가 가상 네트워크의 가상 서브넷 사이에서 라우터로 사용됩니다.

  2. 포트 미러링 - 모니터링되는 포트로 들어오거나 나가는 모든 네트워크 트래픽이 중복되어 분석을 위해 가상 어플라이언스로 전송됩니다.

네트워크 가상 어플라이언스 배포

네트워크 가상 어플라이언스를 배포하려면 먼저 어플라이언스가 포함된 VM을 만든 다음 해당 VM을 적절한 가상 네트워크 서브넷에 연결해야 합니다. 자세한 내용은 테넌트 VM을 만들고 테넌트 가상 네트워크 또는 VLAN에 연결을 참조하세요.

일부 어플라이언스에는 여러 가상 네트워크 어댑터가 필요합니다. 일반적으로 어플라이언스 관리 전용 네트워크 어댑터 1개와 추가 어댑터가 트래픽을 처리합니다. 어플라이언스에 여러 네트워크 어댑터가 필요한 경우 네트워크 컨트롤러에서 각 네트워크 인터페이스를 만들어야 합니다. 또한 서로 다른 가상 서브넷에 있는 각 추가 어댑터에 대해 각 호스트에서 인터페이스 ID를 할당해야 합니다.

네트워크 가상 어플라이언스 배포 후에는 정의된 라우팅, 포팅 미러링 또는 둘 다에 어플라이언스를 사용할 수 있습니다.

예: 사용자 정의 라우팅

대부분의 환경에서는 가상 네트워크의 분산 라우터에 의해 이미 정의된 시스템 경로만 필요합니다. 그러나 다음과 같은 특정한 경우에는 라우팅 테이블을 만들고 하나 이상의 경로를 추가해야 할 수 있습니다.

  • 온-프레미스 네트워크를 통해 인터넷에 강제로 터널링합니다.
  • 사용자 환경에서 가상 어플라이언스를 사용합니다.

이러한 시나리오의 경우 라우팅 테이블을 만들고 해당 테이블에 사용자 정의 경로를 추가해야 합니다. 여러 라우팅 테이블을 만들 수 있으며, 동일한 라우팅 테이블을 하나 이상의 서브넷에 연결할 수 있습니다. 각 서브넷은 단일 라우팅 테이블에만 연결할 수 있습니다. 서브넷의 모든 VM은 서브넷에 연결된 라우팅 테이블을 사용합니다.

서브넷은 라우팅 테이블이 서브넷에 연결될 때까지 시스템 경로를 사용합니다. 연결이 설정되면 사용자 정의 경로 및 시스템 경로 간에 LPM(가장 긴 접두사 일치)을 기반으로 라우팅이 수행됩니다. 동일한 LPM이 일치하는 경로가 두 개 이상 있는 경우 사용자 정의 경로가 먼저 선택됩니다(시스템 경로 전에).

절차:

  1. 모든 사용자 정의 경로를 포함하는 경로 테이블 속성을 만듭니다.

    시스템 경로는 위에서 정의한 규칙에 따라 계속 적용됩니다.

     $routetableproperties = new-object Microsoft.Windows.NetworkController.RouteTableProperties
    
  2. 라우팅 테이블 속성에 경로를 추가합니다.

    12.0.0.0/8 서브넷으로 향하는 모든 경로는 192.168.1.10에서 가상 어플라이언스로 라우팅됩니다. 어플라이언스에는 네트워크 인터페이스에 해당 IP가 할당된 가상 네트워크에 연결된 가상 네트워크 어댑터가 있어야 합니다.

     $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
    

    경로를 더 추가하려면 정의하려는 각 경로에 대해 이 단계를 반복합니다.

  3. 네트워크 컨트롤러에 라우팅 테이블을 추가합니다.

     $routetable = New-NetworkControllerRouteTable -ConnectionUri $uri -ResourceId "Route1" -Properties $routetableproperties
    
  4. 가상 서브넷에 라우팅 테이블을 적용합니다.

    경로 테이블을 가상 서브넷에 적용하면 Tenant1_Vnet1 네트워크의 첫 번째 가상 서브넷이 해당 경로 테이블을 사용합니다. 경로 테이블은 원하는 만큼 가상 네트워크의 서브넷에 할당할 수 있습니다.

     $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
    

라우팅 테이블을 가상 네트워크에 적용하는 즉시 가상 어플라이언스로 트래픽이 전달됩니다. 환경에 적합한 방식으로 트래픽을 전달하도록 가상 어플라이언스에서 라우팅 테이블을 구성해야 합니다.

예: 포트 미러링

이 예제에서는 MyVM_Ethernet1이 Appliance_Ethernet1을 미러링하도록 트래픽을 구성합니다. 두 개의 VM을 배포했다고 가정합니다. 하나는 어플라이언스로, 다른 하나는 미러링으로 모니터링할 VM입니다.

어플라이언스에는 관리용 두 번째 네트워크 인터페이스가 있어야 합니다. Appliciance_Ethernet1에서 대상으로 미러링을 사용하도록 설정한 후에는 더 이상 이곳에서 구성된 IP 인터페이스로 향하는 트래픽을 수신하지 않습니다.

절차:

  1. VM이 있는 가상 네트워크를 가져옵니다.

    $vnet = Get-NetworkControllerVirtualNetwork -ConnectionUri $uri -ResourceId "Tenant1_VNet1"
    
  2. 미러링 원본 및 대상에 대한 네트워크 컨트롤러 네트워크 인터페이스를 가져옵니다.

    $dstNic = get-networkcontrollernetworkinterface -ConnectionUri $uri -ResourceId "Appliance_Ethernet1"
    $srcNic = get-networkcontrollernetworkinterface -ConnectionUri $uri -ResourceId "MyVM_Ethernet1"
    
  3. 포트 미러링 규칙 및 대상 인터페이스를 나타내는 요소를 포함하는 serviceinsertionproperties 개체를 만듭니다.

    $portmirror = [Microsoft.Windows.NetworkController.ServiceInsertionProperties]::new()
    $portMirror.Priority = 1
    
  4. 어플라이언스로 트래픽을 보내려면 serviceinsertionrules 개체를 만들어 일치해야 하는 규칙을 포함합니다.

    아래에 정의된 규칙은 기존 미러를 나타내는 인바운드 및 아웃바운드의 모든 트래픽과 일치합니다. 특정 포트 또는 특정 원본/대상을 미러링하려는 경우 이러한 규칙을 조정할 수 있습니다.

    $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. serviceinsertionelements 개체를 만들어 미러링된 어플라이언스의 네트워크 인터페이스를 포함합니다.

    $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. 네트워크 컨트롤러에 서비스 삽입 개체를 추가합니다.

    이 명령을 실행하면 이전 단계에서 지정한 어플라이언스 네트워크 인터페이스에 대한 모든 트래픽이 중지됩니다.

    $portMirror = New-NetworkControllerServiceInsertion -ConnectionUri $uri -Properties $portmirror -ResourceId "MirrorAll"
    
  7. 미러링할 원본의 네트워크 인터페이스를 업데이트합니다.

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

이러한 단계를 완료하면 Appliance_Ethernet1 인터페이스가 MyVM_Ethernet1 인터페이스의 트래픽을 미러링합니다.