Skripti zaženejo odjemalce VPN na tisti plasti, ki jo je izbral avtor, in ta plast je redko tista, ki jo je opravilo potrebovalo. Ukazna vrstica ponudnika, klicatelj operacijskega sistema in namera mobilne aplikacije se vrnejo ob različnih trenutkih življenja povezave. Tudi skrivnost obravnavajo drugače, in ta razlika odloča, ali je geslo vidno vsakemu uporabniku na stroju. Izberite plast, preden napišete prvo vrstico skripta.

Plast 1: ukazna vrstica ponudnika

Večina namiznih odjemalcev priloži ukazno vrstico, ki sprejme ime profila in, prepogosto, geslo. Stari odjemalec Cisco je sprejel glagol connect z argumenti uporabnika in gesla; macOS izpostavi vgrajeno storitev prek networksetup; NetworkManager odgovarja na nmcli. Ti klici se vrnejo, ko je ukaz končan, kar ni isti trenutek, ko predor postane uporaben. Preberite dokumentacijo ponudnika za različico, ki jo uvajate, ker se ti vmesniki spreminjajo in nekateri so popolnoma odstranjeni.

nmcli connection up "Work VPN"
networksetup -connectpppoeservice "Work VPN"

Prednost je, da ponudnik pozna svoje lastno shrambo profilov, zato klic uporabi isto konfiguracijo kot GUI. Pomanjkljivost je, da si vsak ponudnik izmisli svoje glagole, in skript, napisan za enega odjemalca, se ne prenese na drugega. To plast obravnavajte kot najkrajšo pot, ko je odjemalec fiksiran in različica pripeta.

Plast 2: lastna storitev operacijskega sistema

V Windowsu je klicatelj del operacijskega sistema in deluje proti vnosu v telefonskem imeniku namesto shrambe profilov ponudnika. Zaradi tega je bolj prenosljiv med odjemalci in lažje ga je skriptirati iz storitvenega računa. To tudi pomeni, da lahko povezava obstaja na enem mestu in ne na drugem, kar zmede ljudi, ki gledajo na napačen seznam.

rasdial "Work VPN" user pass
Get-VpnConnection -Name "Work VPN" | Select-Object ConnectionStatus

Uporabite površino PowerShell, ko morate vnos ustvariti ali odstraniti, namesto da ga kličete. Plasti WMI in cmdlet izpostavljata iste objekte pod različnimi imeni, in odstranitev je ločena operacija od prekinitve povezave. Skript, ki samo kliče, bo po selitvi pustil zastarele vnose. Preverite, v katero shrambo piše vaša avtomatizacija, preden obljubite, da bo čiščenje opravljeno.

Remove-VpnConnection -Name "Old VPN" -Force
Get-VpnConnection

V macOSu je enakovredni seznam omrežnih storitev, kjer se obstoječa storitev poveže po imenu, namesto da bi nastala sproti.

Poverilnice uhajajo na vsaki plasti, zato izberite kanal

Vse, kar posredujete na ukazni vrstici, se pojavi v tabeli procesov za vsakega lokalnega uporabnika in običajno preživi tudi v zgodovini lupine. Podprta alternativa OpenVPN je brati skrivnost iz datoteke z --askpass, in datoteka sama potrebuje dovoljenja, ki ustrezajo zaupanju, ki ga vanjo polagate. Imenovana cev se izogne zapisu skrivnosti na disk, a dovoli vsakemu procesu, ki jo lahko odpre, da piše tja. V Windowsu shranite skrivnost v upravitelju poverilnic ali v datoteki, ki jo lahko bere samo storitveni račun, in nikoli kot literal v paketni datoteki.

openvpn --config /etc/openvpn/work.conf --askpass /etc/openvpn/work.secret --auth-nocache --daemon
ls -l /etc/openvpn/work.secret

Isto pravilo velja za žetone in enkratne kode: če jih avtomatizacija potrebuje, potrebuje kanal, ki ni argument ukazne vrstice. Zavrtite skrivnost, ko spremenite mehanizem, ker je stara vrednost nekje ležala v dnevniku. Skript, ki deluje in uhaja, ni delujoč skript.

Počakajte na stanje, nato nadzorujte enega lastnika

Vsak od teh klicev se vrne, preden je predor pripravljen, zato anketirajte stanje, ki ga odjemalec izpostavi, ali preizkusite cilj znotraj njega s časovno omejitvijo. Kopiranje datotek ali odpiranje povezave z bazo takoj po klicu povezave je tekma, in občasno spodleti na način, ki je videti kot omrežna napaka.

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

Prekinitev ima isto težavo v nasprotni smeri: proces se lahko konča, preden poti izginejo. Uporabite kavlje odjemalca, kjer obstajajo, kot skripte up in down OpenVPN ali ExecStartPost enote systemd, ker se izvajajo na točki, ki vas resnično zanima. Kavlji se izvajajo s pravicami tistega, kar jih je sprožilo, zato kavelj, ki znova zažene omrežje, potrebuje izrecno pravilo namesto predpostavke. Vzdržujte natanko enega lastnika ves čas življenja povezave.

Ko dva nadzornika začneta in ustavita isti profil, je rezultat zanka ponovnega povezovanja, ki se bere kot izpad ponudnika. Runbook se konča, ko je plast dokumentirana, ima skrivnost kanal, ki ni argv, je čakalni pogoj preverjanje stanja s časovno omejitvijo, in ima en proces življenjski cikel.

Sorodni članki