Import-VpnProfile అనే cmdlet ఏదీ లేదు, మరియు దానికి దగ్గరగా కనిపించే Add-VpnConnection ఎప్పుడూ .ovpn లేదా .conf ఫైల్ను చదవదు. మీరు ఇచ్చే పరామితుల నుండి అది స్థానిక Windows ప్రొఫైల్ను కూరుస్తుంది, అందుకే ఇక్కడ మొదటి తనిఖీ కమాండ్ లైన్ కాదు, ఫైల్ ఫార్మాట్. గేట్వే SSTP, IKEv2, L2TP/IPsec లేదా PPTP మాట్లాడితే, Windows ఆ ప్రొఫైల్ను సొంతం చేసుకోగలదు, జాబితాలో మిగిలినవి వర్తిస్తాయి. మీకు OpenVPN లేదా WireGuard ఫైల్ ఇచ్చినట్లయితే, మొదటి అడుగులోనే ఆపండి: ఆ క్లయింట్లకే వాటి దిగుమతిదారులు సొంతం.

అడుగు 1: Windows నిజంగా సొంతం చేసుకోగల ప్రొఫైల్ను నిర్ధారించండి

అన్నింటికీ ముందు మెషీన్లో Get-Command -Module VpnClient ను అమలు చేయండి. Windows 10, Windows 11 మరియు Server 2016 లేదా ఆ తర్వాత ఈ మాడ్యూల్తో వస్తాయి; అది లేకపోతే, కాపీ చేసిన ఏ స్క్రిప్ట్ కూడా ఈ హోస్ట్ స్థానిక ప్రొఫైల్ను అంగీకరించేలా చేయదు. ముఖ్యమైన cmdletలు Add-VpnConnection, Get-VpnConnection మరియు Remove-VpnConnection, మరియు పరామితి జాబితా Add-VpnConnection సూచనలో ఒకసారి పూర్తిగా చదవదగినది.

స్థానికం అంటే Windows VPN స్టాక్ టన్నెల్ను ముగిస్తుంది. ఇది IKEv2 (తరచుగా మెషిన్ సర్టిఫికేట్తో), లోపల వినియోగదారు లేదా సర్టిఫికేట్ ప్రామాణీకరణ ఉన్న TLS అయిన SSTP, మరియు ముందస్తు భాగస్వామ్య కీతో L2TP/IPsec లను కవర్ చేస్తుంది. .ovpn ఫైల్ ఒక OpenVPN స్క్రిప్ట్, Windows కనెక్షన్ కాదు: Windows స్టాక్కు అవగాహన లేని remote, cipher లేదా tls-auth వంటి ఆదేశాలను అది మోసుకుంటుంది. WireGuard .conf కూడా అదే కథ, PrivateKey మరియు AllowedIPs తో; ఒకదాన్ని మరొకటిగా మార్చడం పరామితి ఎంపిక కాదు, వేరే టన్నెల్ అమలు.

మూడో శాఖ ఉంది. నిర్వాహకుడు మీకు VPNv2 CSP XML పత్రం లేదా Intune ప్రొఫైల్ ఇస్తే, అది MDM మార్గం, Add-VpnConnection కాదు, ప్రొవిజనింగ్ స్టాక్ దాన్ని వర్తింపజేస్తుంది. ఆ నోడ్ పేర్లను PowerShell పరామితులుగా అనువదించవద్దు; బదులుగా XML ను ఏ యంత్రాంగం వర్తింపజేస్తుందో అడగండి.

అడుగు 2: టన్నెల్ రకాన్ని ప్రామాణీకరణ పద్ధతితో జోడించండి

