Windows પર VPN ખરેખર શું રૂટ કરે છે તે PowerShell માં કેવી રીતે તપાસવું
કનેક્ટેડ VPN ટાઇલ કવરેજ સાબિત કરતી નથી. સાચવેલી પ્રોફાઇલ ફ્લેગ, જીવંત રૂટ ટેબલ અને NRPT નિયમો આ ક્રમમાં વાંચો.
મેં Windows 11 લેપટોપ પર VPN ક્લાયન્ટ જોડ્યું, ટાઇલ Connected થઈ ગઈ, એક આંતરિક ફાઇલ શેર ખૂલ્યું, અને એક જાહેર સાઇટ હજી પણ ઓફિસના Wi-Fi પરથી સીધી લોડ થઈ. આ મિશ્રણ તૂટેલા ટનલ જેવું લાગે છે. તે એવી પ્રોફાઇલનું સામાન્ય પરિણામ છે જે થોડો ટ્રાફિક VPN દ્વારા મોકલે છે અને બાકીનો ભૌતિક એડેપ્ટર પર છોડે છે. ફોર્સ ટનલિંગ બદલે છે કે Windows કયો ડિફોલ્ટ રૂટ પસંદ કરે; તે વધુ ચોક્કસ રૂટ ડિલીટ કરતું નથી અને કનેક્શન તૂટે ત્યારે ટ્રાફિક અટકશે તેવું વચન પણ આપતું નથી. આગળ જે ક્રમ છે તે હું અનુસરું છું જ્યારે ક્લાયન્ટ કવરેજનો દાવો કરે: ક્લાયન્ટ સ્થિતિ, સાચવેલી પ્રોફાઇલ, લાગુ રૂટ, રિઝોલ્વર, પછી વાસ્તવિક ફ્લો.
ક્લાયન્ટથી શરૂ કરો, પછી તેના પર ભરોસો કરવાનું બંધ કરો
ક્લાયન્ટ શરૂ કરવાનું યોગ્ય સ્થાન છે કારણ કે તે કહે છે કે કઈ પ્રોફાઇલ સક્રિય છે. કનેક્શન પ્રોપર્ટીઝ ખોલો અને ચોક્કસ પ્રોફાઇલ નામ, તે વર્તમાન વપરાશકર્તા માટે બન્યું છે કે મશીન પરના બધા માટે, અને કનેક્ટ થયા પછી ncpa.cpl માં કયો એડેપ્ટર દેખાય છે તે નોંધો. મારા ટેસ્ટ લેપટોપમાં એડેપ્ટર પ્રોફાઇલનું નામ ધરાવતું હતું, જેથી રૂટ આઉટપુટ વાંચવું સરળ બન્યું. બીજા મશીનો પર તે WAN Miniport એન્ટ્રી તરીકે દેખાય છે અને નામ તમને કંઈ કહેતું નથી.
ક્લાયન્ટ તમને જે કહી શકતું નથી તે કવરેજ છે. કનેક્ટેડ ટાઇલ ટનલની સ્થિતિ વર્ણવે છે, ગંતવ્યોની યાદી નહીં. તૃતીય-પક્ષ ક્લાયન્ટ પણ પોતાની રૂપરેખા રાખે છે, તેથી મૂળ Windows પ્રોફાઇલ અને તેમાંથી તમે વાંચવાના દરેક ગુણધર્મનો સંબંધ તે ક્લાયન્ટે ઇન્સ્ટોલ કરેલા તેના સાથે ન પણ હોય. જો VPN AnyConnect, OpenVPN GUI, WireGuard કે વેન્ડર એજન્ટ દ્વારા આવ્યું હોય, તો નીચેની PowerShell તપાસ મોટે ભાગે લાગુ પડતી નથી અને તમારે તે ક્લાયન્ટની પોતાની સ્પ્લિટ-ટનલ અને રૂટિંગ સેટિંગ્સ વાંચવી જોઈએ.
સાચવેલી પ્રોફાઇલ વાંચો, ટાઇલ નહીં
મૂળ Windows પ્રોફાઇલ માટે (IKEv2, L2TP, SSTP અથવા MDM દ્વારા ધકેલાયેલું) સાચવેલો સ્પ્લિટ-ટનલ નિર્ણય એક જ ગુણધર્મ છે:
Get-VpnConnection -Name 'Office' | Select-Object Name, ServerAddress, SplitTunneling, DnsSuffix
જ્યારે પ્રોફાઇલ ડિવાઇસ પરના બધા માટે બન્યું હોય ત્યારે -AllUserConnection ઉમેરો. તેના વિના તમે વર્તમાન વપરાશકર્તાની યાદી વાંચો છો, જે ખાલી હોઈ શકે અથવા સમાન નામની બીજી એન્ટ્રી ધરાવી શકે. False મૂલ્ય SplitTunneling માં અર્થ છે કે પ્રોફાઇલ પૂર્ણ ટનલ તરીકે સાચવવામાં આવી છે: Windows VPN એડેપ્ટર દ્વારા ડિફોલ્ટ રૂટ ઇન્સ્ટોલ કરે છે. True એટલે સ્પ્લિટ ટનલ, અને પછી કવરેજ સંપૂર્ણપણે તે રૂટ અને નામ-રિઝોલ્યુશન નિયમો પર આધાર રાખે છે જે પ્રોફાઇલ ધકેલે છે.
તે મૂલ્યને રૂપરેખા તરીકે ગણો, અવલોકન તરીકે નહીં. તે નોંધે છે કે પ્રોફાઇલે કનેક્શન સમયે શું માંગ્યું હતું. Windows અલગ લાગુ રૂટ સાથે પૂરું થઈ શકે છે, બીજા ઇન્ટરફેસના વધુ ચોક્કસ રૂટ, પોલિસી સેટિંગ અથવા અગાઉના કનેક્શનની બાકી એન્ટ્રીને કારણે, તેથી બૂલિયન એકલું પ્રશ્ન હલ કરતું નથી.
સાચવેલા મૂલ્યની લાગુ રૂટ ટેબલ સાથે સરખામણી કરો
કનેક્ટ થયા પછી આખું ટેબલ સ્ક્રોલ કરવાને બદલે ટનલ એડેપ્ટર પરના રૂટની યાદી બનાવો:
$vpn = Get-NetAdapter | Where-Object InterfaceDescription -match 'VPN|WAN Miniport'
Get-NetRoute -InterfaceIndex $vpn.ifIndex | Sort-Object DestinationPrefix
Find-NetRoute -RemoteIPAddress 10.20.4.15 | Select-Object -First 1
Find-NetRoute ઉપયોગી અડધો ભાગ છે. તે એ પ્રશ્નનો જવાબ આપે છે જે ક્લાયન્ટ કદી આપતું નથી: આ ગંતવ્ય માટે Windows ખરેખર કયું ઇન્ટરફેસ અને કયું સ્રોત એડ્રેસ વાપરશે? તેને આંતરિક હોસ્ટ, જાહેર હોસ્ટ અને તમે જાણી જોઈને કરેલો અપવાદ માનો તે દરેક માટે ચલાવો. પૂર્ણ-ટનલ પ્રોફાઇલે જાહેર એડ્રેસ માટે ટનલ ઇન્ટરફેસ દર્શાવવું જોઈએ. સ્પ્લિટ-ટનલ પ્રોફાઇલ ત્યાં સામાન્ય રીતે ભૌતિક એડેપ્ટર દર્શાવે છે જ્યારે આંતરિક પ્રીફિક્સ હજી VPN માં રિઝોલ્વ થાય છે.
બે જાળ મોટાભાગના «ખોટી દિશામાં રૂટ કરે છે» અહેવાલો સમજાવે છે. સૌથી ચોક્કસ પ્રીફિક્સ હંમેશા જીતે છે, તેથી ભૌતિક એડેપ્ટર પરનું /24 ટનલનું મેટ્રિક ગમે તેટલું નીચું હોય તો પણ VPN પરના ડિફોલ્ટ રૂટને હરાવે છે. મેટ્રિક ફક્ત સમાન પ્રીફિક્સના રૂટ વચ્ચેની બરાબરી તોડે છે. અને IPv4 અને IPv6 અલગ નક્કી થાય છે: 0.0.0.0/0 આવરી લેતી પ્રોફાઇલ IPv6 ને સ્થાનિક લિંક પર છોડી શકે છે, જેનાથી ડ્યુઅલ-સ્ટેક સાઇટ અડધી-ટનલવાળી દેખાય છે. ટનલ ઠીક છે તે નિષ્કર્ષ પર આવતા પહેલા Get-NetRoute -AddressFamily IPv6 તપાસો.
| What you see | Most likely cause | Check next |
|---|---|---|
| Public traffic leaves the physical adapter while SplitTunneling reads False | A more specific route on that adapter wins over the tunnel default | Find-NetRoute for the exact destination, then look for a /24 or host route on the physical interface |
| Internal name fails, internal IP works | No NRPT rule for that namespace, or a broader rule matches first | Get-DnsClientNrptPolicy and the namespace order |
| A dual-stack site opens directly while IPv4 uses the tunnel | The profile covers only the IPv4 default route | The IPv6 route table on both interfaces |
| Routes look right but one app still goes direct | The app uses its own proxy, or the client keeps a per-app list | The app's proxy settings and the client's application list |
NRPT સાથે નામ રિઝોલ્યુશન અલગથી તપાસો
આંતરિક નામ નિષ્ફળ જાય પણ આંતરિક IP એડ્રેસ કામ કરે તો તે રૂટિંગ નહીં, રિઝોલ્વર પોલિસી તરફ ઇશારો કરે છે. Windows દરેક નેમસ્પેસ માટે DNS નામ-રિઝોલ્યુશન પોલિસી ટેબલ દ્વારા નક્કી કરે છે, જે રૂટ ટેબલથી સ્વતંત્ર છે:
Get-DnsClientNrptPolicy -Effective | Select-Object Namespace, NameServers
Get-DnsClientServerAddress -InterfaceIndex $vpn.ifIndex
જ્યારે કોઈ નિયમ *.corp.example સાથે મેળ ખાય, ત્યારે તે નેમસ્પેસ માટેની ક્વેરી ટનલના DNS સર્વરો પર જાય છે, ભલે સ્પ્લિટ-ટનલ મોડમાં તે સર્વરો સુધીનો ડેટા પાથ ભૌતિક એડેપ્ટર પર રહે. એ જ ડિઝાઇન છે, અને એટલે જ જાહેર સાઇટ ખોલતી બ્રાઉઝર કસોટી આંતરિક નામો વિશે કંઈ કહેતી નથી. જો એડેપ્ટર અપેક્ષિત સર્વરોની યાદી બતાવે પણ શોધ હજી બીજે જાય, તો NRPT નિયમોનો ક્રમ સરખાવો અને તપાસો કે વધુ ચોક્કસ નેમસ્પેસ પહેલા મેળ ખાય છે કે નહીં.
ફ્લો ચકાસો, પછી નક્કી કરો કે તમે ખરેખર શું માંગ્યું હતું
ગંતવ્યોને નિશ્ચિત ક્રમમાં લો જેથી પરિણામો મશીનો વચ્ચે સરખાવી શકાય: એક જાહેર એડ્રેસ, એક આંતરિક એડ્રેસ, એક આંતરિક નામ અને એક જાણી જોઈને કરેલો અપવાદ જેમ કે સ્થાનિક પ્રિન્ટર કે વિડિયો કૉલ. દરેક માટે Find-NetRoute જે ઇન્ટરફેસ અને સ્રોત એડ્રેસ પરત આપે છે તે નોંધો. કોઈપણ પોલિસી ફેરફાર પછી ફરી કનેક્ટ થાઓ અને એ જ ચાર તપાસોનું પુનરાવર્તન કરો; પુનઃકનેક્શન પછીનું રૂટ ટેબલ એ જ એકમાત્ર પુરાવો છે કે નવી પ્રોફાઇલ અમલમાં આવી છે.
પછી રૂટિંગને એન્ફોર્સમેન્ટથી અલગ કરો. ફોર્સ ટનલિંગ કવર થયેલા ટ્રાફિક માટે ટનલ ચાલુ હોય ત્યાં સુધી ટનલને પ્રાધાન્ય આપે છે. તે કિલ સ્વિચ નથી. જો જરૂરિયાત એ હોય કે ટનલ પડે ત્યારે મશીનમાંથી કંઈ બહાર ન જાય, તો તે બ્લોકિંગ ડિઝાઇનમાંથી આવવું જોઈએ: ટનલની સ્થિતિ સાથે જોડાયેલી ફાયરવોલ પ્રોફાઇલ, ટ્રાફિક ફિલ્ટર સાથેની હંમેશા-ચાલુ પ્રોફાઇલ, અથવા વેન્ડર ક્લાયન્ટનો પોતાનો ફેલ-ક્લોઝ્ડ વિકલ્પ. ફોર્સ ટનલિંગે VPN સર્વરનું પોતાનું એડ્રેસ પણ ટનલની બહાર પહોંચી શકાય તેમ રાખવું પડે, અને «બધું ફરજિયાત કરવું»ના નામે તેને બ્લોક કરવું એ તમે લાગુ કરવા માગતા કનેક્શનમાંથી બહાર લોક થવાનો ભરોસાપાત્ર રસ્તો છે.
કંઈપણ બદલતા પહેલા આ યાદીમાંથી પસાર થાઓ. નિષ્ફળ જતી દરેક વસ્તુ સંકુચિત કરે છે કે સાચી સમસ્યા ક્યાં છે.
- પ્રોફાઇલ નામ અને વ્યાપ પુષ્ટિ થયા, મશીન-વ્યાપી પ્રોફાઇલ માટે
-AllUserConnectionવપરાયું. SplitTunnelingવાંચવામાં આવ્યું અને કવરેજના પુરાવા નહીં, રૂપરેખા તરીકે ગણવામાં આવ્યું.- ટનલ એડેપ્ટરના રૂટ IPv4 અને IPv6 માટે અલગથી સૂચિબદ્ધ.
- એક જાહેર, એક આંતરિક અને એક અપવાદ ગંતવ્ય માટે
Find-NetRouteચલાવ્યું. - નામ નિષ્ફળતા માટે રૂટને દોષ આપતા પહેલા NRPT નિયમો તપાસ્યા.
- બ્લોકિંગ જરૂરિયાત ફરી વાંચી: પસંદગીનું રૂટિંગ લાગુ કરેલા બ્લોકિંગ જેવું નથી.
પૂર્ણ કે સ્પ્લિટ ટનલનો નિર્ણય પ્રોફાઇલના માલિકનો છે, અને Microsoft ની રૂટિંગ નોંધો તે વર્તન વર્ણવે છે જે Windows લાગુ કરે છે જ્યારે પ્રોફાઇલ તેને સેટ કરે. Microsoft: ફોર્સ અને સ્પ્લિટ ટનલિંગ એ સંદર્ભ છે જે આઉટપુટ વાંચતી વખતે હું ખુલ્લો રાખું છું.