Import-VpnProfile જેવું કોઈ cmdlet નથી, અને સૌથી નજીક લાગતું Add-VpnConnection ક્યારેય .ovpn કે .conf ફાઇલ વાંચતું નથી. તમે આપેલા પરિમાણોમાંથી તે મૂળ વિન્ડોઝ પ્રોફાઇલ બનાવે છે, એટલે અહીં પહેલું ચકાસણી બિંદુ ફાઇલ સ્વરૂપ છે, કમાન્ડ લાઇન નહીં. જો ગેટવે SSTP, IKEv2, L2TP/IPsec કે PPTP બોલે છે, તો વિન્ડોઝ પ્રોફાઇલનો માલિક બની શકે છે અને યાદીનું બાકીનું લાગુ પડે છે. જો તમને OpenVPN કે WireGuard ફાઇલ આપવામાં આવી હોય, તો પહેલા પગલે જ અટકો: એ ક્લાઇન્ટ પાસે તેમના પોતાના આયાતકર્તા છે.

પગલું 1: વિન્ડોઝ ખરેખર કયું પ્રોફાઇલ ધરાવી શકે તેની ખાતરી કરો

બીજું કંઈ પણ કરતાં પહેલાં મશીન પર Get-Command -Module VpnClient ચલાવો. Windows 10, Windows 11 અને Server 2016 કે પછીનાં આ મોડ્યુલ સાથે આવે છે; જો તે ન હોય, તો કોઈ પણ નકલ કરેલી સ્ક્રિપ્ટ આ હોસ્ટને મૂળ પ્રોફાઇલ સ્વીકારવા મજબૂર કરી શકશે નહીં. મહત્વના cmdlet એ Add-VpnConnection, Get-VpnConnection અને Remove-VpnConnection છે, અને Add-VpnConnection સંદર્ભ નું પરિમાણ સૂચિ એક વાર પૂરેપૂરી વાંચવા લાયક છે.

મૂળ એટલે કે વિન્ડોઝનો VPN સ્ટેક ટનલ સમાપ્ત કરે છે. તેમાં IKEv2 આવે છે, ઘણી વાર મશીન પ્રમાણપત્ર સાથે; SSTP, જે અંદર વપરાશકર્તા કે પ્રમાણપત્ર પ્રમાણીકરણ સાથેનું TLS છે; અને પૂર્વ-શેર કરેલી કી સાથે L2TP/IPsec. .ovpn ફાઇલ OpenVPN સ્ક્રિપ્ટ છે, વિન્ડોઝ કનેક્શન નહીં: તે 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 એ ઑબ્જેક્ટ પાછું આપે છે જે વિન્ડોઝે હમણાં જ લખ્યું છે, એટલે બીજા કૉલ વિના તમે તેની તપાસ કરી શકો છો. જો નામ પહેલેથી હોય તો 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 માં વપરાય તેવું ક્લાઇન્ટ પ્રમાણપત્ર શોધવા માટે કરે છે. પ્રમાણપત્રને ખાનગી કી અને સર્વર જેના પર ભરોસો કરે એવી શૃંખલા જોઈએ; જ્યારે એક પણ ન હોય ત્યારે પ્રમાણીકરણ ઉપયોગી વિગત વિના નિષ્ફળ જાય છે, એટલે પહેલા સ્ટોર તપાસો:

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: ટનલે ખરેખર શું પહોંચાડવું જોઈએ તે ચકાસો

જોડાયેલું ચિહ્ન ફક્ત એ પુરવાર કરે છે કે ટનલ ઊભી થઈ, બીજું કંઈ નહીં. પહેલા કમાન્ડ લાઇનથી જોડાઓ જેથી નિષ્ફળતા સંવાદ બદલે લખાણ તરીકે આવે, પછી વિન્ડોઝે શું નોંધ્યું તે વાંચો:

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

વપરાશકર્તાઓ જે બે નિષ્ફળતા નોંધાવે છે જ્યારે સ્થિતિ હજી Connected કહે છે તે DNS અને રૂટિંગ છે. આંતરિક નામ ઉકેલો અને જુઓ કયો સર્વર જવાબ આપે છે; -DnsSuffix વિનાનું પ્રોફાઇલ સંપૂર્ણ ટનલ કરી શકે છે અને છતાં દરેક ઇન્ટ્રાનેટ શોધ નિષ્ફળ જાય છે. પછી ડિફૉલ્ટ રૂટ જુઓ: સ્પ્લિટ ટનલિંગ બંધ હોય તો સૌથી નીચા મેટ્રિકનો 0.0.0.0/0 રૂટ VPN ઇન્ટરફેસ તરફ હોવો જોઈએ, અને ચાલુ હોય તો ફક્ત તમે અપેક્ષા રાખો એ પ્રીફિક્સ. જો બંને સાચા લાગે અને ટ્રાફિક તોપણ મરે, તો સમસ્યા પ્રોફાઇલની પાર છે, નીતિમાં કે ગેટવે ફિલ્ટરમાં.

જ્યારે કનેક્શન સાવ નિષ્ફળ જાય, ત્યારે કોડ પાછા જવાનું પગલું સંકોચે છે:

  • 691: ગેટવેએ ઓળખપત્રો નકાર્યાં. પગલું 3 પર પાછા જાઓ, ટનલ પર નહીં.
  • 809: IKEv2 હેન્ડશેક ક્યારેય પૂરો થયો નહીં. UDP 500 અને 4500, અને પ્રમાણપત્રનો ભરોસો તપાસો.
  • 789: L2TP/IPsec પૂર્વ-શેર કરેલી કી ખૂટે છે કે ખોટી છે.
  • 868: સર્વરનું નામ ઉકેલાયું નહીં. પ્રોફાઇલ સંપાદિત કરતાં પહેલાં DNS સુધારો.

કામ કરતો આદેશ તે જે ગોઠવણોને એન્કોડ કરે છે તેની બાજુમાં રાખો, જેથી આગલી વ્યક્તિ UI માંથી પ્રોફાઇલ ઉલટાવીને શોધવાને બદલે ફરી બનાવી શકે. જો ખરેખર ફરી બનાવવું પડે, તો નોંધ કાઢી નાખો અને એ જ પરિમાણોથી ફરી બનાવો; અડધું ગોઠવાયેલું પ્રોફાઇલ પેચ કરવાથી જૂના રૂટ અને પ્રમાણીકરણની સ્થિતિ પાછળ રહી જાય છે. અને જો ફાઇલ ક્યારેય મૂળ ન હતી, તો તેનો માલિક ક્લાઇન્ટ પર પાછા જાઓ. IKEv2 પ્રોફાઇલ તરીકે સજ્જ .ovpn આયાત નથી, સપોર્ટ ટિકિટ છે.

સંબંધિત લેખો