-TunnelType మరియు -AuthenticationMethod వేర్వేరు పరామితులు, గేట్వే కలయికను మాత్రమే పట్టించుకుంటుంది. ఒకటి సరిగ్గా మరొకటి తప్పుగా ఉంటే, ఏదానికీ కనెక్ట్ కాని లేదా టన్నెల్ ఇప్పటికే లేచి ఉండగా నిలిచిపోయే ప్రొఫైల్ వస్తుంది. వేరే సేవ కోసం ఎంచుకున్న డిఫాల్ట్ను నమ్మకుండా రెండింటినీ స్పష్టంగా సెట్ చేయండి.

  • MachineCertificate తో IKEv2: క్లయింట్ కంప్యూటర్ సర్టిఫికేట్ను చూపిస్తుంది; అదనంగా -EncryptionLevel Required సెట్ చేయండి.
  • Eap తో SSTP: మొదట TLS టన్నెల్, తర్వాత PEAP/MSCHAPv2 లేదా EAP లోపల సర్టిఫికేట్. దీనికి అడుగు 3 లోని XML అవసరం.
  • MSChapv2, Chap లేదా Pap తో SSTP, L2TP లేదా PPTP: సాధారణ వినియోగదారు పేరు మరియు పాస్వర్డ్, EAP బ్లాబ్ లేదు.
  • MSChapv2 మరియు -Lt2pPsk తో L2TP: PSK IPsec సగభాగాన్ని, వినియోగదారు PPP ను కవర్ చేస్తారు; రెండూ సర్వర్తో సరిపోలాలి.

splat విలువలను ఒకే చోట ఉంచుతుంది:

$p = @{
  Name                 = "Corp IKEv2"
  ServerAddress        = "vpn.example.com"
  TunnelType           = "Ikev2"
  AuthenticationMethod = "MachineCertificate"
  EncryptionLevel      = "Required"
  SplitTunneling       = $false
  DnsSuffix            = "corp.example.com"
}
Add-VpnConnection @p -PassThru

-PassThru Windows ఇప్పుడే రాసిన ఆబ్జెక్ట్ను తిరిగి ఇస్తుంది, కాబట్టి రెండో కాల్ లేకుండా పరిశీలించవచ్చు. పేరు ఇప్పటికే ఉంటే cmdlet నడవడానికి నిరాకరిస్తుంది; -Force దాన్ని పైన రాస్తుంది, ఇది ఉత్పత్తి ల్యాప్టాప్లో తప్పు ప్రతిచర్య, ఎందుకంటే ఎవరో చేతితో కాన్ఫిగర్ చేసినదాన్ని నిశ్శబ్దంగా పారేస్తుంది.

అడుగు 3: ఆధారాల పదార్థాన్ని సరిగ్గా అప్పగించండి

పాస్వర్డ్లు, ముందస్తు భాగస్వామ్య కీలు మరియు EAP బ్లాబ్లు ఈ స్క్రిప్ట్లు తరచుగా విరిగే చోటు. -EapConfigXmlStream ఒక మార్గాన్ని కాదు, XmlDocument ను కోరుతుంది, కాబట్టి మొదట ఫైల్ను చదివి రకం మార్చండి. స్ట్రింగ్ పంపడం స్కీమా సమస్యలా వినిపించే మార్పిడి లోపాన్ని కలిగిస్తుంది మరియు ఎప్పుడూ తప్పు కాని XML ను తిరిగి రాయమని ప్రేరేపిస్తుంది.

$eap = [xml](Get-Content -Raw .\peap-mschapv2.xml)
Add-VpnConnection -Name "Corp SSTP" -ServerAddress "sstp.example.com" `
  -TunnelType Sstp -AuthenticationMethod Eap `
  -EapConfigXmlStream $eap -EncryptionLevel Required

ఆ XML ను బ్లాగ్ స్నిప్పెట్ నుండి కల్పించకూడదు. అది EAP పద్ధతి రకాన్ని మరియు లోపలి ప్రామాణీకరణను పేర్కొంటుంది, గేట్వే రెండింటినీ తన విధానంతో పోలుస్తుంది. సరిపోలని లోపలి పద్ధతి TLS హ్యాండ్షేక్ పూర్తయిన తర్వాత విఫలమవుతుంది, ఇది సరిగ్గా తప్పు పాస్వర్డ్లా కనిపిస్తుంది, కానీ అది కాదు. XML ను గేట్వే నడిపేవారి నుండి తీసుకోండి, లేదా ఇప్పటికే పనిచేసే ప్రొఫైల్ నుండి ఎగుమతి చేయండి.

