설명선 유형

다음 유형의 설명선은 WFP와 함께 사용할 수 있습니다.

인라인 검사 설명선
이 유형의 설명선은 항상 classifyFn 함수에서 FWP_ACTION_CONTINUE 반환하며 어떤 방식으로도 네트워크 트래픽을 수정하지 않습니다. 네트워크 통계를 수집하는 설명선은 이러한 유형의 설명선의 예입니다.

이 설명선 형식의 경우 필터 작업 형식(FWPS_ACTION0 구조체의 Type 멤버에 의해 지정됨)을 FWP_ACTION_CALLOUT_INSPECTION 설정해야 합니다.

대역 외 검사 설명선
이 유형의 설명선은 네트워크 트래픽을 수정하지 않습니다. 대신, 표시된 데이터를 "보류 중"한 다음 패킷 삽입 함수 중 하나를 사용하여 보류 중인 데이터를 TCP/IP 스택에 다시 다시 연결하여 classifyFn 함수 외부에서 수행되도록 모든 검사를 연기 합니다. 보류는 먼저 표시된 데이터를 복제한 다음, FWPS_CLASSIFY_OUT_FLAG_ABSORB 비트 집합이 있는 classifyFn 함수에서 FWP_ACTION_BLOCK 반환하여 구현됩니다.

인라인 수정 설명선
이 유형의 설명선은 먼저 표시된 데이터의 복제본을 만든 다음 클론을 수정하고 마지막으로 classifyFn 함수에서 수정된 복제본을 TCP/IP 스택에 다시 삽입하여 네트워크 트래픽을 수정합니다. 또한 이 유형의 설명선은 FWPS_CLASSIFY_OUT_FLAG_ABSORB 비트 집합이 있는 classifyFn 함수에서 FWP_ACTION_BLOCK 반환합니다.

이 유형의 설명선에 대한 필터 작업 유형은 FWP_ACTION_CALLOUT_TERMINATING 설정해야 합니다.

대역 외 수정 설명선
이 유형의 설명선은 먼저 intentToModify 매개 변수가 TRUE로 설정된 FwpsReferenceNetBufferList0 함수를 사용하여 표시된 패킷을 참조합니다. 그런 다음 설명선은 classifyFn 함수에서 설정된 FWPS_CLASSIFY_OUT_FLAG_ABSORB비트가 있는 FWP_ACTION_BLOCK 반환합니다. classifyFn 외부에서 패킷을 수정할 준비가 되면 설명선은 참조된 패킷을 복제합니다(복제되는 즉시 원래 패킷을 역참조할 수 있음). 그런 다음, 설명선은 복제본을 수정하고 수정된 패킷을 TCP/IP 스택에 다시 삽입합니다.

이 유형의 설명선에 대한 필터 작업 유형은 FWP_ACTION_CALLOUT_TERMINATING 설정해야 합니다.

리디렉션 설명선
이러한 유형의 설명선에 대한 자세한 내용은 바인딩 또는 커넥트 리디렉션 사용을 참조하세요.

리디렉션 설명선에는 두 가지 유형이 있습니다.

  • 바인딩 리디렉션 설명선은 설명선 드라이버가 소켓의 로컬 주소 및 로컬 포트를 수정할 수 있도록 합니다.
  • 연결 리디렉션 설명선은 설명선 드라이버가 연결의 원격 주소 및 원격 포트를 수정할 수 있도록 합니다.

이 유형의 설명선에 대한 필터 작업 유형은 FWP_ACTION_PERMIT 설정해야 합니다.

FWPS_CLASSIFY_OUT_FLAG_ABSORB 대한 자세한 내용은 FWPS_CLASSIFY_OUT0 참조하세요. 이 플래그는 WFP 삭제 계층에서 유효하지 않습니다. classifyFn 함수에서 설정된 FWPS_CLASSIFY_OUT_FLAG_ABSORB 플래그를 사용하여 FWP_ACTION_BLOCK 반환하면 패킷이 자동으로 삭제되므로 패킷이 WFP 삭제 계층에 충돌하지 않으며 감사 이벤트가 생성되지 않습니다.

예를 들어 순 버퍼 또는 MDL 또는 둘 다를 추가하거나 제거하여 복제된 순 버퍼 목록을 수정할 수 있지만, 설명선은 FwpsFreeCloneNetBufferList0 함수를 호출하기 전에 이러한 수정을 취소해야 합니다.

패킷 검사, 패킷 수정 또는 연결 리디렉션을 수행하는 다른 설명선과 공존하려면 패킷이 참조/클론-드롭-다시ject 메커니즘으로 보류되기 전에 classifyFn 함수에서 반환된 FWPS_CLASSIFY_OUT0구조체권한 멤버에서 FWPS_RIGHT_ACTION_WRITE 플래그를 지워서 원래 패킷을 "하드"삭제해야 합니다. classifyFn이 호출될 때 FWPS_RIGHT_ACTION_WRITE 플래그가 설정되면(즉, 패킷이 보류 중이고 나중에 다시 내보내거나 수정될 수 있음) 설명선은 표시를 보류하지 않아야 하며 현재 작업 유형을 변경해서는 안 됩니다. 그리고 더 높은 가중치의 설명선이 수정될 수 있는 복제본을 삽입할 때까지 기다려야 합니다.

설명선이 분류를 보류할 때마다 FWPS_RIGHT_ACTION_WRITE 플래그를 설정해야 합니다. 설명선 드라이버는 FWPS_RIGHT_ACTION_WRITE 플래그를 테스트하여 콜아웃에서 작업을 반환할 수 있는 권한을 확인해야 합니다. 이 플래그가 설정되지 않은 경우에도 설명선은 이전 설명선에서 반환된 FWP_ACTION_PERMIT 작업을 거부하기 위해 FWP_ACTION_BLOCK 작업을 반환할 수 있습니다. 심층 검사를 위해 설명선 사용에 표시된 예제에서 플래그가 설정되지 않은 경우 함수는 종료됩니다.

FwpsPendOperation0 함수는 FWPM_LAYER_ALE_RESOURCE_ASSIGNMENT_XXX, FWPM_LAYER_ALE_AUTH_LISTEN_XXX 또는 FWPM_LAYER_ALE_AUTH_CONNECT_XXXmanagement 필터링 계층에서 시작된 패킷을 보류하는 데 사용됩니다.

FwpsPendClassify0 함수는 다음 런타임 필터링 계층에서 시작되는 패킷을 보류하는 데 사용됩니다.

FWPS_LAYER_ALE_ENDPOINT_CLOSURE_V4 FWPS_LAYER_ALE_ENDPOINT_CLOSURE_V6 FWPS_LAYER_ALE_CONNECT_REDIRECT_V4 FWPS_LAYER_ALE_CONNECT_REDIRECT_V6 FWPS_LAYER_ALE_BIND_REDIRECT_V4 FWPS_LAYER_ALE_BIND_REDIRECT_V6