설명선 유형

다음 유형의 설명선은 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 함수를 사용하여 표시된 패킷을 참조합니다. 그런 다음, callout은 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 함수를 호출하기 전에 이러한 수정 내용을 실행 취소해야 합니다.

패킷 검사, 패킷 수정 또는 연결 리디렉션을 수행하는 다른 설명선과 공존하려면 패킷이 참조/clone-drop-reinject 메커니즘으로 보류되기 전에 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_XXX관리 필터링 계층에서 시작되는 패킷을 보류하는 데 사용됩니다.

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