共用方式為


手動 SA

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

可能的手動 SA 案例範例是「新增 IPsec SA 組以保護 IP 位址 1.1.1.1 & 2.2.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
    權數 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
    權數 FWPM_WEIGHT_RANGE_IKE_EXEMPTIONS

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

  1. 呼叫 IPsecSaContextCreate0,其中 outboundTraffic 參數,其中包含 IP 位址為 1.1.1.1 & 2.2.2.2,ipsecFilterId 為上面新增的輸出傳輸層 IPsec 圖說文字篩選器的 LUID。
  2. 呼叫 IPsecSaContextGetSpi0,其中包含從 IPsecSaContextCreate0傳回之內容標識符的 id 參數,以及包含 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 金鑰處理

內建圖說文字標識碼

篩選圖層標識碼

FWPM_ACTION0