VPN'dan keyingi vazifalarni if-up emas, dispetcherdan ishga tushiring
Eski interfeys ilgagi VPN ulanishini ko'rmaydi. vpn-up ni profil UUID si bilan moslang, vazifani takrorlanadigan qilib saqlang va hech qachon yuz bermaydigan uzilishni rejalashtiring.
VPN ko'tarilgandan keyin ishlashi kerak bo'lgan skriptga ulanishga ega bo'lgan komponentdan hodisa kerak. Eski tarmoq ilgaklari katalogiga qo'yilgan fayl NetworkManager, pppd yoki alohida OpenVPN jarayoni yaratishi mumkin bo'lgan har bir VPN uchun qayta chaqiruv emas. Bu egalarning har biri boshqa muhit bilan boshqa hodisani xabar qiladi, shuning uchun ilgak tanlanishidan oldin egasini aniqlash kerak. Aks holda skript to'g'ri va shunchaki hech qachon ishlamaydi.
NetworkManager tomonidan boshqariladigan VPN uchun dispetcher to'g'ri joy, va vpn-up to'g'ri amal.
Interfeys hodisasini emas, vpn-up ni ishlating
Dispetcher up ni vpn-up dan ajratadi. Birinchisi faollashtirilgan interfeysni xabar qiladi; ikkinchisi faollashtirilgan VPN ulanishini xabar qiladi. Wi-Fi ko'tarilishi faqat ostidagi bog'lanish mavjudligini bildiradi; tunnel hali muzokara qilayotgan bo'lishi mumkin yoki hech qachon autentifikatsiyadan o'tmasligi mumkin.
Skript interfeys va amalni oladi, ulanish tafsilotlari esa muhit orqali keladi, jumladan profil UUID si va VPN ning IP interfeysi. Identifikatsiyani qurilma nomlaridan taxmin qilish o'rniga o'sha o'zgaruvchilarni o'qing.
Moslikni bitta ulanish bilan cheklang
Ulanish UUID si yoki dispetcher beradigan boshqa identifikatsiya bo'yicha moslang, tun prefiksi yoki ppp0 bo'yicha emas. Interfeys nomlari barqaror emas, bir vaqtning o'zida bir nechta tunnel bo'lishi mumkin, va ikki profil bir xil ko'rsatiladigan nomga ega bo'lishi mumkin. tun prefiksiga moslash skript oxir-oqibat hech kim tegishni o'ylamagan ulanish uchun ishga tushishini bildiradi. Qayta ulanish qurilmani qayta qurganda u bitta profil uchun ikki marta ham ishga tushishi mumkin.
Vazifani idempotent qiling. Har bir chaqiruvda marshrut qo'shadigan qayta chaqiruv oxir-oqibat jadvalni nusxalar bilan to'ldiradi, va marshrutlashni buzadigan ikkinchi nusxadir.
Faollashtirish nimani isbotlamasligini biling
vpn-pre-up NetworkManager VPN to'liq faollashtirilganini xabar qilishidan oldin ishlaydi, va menejer o'sha skriptlarni kutadi. Bloklovchi bosqichni faqat vazifa haqiqatan o'sha yerga tegishli bo'lganda ishlating, chunki sekin tekshiruv boshqa barcha komponentlar ko'rishni kutayotgan faollashtirishni kechiktiradi.
Marshrutlar mavjudligi dastur tinglayotganini, xususiy nom yechilayotganini yoki foydalanuvchi sessiyasi borligini isbotlamaydi. Ularni cheklangan vaqt bilan alohida tekshiring va butun zanjirni qayta sinash o'rniga qaysi qatlam muvaffaqiyatsiz bo'lganini xabar qiling.
Skript ishlaydigan muhitni hurmat qiling
Dispetcher skriptlari root sifatida, har qanday foydalanuvchi sessiyasidan tashqarida ishlaydi. Kirgan foydalanuvchining muhiti, grafik sessiyasi yoki ochilgan kalit qutisi mavjud deb o'ylamang. Hech kim ish stoli muhiti yo'qligiga har bir hisob ma'lumotini har bir jarayon uchun o'qiladigan qilib javob bermasligi kerak. Foydalanuvchi sessiyasi ishini foydalanuvchi xizmatida yoki qayta chaqiruv foydalanuvchini taqlid qilmasdan signal bera oladigan sessiya yordamchisida saqlang.
Skriptga egalik va ruxsatlar ham muhim. root sifatida ishlaydigan va har qanday foydalanuvchi almashtira oladigan fayl imtiyozlarni oshirish yo'li, va bu VPN mantig'i to'g'ri yoki yo'qligidan mustaqil topilma.
Hech qachon yuz bermaydigan uzilishni rejalashtiring
NetworkManager kutilmagan tugash yoki aloqa yo'qolishi kabi majburiy uzilishlar uchun vpn-pre-down chiqarilmasligini hujjatlashtiradi. Shuning uchun faqat yumshoq pre-down atrofida qurilgan tozalash tuzilishi bo'yicha to'liq emas. Skript o'zgartiradigan har qanday umumiy holat qulashdan keyin uni tiklashi mumkin bo'lgan boshqa egaga muhtoj, va bu tiklash yo'li taxmin qilinmasdan sinovdan o'tkazilishi kerak.
Ilgakni oddiy ulanish, qayta ulanish, qasddan uzilish va tortib olingan kabel bilan sinab ko'ring. Sirlarni yozmasdan UUID, amal va ishga tushgan interfeysni qayd eting. O'sha qayd ilgak siz nazarda tutgan ulanish uchun ishlaganining yagona ishonchli dalilidir, va keyingi o'zgarishni xavfsiz qiladigan ham o'sha.