Computer >> Hướng Dẫn Máy Tính >  >> Hệ Thống >> Máy Chủ Windows

Cấu Hình Kết Nối VPN L2TP/IPSec Sau NAT, Lỗi VPN 809

Do việc ngừng hỗ trợ VPN PPTP trên iOS, một khách hàng của tôi quyết định cấu hình lại máy chủ VPN chạy Windows Server 2012 R2 từ PPTP sang L2TP/IPSec. Client VPN nội bộ từ bên trong LAN kết nối đến máy chủ VPN không vấn đề gì, tuy nhiên client Windows bên ngoài nhận lỗi 809 khi cố thiết lập kết nối với máy chủ VPN L2TP:

Can't connect to L2TP-IPsec-VPN-Server.hostname

The network connection between your computer and the VPN server could not be established because the remote server is not responding. This could be because one of the network devices (e.g. firewalls, NAT, routers, etc) between your computer and the remote server is not configured to allow VPN connections. Please contact your Administrator or your service provider to determine which device may be causing the problem.

Cấu Hình Kết Nối VPN L2TP/IPSec Sau NAT, Lỗi VPN 809

Trong các phiên bản Windows khác, lỗi kết nối 800, 794 hoặc 809 có thể chỉ cùng vấn đề.

Đáng chú ý rằng máy chủ VPN nằm sau NAT, và router được cấu hình chuyển tiếp cổng L2TP:

  • UDP 1701 — Layer 2 Forwarding Protocol (L2F) & Layer 2 Tunneling Protocol (L2TP)
  • UDP 500
  • UDP 4500 NAT-T – IPSec Network Address Translator Traversal
  • Protocol 50 ESP

Các cổng này cũng được mở trong quy tắc Windows Firewall cho kết nối VPN. Đó là cấu hình kinh điển. Client VPN tích hợp Windows được dùng để kết nối.

Nếu bạn kết nối đến cùng máy chủ VPN qua PPTP, kết nối được thiết lập thành công.

Lỗi VPN 809 Cho L2TP/IPSec Trên Windows Sau NAT

Như đã rõ, vấn đề này đã được biết và mô tả trong bài https://support.microsoft.com/en-us/kb/926179. Client VPN tích hợp Windows không hỗ trợ mặc định kết nối L2TP/IPsec qua NAT. Điều này vì IPsec dùng ESP (Encapsulating Security Payload) để mã hóa gói tin, và ESP không hỗ trợ PAT (Port Address Translation). Nếu bạn muốn dùng IPSec để giao tiếp, Microsoft khuyến nghị dùng địa chỉ IP công khai trên máy chủ VPN.

Nhưng cũng có giải pháp thay thế. Bạn có thể khắc phục nhược điểm này bằng cách bật hỗ trợ cho giao thức NAT-T, cho phép đóng gói gói ESP 50 trong gói UDP trên cổng 4500. NAT-T được bật mặc định trong hầu hết hệ điều hành (iOS, Android, Linux) trừ Windows.

Nếu máy chủ VPN L2TP/IPsec nằm sau thiết bị NAT, để kết nối client bên ngoài qua NAT đúng cách, bạn phải thay đổi registry cả trên server và client để cho phép đóng gói gói UDP cho L2TP và hỗ trợ NAT-T trong IPsec.

  • Mở Registry Editor (regedit.exe) và đi đến khóa registry sau:
    • Windows 10/8.1/Vista và Windows Server 2016/2012R2/2008R2 — HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\PolicyAgent
    • Windows XP/Windows Server 2003 — HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\IPSec
  • Tạo tham số DWORD tên AssumeUDPEncapsulationContextOnSendRule với giá trị 2;Cấu Hình Kết Nối VPN L2TP/IPSec Sau NAT, Lỗi VPN 809 Lưu ý. Các giá trị có thể của AssumeUDPEncapsulationContextOnSendRule:
    • 0 – (giá trị mặc định) cho rằng server kết nối Internet không qua NAT;
    • 1 – máy chủ VPN nằm sau thiết bị NAT;
    • 2 — cả máy chủ VPN và client đều sau NAT.
  • Chỉ cần khởi động lại máy tính và đảm bảo đường hầm VPN được thiết lập thành công

[alert] Nếu cả máy chủ VPN Windows và client đều sau NAT, bạn cần thay đổi cài đặt này trên cả hai thiết bị.

Cũng có thể dùng cmdlet PowerShell để thay đổi registry:

Set-ItemProperty -Path "HKLM:SYSTEM\CurrentControlSet\Services\PolicyAgent" -Name "AssumeUDPEncapsulationContextOnSendRule" -Type DWORD -Value 2 –Force;

Sau khi bật hỗ trợ NAT-T, bạn sẽ có thể kết nối thành công đến máy chủ VPN từ client qua NAT (kể cả double NAT).

Nhiều Kết Nối L2TP VPN Từ Cùng Một LAN

Có một bug VPN thú vị khác. Nếu mạng cục bộ của bạn có vài máy tính Windows, bạn không thể thiết lập nhiều hơn một kết nối đồng thời đến máy chủ VPN L2TP/IPSec bên ngoài. Nếu bạn cố kết nối đến cùng máy chủ VPN từ máy tính khác (với đường hầm VPN đang hoạt động từ thiết bị khác), mã lỗi 809 hoặc 789 sẽ xuất hiện:

Error 789: The L2TP connection attempt failed because the security layer encountered a processing error during initial negotiations with the remove computer.

Thú vị là vấn đề này chỉ xảy ra trên thiết bị Windows. Trên Linux/MacOS/Android trong cùng mạng cục bộ, không có vấn đề này. Bạn dễ dàng kết nối đến máy chủ VPN L2TP từ nhiều thiết bị cùng lúc.

Theo TechNet, vấn đề liên quan đến triển khai không đúng client L2TP/IPSec trên Windows (chưa sửa được nhiều năm).

Để sửa bug này, bạn cần thay đổi hai tham số registry trong khóa HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\RasMan\Parameters và khởi động lại máy tính:

  • AllowL2TPWeakCrypto – đổi thành 00000001 (cho phép thuật toán mã hóa yếu, cho L2TP/IPSec dùng thuật toán MD5 và DES);
  • ProhibitIPSec – đổi thành 00000000 (bật mã hóa IPsec, thường bị tắt bởi một số VPN client hoặc công cụ hệ thống).

Cấu Hình Kết Nối VPN L2TP/IPSec Sau NAT, Lỗi VPN 809

Chạy lệnh sau để áp dụng thay đổi registry:

reg add "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Rasman\Parameters" /v AllowL2TPWeakCrypto /t REG_DWORD /d 1 /f
reg add "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Rasman\Parameters" /v ProhibitIpSec /t REG_DWORD /d 0 /f

Điều này cho phép hỗ trợ kết nối VPN L2TP/IPSec đồng thời trên Windows qua địa chỉ IP công khai chia sẻ (hoạt động trên tất cả phiên bản từ Windows XP đến Windows 10).