IKEv2 కోసం సర్టిఫికేట్ సగభాగం స్టోర్ శోధన. -MachineCertificateIssuerFilter ఒక సర్టిఫికేట్ ఆబ్జెక్ట్ను తీసుకుంటుంది, LocalMachine\My లో ఉపయోగించదగిన క్లయింట్ సర్టిఫికేట్ను కనుగొనడానికి Windows దాన్ని ఉపయోగిస్తుంది. సర్టిఫికేట్కు ప్రైవేట్ కీ మరియు సర్వర్ విశ్వసించే చైన్ అవసరం; ఏదైనా లేకపోతే, ఉపయోగకరమైన వివరాలు లేకుండా ప్రామాణీకరణ విఫలమవుతుంది, కాబట్టి మొదట స్టోర్ను తనిఖీ చేయండి:

Get-ChildItem Cert:\LocalMachine\My |
  Where-Object { $_.HasPrivateKey -and $_.NotAfter -gt (Get-Date) } |
  Select-Object Subject, Issuer, Thumbprint, NotAfter

రహస్యాలను స్క్రిప్ట్ ఫైల్ నుండి బయట ఉంచండి. కమాండ్ లైన్లో పంపిన లేదా .ps1 లో పాతిపెట్టిన PSK, లాగ్లు, సేవ్ చేసిన సెషన్లు మరియు పంచుకున్న రిపోజిటరీలలో ముగుస్తుంది, -RememberCredential వినియోగదారు ఆధారాలను తర్వాత కోసం కాష్ చేసి, ఒకసారి చేసే పరీక్షను శాశ్వత అనుమతిగా మారుస్తుంది.

అడుగు 4: మొదటి రన్ ముందు పరిధిని నిర్ణయించండి

అదే cmdlet రెండు వేర్వేరు ఫోన్బుక్లలో రాస్తుంది. -AllUserConnection లేకుండా ప్రొఫైల్ మీదే, %APPDATA%\Microsoft\Network\Connections\Pbk\rasphone.pbk లో ఉంటుంది. దానితో, ఎలివేట్ చేసిన ప్రాంప్ట్ నుండి, సైన్-ఇన్ స్క్రీన్తో సహా ప్రతి ఖాతా చూసేలా ప్రొఫైల్ %ProgramData%\Microsoft\Network\Connections\Pbk\rasphone.pbk లో చేరుతుంది.

పరిధి అలంకారం కాదు. సేవా ఖాతా, షెడ్యూల్ చేసిన పని లేదా సైన్-ఇన్ ముందు సన్నివేశం ఉపయోగించగలది అందరి-వినియోగదారు ప్రొఫైల్; ఒక-వినియోగదారు ప్రొఫైల్ ఆ మూడింటికీ కనిపించదు. ఆబ్జెక్ట్లు వేరుగా చదవబడతాయి: Get-VpnConnection ప్రస్తుత వినియోగదారు ఎంట్రీలను జాబితా చేస్తుంది, Get-VpnConnection -AllUserConnection మెషీన్ మొత్తానికి సంబంధించినవి జాబితా చేస్తుంది. ఇప్పుడే ఒకటి ఎంచుకోండి, తర్వాత మార్పును సవరణ కాదు, తొలగించి తిరిగి సృష్టించడంగా పరిగణించండి:

# elevated prompt
Remove-VpnConnection -Name "Corp IKEv2" -Force
Add-VpnConnection -Name "Corp IKEv2" -ServerAddress "vpn.example.com" `
  -TunnelType Ikev2 -AuthenticationMethod MachineCertificate `
  -EncryptionLevel Required -AllUserConnection

అడుగు 5: టన్నెల్ నిజంగా ఏమి అందించాలో పరీక్షించండి

