次の方法で共有


手動 SA

手動セキュリティ アソシエーション (SA) IPsec ポリシー シナリオでは、IPsec SA を直接指定してネットワーク トラフィックをセキュリティで保護することで、呼び出し元は組み込みの IPsec キーリング モジュール (IKE および AuthIP) をバイパスできます。

考えられる手動 SA シナリオの例として、「IPsec トランスポート モードを使用して ICMP を除く IP アドレス 1.1.1.1.1 & 2.2.2 間のすべてのユニキャスト データ トラフィックをセキュリティで保護する IPsec SA ペアを追加する」があります。

Note

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 を呼び出します。outboundTraffic パラメーターには IP アドレスが 1.1.1.1 & 2.2.2、ipsecFilterId が送信トランスポート層の IPsec 吹き出しフィルターの LUID として追加されています。
  2. IPsecSaContextCreate0 から返されたコンテキスト ID を含む id パラメーターと、IP アドレスを含む getSpi パラメーターを 1.1.1.1 2.2.2.2&、ipsecFilterId を受信トランスポート層 IPsec コールアウト フィルターの LUID として、IPsecSaContextGetSpi0 を呼び出します。 返される SPI 値は、ローカル コンピューターでは受信 SA SPI として、対応するリモート コンピューターでは送信 SA SPI として使用されます。 どちらのマシンも、SPI 値を交換するために帯域外の手段を使用する必要があります。
  3. IPsecSaContextAddInbound0 を呼び出します。id パラメーターには、IPsecSaContextCreate0 から返されたコンテキスト ID と、受信 SA バンドルのプロパティ (受信 SA SPI、変換の種類、アルゴリズムの種類、キーなど) を記述する inboundBundle パラメーターが含まれます。
  4. IPsecSaContextAddOutbound0 を呼び出します。id パラメーターには、IPsecSaContextCreate0 から返されたコンテキスト ID と、送信 SA バンドルのプロパティ (送信 SA SPI、変換の種類、アルゴリズムの種類、キーなど) を記述する outboundBundle パラメーターが含まれます。

サンプル コード: 手動 SA キー設定

組み込みの吹き出し識別子

レイヤー識別子のフィルター処理

FWPM_ACTION0