手动 SA
手动安全关联 (SA) IPsec 策略方案允许调用方通过直接指定 IPsec SA 来保护任何网络流量,绕过内置 IPsec 密钥模块 (IKE 和 AuthIP) 。
可能的手动 SA 方案的一个示例是“添加 IPsec SA 对,以使用 IPsec 传输模式保护 IP 地址 1.1.1.1 & 2.2(ICMP 除外)之间的所有单播数据流量。
注意
必须在 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 weight 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 weight FWPM_WEIGHT_RANGE_IKE_EXEMPTIONS - 调用 IPsecSaContextCreate0,其 outboundTraffic 参数包含 IP 地址为 1.1.1.1 & 2.2.2, ipsecFilterId 作为上面添加的出站传输层 IPsec 标注筛选器的 LUID。
- 调用 IPsecSaContextGetSpi0,其 id 参数包含从 IPsecSaContextCreate0 返回的上下文 ID,将包含 IP 地址的 getSpi 参数作为 1.1.1.1 & 2.2.2, 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} 设置每个数据包的入站筛选规则
FWPM_LAYER_OUTBOUND_TRANSPORT_V{4|6} 设置出站每数据包筛选规则
设置入站和出站安全关联