Windows-এ প্রতি-অ্যাপ VPN ট্রিগার বনাম স্প্লিট টানেলিং: কোনটি আলাদা করে
অ্যাপ দিয়ে চালু হওয়া Windows VPN প্রোফাইল কেবল একটি টানেল খোলে। রাউট করা স্প্লিট টানেল ঠিক করে এর ভেতরে কী ঢোকে, এবং দুটিই একটি অ্যাপের জন্য আলাদাভাবে ব্যর্থ হয়।
Windows-এর দুটি সেটআপ সেটিংসে একই রকম দেখায় এবং একদম একইভাবে আচরণ করে না। একটি কপি করা VPN প্রোফাইল যাতে অ্যাপ্লিকেশন ট্রিগার আছে, তাই একটি এক্সিকিউটেবল চালু করলে টানেল উঠে যায়। অন্যটি স্প্লিট-টানেল প্রোফাইল যার রাউট তালিকা দৈবক্রমে তা ঢেকে দেয় যার সাথে ওই অ্যাপ কথা বলে। প্রথমটি বলে টানেল কখন বিদ্যমান। দ্বিতীয়টি বলে কোন প্যাকেট ঢোকে, এবং কেবল দ্বিতীয়টিই মেশিনের বাকি অংশকে ভৌত লিঙ্কে রাখে যখন অ্যাপ সংযুক্ত থাকে।
ট্রিগার জীবনচক্রের নিয়ম, রাউটিংয়ের নিয়ম নয়
Add-VpnConnectionTriggerApplication একটি এক্সিকিউটেবলের পথকে প্রোফাইল নামের সাথে বাঁধে। ওই প্রক্রিয়া শুরু হলে রিমোট অ্যাক্সেস কানেকশন ম্যানেজার প্রোফাইল ডায়াল করে, এবং ট্রিগারের শর্ত শেষ হলে সংযোগ ছিঁড়ে যেতে পারে। ওই বিনিময়ে কিছুই সকেট পরীক্ষা করে না। কমান্ডটির প্রয়োজন উন্নীত শেল, বাইনারির সম্পূর্ণ পথ এবং -Force যখন আপনি বিদ্যমান এন্ট্রি প্রতিস্থাপন করেন তখন প্রয়োজন হয়। নিশ্চিত করুন সংযোগ টিকে আছে এটি দিয়ে: Get-VpnConnectionTrigger প্রম্পটে ভরসা করার বদলে; Microsoft-এর Add-VpnConnectionTriggerApplication রেফারেন্স প্যারামিটার ও উদাহরণ তালিকাভুক্ত করে।
দুটি সীমা “ট্রিগার কিছুই করে না” — এমন বেশিরভাগ প্রতিবেদন ব্যাখ্যা করে। ট্রিগার সব ব্যবহারকারীর প্রোফাইলের চারপাশে তৈরি, তাই প্রোফাইলের পরিধি প্রথম ঠিক করার বিষয়, এবং অ্যাপের পথকে সত্যিই চলা বাইনারির সাথে মিলতে হবে, শর্টকাট বা দ্বিতীয় প্রক্রিয়া তৈরি করা লঞ্চারের সাথে নয়। অন্য সীমাটি ইচ্ছাকৃত: যে নেটওয়ার্ককে Windows বিশ্বস্ত বলে শ্রেণিবদ্ধ করে সেখানে ট্রিগার নিষ্ক্রিয় থাকে, কারণ প্রোফাইলটি অফিসের বাইরে কাজ করার জন্য তৈরি।
Add-VpnConnectionTriggerApplication -Name "APP_VPN" -ApplicationID "C:\Program Files\Vendor\app.exe" -Force
Get-VpnConnectionTrigger -Name "APP_VPN" | Format-List *
Get-VpnConnection -Name "APP_VPN" | Format-List Name,ConnectionStatus,SplitTunneling,AllUserConnection
স্প্লিট টানেল ঠিক করে টানেল দিয়ে কী যায়
স্প্লিট টানেল বন্ধ থাকলে Windows VPN ইন্টারফেসে কম মেট্রিকের শ্রেণিভিত্তিক ডিফল্ট রাউট বসায়। প্রতিটি সকেট তা অনুসরণ করে, ব্রাউজার ও আপডেট সার্ভিসও, তাই ওই কনফিগারেশনে ট্রিগার পুরো মেশিন সরায় যতক্ষণ প্রোফাইল সংযুক্ত থাকে। ট্রিগার তবুও কেবল জীবনচক্রের নিয়ম; প্রভাবের ব্যাসার্ধ রাউট থেকে এসেছে।
স্প্লিট টানেল চালু থাকলে প্রোফাইল কেবল সেই প্রিফিক্স বহন করে যা গেটওয়ে ঠেলে বা যা আপনি VPN ইন্টারফেসে যোগ করেন। বাকি সব ভৌত ডিফল্ট রাউট ব্যবহার করে। এটাই সেই ব্যবস্থা যা মানুষ সাধারণত “একটি অ্যাপ আলাদা নির্গমনপথে” বলে বোঝায়, এবং এটি শুরু থেকে শেষ পর্যন্ত রাউটিংয়ের সিদ্ধান্ত।
Set-VpnConnection -Name "APP_VPN" -SplitTunneling $true
Get-VpnConnection -Name "APP_VPN" | Select-Object SplitTunneling
Get-NetRoute -InterfaceAlias "APP_VPN" | Sort-Object DestinationPrefix
যেখানে রাউট করা বিভাজন আপনার অ্যাপ আলাদা করা থামিয়ে দেয়
সাধারণ ব্যর্থতা হলো এমন গন্তব্য যা টানেলের রাউট তালিকায় কখনও দেখা যায় না। যে অ্যাপ একটি ঠিকানায় সাইন ইন করে পরে CDN থেকে স্ট্রিম করে, বা ডজনখানেক ঘুরতে থাকা এন্ডপয়েন্ট সমাধান করে, কিছু সংযোগ VPN ইন্টারফেসে আর বাকিগুলো Wi-Fi-তে রাখবে। IPv6 আলাদা টেবিল, তাই কেবল IPv4 প্রিফিক্স ঠেলা প্রোফাইল সঠিক দেখাতে পারে যখন অ্যাপের IPv6 ট্রাফিক স্থানীয় থাকে।
দুটি ছোট প্রভাবও সমান গুরুত্বপূর্ণ। সবচেয়ে দীর্ঘ প্রিফিক্স মিল জেতে, তাই আরও নির্দিষ্ট অন-লিঙ্ক রাউট, ম্যানেজমেন্ট হোস্টের জন্য ঠেলা /32, বা দ্বিতীয় অ্যাডাপ্টারের সাবনেট আপনার আগ্রহের ঠিকানার জন্য টানেলকে হারাতে পারে। নাম সমাধানও রাউটিংয়ের আগে ঘটে: প্রোফাইলের DNS সার্ভার বা NRPT নিয়ম নামটি না ঢাকলে অ্যাপ ভৌত অ্যাডাপ্টার দিয়ে সমাধান করে এমন ঠিকানা ডায়াল করতে পারে যা কখনও টানেল করা প্রিফিক্সের ভেতরে ছিল না।
তিন আকার, এবং প্রতিটি কী দেয়
টেবিলটি সেই অংশ যা আমি দেয়ালে সাঁটাতাম, কারণ সিদ্ধান্ত প্রভাবের ব্যাসার্ধ নিয়ে, বৈশিষ্ট্য নিয়ে নয়। অ্যাপের গন্তব্যগুলো স্থির প্রিফিক্স হলে যা আপনি তালিকাভুক্ত করতে পারেন, রাউট করা বিভাজন সবচেয়ে ছোট চিহ্নসহ বিচ্ছিন্নতা দেয়। না হলে, VM বা দ্বিতীয় ডিভাইসের পেছনে ডিফল্ট-রাউট প্রোফাইল একাধিক প্রক্রিয়া সরানোর বিনিময়ে বিচ্ছিন্নতা সৎ রাখে।
| Shape | What starts the tunnel | What enters it | Pick it when |
|---|---|---|---|
| Trigger plus routed split | Process start | Only pushed or added prefixes | The app's endpoints are stable prefixes and the host should stay direct |
| Trigger plus default route | Process start | Everything, machine-wide | You need one exit for all traffic and accept the wider scope |
| Separate VM or device | Guest boot or login | Everything inside that guest | The app's destinations rotate, or the host must keep its own public address |
এর কোনোটিই হোস্টে সকেট-স্তরের বাইন্ডিং দেয় না। Windows-এর ক্লাসিক VPN ক্লায়েন্টে এমন নিয়ম নেই যে এই প্রক্রিয়াকে ওই অ্যাডাপ্টার ব্যবহার করতে হবে; ট্রিগার ও রাউট ফিল্টার আলাদা স্তরে বাস করে, এবং ইন্টারফেস বেছে নেওয়া স্তরটি রাউটিং টেবিল। কোনো গাইড যদি কেবল কপি করা প্রোফাইল থেকে প্রতি-অ্যাপ বলবৎ করার প্রতিশ্রুতি দেয়, জিজ্ঞাসা করুন কোন রাউট বা কোন ফিল্টার কাজটি করছে।
এক পাসে জোড়াটি যাচাই করুন
জীবনচক্র ও রাউটিং আলাদাভাবে পরীক্ষা করুন, এই ক্রমে। অ্যাপ বন্ধ করুন, প্রোফাইল Disconnected জানাচ্ছে নিশ্চিত করুন, তারপর অ্যাপ চালু করুন এবং অবস্থা বদলেছে কি না দেখুন। টানেল ওঠার পরেই জিজ্ঞাসা করুন কোনো নির্দিষ্ট গন্তব্য কোথায় যায়, এবং অনুমানের বদলে যে ঠিকানায় অ্যাপ সত্যিই ডায়াল করে সেটিই ব্যবহার করুন।
$app = Get-Process app | Select-Object -First 1
Get-VpnConnection -Name "APP_VPN" | Select-Object ConnectionStatus
Get-NetTCPConnection -OwningProcess $app.Id -State Established | Select-Object RemoteAddress,RemotePort
Find-NetRoute -RemoteIPAddress 203.0.113.10
Find-NetRoute ইন্টারফেস ও সেই গন্তব্য বহনকারী পরের হপের নাম বলে। সেখানে ভৌত উপনাম মানে টানেল ওপরে এবং ওই প্রবাহের জন্য অপ্রাসঙ্গিক: ঠেলা প্রিফিক্স, তারপর আরও নির্দিষ্ট রাউট, তারপর IPv6 দেখুন। অবস্থা একদম না বদলালে ট্রিগার চলে নি, এবং এক্সিকিউটেবলের পথ, প্রোফাইলের পরিধি ও VPN ক্লায়েন্টের পরিচালন লগ — এই তিন জায়গা দেখার।
পরের পরীক্ষা সৎ হওয়ার জন্য পরিচ্ছন্নভাবে সরান
যে উল্টো ক্রমে বানিয়েছেন সেই ক্রমে সরান: আগে অ্যাপ্লিকেশন ট্রিগার, তারপর প্রোফাইল। ট্রিগার রেখে প্রোফাইল মুছলে একটি ঝুলে থাকা সংযোগ থেকে যায় যা পরের চেষ্টা বিভ্রান্তিকর করে, এবং Remove-VpnConnection -Force কমান্ডের বাইরে তৈরি ফোনবুক এন্ট্রি সবসময় পরিষ্কার করে না।
প্রতি-ব্যবহারকারীর এন্ট্রি ব্যবহারকারীর rasphone.pbk Roaming প্রোফাইলের অধীনে থাকে; সবার এন্ট্রি ProgramData-এর অধীনে থাকে। প্রোফাইলের পরিধির সাথে মেলা স্টোর দেখুন, রাখা প্রোফাইল আবার সংযুক্ত করুন এবং নিশ্চিত করুন এর রাউট ও DNS এখনও ঠিক আচরণ করে, যাতে পরের পরীক্ষা আপনার করা পরিবর্তন মাপে, পড়ে থাকা অবস্থা নয়।
- টানেল প্রক্রিয়া শুরুর সময় ওঠে, লগইনে নয়।
- VPN ইন্টারফেসে কেবল ইচ্ছাকৃত প্রিফিক্স দেখা যায়।
- অ্যাপের আসল দূরবর্তী ঠিকানা VPN উপনামে সমাধান হয়।
- প্রোফাইল সরানোর পরে কোনো ঝুলে থাকা ট্রিগার থাকে না।