协商发现传输模式
协商发现传输模式 IPsec 策略方案需要对所有匹配的入站流量进行 IPsec 传输模式保护,并请求 IPsec 保护以匹配出站流量。 因此,允许出站连接回退为明文连接,而入站连接则不允许。
使用此策略时,当主机尝试新的出站连接并且没有与流量匹配的现有 IPsec SA 时,主机会同时以明文形式发送数据包,并启动 IKE 或 AuthIP 协商。 如果协商成功,连接将升级到 IPsec 保护。 否则,连接将保持明文形式。 一旦受 IPsec 保护,连接就永远无法降级为明文。
协商发现传输模式通常用于同时支持 IPsec 的计算机和非 IPsec 计算机的环境中。
可能的协商发现传输模式方案的一个示例是“使用 IPsec 传输模式保护除 ICMP 之外的所有单播数据流量,并启用协商发现”。
若要以编程方式实现此示例,请使用以下 WFP 配置。
添加以下一个或两个 MM 策略提供程序上下文。
- 对于 IKE, FWPM_IPSEC_IKE_MM_CONTEXT类型的策略提供程序上下文。
- 对于 AuthIP,类型 为 FWPM_IPSEC_AUTHIP_MM_CONTEXT 的策略提供程序上下文。
注意
将协商一个通用密钥模块,并应用相应的 MM 策略。 如果同时支持 IKE 和 AuthIP,则 AuthIP 是首选的密钥模块。
对于步骤 1 中添加的每个上下文,请添加具有以下属性的筛选器。
Filter 属性 Value 筛选条件 空白。 所有流量都将与筛选器匹配。 providerContextKey 步骤 1 中添加的 MM 提供程序上下文的 GUID。 添加以下一个或两个 QM 传输模式策略提供程序上下文并设置 IPSEC_POLICY_FLAG_ND_SECURE 标志。
- 对于 IKE,FWPM_IPSEC_IKE_QM_TRANSPORT_CONTEXT 类型的策略提供程序上下文。
- 对于 AuthIP,FWPM_IPSEC_AUTHIP_QM_TRANSPORT_CONTEXT类型的策略提供程序上下文。 此上下文可以选择性地包含 AuthIP 扩展模式 (EM) 协商策略。
注意
将协商一个通用密钥模块,并应用相应的 QM 策略。 如果同时支持 IKE 和 AuthIP,则 AuthIP 是首选的密钥模块。
对于步骤 1 中添加的每个上下文,请添加具有以下属性的筛选器。
Filter 属性 Value 筛选条件 空白。 所有流量都将与筛选器匹配。 providerContextKey 步骤 1 中添加的 QM 提供程序上下文的 GUID。 添加具有以下属性的筛选器。
Filter 属性 Value FWPM_CONDITION_IP_LOCAL_ADDRESS_TYPE 筛选条件 NlatUnicast action.type FWP_ACTION_CALLOUT_TERMINATING action.calloutKey FWPM_CALLOUT_IPSEC_INBOUND_TRANSPORT_V{4|6} rawContext FWPM_CONTEXT_IPSEC_INBOUND_PERSIST_CONNECTION_SECURITY 通过添加具有以下属性的筛选器,从 IPsec 中免除 ICMP 流量。
Filter 属性 Value FWPM_CONDITION_IP_LOCAL_ADDRESS_TYPE 筛选条件 NlatUnicast FWPM_CONDITION_IP_PROTOCOL 筛选条件 **IPPROTO_ICMP{V6}**这些常量在 winsock2.h 中定义。 action.type FWP_ACTION_PERMIT weight FWPM_WEIGHT_RANGE_IKE_EXEMPTIONS 添加具有以下属性的筛选器。
Filter 属性 Value FWPM_CONDITION_IP_LOCAL_ADDRESS_TYPE 筛选条件 NlatUnicast action.type FWP_ACTION_CALLOUT_TERMINATING action.calloutKey FWPM_CALLOUT_IPSEC_OUTBOUND_TRANSPORT_V{4|6} rawContext FWPM_CONTEXT_IPSEC_OUTBOUND_NEGOTIATE_DISCOVER 通过添加具有以下属性的筛选器,从 IPsec 中免除 ICMP 流量。
Filter 属性 Value FWPM_CONDITION_IP_LOCAL_ADDRESS_TYPE 筛选条件 NlatUnicast FWPM_CONDITION_IP_PROTOCOL 筛选条件 **IPPROTO_ICMP{V6}**这些常量在 winsock2.h 中定义。 action.type FWP_ACTION_PERMIT weight FWPM_WEIGHT_RANGE_IKE_EXEMPTIONS 添加具有以下属性的筛选器。 如果入站连接尝试受 IPsec 保护,则此筛选器仅允许这些尝试。
Filter 属性 Value FWPM_CONDITION_IP_LOCAL_ADDRESS_TYPE 筛选条件 NlatUnicast action.type FWP_ACTION_CALLOUT_TERMINATING action.calloutKey FWPM_CALLOUT_IPSEC_INBOUND_INITIATE_SECURE_V{4|6} 通过添加具有以下属性的筛选器,从 IPsec 中免除 ICMP 流量。
Filter 属性 值 FWPM_CONDITION_IP_LOCAL_ADDRESS_TYPE 筛选条件 NlatUnicast FWPM_CONDITION_IP_PROTOCOL 筛选条件 **IPPROTO_ICMP{V6}**这些常量在 winsock2.h 中定义。 action.type FWP_ACTION_PERMIT weight FWPM_WEIGHT_RANGE_IKE_EXEMPTIONS
在 FWPM_LAYER_IKEEXT_V{4|6} 设置 MM 协商策略
在 FWPM_LAYER_IPSEC_V{4|6} 设置 QM 和 EM 协商策略
在 FWPM_LAYER_INBOUND_TRANSPORT_V{4|6} 设置每个数据包的入站筛选规则
在 FWPM_LAYER_OUTBOUND_TRANSPORT_V{4|6} 设置每个数据包的出站筛选规则
FWPM_LAYER_ALE_AUTH_RECV_ACCEPT_V{4|6} 设置每个连接的入站筛选规则