次の方法で共有


ネゴシエーション探索トランスポート モード

ネゴシエーション探索トランスポート モード IPsec ポリシー シナリオでは、一致するすべての受信トラフィックに対して IPsec トランスポート モード保護が必要であり、送信トラフィックを照合するための IPsec 保護が要求されます。 そのため、送信接続はクリア テキストへのフォールバックを許可されますが、受信接続にはフォールバックできません。

このポリシーでは、ホスト マシンが新しい送信接続を試み、トラフィックに一致する既存の IPsec SA がない場合、ホストは同時にクリア テキストでパケットを送信し、IKE または AuthIP ネゴシエーションを開始します。 ネゴシエーションが成功した場合、接続は IPsec で保護された状態にアップグレードされます。 それ以外の場合、接続はクリア テキストのままです。 IPsec で保護されると、接続をクリア テキストにダウングレードすることはできません。

ネゴシエーション探索トランスポート モードは、通常、IPsec 対応マシンと IPsec 非対応マシンの両方を含む環境で使用されます。

考えられるネゴシエーション探索トランスポート モード シナリオの例として、「ICMP を除くすべてのユニキャスト データ トラフィックをセキュリティで保護し、IPsec トランスポート モードを使用して、ネゴシエーション検出を有効にする」があります。

この例をプログラムで実装するには、次の 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 トランスポート モード ポリシー プロバイダー コンテキストのいずれかまたは両方を追加し、IPSEC_POLICY_FLAG_ND_SECURE フラグを設定します。

    • 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。

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}
    rawContext する FWPM_CONTEXT_IPSEC_INBOUND_PERSIST_CONNECTION_SECURITY
  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}
    rawContext する FWPM_CONTEXT_IPSEC_OUTBOUND_NEGOTIATE_DISCOVER
  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_ALE_AUTH_RECV_ACCEPT_V{4|6} で、接続ごとの受信フィルター規則を設定

  1. 次のプロパティを含むフィルターを追加します。 このフィルターでは、受信接続の試行が IPsec によって保護されている場合にのみ許可されます。

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

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

ALE レイヤーの する

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

フィルター条件

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

FWPM_ACTION0

FWPM_PROVIDER_CONTEXT_TYPE