Script huanzisha wateja wa VPN kwenye tabaka ambalo mwandishi alichagua, na tabaka hilo mara chache ndilo lililohitajika na kazi. Mstari wa amri wa mtoa huduma, kipiga simu cha mfumo wa uendeshaji na nia ya programu ya simu zote hurudi katika nyakati tofauti za maisha ya muunganisho. Pia hushughulikia siri kwa namna tofauti, na tofauti hiyo huamua kama nenosiri linaonekana kwa kila mtumiaji kwenye mashine. Chagua tabaka kabla ya kuandika mstari wa kwanza wa script.

Tabaka 1: mstari wa amri wa mtoa huduma

Wateja wengi wa desktop hutoa mstari wa amri unaopokea jina la wasifu na, mara nyingi mno, nenosiri. Mteja wa zamani wa Cisco alikubali kitenzi connect na hoja za mtumiaji na nenosiri; macOS huonyesha huduma iliyojengwa kupitia networksetup; NetworkManager hujibu nmcli. Simu hizi hurudi amri inapokamilika, ambayo sio wakati ule ule ambapo handaki inakuwa inatumika. Soma nyaraka za mtoa huduma kwa toleo unaloweka, kwa sababu violesura hivi hubadilika na vingine huondolewa kabisa.

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

Faida ni kwamba mtoa huduma anajua hifadhi yake ya wasifu, kwa hivyo simu hutumia usanidi ule ule ambao GUI ingetumia. Hasara ni kwamba kila mtoa huduma hubuni vitenzi vyake, na script iliyoandikwa kwa mteja mmoja haihamishiwi mwingine. Chukulia tabaka hili kama njia fupi zaidi wakati mteja amewekwa na toleo limebandikwa.

Tabaka 2: huduma ya mfumo wa uendeshaji yenyewe

Kwenye Windows kipiga simu ni sehemu ya mfumo wa uendeshaji, na hufanya kazi kwa ingizo la kitabu cha simu badala ya hifadhi ya wasifu ya mtoa huduma. Hilo huifanya iweze kuhamishwa zaidi kati ya wateja na rahisi kuandikia script kutoka akaunti ya huduma. Inamaanisha pia kwamba muunganisho unaweza kuwepo mahali pamoja na usiwepo mahali pengine, jambo linalowachanganya wanaotazama orodha isiyo sahihi.

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

Tumia uso wa PowerShell unapohitaji kuunda au kuondoa ingizo badala ya kuipiga simu. Tabaka za WMI na cmdlet huonyesha vitu vile vile kwa majina tofauti, na kuondoa ni operesheni tofauti na kukatisha muunganisho. Script inayopiga simu tu itaacha maingizo ya zamani baada ya uhamishaji. Angalia ni hifadhi gani uendeshaji wako unaiandikia kabla ya kuahidi kwamba usafishaji utafanyika.

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

Kwenye macOS kifananishi ni orodha ya huduma za mtandao, ambapo huduma iliyopo huunganishwa kwa jina badala ya kuundwa papo hapo.

Vitambulisho huvuja kwenye kila tabaka, kwa hivyo chagua chaneli

Kila kitu unachopitisha kwenye mstari wa amri huonekana kwenye jedwali la michakato kwa kila mtumiaji wa ndani, na kwa kawaida huishi pia kwenye historia ya shell. Mbadala unaoungwa mkono na OpenVPN ni kusoma siri kutoka kwenye faili kwa --askpass, na faili yenyewe inahitaji ruhusa zinazolingana na uaminifu unaoweka ndani yake. Bomba lililopewa jina huepusha kuandika siri kwenye diski lakini huruhusu mchakato wowote unaoweza kuifungua kuandika hapo. Kwenye Windows, hifadhi siri kwenye msimamizi wa vitambulisho, au kwenye faili ambayo akaunti ya huduma pekee inaweza kusoma, na kamwe usiweke kama neno halisi kwenye faili ya kundi.

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

Kanuni hiyo hiyo inatumika kwa tokeni na misimbo ya matumizi ya mara moja: ikiwa uendeshaji unahitaji, uendeshaji unahitaji chaneli ambayo sio hoja ya mstari wa amri. Zungusha siri unapobadilisha utaratibu, kwa sababu thamani ya zamani imekaa mahali kwenye kumbukumbu. Script inayofanya kazi na kuvuja sio script inayofanya kazi.

Subiri hali, kisha simamia mmiliki mmoja

Kila moja ya simu hizi hurudi kabla handaki haijawa tayari, kwa hivyo chunguza hali ambayo mteja huonyesha au jaribu lengwa ndani yake kwa muda wa kusubiri. Kunakili faili au kufungua muunganisho wa hifadhidata mara moja baada ya simu ya muunganisho ni mbio, na hushindwa mara kwa mara kwa namna inayofanana na hitilafu ya mtandao.

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

Kukatisha kuna tatizo lile lile kwa mwelekeo kinyume: mchakato unaweza kutoka kabla njia hazijapotea. Tumia ndoano za mteja pale zilipo, kama script za up na down za OpenVPN au ExecStartPost ya kitengo cha systemd, kwa sababu zinaendeshwa kwenye hatua unayojali kweli. Ndoano zinaendeshwa kwa haki za kile kilichozipiga, kwa hivyo ndoano inayoanzisha mtandao upya inahitaji kanuni iliyo wazi badala ya dhana. Weka mmiliki mmoja hasa kwa muda wote wa maisha ya muunganisho.

Wakati wasimamizi wawili wanaanzisha na kusimamisha wasifu ule ule, matokeo ni mzunguko wa kuunganisha upya unaosomwa kama hitilafu ya mtoa huduma. Runbook huisha wakati tabaka limeandikwa, siri ina chaneli ambayo sio argv, sharti la kusubiri ni ukaguzi wa hali na muda wa kusubiri, na mchakato mmoja unamiliki mzunguko wa maisha.

Makala zinazohusiana