Skriptet nisin klientët VPN në atë shtresë që zgjodhi autori, dhe ajo shtresë rrallë është ajo që i duhej punës. Linja e komandës e furnizuesit, numëruesi i sistemit operativ dhe një qëllim aplikacioni celular kthehen të gjithë në pika të ndryshme të jetës së lidhjes. Ata gjithashtu e trajtojnë sekretin ndryshe, dhe ky ndryshim vendos nëse fjalëkalimi është i dukshëm për çdo përdorues në makinë. Zgjidhni shtresën përpara se të shkruani rreshtin e parë të skriptit.

Shtresa 1: linja e komandës e furnizuesit

Shumica e klientëve të desktopit sjellin një linjë komande që merr një emër profili dhe, shumë shpesh, një fjalëkalim. Klienti i vjetër i Cisco pranonte një folje connect me argumente përdoruesi dhe fjalëkalimi; macOS ekspozon shërbimin e integruar përmes networksetup; NetworkManager përgjigjet ndaj nmcli. Këto thirrje kthehen kur komanda përfundon, gjë që nuk është i njëjti moment me atë kur tuneli bëhet i përdorshëm. Lexoni dokumentacionin e vetë furnizuesit për versionin që vendosni, sepse këto ndërfaqe ndryshojnë dhe disa hiqen plotësisht.

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

Avantazhi është se furnizuesi e njeh depon e vet të profileve, kështu që thirrja përdor të njëjtin konfigurim që do të përdorte GUI. Disavantazhi është se çdo furnizues shpik foljet e veta, dhe një skript i shkruar për një klient nuk transferohet te një tjetër. Konsiderojeni këtë shtresë si rrugën më të shkurtër kur klienti është i fiksuar dhe versioni është i fiksuar.

Shtresa 2: shërbimi i vetë sistemit operativ

Në Windows numëruesi është pjesë e sistemit operativ dhe punon kundër një zëri në librin e telefonit në vend të depove të profileve të furnizuesit. Kjo e bën atë më të transportueshëm midis klientëve dhe më të lehtë për t'u skriptuar nga një llogari shërbimi. Do të thotë gjithashtu se lidhja mund të ekzistojë në një vend dhe jo në tjetrin, gjë që ngatërron njerëzit që shikojnë në listën e gabuar.

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

Përdorni sipërfaqen PowerShell kur duhet të krijoni ose të hiqni zërin në vend që ta numëroni. Shtresat WMI dhe cmdlet ekspozojnë të njëjtat objekte nën emra të ndryshëm, dhe heqja është një operacion i veçantë nga shkëputja. Një skript që vetëm numëron do të lërë zëra të vjetruar pas një migrimi. Kontrolloni në cilën depo shkruan automatizimi juaj përpara se të premtoni se pastrimi ndodh.

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

Në macOS ekuivalenti është lista e shërbimeve të rrjetit, ku një shërbim ekzistues lidhet me emër në vend që të krijohet në fluturim.

Kredencialet rrjedhin në çdo shtresë, prandaj zgjidhni kanalin

Çdo gjë që kaloni në linjën e komandës shfaqet në tabelën e proceseve për çdo përdorues lokal dhe zakonisht mbijeton edhe në historikun e shell-it. Alternativa e mbështetur e OpenVPN është të lexoni sekretin nga një skedar me --askpass, dhe vetë skedari ka nevojë për leje që përputhen me besimin që i vendosni. Një tub i emërtuar shmang shkrimin e sekretit në disk, por lejon çdo proces që mund ta hapë të shkruajë atje. Në Windows, ruani sekretin në menaxherin e kredencialeve, ose në një skedar që vetëm llogaria e shërbimit mund ta lexojë, dhe kurrë si literal në një skedar batch.

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

I njëjti rregull vlen për token-at dhe kodet e përdorimit të vetëm: nëse automatizimi ka nevojë për to, automatizimi ka nevojë për një kanal që nuk është argument i linjës së komandës. Rrotulloni sekretin kur ndryshoni mekanizmin, sepse vlera e vjetër ka qenë në një regjistër diku. Një skript që funksionon dhe rrjedh nuk është një skript që funksionon.

Prisni gjendjen, më pas mbikëqyrni një pronar të vetëm

Secila prej këtyre thirrjeve kthehet para se tuneli të jetë gati, prandaj vëzhgoni gjendjen që ekspozon klienti ose provoni një destinacion brenda tij me një afat kohor. Kopjimi i skedarëve ose hapja e një lidhjeje me bazën e të dhënave menjëherë pas thirrjes së lidhjes është garë, dhe dështon me ndërprerje në një mënyrë që duket si defekt rrjeti.

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

Shkëputja ka të njëjtin problem në drejtim të kundërt: procesi mund të dalë para se rrugët të jenë zhdukur. Përdorni grepa e klientit aty ku ekzistojnë, si skriptet up dhe down të OpenVPN ose ExecStartPost i një njësie systemd, sepse ato ekzekutohen në pikën që ju intereson vërtet. Gregat ekzekutohen me privilegjet e atij që i thirri, kështu që një grep që rinis rrjetin ka nevojë për një rregull të qartë në vend të një supozimi. Mbani saktësisht një pronar për jetëgjatësinë e lidhjes.

Kur dy mbikëqyrës nisin dhe ndalojnë të njëjtin profil, rezultati është një cikël rilidhjeje që lexohet si ndërprerje e ofruesit. Runbook-u përfundon kur shtresa është dokumentuar, sekreti ka një kanal që nuk është argv, kushti i pritjes është një kontroll gjendjeje me afat kohor, dhe një proces e zotëron ciklin e jetës.

Artikuj të ngjashëm