다음을 통해 공유


가상 스위치 필터링 사용

가상 스위치 필터링 개요

가상 스위치 필터링은 Windows 8 이상 버전의 Windows에서 지원됩니다.

이 WFP 기능을 사용하면 MAC 헤더, IP 헤더 및 상위 프로토콜 포트의 필드뿐만 아니라 VPort(가상 포트) 및 VM ID(가상 머신 식별자)와 같은 가상 스위치 관련 필드를 필터링할 수 있습니다. 이러한 계층은 가상 스위치를 트래버스하는 모든 패킷에 대해 패킷별로 호출됩니다. 이러한 계층은 NDIS LWF(경량 필터) 드라이버 유형인 가상 스위치 확장 필터에서 액세스합니다.

설명선 드라이버는 FwpsvSwitchEventsSubscribe0 함수를 호출하여 가상 스위치 계층 이벤트에 대한 콜백 진입점을 등록합니다.

콜백 알림 함수의 진입점은 FWPS_VSWITCH_EVENT_DISPATCH_TABLE0 구조에 지정됩니다. 사용할 수 있는 콜백 함수는 다음과 같습니다.

FWPS_VSWITCH_EVENT_TYPE 열거형은 가상 스위치 알림 함수의 eventType 매개 변수 값을 정의합니다.

설명선 드라이버는 결국 FwpsvSwitchEventsUnsubscribe0을 호출하여 시스템 리소스를 해제해야 합니다.

설명선 드라이버가 WFP 알림 함수에서 STATUS_PENDING 반환하는 경우 WFP는 STATUS_PENDING OID 요청 처리기로 반환합니다. 설명선 드라이버는 FwpsvSwitchNotifyComplete0 함수를 호출하여 보류 중인 작업을 완료해야 합니다. FwpsvSwitchNotifyComplete0 호출 후 WFP는 NdisFOidRequestComplete 함수를 호출하여 가상 스위치에 대한 OID를 완료합니다.

콜백은 알림 함수의 컨텍스트에서 WFP 필터를 동기적으로 추가하거나 삭제해서는 안 됩니다. 또한 알림 함수가 콜백이 STATUS_PENDING 반환하도록 허용하고 설명선이 STATUS_PENDING 반환하는 경우 알림을 완료하기 전에 설명선이 WFP 필터를 추가하거나 삭제하지 않아야 합니다.

WFP 가상 스위치 필터 계층 및 필드

가상 스위치 필터링을 위한 런타임 필터링 계층 식별자는 다음과 같습니다.

  • FWPS_LAYER_INGRESS_VSWITCH_ETHERNET
  • FWPS_LAYER_EGRESS_VSWITCH_ETHERNET
  • FWPS_LAYER_INGRESS_VSWITCH_TRANSPORT_V4
  • FWPS_LAYER_INGRESS_VSWITCH_TRANSPORT_V6
  • FWPS_LAYER_EGRESS_VSWITCH_TRANSPORT_V4
  • FWPS_LAYER_EGRESS_VSWITCH_TRANSPORT_V6

가상 스위치 필터링에 대한 데이터 필드 식별자는 다음과 같습니다.

WFP 가상 스위치 설명선 작성기에 대한 지침

포트 0 트래픽

WFP 가상 스위치 설명선의 경우 포트 0(기본 포트 ID)의 트래픽을 신뢰할 수 있으며 필터링해서는 안 됩니다. 이는 일반적으로 포트 0을 통해 트래픽이 드라이버 스택의 다른 확장에서 발생하므로 데이터 경로에서 권한 있고 신뢰할 수 있는 것으로 처리되기 때문입니다. 가상 스위치 확장은 기본 확장에서 필터링 및 거부해서는 안 되는 컨트롤 패킷의 시작과 같은 상황에 포트 0을 아쉽게 사용합니다. Hyper-V 확장 가능한 스위치 원본 포트 수정에 대한 자세한 내용은 패킷의 확장 가능한 스위치 원본 포트 데이터 수정을 참조 하세요.

설명선 일치 규칙

필터링을 위해 일치하는 규칙을 정의할 때 가상 스위치 설명선은 MAC 주소를 비교의 기준으로 사용하면 안 됩니다. MAC 주소는 런타임에 변경 될 수 있으며 일부 포트는 여러 MAC 주소에서 트래픽을 생성할 수 있습니다. 대신 설명선은 변경되지 않는 NIC ID와 같은 내구성이 뛰어난 일치 규칙을 사용해야 합니다.

IOV(I/O 가상화) 및 WFP 공존

IOV 스위치에서 WFP를 사용하도록 설정할 수 없으며 사용하도록 설정하려고 하면 OS에 의해 차단됩니다.

WFP 사용 또는 사용 안 함

WFP 가상 스위치 설명선에 대한 설치 관리자는 WFP 확장 사용 상태를 수정해서는 안 됩니다. 즉, WFP 자체를 사용하거나 사용하지 않도록 설정해서는 안 됩니다.