VPN mijozi skriptini yozish: paroldan oldin qatlamni tanlang
Yetkazib beruvchi CLI, rasdial, ilova niyati yoki UI avtomatlashtiruvi har biri boshqacha muvaffaqiyatsiz bo'ladi. Qatlamni tanlang, sirni argv tashqarisida saqlang va holatni kuting, chiqish kodlarini emas.
Skriptlar VPN mijozlarini muallif tanlagan qatlamda ishga tushiradi va bu qatlam kamdan-kam ishga kerak bo'lgan qatlam bo'ladi. Yetkazib beruvchining buyruq satri, operatsion tizim teruvchisi va mobil ilova niyati barchasi ulanish hayotining turli nuqtalarida qaytadi. Ular sirni ham boshqacha boshqaradi va bu farq parolning mashinadagi har bir foydalanuvchiga ko'rinishini belgilaydi. Skriptning birinchi satrini yozishdan oldin qatlamni tanlang.
1-qatlam: yetkazib beruvchining buyruq satri
Aksariyat desktop mijozlar profil nomi va, juda ko'p hollarda, parolni qabul qiladigan buyruq satrini taqdim etadi. Cisco'ning eski mijoz foydalanuvchi va parol argumentlari bilan connect fe'lini qabul qilgan; macOS o'rnatilgan xizmatni networksetup orqali taqdim etadi; NetworkManager nmcli'ga javob beradi. Bu chaqiruvlar buyruq tugagach qaytadi, bu tunnel ishlatishga yaroqli bo'ladigan moment emas. Joylashtirayotgan versiyangiz uchun yetkazib beruvchining o'z hujjatlarini o'qing, chunki bu interfeyslar o'zgaradi va ba'zilari butunlay olib tashlanadi.
nmcli connection up "Work VPN"
networksetup -connectpppoeservice "Work VPN"
Afzallik shundaki, yetkazib beruvchi o'z profil omborini biladi, shuning uchun chaqiruv GUI ishlatadigan konfiguratsiyani ishlatadi. Kamchilik shundaki, har bir yetkazib beruvchi o'z fe'llarini o'ylab topadi va bitta mijoz uchun yozilgan skript boshqasiga o'tmaydi. Mijoz qat'iy va versiya qotirilgan bo'lsa, bu qatlamni eng qisqa yo'l deb hisoblang.
2-qatlam: operatsion tizimning o'z xizmati
Windows'da teruvchi operatsion tizimning bir qismi va u yetkazib beruvchi profil ombori o'rniga telefon kitobchasi yozuvi bilan ishlaydi. Bu uni mijozlar orasida ko'chiriladiganroq va xizmat hisobidan skript yozishni osonlashtiradi. Bu shuningdek ulanish bir joyda bo'lib, boshqasida bo'lmasligi mumkinligini bildiradi, bu noto'g'ri ro'yxatga qaraydiganlarni chalkashtiradi.
rasdial "Work VPN" user pass
Get-VpnConnection -Name "Work VPN" | Select-Object ConnectionStatus
Yozuvni terish o'rniga uni yaratish yoki olib tashlash kerak bo'lganda PowerShell yuzasidan foydalaning. WMI va cmdlet qatlamlari bir xil obyektlarni turli nomlar bilan taqdim etadi va olib tashlash uzishdan alohida operatsiya. Faqat teradigan skript migratsiyadan keyin eskirgan yozuvlarni qoldiradi. Tozalash bo'lishini va'da qilishdan oldin avtomatlashtirishingiz qaysi omborga yozishini tekshiring.
Remove-VpnConnection -Name "Old VPN" -Force
Get-VpnConnection
macOS'da ekvivalent tarmoq xizmatlari ro'yxati bo'lib, u yerda mavjud xizmat nomi bilan ulanadi, darhol yaratilmaydi.
Hisob ma'lumotlari har bir qatlamda sizib chiqadi, shuning uchun kanalni tanlang
Buyruq satrida uzatganingiz hamma narsa har bir mahalliy foydalanuvchi uchun jarayon jadvalida ko'rinadi va odatda shell tarixida ham saqlanib qoladi. OpenVPN qo'llab-quvvatlaydigan alternativa bu sirni fayldan o'qish --askpass bilan, va faylning o'zi unga qo'ygan ishonchingizga mos ruxsatlarga muhtoj. Nomlangan quvur sirni diskka yozishdan saqlanadi, lekin uni ocha oladigan har qanday jarayonga u yerga yozishga ruxsat beradi. Windows'da sirni hisob ma'lumotlari menejerida yoki faqat xizmat hisobi o'qiy oladigan faylda saqlang va hech qachon ommaviy faylda literal sifatida qoldirmang.
openvpn --config /etc/openvpn/work.conf --askpass /etc/openvpn/work.secret --auth-nocache --daemon
ls -l /etc/openvpn/work.secret
Xuddi shu qoida tokenlar va bir martalik kodlarga ham tegishli: agar avtomatlashtirishga ular kerak bo'lsa, avtomatlashtirishga buyruq satri argumenti bo'lmagan kanal kerak. Mexanizmni o'zgartirganda sirni aylantiring, chunki eski qiymat qayerdadir jurnalda yotgan. Ishlaydigan va sizib chiqadigan skript ishlaydigan skript emas.
Holatni kuting, so'ngra bitta egasini nazorat qiling
Bu chaqiruvlarning har biri tunnel tayyor bo'lishidan oldin qaytadi, shuning uchun mijoz taqdim etadigan holatni so'rang yoki uning ichidagi manzilni vaqt chegarasi bilan sinab ko'ring. Ulanish chaqiruvidan so'ng darhol fayllarni nusxalash yoki ma'lumotlar bazasi ulanishini ochish poyga bo'lib, u tarmoq nosozligiga o'xshash tarzda vaqti-vaqti bilan muvaffaqiyatsiz bo'ladi.
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
Uzishning teskari yo'nalishda xuddi shu muammosi bor: jarayon marshrutlar yo'qolishidan oldin chiqishi mumkin. Mijozning ilgaklarini mavjud joyda ishlating, masalan OpenVPN uchun up va down skriptlari yoki systemd birligining ExecStartPost, chunki ular sizga haqiqatan muhim nuqtada ishlaydi. Ilgaklar ularni chaqirgan narsaning imtiyozlari bilan ishlaydi, shuning uchun tarmoqni qayta ishga tushadigan ilgak taxminga emas, aniq qoidaga muhtoj. Ulanish hayoti davomida aynan bitta egasini saqlang.
Ikki nazoratchi bir xil profilni ishga tushirib to'xtatsa, natija yetkazib beruvchi uzilishidek o'qiladigan qayta ulanish sikli bo'ladi. Runbook qatlam hujjatlashtirilganda, sir argv bo'lmagan kanalga ega bo'lganda, kutish sharti vaqt chegarasi bilan holat tekshiruvi bo'lganda va hayot siklini bitta jarayon egallaganda tugaydi.