トランスポート モード

トランスポート モードの IPsec ポリシー シナリオでは、一致するすべてのトラフィックに対して IPsec トランスポート モード保護が必要です。 一致するクリア テキスト トラフィックは、IKE または AuthIP ネゴシエーションが正常に完了するまで破棄されます。 ネゴシエーションが失敗した場合、対応する IP アドレスとの接続は切断されたままになります。

トランスポート モードのシナリオの例として、「IPsec トランスポート モードを使用して、ICMP を除くすべてのユニキャスト データ トラフィックをセキュリティで保護する」があります。

この例をプログラムで実装するには、次の WFP 構成を使用します。

FWPM_LAYER_IKEEXT_V{4|6} で MM ネゴシエーション ポリシー を設定する

  1. 次の MM ポリシー プロバイダー コンテキストのいずれかまたは両方を追加します。

    • IKE の場合、種類が FWPM_IPSEC_IKE_MM_CONTEXTのポリシー プロバイダー コンテキスト。
    • AuthIP の場合、種類が FWPM_IPSEC_AUTHIP_MM_CONTEXTのポリシー プロバイダー コンテキスト。

    手記

    共通キーモジュールがネゴシエートされ、対応する MM ポリシーが適用されます。 IKE と AuthIP の両方がサポートされている場合は、AuthIP が優先されるキーモジュールです。

  2. 手順 1 で追加したコンテキストごとに、次のプロパティを含むフィルターを追加します。

    Filter プロパティ 価値
    フィルター条件 空。 すべてのトラフィックがフィルターと一致します。
    providerContextKey 手順 1 で追加された MM プロバイダー コンテキストの GUID。

FWPM_LAYER_IPSEC_V{4|6} で QM と EM ネゴシエーション ポリシーの を設定する

  1. 次の QM トランスポート モード ポリシー プロバイダー コンテキストのいずれかまたは両方を追加します。

    • IKE の場合、種類が FWPM_IPSEC_IKE_QM_TRANSPORT_CONTEXTのポリシー プロバイダー コンテキスト。
    • AuthIP の場合、種類が FWPM_IPSEC_AUTHIP_QM_TRANSPORT_CONTEXTのポリシー プロバイダー コンテキスト。 このコンテキストには、必要に応じて、AuthIP 拡張モード (EM) ネゴシエーション ポリシーを含めることができます。

    手記

    共通キー・モジュールがネゴシエートされ、対応する QM ポリシーが適用されます。 IKE と AuthIP の両方がサポートされている場合は、AuthIP が優先されるキーモジュールです。

  2. 手順 1 で追加したコンテキストごとに、次のプロパティを含むフィルターを追加します。

    Filter プロパティ 価値
    フィルター条件 空。 すべてのトラフィックがフィルターと一致します。
    providerContextKey 手順 1 で追加された QM プロバイダー コンテキストの GUID。

at FWPM_LAYER_INBOUND_TRANSPORT_V{4|6} では、パケットごとの受信フィルター規則を設定

  1. 次のプロパティを含むフィルターを追加します。

    Filter プロパティ 価値
    フィルター条件の FWPM_CONDITION_IP_LOCAL_ADDRESS_TYPE NlatUnicast する
    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
    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

サンプル コード: トランスポート モード の使用

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

プロバイダー コンテキストの種類

フィルター条件

FWPM_ACTION0

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