iOS-এ PPTP VPN সাপোর্ট বন্ধ হয়ে যাওয়ার কারণে, আমার একটি ক্লায়েন্ট Windows Server 2012 R2-এ চলমান VPN সার্ভারকে PPTP থেকে L2TP/IPSec-এ রিকনফিগার করতে সিদ্ধান্ত নিল। ইন্টারনাল VPN ক্লায়েন্টরা LAN থেকে VPN সার্ভারের সাথে কোনো সমস্যা ছাড়া কানেক্ট করতে পারল, তবে এক্সটার্নাল Windows ক্লায়েন্টরা L2TP VPN সার্ভারের সাথে কানেকশন প্রতিষ্ঠা করার চেষ্টা করলে এরর 809 পেল:
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.

অন্য Windows ভার্সনে কানেকশন এরর 800, 794 বা 809 একই সমস্যা নির্দেশ করতে পারে।
উল্লেখ্য যে VPN সার্ভারটি NAT-এর পেছনে আছে, এবং রাউটার 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
এই পোর্টগুলো Windows Firewall রুলসেও VPN কানেকশনের জন্য খোলা আছে। অর্থাৎ, ক্লাসিক কনফিগারেশন ব্যবহার করা হয়েছে। বিল্ট-ইন Windows VPN ক্লায়েন্ট ব্যবহার করা হয়েছে কানেকশনের জন্য।
আপনি যদি একই VPN সার্ভারের সাথে PPTP মাধ্যমে কানেক্ট করতে চান, তবে কানেকশন সফলভাবে প্রতিষ্ঠিত হয়।
Windows-এ NAT-এর পেছনে L2TP/IPSec-এর জন্য VPN এরর 809
যে problemiটি খুঁজে পাওয়া গেল, তা ইতিমধ্যে পরিচিত এবং https://support.microsoft.com/en-us/kb/926179 নম্বর আর্টিকেলে বর্ণনা করা আছে। Windows বিল্ট-ইন VPN ক্লায়েন্ট ডিফল্টভাবে NAT এর মাধ্যমে L2TP/IPsec কানেকশন সাপোর্ট করে না। এর কারণ হল IPsec প্যাকেট এনক্রিপ্ট করার জন্য ESP (Encapsulating Security Payload) ব্যবহার করে, এবং ESP PAT (Port Address Translation) সাপোর্ট করে না। আপনি যদি IPSec ব্যবহার করে কমিউনিকেশন করতে চান, Microsoft পাবলিক IP ঠিকানা VPN সার্ভারে ব্যবহার করার পরামর্শ দেয়।
তবে একটি ওয়ার্কঅরাউন্ডও আছে। NAT-T প্রোটোকল সাপোর্ট সক্রিয় করে এই সমস্যাটি সমাধান করা যায়, যা ESP 50 প্যাকেটকে UDP প্যাকেটে এনক্যাপসুলেট করে পোর্ট 4500-এ। প্রায় সকল অপারেটিং সিস্টেমে (iOS, Android, Linux) NAT-T ডিফল্টভাবে সক্রিয় থাকে Windows ছাড়া।
যদি L2TP/IPsec VPN সার্ভার NAT ডিভাই스의 পেছনে থাকে, তবে এক্সটার্নাল ক্লায়েন্টরা NAT এর মাধ্যমে সঠিকভাবে কানেক্ট করতে পারে সেজন্য সার্ভার এবং ক্লায়েন্ট দুদিকে রেজিস্ট্রিতে কিছু পরিবর্তন করতে হবে যাতে L2TP এবং IPsec-এ NAT-T সাপোর্টের জন্য UDP প্যাকেট এনক্যাপসুলেশন অনুমোদিত হয়।
- Registry Editor (
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 টানেল সফলভাবে প্রতিষ্ঠিত হচ্ছে।
[alert] যদি Windows VPN সার্ভার এবং ক্লায়েন্ট দুটোই NAT-এর পেছনে থাকে, তবে এই সেটিং দুদিকে পরিবর্তন করতে হবে।
রেজিস্ট্রি পরিবর্তন করতে 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-এর সাথে সংযোগে ব্যবহার হয়)। পুরনো Windows 10 বিল্ডগুলোর মধ্যে NAT-T সঠিকভাবে কাজ نمی করেছিল, যেমন 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 অ্যালগরিদম ব্যবহৃত হয়);
- ProhibitIPSec – 00000000 এ পরিবর্তন করুন (IPsec এনক্রিপশন সক্রিয় করে, যা প্রায়শই কিছু VPN ক্লায়েন্ট বা সিস্টেম টুল দ্বারা নিষ্ক্রিয় করা হয়)।

রেজিস্ট্রি পরিবর্তন প্রয়োগ করতে নিচের কমান্ড চালান:
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 সব ভার্সনে কাজ করে)।