NAT デバイスの背後にあるマシン間のトランスポート モード IPsec が機能しない

NAT デバイスの背後にあるマシン間のトランスポート モード IPsec が機能しない

私のシナリオでは、いかなる種類の VPN も使用せず、RRAS も使用しません。

異なる Nat デバイスの背後にある 2 台の Windows 10 マシン (両方とも 1709 が完全にパッチ適用済み) 間で IPsec 接続を確立しようとしています。

Windows ファイアウォールを通じて、両方のマシンに 2 つのトランスポート ルールを作成しました。これらのルールは Smb プロトコルに関連しています。

マシンは両方とも Nat の背後にあり、2 つの Nat デバイスはインターネットを介して接続されています。

両方のマシンにレジストリ キー「AssumeUDPEncapsulationContextOnSendRule」を作成し、両方の PC でその値を「2」に設定しました。

アクセスしようとしているサーバーの前にある Nat デバイスで、UDP ポート 500 と 4500、およびすべての Smb 関連ポートをサーバー自体に転送しました。

両方の PC で、Windows ファイアウォールを介して受信および送信 UDP ポート 500、4500 を許可し、さらにサーバー PC での接続における Smb の「エッジ トラバーサル」も許可しました。

サーバーにリモートでアクセスしようとすると、クイック モード セキュリティ アソシエーションが作成されますが、接続が機能しません。(コマンド Get-NetIpsecQuickmodeSa の出力は正常のようです。つまり、UDP カプセル化が正しく作成されています)

クライアントが NAT の背後にあり、サーバーがパブリック IP を持っている場合、接続は機能しますが、クライアントがパブリック IP を持ち、サーバーが NAT の背後にある場合、またはクライアントとサーバーの両方が NAT の背後にある場合は、接続は機能しません。

無視している設定がいくつかあるはずです。

この問題の解決を手伝ってください。

どうもありがとう

答え1

無視していた設定がいくつかあると確信していましたが、次のとおりです。

Set-NetFirewallSetting -AllowIPsecThroughNAT 両方

レジストリ設定「AssumeUDPEncapsulationContextOnSendRule」は、古い Windows IPsec ポリシー エージェント サービスに関連しています。

上記の Powershell コマンドは、Windows ファイアウォールに対して同じ動作を許可し、具体的にはレジストリ値「IPsecThroughNAT」を「2」に設定します。

これですべてが期待どおりに動作するようになりました。最初からそうであるべきだったので、これがデフォルト設定になるはずです。

答え2

Windows は、NAT デバイスの背後にあるサーバーをサポートしていない可能性があります。サーバーにパブリック IP アドレスが必要です。次のレジストリ キーを追加することで回避できます。

レジストリ サブキーの場所: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\PolicyAgent DWORD 値の名前: AssumeUDPEncapsulationContextOnSendRule DWORD 値のデータ: 2

ソース:

https://support.microsoft.com/en-us/help/926179/windows で nat-t デバイスの背後にある l2tp ipsec サーバーを構成する方法

http://www.itdroplets.com/l2tp-vpn-not-working-in-windows/

関連情報