私のシナリオでは、いかなる種類の 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 サーバーを構成する方法