共用方式為


手動 SA

手動安全性關聯 (SA) IPsec 原則案例可讓呼叫者直接指定 IPsec SA 來保護任何網路流量,以略過內建的 IPsec 密鑰處理模組 (IKE 和 AuthIP)。

可能的手動 SA 案例範例是「新增 IPsec SA 配對來保護 IP 位址 1.1.1.1 和 2.2.2.2 之間的所有單播數據流量,但 ICMP 除外,使用 IPsec 傳輸模式。

注意

下列步驟必須在已適當設定IP位址的兩部電腦上執行。

若要以程式設計方式實作此範例,請使用下列 WFP 設定。

在 FWPM_LAYER_INBOUND_TRANSPORT_V{4|6} 設定每個封包篩選規則的輸入

  1. 新增具有下列屬性的篩選。

    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}
  2. 新增具有下列屬性的篩選條件,以豁免 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_OUTBOUND_TRANSPORT_V{4|6} 設定每個封包篩選規則的輸出

  1. 新增具有下列屬性的篩選。

    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}
  2. 新增具有下列屬性的篩選條件,以豁免 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

設定輸入和輸出安全性關聯

  1. 呼叫 IPsecSaContextCreate0,其中包含 IP 位址為 1.1.1.1 和 2.2.2.2,以及 ipsecFilterId 做為上面新增之輸出傳輸層 IPsec 圖說文字篩選器的 LUID
  2. 呼叫 IPsecSaContextGetSpi0,其標識符參數包含從 IPsecSaContextCreate0 傳回的內容識別符,以及包含 IP 位址為 1.1.1.1 和 2.2.2.2 的 getSpi 參數,以及 ipsecFilterId 作為上面新增之輸入傳輸層 IPsec 圖說文字篩選條件的 LUID。 傳回的 SPI 值是用來做為本機電腦的輸入 SA SPI,以及對應遠端電腦的輸出 SA SPI。 這兩部機器都必須使用一些頻外方法來交換 SPI 值。
  3. 呼叫 IPsecSaContextAddInbound0,其 標識符 參數包含從 IPsecSaContextCreate0 傳回的內容識別碼,以及 描述輸入 SA 套件組合屬性的 inboundBundle 參數(例如輸入 SA SPI、轉換類型、演算法類型、索引鍵等)。
  4. 呼叫 IPsecSaContextAddOutbound0,其 標識符 參數包含從 IPsecSaContextCreate0 傳回的內容識別碼,以及 描述輸出 SA 套件組合屬性的 outboundBundle 參數(例如輸出 SA SPI、轉換類型、演演算法類型、索引鍵等)。

範例程式代碼:手動 SA Keying

內建圖說文字標識碼

篩選圖層標識碼

FWPM_ACTION0