కనెక్ట్ అయిన చిహ్నం టన్నెల్ లేచిందని మాత్రమే రుజువు చేస్తుంది, మరేదీ కాదు. వైఫల్యాలు డైలాగ్ కాకుండా టెక్స్ట్గా రావడానికి మొదట కమాండ్ లైన్ నుండి కనెక్ట్ అవ్వండి, తర్వాత Windows నమోదు చేసినది చదవండి:

rasdial "Corp IKEv2"
Get-VpnConnection -Name "Corp IKEv2" |
  Select-Object Name, ServerAddress, TunnelType, ConnectionStatus, SplitTunneling
Get-NetRoute -DestinationPrefix "0.0.0.0/0"

స్థితి ఇంకా కనెక్ట్ అయింది అని చెప్పగానే వినియోగదారులు నివేదించే రెండు వైఫల్యాలు DNS మరియు రూటింగ్. అంతర్గత పేరును పరిష్కరించి, ఏ సర్వర్ సమాధానం ఇచ్చిందో చూడండి; -DnsSuffix లేని ప్రొఫైల్ పరిపూర్ణంగా టన్నెల్ చేసి, ప్రతి ఇంట్రానెట్ శోధనలో విఫలమవ్వగలదు. తర్వాత డిఫాల్ట్ మార్గాన్ని చూడండి: విభజిత టన్నెలింగ్ ఆఫ్లో ఉన్నప్పుడు అత్యల్ప మెట్రిక్ ఉన్న 0.0.0.0/0 మార్గం VPN ఇంటర్ఫేస్ వైపు చూపాలి, అది ఆన్లో ఉన్నప్పుడు మీరు ఆశించిన ప్రిఫిక్స్లు మాత్రమే. రెండూ సరిగ్గా కనిపించినా ట్రాఫిక్ ఇంకా చనిపోతే, సమస్య ప్రొఫైల్ దాటి, విధానంలో లేదా గేట్వే ఫిల్టర్లో ఉంది.

కనెక్షన్ పూర్తిగా విఫలమైనప్పుడు, తిరిగి చూడాల్సిన అడుగును కోడ్ సంకుచితం చేస్తుంది:

  • 691: గేట్వే ఆధారాలను తిరస్కరించింది. టన్నెల్ కాదు, అడుగు 3 కి తిరిగి వెళ్లండి.
  • 809: IKEv2 హ్యాండ్షేక్ ఎప్పుడూ పూర్తి కాలేదు. UDP 500 మరియు 4500, సర్టిఫికేట్ విశ్వాసాన్ని తనిఖీ చేయండి.
  • 789: L2TP/IPsec ముందస్తు భాగస్వామ్య కీ లేదు లేదా తప్పు.
  • 868: సర్వర్ పేరు పరిష్కరించబడలేదు. ప్రొఫైల్ను సవరించే ముందు DNS ను సరిచేయండి.

పనిచేసే కమాండ్ను అది ఎన్కోడ్ చేసే సెట్టింగ్ల పక్కన ఉంచండి, తదుపరి వ్యక్తి UI నుండి ప్రొఫైల్ను రివర్స్-ఇంజినీరింగ్ చేయకుండా తిరిగి నిర్మించగలరు. తిరిగి నిర్మించాల్సి వస్తే, ఎంట్రీని తొలగించి అదే పరామితులతో మళ్లీ సృష్టించండి; సగం కాన్ఫిగర్ అయిన ప్రొఫైల్కు ప్యాచ్ వేయడం పాత మార్గాలు మరియు ప్రామాణీకరణ స్థితిని వదిలివేస్తుంది. ఫైల్ ఎప్పుడూ స్థానికం కాకపోతే, దాన్ని సొంతం చేసుకునే క్లయింట్కు తిరిగి వెళ్లండి. IKEv2 ప్రొఫైల్గా అలంకరించిన .ovpn దిగుమతి కాదు, అది సపోర్ట్ టికెట్.

సంబంధిత వ్యాసాలు