2019-07-09 01:31:18 來自:61.64.208.10
 回覆
1樓. 回覆 : 324 時間 : 2022-03-14 19:28:34
NAT 後 Windows 上 L2TP/IPSec 的 VPN 錯誤 809
事實證明,該問題已為人所知,並在文章https://support.microsoft.com/en-us/kb/926179中進行了描述。默認情況下,Windows 內置 VPN 客戶端不支持通過 NAT 的 L2TP/IPsec 連接。這是因為 IPsec 使用ESP(封裝安全負載)來加密數據包,而 ESP 不支持PAT(端口地址轉換)。如果您想使用 IPSec 進行通信,Microsoft 建議在 VPN 服務器上使用公共 IP 地址。
但也有一種解決方法。您可以通過啟用對NAT-T協議的支持來解決此缺點,該協議允許您將 ESP 50 數據包封裝在端口 4500 上的 UDP 數據包中。默認情況下,幾乎所有操作系統(iOS、Android、Linux)都啟用了 NAT-T,除了視窗。
如果 L2TP/IPsec VPN 服務器位於 NAT 設備後面,為了正確通過 NAT 連接外部客戶端,您必須對服務器和客戶端的註冊表進行一些更改,以允許 L2TP 和 NAT-T 的 UDP 數據包封裝IPsec 中的支持。
- 打開註冊表編輯器 (
regedit.exe
) 並轉到以下註冊表項:
- Windows 10/8.1/Vista 和 Windows Server 2016/2012R2/2008R2 — HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesPolicyAgent
- Windows XP/Windows Server 2003 — HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesIPSec
- 創建一個名為AssumeUDPEncapsulationContextOnSendRule且值為2的DWORD參數;注意。可能的 AssumeUDPEncapsulationContextOnSendRule 值為:
- 0 –(默認值)表示服務器連接到 Internet 沒有 NAT;
- 1 – VPN 服務器位於 NAT 設備後面;
- 2 — VPN 服務器和客戶端都在 NAT 後面。
- 只需重新啟動計算機並確保已成功建立 VPN 隧道
[警告] 如果 Windows VPN 服務器和客戶端都在 NAT 之後,您需要在兩台設備上更改此設置。
此外,您可以使用PowerShell cmdlet 對註冊表進行更改:
Set-ItemProperty -Path "HKLM:SYSTEMCurrentControlSetServicesPolicyAgent" -Name "AssumeUDPEncapsulationContextOnSendRule" -Type DWORD -Value 2 –Force;
啟用 NAT-T 支持後,您將能夠通過 NAT(包括雙重 NAT)從客戶端成功連接到 VPN 服務器。
2樓. 回覆 : 324 時間 : 2022-03-14 19:27:57
來自同一 LAN 的多個 L2TP VPN 連接
還有另一個有趣的 VPN 錯誤。如果您的本地網絡有幾台 Windows 計算機,則您不能同時建立多個到外部 L2TP/IPSec VPN 服務器的連接。如果您嘗試從另一台計算機(使用來自不同設備的活動 VPN 隧道)連接到同一 VPN 服務器,則會出現錯誤代碼 809 或 789:
錯誤 789:L2TP 連接嘗試失敗,因為安全層在與刪除計算機的初始協商期間遇到處理錯誤。
有趣的是,這個問題只發生在 Windows 設備上。在同一個本地網絡的 Linux/MacOS/Android 設備上,不存在此類問題。您可以輕鬆地同時從多個設備連接到 VPN L2TP 服務器。
據 TechNet 稱,該問題與 Windows 上 L2TP/IPSec 客戶端的錯誤實現有關(多年未修復)。
要修復此錯誤,您需要更改HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesRasManParameters註冊表項中的兩個註冊表參數並重新啟動計算機:
- AllowL2TPWeakCrypto – 更改為00000001(允許弱加密算法,對於 L2TP/IPSec,使用 MD5 和 DES 算法);
- ProhibitIPSec – 更改為00000000(啟用 IPsec 加密,通常被某些 VPN 客戶端或系統工具禁用)。
運行以下命令以更改應用這些註冊表更改:
reg add "HKEY_LOCAL_MACHINESystemCurrentControlSetServicesRasmanParameters" /v AllowL2TPWeakCrypto /t REG_DWORD /d 1 /f
reg add "HKEY_LOCAL_MACHINESystemCurrentControlSetServicesRasmanParameters" /v ProhibitIpSec /t REG_DWORD /d 0 /f
這支持通過共享公共 IP 地址在 Windows 上進行並發 L2TP/IPSec VPN 連接(適用於從 Windows XP 到 Windows 10 的所有版本)。
3樓. 回覆 : 324 時間 : 2022-03-14 19:25:00
在 NAT 後面配置 L2TP/IPSec VPN 連接,VPN 錯誤代碼 809
由於在 iOS 中禁用 PPTP VPN 支持,我的一位客戶決定將運行 Windows Server 2012 R2 的 VPN 服務器從 PPTP 重新配置為 L2TP/IPSec。來自 LAN 內部的內部 VPN 客戶端連接到 VPN 服務器沒有任何問題,但是外部 Windows 客戶端在嘗試與 L2TP VPN 服務器建立連接時收到錯誤 809:
無法連接到 L2TP-IPsec-VPN-Server.hostname
由於遠程服務器沒有響應,無法建立您的計算機和 VPN 服務器之間的網絡連接。這可能是因為您的計算機和遠程服務器之間的網絡設備之一(例如防火牆、NAT、路由器等)未配置為允許 VPN 連接。請聯繫您的管理員或您的服務提供商以確定可能導致問題的設備。
在其他 Windows 版本中,連接錯誤800、794或809可能表示相同的問題。
值得注意的是,VPN 服務器在 NAT 後面,路由器配置為轉發L2TP 端口:
UDP 1701 — 第 2 層轉發協議 (L2F) 和第 2 層隧道協議 (L2TP)
UDP 500
UDP 4500 NAT-T – IPSec 網絡地址轉換器遍歷
協議 50 ESP
這些端口也在用於 VPN 連接的Windows 防火牆規則中打開。那些,使用經典配置。內置的 Windows VPN 客戶端用於連接。
NAT 後 Windows 上 L2TP/IPSec 的 VPN 錯誤 809
事實證明,該問題已為人所知,並在文章https://support.microsoft.com/en-us/kb/926179中進行了描述。默認情況下,Windows 內置 VPN 客戶端不支持通過 NAT 的 L2TP/IPsec 連接。這是因為 IPsec 使用ESP(封裝安全負載)來加密數據包,而 ESP 不支持PAT(端口地址轉換)。如果您想使用 IPSec 進行通信,Microsoft 建議在 VPN 服務器上使用公共 IP 地址。
但也有一種解決方法。您可以通過啟用對NAT-T協議的支持來解決此缺點,該協議允許您將 ESP 50 數據包封裝在端口 4500 上的 UDP 數據包中。默認情況下,幾乎所有操作系統(iOS、Android、Linux)都啟用了 NAT-T,除了視窗。
如果 L2TP/IPsec VPN 服務器位於 NAT 設備後面,為了正確通過 NAT 連接外部客戶端,您必須對服務器和客戶端的註冊表進行一些更改,以允許 L2TP 和 NAT-T 的 UDP 數據包封裝IPsec 中的支持。
- 打開註冊表編輯器 (
regedit.exe
) 並轉到以下註冊表項:
- Windows 10/8.1/Vista 和 Windows Server 2016/2012R2/2008R2 — HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesPolicyAgent
- Windows XP/Windows Server 2003 — HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesIPSec
- 創建一個名為AssumeUDPEncapsulationContextOnSendRule且值為2的DWORD參數;注意。可能的 AssumeUDPEncapsulationContextOnSendRule 值為:
- 0 –(默認值)表示服務器連接到 Internet 沒有 NAT;
- 1 – VPN 服務器位於 NAT 設備後面;
- 2 — VPN 服務器和客戶端都在 NAT 後面。
- 只需重新啟動計算機並確保已成功建立 VPN 隧道
[警告] 如果 Windows VPN 服務器和客戶端都在 NAT 之後,您需要在兩台設備上更改此設置。
此外,您可以使用PowerShell cmdlet 對註冊表進行更改:
Set-ItemProperty -Path "HKLM:SYSTEMCurrentControlSetServicesPolicyAgent" -Name "AssumeUDPEncapsulationContextOnSendRule" -Type DWORD -Value 2 –Force;
啟用 NAT-T 支持後,您將能夠通過 NAT(包括雙重 NAT)從客戶端成功連接到 VPN 服務器。
4樓. 回覆 : 324 時間 : 2022-03-14 15:54:44
您無法連線到 L2TP/IPsec 伺服器在 Windows 的內嵌壓縮 7 NAT-T 裝置背後的修正:
Windows Embedded Compact 7
簡介
本文將告訴您無法連線到 L2TP/IPsec 伺服器在 Windows 的內嵌壓縮 7 NAT-T 裝置背後的問題。 有可以解決這個問題的更新。 在您安裝此更新程式之前,必須安裝此產品的所有先前發行之更新程式。
徵狀
試想下列案例:
在這個案例中,您從這個裝置,連線到 VPN 伺服器之後,您無法連線到 L2TP/IPsec 伺服器 NAT-T 裝置後方。
解決方案
若要解決這個問題,安裝這個更新。 在安裝此更新之後,您可以在登錄中使用新的AssumeUDPEncapsulationContextOnSendRule值,來支援連線至 Windows 內嵌的精簡 7 基礎裝置上 NAT-T 裝置背後的 L2TP/IPsec 伺服器項目。 AssumeUDPEncapsulationContextOnSendRule值位於下列登錄子機碼下:
HKEY_LOCAL_MACHINECommL2TP1Parms 您可以設定下列值:
-
如果您設定的AssumeUDPEncapsulationContextOnSendRule值為0,裝置無法建立與伺服器位於 NAT 裝置後面的安全性關聯。 這是預設值。
-
如果您設定的AssumeUDPEncapsulationContextOnSendRule值為1,裝置就可以建立與伺服器位於 NAT 裝置後面的安全性關聯。
-
如果您設定的AssumeUDPEncapsulationContextOnSendRule值為2時,裝置可以建立安全性關聯,如果伺服器和裝置都位於 NAT 裝置。
您也需要在OSDesign.reg檔案中設定下列的登錄設定。 這可讓系統檢查AssumeUDPEncapsulationContextOnSendRule值。
;刪除登錄值的"UseIPSec",且在 common.reg 中設定了下列的設定
[HKEY_LOCAL_MACHINECommL2TP1Parms] "UseIPSec"=-
5樓. 回覆 : 324 時間 : 2022-03-14 15:53:00
設定 NAT-T 裝置背後的 L2TP/IPsec 伺服器
本文說明如何在 NAT-T 裝置背後設定 L2TP/IPsec 伺服器。
適用于: Windows 10-all edition,Windows Server 2012 R2
原始 KB 編號: 926179
摘要
重要
這個章節、方法或工作包含修改登錄的步驟。 然而,不當修改登錄可能會發生嚴重的問題。 因此,請務必謹慎地依照這些步驟執行。 為了有多一層保護,請先備份登錄再進行修改。 如此一來,您就可以在發生問題時還原登錄。 如需如何備份及還原登錄的詳細資訊,請參閱如何在 Windows 中備份及還原登錄。
依預設,Windows Vista 和 Windows Server 2008 不支援網際網路通訊協定安全性 (IPsec) 網路位址轉譯 (nat) 遍歷 (NAT-T) 安全性關聯至位於 NAT 裝置背後的伺服器。 如果虛擬私人網路 (VPN) 伺服器之後是 NAT 裝置,則 Windows Vista 或 Windows server 2008 型 VPN 用戶端電腦無法建立第2層隧道通訊協定 (L2TP) /IPsec 連線至 VPN 伺服器。 此案例包括執行 Windows Server 2008 和 Windows Server 2003 的 VPN 伺服器。
由於 NAT 裝置轉譯網路流量的方式,在下列情況下,您可能會遇到意想不到的結果:
- 您將伺服器置於 NAT 裝置之後。
- 您可以使用 IPsec NAT-T 環境。
如果您必須使用 IPsec 進行通訊,請將公用 IP 位址用於您可以從網際網路連線的所有伺服器。 如果您必須將伺服器放在 NAT 裝置後面,然後使用 IPsec NAT-T 環境,您可以在 VPN 用戶端電腦和 VPN 伺服器上變更登錄值,以啟用通訊。
設定 AssumeUDPEncapsulationCoNtextOnSendRule 登錄機碼
若要建立及設定 AssumeUDPEncapsulationCoNtextOnSendRule 登錄值,請遵循下列步驟:
-
以管理員群組成員的使用者身分登入 Windows Vista 用戶端電腦。
-
選取 [啟動 > 所有程式 > 附件 > 的 執行],輸入 regedit,然後選取 [確定]。 如果螢幕上顯示 [ 使用者帳戶控制 ] 對話方塊,並提示您提升系統管理員權杖,請選取 [ 繼續]。
-
找出並選取下列登錄子機碼:
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesPolicyAgent
注意
您也可以將 AssumeUDPEncapsulationCoNtextOnSendRule DWORD 值套用至 Microsoft Windows XP Service Pack 2 (SP2) 型 VPN 用戶端電腦。 若要這麼做,請找到並選取登錄子機碼 HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesIPSec
。
-
在 [ 編輯 ] 功能表上,指向 [ 新增],然後選取 [ DWORD (32-位) 值。
-
輸入 AssumeUDPEncapsulationCoNtextOnSendRule,然後按 enter。
-
以滑鼠右鍵按一下 [ AssumeUDPEncapsulationCoNtextOnSendRule],然後選取 [ 修改]。
-
在 [ 數值資料 ] 方塊中,輸入下列其中一個值:
-
0
其為預設值。 當其設為0時,Windows 無法建立與位於 NAT 裝置背後之伺服器的安全性關聯。
-
1
當其設為1時,Windows 可以建立與位於 NAT 裝置背後之伺服器的安全性關聯。
-
第
當它設定為2時,當伺服器和 VPN 用戶端電腦 (Windows Vista 或 Windows server 2008) 都位於 NAT 裝置之後時,Windows 可以建立安全性關聯。
-
選取 [確定],然後退出登錄編輯程式。
-
重新啟動電腦。
6樓. 回覆 : 324 時間 : 2019-07-09 01:31:52
如附件