次の方法で共有


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

ネゴシエーション探索トランスポート モード 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. 次のプロパティを持つフィルターを追加して、ICMP トラフィックを IPsec から除外します。

    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
    action.type FWP_ACTION_CALLOUT_TERMINATING
    action.calloutKey FWPM_CALLOUT_IPSEC_OUTBOUND_TRANSPORT_V{4|6}
    rawContext FWPM_CONTEXT_IPSEC_OUTBOUND_NEGOTIATE_DISCOVER
  2. 次のプロパティを持つフィルターを追加して、ICMP トラフィックを IPsec から除外します。

    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_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. 次のプロパティを持つフィルターを追加して、ICMP トラフィックを IPsec から除外します。

    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

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

ALE レイヤー

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

フィルター条件

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

FWPM_ACTION0

FWPM_PROVIDER_CONTEXT_TYPE