手动 SA
手动安全关联 (SA) IPsec 策略方案允许调用方通过直接指定 IPsec SA 来保护任何网络流量,从而绕过内置的 IPsec 密钥模块(IKE 和 AuthIP)。
一个可能的手动 SA 方案的示例是“添加 IPsec SA 对来保护 IP 地址 1.1.1.1 & 2.2.2.2 之间的所有单播数据流量,使用 IPsec 传输模式除外。
注意
必须在已正确设置 IP 地址的两台计算机上执行以下步骤。
若要以编程方式实现此示例,请使用以下 WFP 配置。
添加具有以下属性的筛选器。
Filter 属性 价值 FWPM_CONDITION_IP_LOCAL_ADDRESS_TYPE 筛选条件 NlatUnicast FWPM_CONDITION_IP_LOCAL_ADDRESS 适当的本地地址(1.1.1.1 或 2.2.2.2)。 FWPM_CONDITION_IP_REMOTE_ADDRESS 相应的远程地址(1.1.1.1 或 2.2.2.2)。 action.type FWP_ACTION_CALLOUT_TERMINATING action.calloutKey FWPM_CALLOUT_IPSEC_INBOUND_TRANSPORT_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 权重 FWPM_WEIGHT_RANGE_IKE_EXEMPTIONS 添加具有以下属性的筛选器。
Filter 属性 价值 FWPM_CONDITION_IP_LOCAL_ADDRESS_TYPE 筛选条件 NlatUnicast FWPM_CONDITION_IP_LOCAL_ADDRESS 筛选条件 适当的本地地址(1.1.1.1 或 2.2.2.2)。 FWPM_CONDITION_IP_REMOTE_ADDRESS 筛选条件 相应的远程地址(1.1.1.1 或 2.2.2.2)。 action.type FWP_ACTION_CALLOUT_TERMINATING action.calloutKey FWPM_CALLOUT_IPSEC_OUTBOUND_TRANSPORT_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 权重 FWPM_WEIGHT_RANGE_IKE_EXEMPTIONS - 调用 IPsecSaContextCreate0,outboundTraffic 参数,其中包含 IP 地址为 1.1.1.1 & 2.2.2.2,ipsecFilterId 作为上面添加的出站传输层 IPsec 标注筛选器的 LUID。
- 调用 IPsecSaContextGetSpi0,id 参数,其中包含从 IPsecSaContextCreate0返回的上下文 ID,以及包含 IP 地址为 1.1.1.1 & 2.2.2.2 的 getSpi 参数, ipsecFilterId 作为上面添加的入站传输层 IPsec 标注筛选器的 LUID。 返回的 SPI 值旨在用作本地计算机的入站 SA SPI,并用作相应远程计算机的出站 SA SPI。 这两台计算机必须使用一些带外方法来交换 SPI 值。
- 调用 IPsecSaContextAddInbound0,id 参数,其中包含从 IPsecSaContextCreate0返回的上下文 ID,以及描述入站 SA 捆绑包的属性的 inboundBundle 参数(例如入站 SA SPI、转换类型、算法类型、密钥等)。
- 调用 IPsecSaContextAddOutbound0,id 参数,其中包含从 IPsecSaContextCreate0返回的上下文 ID,以及描述出站 SA 捆绑包属性的 outboundBundle 参数(例如出站 SA SPI、转换类型、算法类型、密钥等)。
FWPM_LAYER_INBOUND_TRANSPORT_V{4|6} 设置入站每数据包筛选规则
at FWPM_LAYER_OUTBOUND_TRANSPORT_V{4|6} 设置出站每数据包筛选规则
设置入站和出站安全关联