Скрипттер VPN клиенттерін автор таңдаған қабатта іске қосады, және бұл қабат тапсырмаға қажет болған қабат сирек болады. Жеткізушінің пәрмен жолы, операциялық жүйенің қоңырау шалушысы және мобильді қолданба ниеті қосылым өмірінің әртүрлі сәттерінде қайтады. Олар құпияны да әрқайсысы басқаша өңдейді, және бұл айырмашылық құпия сөздің машинадағы әр пайдаланушыға көрінуін анықтайды. Скрипттің бірінші жолын жазбас бұрын қабатты таңдаңыз.

Қабат 1: жеткізушінің пәрмен жолы

Көптеген десктоп клиенттері профиль атауын және тым жиі құпия сөзді қабылдайтын пәрмен жолын ұсынады. Cisco-ның ескі клиенті пайдаланушы мен құпия сөз аргументтерімен connect етістігін қабылдады; macOS кірістірілген қызметті networksetup арқылы ұсынады; NetworkManager nmcli-ге жауап береді. Бұл шақырулар пәрмен аяқталғанда қайтады, бұл туннель пайдалануға жарамды болған сәт емес. Орналастыратын нұсқаңыз үшін жеткізушінің құжаттамасын оқыңыз, өйткені бұл интерфейстер өзгереді және кейбіреулері толығымен жойылады.

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

Артықшылығы — жеткізуші өзінің профиль қоймасын біледі, сондықтан шақыру GUI қолданатын конфигурацияны пайдаланады. Кемшілігі — әр жеткізуші өз етістіктерін ойлап табады, ал бір клиент үшін жазылған скрипт екіншісіне көшпейді. Клиент бекітілген және нұсқа қадалған кезде бұл қабатты ең қысқа жол деп қараңыз.

Қабат 2: операциялық жүйенің өз қызметі

Windows-та қоңырау шалушы операциялық жүйенің бөлігі және жеткізушінің профиль қоймасының орнына телефон кітапшасындағы жазбамен жұмыс істейді. Бұл оны клиенттер арасында тасымалдауға қолайлы және қызмет тіркелгісінен скрипттеуге оңай етеді. Бұл сондай-ақ қосылымның бір жерде болып, екіншісінде болмауы мүмкін екенін білдіреді, бұл дұрыс емес тізімге қарайтындарды шатастырады.

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

Жазбаны шақырудың орнына оны жасау немесе жою қажет болғанда PowerShell бетін пайдаланыңыз. WMI және cmdlet қабаттары бірдей нысандарды әртүрлі атаулармен ұсынады, ал жою ажыратудан бөлек операция. Тек шақыратын скрипт көшіруден кейін ескірген жазбаларды қалдырады. Тазалаудың орындалатынына уәде бермес бұрын автоматтандыруыңыз қай қоймаға жазатынын тексеріңіз.

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

macOS-та баламасы — желілік қызметтер тізімі, онда бар қызмет атауы бойынша қосылады, ал лезде жасалмайды.

Тіркелгі деректері әр қабатта ағып кетеді, сондықтан арнаны таңдаңыз

Пәрмен жолында беретіннің бәрі әр жергілікті пайдаланушы үшін процестер кестесінде көрінеді және әдетте қабық тарихында да сақталады. OpenVPN қолдайтын балама — құпияны файлдан оқу --askpass көмегімен, ал файлдың өзіне оған сенетін сенімге сәйкес рұқсаттар қажет. Атаулы құбыр құпияны дискіге жазуды болдырмайды, бірақ оны аша алатын кез келген процеске сол жерге жазуға мүмкіндік береді. Windows-та құпияны тіркелгі деректері менеджерінде немесе тек қызмет тіркелгісі оқи алатын файлда сақтаңыз, және ешқашан batch файлында литерал ретінде қалдырмаңыз.

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

Дәл осы ереже токендер мен бір реттік кодтарға да қатысты: егер автоматтандыруға олар қажет болса, автоматтандыруға пәрмен жолының аргументі болып табылмайтын арна қажет. Механизмді өзгерткенде құпияны айналдырыңыз, өйткені ескі мән бір жерде журналда жатқан. Жұмыс істеп, ағып кететін скрипт — жұмыс істейтін скрипт емес.

Күйді күтіңіз, содан кейін бір иесін қадағалаңыз

Бұл шақырулардың әрқайсысы туннель дайын болмай тұрып қайтады, сондықтан клиент ұсынатын күйді сұраңыз немесе оның ішіндегі межені уақыт шектеуімен тексеріңіз. Қосылу шақыруынан кейін бірден файлдарды көшіру немесе дерекқор қосылымын ашу — жарыс, және ол желі ақауына ұқсайтын түрде мезгіл-мезгіл сәтсіз болады.

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

Ажыратудың кері бағытта дәл осындай мәселесі бар: процесс маршруттар жоғалмай тұрып шығуы мүмкін. Клиенттің ілгектерін бар жерде пайдаланыңыз, мысалы OpenVPN үшін up және down скрипттері немесе systemd бірлігінің ExecStartPost, өйткені олар сізге шын мәнінде маңызды нүктеде орындалады. Ілгектер оларды шақырған нәрсенің артықшылықтарымен орындалады, сондықтан желіні қайта іске қосатын ілгек болжамның орнына нақты ережені қажет етеді. Қосылым өмірі бойы дәл бір иесін ұстаңыз.

Екі бақылаушы бір профильді қосып, тоқтатқанда, нәтиже — жеткізуші үзілісі ретінде оқылатын қайта қосылу циклі. Runbook қабат құжатталғанда, құпияның argv емес арнасы болғанда, күту шарты уақыт шектеуімен күйді тексеру болғанда және өмірлік циклді бір процесс иеленгенде аяқталады.

Қатысты мақалалар