Windows లో VPN నిజంగా ఏమి రూట్ చేస్తుందో PowerShell లో ఎలా తనిఖీ చేయాలి
కనెక్ట్ చేసిన VPN టైల్ కవరేజీని నిరూపించదు. సేవ్ చేసిన ప్రొఫైల్ ఫ్లాగ్, లైవ్ రూట్ పట్టిక మరియు NRPT నియమాలను ఈ క్రమంలో చదవండి.
నేను Windows 11 ల్యాప్టాప్లో VPN క్లయింట్ను కనెక్ట్ చేసాను, టైల్ Connected అయింది, అంతర్గత ఫైల్ షేర్ తెరిచింది, మరియు ఒక పబ్లిక్ సైట్ ఇప్పటికీ కార్యాలయ Wi-Fi నుండి నేరుగా లోడ్ అవుతోంది. ఈ మిశ్రమం విరిగిన సొరంగం లాగా కనిపిస్తుంది. కానీ ఇది కొంత ట్రాఫిక్ను VPN ద్వారా పంపి మిగిలినది భౌతిక అడాప్టర్పై వదిలే ప్రొఫైల్ సాధారణ ఫలితం. బలవంతపు సొరంగీకరణ Windows ఏ డిఫాల్ట్ మార్గానికి ప్రాధాన్యం ఇస్తుందో మారుస్తుంది; ఇది మరింత నిర్దిష్ట మార్గాలను తొలగించదు మరియు కనెక్షన్ తెగినప్పుడు ట్రాఫిక్ ఆగుతుందని హామీ ఇవ్వదు. తర్వాత క్లయింట్ కవరేజీని చెప్పుకున్నప్పుడు నేను అనుసరించే క్రమం ఇది: క్లయింట్ స్థితి, సేవ్ చేసిన ప్రొఫైల్, వర్తించిన మార్గాలు, రిజాల్వర్, ఆపై నిజమైన ప్రవాహాలు.
క్లయింట్ నుండి ప్రారంభించి, తర్వాత దానిని నమ్మడం ఆపండి
క్లయింట్ ప్రారంభించడానికి సరైన స్థలం ఏ ప్రొఫైల్ యాక్టివ్గా ఉందో చెప్పడం వల్లనే. కనెక్షన్ లక్షణాలను తెరిచి ఖచ్చితమైన ప్రొఫైల్ పేరు, అది ప్రస్తుత వినియోగదారు కోసం లేదా మెషీన్లోని అందరి కోసం సృష్టించబడిందా, మరియు కనెక్ట్ అయిన తర్వాత ncpa.cpl లో ఏ అడాప్టర్ కనిపిస్తుందో గమనించండి. నా పరీక్ష ల్యాప్టాప్లో అడాప్టర్ ప్రొఫైల్ పేరును కలిగి ఉంది, ఇది మార్గాల అవుట్పుట్ చదవడం సులభం చేసింది. ఇతర మెషీన్లలో ఇది WAN Miniport నమోదుగా కనిపిస్తుంది మరియు పేరు మీకు ఏమీ చెప్పదు.
క్లయింట్ చెప్పలేనిది కవరేజీ. కనెక్ట్ చేసిన టైల్ సొరంగం స్థితిని వివరిస్తుంది, గమ్యస్థానాల జాబితాను కాదు. మూడవ పక్ష క్లయింట్లు కూడా తమ స్వంత కాన్ఫిగరేషన్ను ఉంచుకుంటాయి, కాబట్టి స్థానిక Windows ప్రొఫైల్ మరియు దాని నుండి మీరు చదివే ప్రతి లక్షణం ఆ క్లయింట్ ఇన్స్టాల్ చేసిన దానికి సంబంధం లేకపోవచ్చు. VPN AnyConnect, OpenVPN GUI, WireGuard లేదా విక్రేత ఏజెంట్ ద్వారా వచ్చి ఉంటే, క్రింది PowerShell తనిఖీలు చాలావరకు వర్తించవు మరియు బదులుగా ఆ క్లయింట్ స్వంత split-tunnel మరియు రూటింగ్ సెట్టింగ్లను చదవాలి.
సేవ్ చేసిన ప్రొఫైల్ను చదవండి, టైల్ కాదు
స్థానిక Windows ప్రొఫైల్ కోసం (IKEv2, L2TP, SSTP లేదా MDM నెట్టినది) సేవ్ చేసిన split-tunnel నిర్ణయం ఒకే లక్షణం:
Get-VpnConnection -Name 'Office' | Select-Object Name, ServerAddress, SplitTunneling, DnsSuffix
ప్రొఫైల్ పరికరంలోని అందరి కోసం సృష్టించబడి ఉంటే -AllUserConnection జోడించండి. అది లేకుండా మీరు ప్రస్తుత వినియోగదారు జాబితాను చదువుతారు, అది ఖాళీగా ఉండవచ్చు లేదా సమాన పేరుతో మరో నమోదును కలిగి ఉండవచ్చు. False విలువ SplitTunneling లో ఉంటే ప్రొఫైల్ పూర్తి సొరంగంగా సేవ్ చేయబడిందని అర్థం: Windows VPN అడాప్టర్ ద్వారా డిఫాల్ట్ మార్గాన్ని ఇన్స్టాల్ చేస్తుంది. True అంటే split tunnel, మరియు కవరేజీ పూర్తిగా ఆ ప్రొఫైల్ నెట్టే మార్గాలు మరియు పేరు పరిష్కార నియమాలపై ఆధారపడి ఉంటుంది.
ఆ విలువను కాన్ఫిగరేషన్గా పరిగణించండి, పరిశీలనగా కాదు. కనెక్ట్ అయిన సమయంలో ప్రొఫైల్ ఏమి అడిగిందో నమోదు చేస్తుంది. మరో ఇంటర్ఫేస్ యొక్క మరింత నిర్దిష్ట మార్గం, విధాన సెట్టింగ్ లేదా మునుపటి కనెక్షన్ నుండి మిగిలిన నమోదు కారణంగా 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 నిజంగా ఏ ఇంటర్ఫేస్ మరియు ఏ మూల చిరునామాను ఉపయోగిస్తుంది? అంతర్గత హోస్ట్, పబ్లిక్ హోస్ట్ మరియు మీరు ఉద్దేశపూర్వక మినహాయింపు అనుకునే అన్నింటికీ దీన్ని అమలు చేయండి. పూర్తి సొరంగం ప్రొఫైల్ పబ్లిక్ చిరునామా కోసం సొరంగం ఇంటర్ఫేస్ను చూపాలి. split tunnel ప్రొఫైల్ సాధారణంగా అక్కడ భౌతిక అడాప్టర్ను చూపుతుంది, అంతర్గత ప్రిఫిక్స్లు ఇంకా 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 సర్వర్లకు వెళ్తాయి, split tunnel మోడ్లో ఆ సర్వర్లకు డేటా మార్గం భౌతిక అడాప్టర్పై ఉన్నా సరే. అదే డిజైన్, అందుకే పబ్లిక్ సైట్ తెరిచే బ్రౌజర్ పరీక్ష అంతర్గత పేర్ల గురించి ఏమీ చెప్పదు. అడాప్టర్ ఆశించిన సర్వర్లను జాబితా చేసినా శోధనలు ఇంకా వేరే చోటికి వెళ్తే, NRPT నియమాల క్రమాన్ని పోల్చి మరింత నిర్దిష్ట నేమ్స్పేస్ మొదట సరిపోతుందా జాబితా చేయండి.
ప్రవాహాలను ధృవీకరించి, తర్వాత మీరు నిజంగా ఏమి అడిగారో నిర్ణయించండి
ఫలితాలు మెషీన్ల మధ్య పోల్చదగినవిగా ఉండేందుకు గమ్యస్థానాలను స్థిర క్రమంలో చూడండి: పబ్లిక్ చిరునామా, అంతర్గత చిరునామా, అంతర్గత పేరు మరియు స్థానిక ప్రింటర్ లేదా వీడియో కాల్ వంటి ఒక ఉద్దేశపూర్వక మినహాయింపు. ప్రతిదానికి Find-NetRoute తిరిగి ఇచ్చే ఇంటర్ఫేస్ మరియు మూల చిరునామాను గమనించండి. ఏదైనా విధాన మార్పు తర్వాత మళ్లీ కనెక్ట్ అయి అదే నాలుగు తనిఖీలను పునరావృతం చేయండి; పునఃకనెక్షన్ తర్వాత రూట్ పట్టిక మాత్రమే కొత్త ప్రొఫైల్ అమల్లోకి వచ్చినందుకు ఏకైక సాక్ష్యం.
తర్వాత రూటింగ్ను అమలు నుండి వేరు చేయండి. బలవంతపు సొరంగీకరణ సొరంగం పైన ఉన్నంత కాలం కవర్ చేయబడిన ట్రాఫిక్కు సొరంగానికి ప్రాధాన్యం ఇస్తుంది. ఇది kill switch కాదు. సొరంగం పడిపోతే మెషీన్ నుండి ఏమీ బయటకు వెళ్లకూడదు అనే అవసరం ఉంటే, అది నిరోధించే డిజైన్ నుండి రావాలి: సొరంగం స్థితికి కట్టుబడిన firewall ప్రొఫైల్, ట్రాఫిక్ ఫిల్టర్లతో ఎల్లప్పుడూ-ఆన్ ప్రొఫైల్ లేదా విక్రేత క్లయింట్ స్వంత విఫలత్వంలో-మూసివేత ఎంపిక. బలవంతపు సొరంగీకరణ VPN సర్వర్ స్వంత చిరునామాను కూడా సొరంగం వెలుపల చేరుకోగలిగేలా వదలాలి, మరియు «అన్నింటినీ బలవంతం చేయు» పేరుతో దాన్ని నిరోధించడం మీరు అమలు చేయాలనుకుంటున్న కనెక్షన్ నుండి మిమ్మల్ని బయట లాక్ చేసుకునే నమ్మదగిన మార్గం.
ఏదైనా మార్చే ముందు ఈ జాబితాను చూడండి. విఫలమయ్యే ప్రతి అంశం నిజమైన సమస్య ఎక్కడ ఉందో సంకోచిస్తుంది.
- ప్రొఫైల్ పేరు మరియు పరిధి నిర్ధారించబడ్డాయి, మెషీన్-వ్యాప్త ప్రొఫైల్లకు
-AllUserConnectionఉపయోగించబడింది. SplitTunnelingచదవబడింది మరియు కవరేజీ రుజువు కాదు, కాన్ఫిగరేషన్గా పరిగణించబడింది.- సొరంగం అడాప్టర్ మార్గాలు IPv4 మరియు IPv6 కోసం విడివిడిగా జాబితా చేయబడ్డాయి.
- ఒక పబ్లిక్, ఒక అంతర్గత మరియు ఒక మినహాయింపు గమ్యస్థానానికి
Find-NetRouteఅమలు చేయబడింది. - పేరు విఫలత్వానికి మార్గాలను నిందించే ముందు NRPT నియమాలు తనిఖీ చేయబడ్డాయి.
- నిరోధ అవసరం మళ్లీ చదవబడింది: ప్రాధాన్య రూటింగ్ అమలు చేసిన నిరోధం వంటిది కాదు.
పూర్తి లేదా split సొరంగం నిర్ణయం ప్రొఫైల్ యజమానికి చెందుతుంది, మరియు Microsoft రూటింగ్ గమనికలు ప్రొఫైల్ దాన్ని సెట్ చేసినప్పుడు Windows అమలు చేసే ప్రవర్తనను వివరిస్తాయి. Microsoft: బలవంత మరియు split సొరంగీకరణ అవుట్పుట్ చదివేటప్పుడు నేను తెరిచి ఉంచే సూచన.