Nat 裝置後面的電腦之間的傳輸模式 IPsec 無法運作

Nat 裝置後面的電腦之間的傳輸模式 IPsec 無法運作

我的場景不使用任何類型的 VPN,也不使用 RRAS。

我正在嘗試在兩台位於不同 Nat 裝置後面的 Windows 10 電腦(均已完全修補 1709)之間建立 IPsec 連線。

透過Windows防火牆,我在兩台機器上建立了兩條傳輸規則,這些規則與Smb協定相關。

兩台機器都位於一個 Nat 後面,兩個 Nat 裝置透過 Internet 連接。

我在兩台電腦上建立了註冊表項“AssumeUDPEncapsulationContextOnSendRule”,並將兩台電腦上的值設為“2”。

在伺服器前面的 Nat 裝置上,我嘗試將 Udp 連接埠 500 和 4500 以及所有 Smb 相關連接埠轉送到伺服器本身。

在兩台電腦中,我都允許透過 Windows 防火牆、入站和出站 Udp 連接埠 500、4500,甚至允許在伺服器電腦上連接 Smb 的「邊緣遍歷」。

當我嘗試遠端存取伺服器時,會建立快速模式安全關聯,但連線不起作用。 (命令Get-NetIpsecQuickmodeSa的輸出看起來沒問題,即Udp封裝已正確建立)

當用戶端位於 Nat 後面且伺服器具有公共 Ip 時,連線確實有效,但當用戶端具有公共 Ip 且伺服器位於 Nat 後面或用戶端和伺服器都位於 Nat 後面時,連線不起作用。

一定有一些我忽略的設定。

請幫我解決這個問題。

多謝

答案1

我確信有一些設定被我忽略了,那就是:

設定 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/how-to-configure-an-l2tp-ipsec-server-behind-a-nat-t-device-in-windows

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

相關內容