VPN müştərisini skriptləmək: paroldan əvvəl qatı seçin
Təchizatçı CLI-ı, rasdial, tətbiq niyyəti və ya UI avtomatlaşdırması hər biri fərqli şəkildə uğursuz olur. Qatı seçin, sirri argv-dən kənarda saxlayın və çıxış kodlarını deyil, vəziyyəti gözləyin.
Skriptlər VPN müştərilərini müəllifin seçdiyi qatda işə salır və bu qat nadir hallarda işin ehtiyac duyduğu qat olur. Təchizatçının əmr sətri, əməliyyat sisteminin yığıcısı və mobil tətbiq niyyəti hamısı bağlantının həyatında fərqli nöqtələrdə qayıdır. Onlar sirri də fərqli idarə edir və bu fərq parolun maşındakı hər istifadəçi üçün görünüb-görünmədiyini müəyyən edir. Skriptin ilk sətrini yazmazdan əvvəl qatı seçin.
Qat 1: təchizatçının əmr sətri
Əksər masaüstü müştəriləri profil adı və çox vaxt parol qəbul edən əmr sətri təqdim edir. Cisco-nun köhnə müştərisi istifadəçi və parol arqumentləri ilə connect felini qəbul edirdi; macOS daxili xidməti networksetup vasitəsilə təqdim edir; NetworkManager nmcli-yə cavab verir. Bu çağırışlar əmr bitəndə qayıdır ki, bu da tunelin istifadəyə yararlı olduğu an deyil. Yerləşdirdiyiniz versiya üçün təchizatçının öz sənədlərini oxuyun, çünki bu interfeyslər dəyişir və bəziləri tamamilə çıxarılır.
nmcli connection up "Work VPN"
networksetup -connectpppoeservice "Work VPN"
Üstünlük odur ki, təchizatçı öz profil anbarını tanıyır, buna görə çağırış GUI-nin istifadə edəcəyi eyni konfiqurasiyadan istifadə edir. Çatışmazlıq odur ki, hər təchizatçı öz fellərini uydurur və bir müştəri üçün yazılmış skript digərinə keçmir. Müştəri sabit və versiya bərkidilmiş olduqda bu qatı ən qısa yol kimi qəbul edin.
Qat 2: əməliyyat sisteminin öz xidməti
Windows-da yığıcı əməliyyat sisteminin bir hissəsidir və təchizatçının profil anbarı əvəzinə telefon kitabçası qeydinə qarşı işləyir. Bu onu müştərilər arasında daha daşınan və xidmət hesabından skriptləməyi daha asan edir. Bu həmçinin bağlantının bir yerdə mövcud olub digərində olmaması deməkdir ki, bu da yanlış siyahıya baxanları çaşdırır.
rasdial "Work VPN" user pass
Get-VpnConnection -Name "Work VPN" | Select-Object ConnectionStatus
Girişi yığmaq əvəzinə onu yaratmaq və ya silmək lazım olduqda PowerShell səthindən istifadə edin. WMI və cmdlet qatları eyni obyektləri fərqli adlarla təqdim edir və silmə ayırma əməliyyatından ayrı bir əməliyyatdır. Yalnız yığan skript miqrasiyadan sonra köhnəlmiş girişlər qoyub gedəcək. Təmizliyin baş verəcəyinə söz verməzdən əvvəl avtomatlaşdırmanızın hansı anbara yazdığını yoxlayın.
Remove-VpnConnection -Name "Old VPN" -Force
Get-VpnConnection
macOS-da ekvivalent şəbəkə xidmətləri siyahısıdır və mövcud xidmət yerində yaradılmaq əvəzinə adı ilə qoşulur.
Etimadnamələr hər qatda sızır, buna görə kanalı seçin
Əmr sətrində ötürdüyünüz hər şey hər yerli istifadəçi üçün proses cədvəlində görünür və adətən shell tarixçəsində də qalır. OpenVPN-in dəstəklədiyi alternativ, sirri fayldan oxumaqdır və --askpass ilə etməkdir, və faylın özünə ona bəslədiyiniz etimada uyğun icazələr lazımdır. Adlandırılmış boru sirri diskə yazmaqdan qaçır, lakin onu aça bilən hər hansı prosesə orada yazmağa imkan verir. Windows-da sirri etimadnamə menecerində və ya yalnız xidmət hesabının oxuya biləcəyi faylda saxlayın və heç vaxt toplu faylda literal kimi saxlamayın.
openvpn --config /etc/openvpn/work.conf --askpass /etc/openvpn/work.secret --auth-nocache --daemon
ls -l /etc/openvpn/work.secret
Eyni qayda tokenlər və birdəfəlik kodlar üçün də keçərlidir: avtomatlaşdırmanın onlara ehtiyacı varsa, avtomatlaşdırmanın əmr sətri arqumenti olmayan kanala ehtiyacı var. Mexanizmi dəyişdikdə sirri döndərin, çünki köhnə dəyər hardasa bir jurnalda qalıb. İşləyən və sızan skript işləyən skript deyil.
Vəziyyəti gözləyin, sonra bir sahibi nəzarət edin
Bu çağırışların hər biri tunel hazır olmadan qayıdır, buna görə müştərinin təqdim etdiyi vəziyyəti yoxlayın və ya içindəki hədəfi zaman aşımı ilə sınayın. Bağlantı çağırışından dərhal sonra fayl kopyalamaq və ya verilənlər bazası bağlantısı açmaq yarışdır və şəbəkə nasazlığı kimi görünən şəkildə arabir uğursuz olur.
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
Ayırmanın əks istiqamətdə eyni problemi var: proses marşrutlar getməzdən əvvəl çıxa bilər. Müştərinin qarmaqlarını mövcud olduqları yerdə istifadə edin, məsələn OpenVPN üçün up və down skriptləri və ya systemd vahidinin ExecStartPost-u, çünki onlar həqiqətən əhəmiyyət verdiyiniz nöqtədə işləyir. Qarmaqlar onları çağıranın imtiyazları ilə işləyir, buna görə şəbəkəni yenidən başladan qarmaq fərziyyə əvəzinə açıq qaydaya ehtiyac duyur. Bağlantının ömrü boyu dəqiq bir sahib saxlayın.
İki nəzarətçi eyni profili həm işə salıb, həm də dayandırdıqda, nəticə təchizatçı kəsilməsi kimi oxunan yenidən qoşulma dövrəsidir. Runbook qat sənədləşdirildikdə, sirrin argv olmayan kanalı olduqda, gözləmə şərti zaman aşımı ilə vəziyyət yoxlaması olduqda və həyat dövrünə bir proses sahib olduqda bitir.