In VPN-klient skriptsje: kies de laach foar it wachtwurd
Leveransier-CLI, rasdial, in app-intsje of UI-automatisearring mislearje elk oars. Kies de laach, hâld it geheim bûten argv, en wachtsje op steat, net op exitkoades.
Skripts starte VPN-klanten op 'e laach dy't de auteur keas, en dy laach is selden de iene dy't de taak nedich hie. De opdrachtrigel fan 'e leveransier, de ynbeller fan it bestjoeringssysteem en in mobile app-ynsjoch komme allegearre op ferskate punten yn it libben fan 'e ferbining werom. Se behannelje it geheim ek oars, en dat ferskil beslist oft it wachtwurd foar elke brûker op 'e masine sichtber is. Kies de laach foardat jo de earste rigel fan it skript skriuwe.
Laach 1: de opdrachtrigel fan 'e leveransier
De measte desktopklanten leverje in opdrachtrigel dy't in profylnamme en, al te faak, in wachtwurd oannimt. Cisco's âlde klant akseptearre in connect-werkwurd mei brûker- en wachtwurdarguminten; macOS stelt de ynboude tsjinst fia networksetup beskikber; NetworkManager antwurdet op nmcli. Dizze oproppen komme werom as it kommando klear is, wat net itselde momint is as wannear't de tunnel brûkber wurdt. Lês de eigen dokumintaasje fan 'e leveransier foar de ferzje dy't jo útrolje, want dizze ynterfaces feroarje en guon wurde hielendal fuortsmiten.
nmcli connection up "Work VPN"
networksetup -connectpppoeservice "Work VPN"
It foardiel is dat de leveransier syn eigen profylopslach ken, sadat de oprop deselde konfiguraasje brûkt as de GUI. It neidiel is dat elke leveransier syn eigen tiidwurden betinkt, en in skript skreaun foar ien klant giet net oer nei in oare. Beskôgje dizze laach as it koartste paad as de klant fêst is en de ferzje fêstset.
Laach 2: de eigen tsjinst fan it bestjoeringssysteem
Op Windows is de ynbeller diel fan it bestjoeringssysteem, en hy wurket tsjin in telefoanboekynfier ynstee fan 'e profylopslach fan 'e leveransier. Dat makket him draachberder oer klanten hinne en makliker te skriptsjen fan in tsjinstaccount ôf. It betsjut ek dat de ferbining op ien plak bestean kin en net op it oare, wat minsken ferwart dy't yn 'e ferkearde list sjogge.
rasdial "Work VPN" user pass
Get-VpnConnection -Name "Work VPN" | Select-Object ConnectionStatus
Brûk it PowerShell-oerflak as jo de ynfier meitsje of fuortsmite moatte ynstee fan te beljen. De WMI- en cmdlet-lagen lizze deselde objekten ûnder ferskate nammen bleat, en fuortsmiten is in aparte bewerking fan ferbrekken. In skript dat allinnich skillet, lit nei in migraasje ferâldere ynfieren efter. Kontrolearje nei hokker opslach jo automatisearring skriuwt foardat jo tasizze dat it opromjen bart.
Remove-VpnConnection -Name "Old VPN" -Force
Get-VpnConnection
Op macOS is it ekwivalint de list fan netwurktsjinsten, wêr't in besteande tsjinst by namme ferbûn wurdt ynstee fan op it plak oanmakke.
Oanmeldgegevens lekke op elke laach, dus kies it kanaal
Alles wat jo op 'e opdrachtrigel trochjouwe, ferskynt yn 'e prosestabel foar elke lokale brûker, en it oerlibbet meastentiids ek yn 'e skelhistoarje. It stipe alternatyf fan OpenVPN is om it geheim út in bestân te lêzen mei --askpass, en it bestân sels hat rjochten nedich dy't passe by it fertrouwen dat jo deryn stelle. In neamde piip foarkomt dat it geheim nei skiif skreaun wurdt, mar lit elk proses dat him iepenje kin dêr skriuwe. Bewarje it geheim op Windows yn 'e oanmeldgegevensbehearder, of yn in bestân dat allinnich it tsjinstaccount lêze kin, en nea as in literal yn in batchbestân.
openvpn --config /etc/openvpn/work.conf --askpass /etc/openvpn/work.secret --auth-nocache --daemon
ls -l /etc/openvpn/work.secret
Deselde regel jildt foar tokens en ienmalige koades: as de automatisearring se nedich hat, hat de automatisearring in kanaal nedich dat gjin opdrachtrigelargumint is. Rotsje it geheim as jo it meganisme feroarje, want de âlde wearde hat earne yn in log sitten. In skript dat wurket en lekt, is gjin wurkjend skript.
Wachtsje op steat, en hâld dan tafersjoch oer ien eigner
Elk fan dizze oproppen komt werom foardat de tunnel klear is, dus poll de steat dy't de klant bleatleit of probearje in bestimming derbinnen mei in time-out. Bestannen kopiearje of in databankferbining direkt nei de ferbiningsoprop iepenje is in wedloop, en it mislearret tuskenskofts op in manier dy't op in netwurkflater liket.
ip link show tun0
nmcli -t -f GENERAL.STATE connection show "Work VPN"
curl -sS --max-time 5 https://app.internal.example/health -o /dev/null
Ferbrekken hat itselde probleem yn omkearde rjochting: it proses kin ôfslute foardat de rûtes fuort binne. Brûk de hooks fan 'e klant wêr't se besteane, lykas de up- en down-skripts fan OpenVPN of in ExecStartPost fan in systemd-unit, want dy rinne op it punt dat jo echt wichtich fine. Hooks rinne mei de rjochten fan wat se ek oproppen hat, dus in hook dy't netwurk opnij start, hat in eksplisite regel nedich ynstee fan in oanname. Hâld krekt ien eigner foar de libbensdoer fan 'e ferbining.
As twa tafersjochhâlders itselde profyl starte en stopje, is it resultaat in werferbiningslus dy't lêst as in leveransierstoart. It runbook einiget as de laach dokumintearre is, it geheim in kanaal hat dat gjin argv is, de wachtbetingst in steatskontrôle mei in time-out is, en ien proses de libbenssyklus besit.