标注类型

以下类型的标注可以与粮食计划署一起使用:

内联检查标注
这种类型的标注始终从分类Fn 函数返回FWP_ACTION_CONTINUE,并且不会以任何方式修改网络流量。 收集网络统计信息的标注是此类标注的示例。

对于这种类型的标注,筛选器操作类型(由FWPS_ACTION0结构的 Type 成员指定)应设置为FWP_ACTION_CALLOUT_INSPECTION

带外检查标注
这种类型的标注不会修改网络流量。 相反,它会延迟在分类Fn函数外部执行的任何检查,方法是“挂起”指示的数据,然后使用其中一个数据包注入函数将笔入 TCP/IP 堆栈。 挂起是通过先克隆指示的数据来实现的,然后从具有FWPS_CLASSIFY_OUT_FLAG_ABSORB位集的 classifyFn 函数返回FWP_ACTION_BLOCK

内联修改标注
这种类型的标注先克隆指示的数据,然后修改克隆,最后从 分类Fn 函数将修改后的克隆注入 TCP/IP 堆栈,从而修改网络流量。 这种类型的标注还从具有FWPS_CLASSIFY_OUT_FLAG_ABSORB位集的 classifyFn 函数返回FWP_ACTION_BLOCK

此类型的标注的筛选器操作类型应设置为 FWP_ACTION_CALLOUT_TERMINATING

带外修改标注
这种类型的标注首先使用 FwpsReferenceNetBufferList0 函数引用指示的数据包,该函数的 intentToModify 参数设置为 TRUE 然后,标注返回FWP_ACTION_BLOCK,其中FWPS_CLASSIFY_OUT_FLAG_ABSORB位集来自 classifyFn 函数。 当数据包准备好在 classifyFn 外部修改时,标注将克隆引用的数据包(克隆后,可以取消引用原始数据包)。 然后,标注修改克隆并将修改后的数据包注入 TCP/IP 堆栈。

此类型的标注的筛选器操作类型应设置为 FWP_ACTION_CALLOUT_TERMINATING

重定向标注
有关这种类型的标注的详细信息,请参阅 “使用绑定”或“连接重定向”。

有两种类型的重定向标注:

  • 绑定重定向标注允许标注驱动程序修改套接字的本地地址和本地端口。
  • 连接重定向标注允许标注驱动程序修改连接的远程地址和远程端口。

此类型的标注的筛选器操作类型应设置为 FWP_ACTION_PERMIT

有关FWPS_CLASSIFY_OUT_FLAG_ABSORB的详细信息,请参阅FWPS_CLASSIFY_OUT0 此标志在任何 WFP 放弃层上都无效。 使用从分类Fn 函数设置的FWPS_CLASSIFY_OUT_FLAG_ABSORB标志返回FWP_ACTION_BLOCK会导致数据包以无提示方式丢弃,这样数据包就不会命中任何 WFP 放弃层,也不会生成审核事件。

尽管克隆的 Net 缓冲区列表可以修改,例如,通过添加或删除 net 缓冲区或 MDL,或者同时修改两者,但在调用 FwpsFreeCloneNetBufferList0 函数之前,标注必须撤消此类修改。

若要与其他执行数据包检查、数据包修改或连接重定向的标注共存,在使用 reference/clone-drop-reinject 机制对数据包进行笔划之前,标注必须通过清除分类Fn 函数返回FWPS_CLASSIFY_OUT0结构的权限成员中的FWPS_RIGHT_ACTION_WRITE标志来“硬”删除原始数据包。 如果在调用分类Fn设置FWPS_RIGHT_ACTION_WRITE标志(这意味着数据包可以笔接,以后可以重新插入或修改),则标注不得笔接指示,不应更改当前操作类型;并且必须等待更高权重的标注来注入可能修改的克隆。

每当标注笔划分类时,都应设置FWPS_RIGHT_ACTION_WRITE标志。 标注驱动程序应测试 FWPS_RIGHT_ACTION_WRITE 标志,以检查标注返回操作的权限。 如果未设置此标志,标注仍可返回 FWP_ACTION_BLOCK 操作,以否决 先前标注返回的 FWP_ACTION_PERMIT操作。 在“使用标注进行深度检查”中所示的示例中,如果未设置标志,该函数将仅退出。

FwpsPendOperation0 函数用于绘制源自 FWPM_LAYER_ALE_RESOURCE_ASSIGNMENT_XXXFWPM_LAYER_ALE_AUTH_LISTEN_XXXFWPM_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