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 클라이언트는 연결에 사용됩니다.
PPTP를 통해 동일한 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을 사용하려면 VPN 서버에서 공용 IP 주소를 사용하는 것이 좋습니다.
그러나 해결 방법도 있습니다. NAT-T 지원을 활성화하면 이 단점을 해결할 수 있습니다. 포트 4500의 UDP 패킷에 ESP 50 패킷을 캡슐화할 수 있는 프로토콜입니다. NAT-T는 Windows를 제외한 거의 모든 운영 체제(iOS, Android, Linux)에서 기본적으로 활성화되어 있습니다.
L2TP/IPsec VPN 서버가 NAT 장치 뒤에 있는 경우 NAT를 통해 외부 클라이언트를 올바르게 연결하려면 서버와 클라이언트 측 모두에서 레지스트리를 일부 변경하여 L2TP 및 NAT-T에 대한 UDP 패킷 캡슐화를 허용해야 합니다. IPsec에서 지원합니다.
- 레지스트리 편집기(
regedit.exe
) 다음 레지스트리 키로 이동합니다.- Windows 10/8.1/Vista 및 Windows Server 2016/2012R2/2008R2 — HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\PolicyAgent
- Windows XP/Windows Server 2003 — HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\IPSec
- DWORD 생성 이름이 AssumeUDPEncapsulationContextOnSendRule인 매개변수 및 값 2; 참고 . 가능한 AssumeUDPEncapsulationContextOnSendRule 값은 다음과 같습니다.
- 0 – (기본값)은 서버가 NAT 없이 인터넷에 연결되어 있음을 나타냅니다.
- 1 – VPN 서버가 NAT 장치 뒤에 있습니다.
- 2 — VPN 서버와 클라이언트 모두 NAT 뒤에 있습니다.
- 컴퓨터를 다시 시작하고 VPN 터널이 성공적으로 설정되었는지 확인하세요.
또한 PowerShell cmdlet을 사용하여 레지스트리를 변경할 수 있습니다.
Set-ItemProperty -Path "HKLM:SYSTEM\CurrentControlSet\Services\PolicyAgent" -Name "AssumeUDPEncapsulationContextOnSendRule" -Type DWORD -Value 2 –Force;
NAT-T 지원을 활성화하면 NAT(이중 NAT 포함)를 통해 클라이언트에서 VPN 서버에 성공적으로 연결할 수 있습니다.
경우에 따라 VPN이 제대로 작동하려면 TCP 1701에 대한 추가 방화벽 규칙을 활성화해야 합니다(일부 L2TP 구현에서는 이 포트가 UDP 1701과 함께 사용됨). NAT-T는 이전 Windows 10 빌드(예:10240, 1511, 1607)에서 올바르게 작동하지 않았습니다. 이전 Windows 버전이 있는 경우 Windows 10 빌드를 업그레이드하는 것이 좋습니다.동일한 LAN에서 여러 L2TP VPN 연결
또 다른 흥미로운 VPN 버그가 있습니다. 로컬 네트워크에 여러 Windows 컴퓨터가 있는 경우 외부 L2TP/IPSec VPN 서버에 대해 둘 이상의 동시 연결을 설정할 수 없습니다. 다른 컴퓨터(다른 장치의 활성 VPN 터널 사용)에서 동일한 VPN 서버에 연결하려고 하면 오류 코드 809 또는 789가 나타납니다.
Error 789: The L2TP connection attempt failed because the security layer encountered a processing error during initial negotiations with the remove computer.흥미롭게도 이 문제는 Windows 장치에서만 발생합니다. 동일한 로컬 네트워크에 있는 Linux/MacOS/Android 장치에서는 이러한 문제가 없습니다. 동시에 여러 장치에서 VPN L2TP 서버에 쉽게 연결할 수 있습니다.
TechNet에 따르면 이 문제는 Windows에서 L2TP/IPSec 클라이언트의 잘못된 구현과 관련이 있습니다(수년 동안 수정되지 않음).
이 버그를 수정하려면 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\RasMan\Parameters에서 두 개의 레지스트리 매개변수를 변경해야 합니다. 레지스트리 키를 누르고 컴퓨터를 다시 시작하십시오.
- AllowL2TPWeakCrypto – 00000001로 변경 (약한 암호화 알고리즘 허용, L2TP/IPSec의 경우 MD5 및 DES 알고리즘 사용)
- IPSec 금지 – 00000000으로 변경 (일부 VPN 클라이언트 또는 시스템 도구에서 종종 비활성화되는 IPsec 암호화 활성화).
이러한 레지스트리 변경 사항을 적용하려면 다음 명령을 실행하십시오.
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
이를 통해 공유 공용 IP 주소를 통해 Windows에서 동시 L2TP/IPSec VPN 연결을 지원할 수 있습니다(Windows XP에서 Windows 10까지 모든 버전에서 작동).