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 उपनाम में हल होता है।
- प्रोफ़ाइल हटाने के बाद कोई लटकता ट्रिगर नहीं बचता।