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

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

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

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

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

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

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

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

네트워크 가상 어플라이언스 배포하려면 먼저 어플라이언스 포함하는 VM을 만든 다음 적절한 가상 네트워크 서브넷에 VM을 연결해야 합니다. 자세한 내용은 테넌트 VM 만들기 및 테넌트 Virtual Network 또는 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
    

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

예: 포트 미러ing

이 예제에서는 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 인터페이스의 트래픽을 미러.