OpenVPN up paytida xizmatni qayta ishga tushirish: hooks tun0.device'dan yaxshiroq
Qurilma birligi interfeysni kuzatadi, ulanishni emas. Xizmatga kerak bo'lgan shart uchun up yoki route-up tanlang, so'ng bloklamaydigan qayta ishga tushirish yuboring.
Bog'liq xizmatni tun0.device ga ulash tunnelga obuna bo'lishga o'xshaydi, lekin unday emas. Qurilma birligi interfeys mavjudligini aks ettiradi, bu muvaffaqiyatsiz ulanish va undan keyingi qayta ulanish davomida ham to'g'ri qolishi mumkin. Keyin xizmat noto'g'ri paytda ishlaydi yoki umuman ishlamaydi, interfeys orada yo'qolganiga qarab. Sizni haqiqatan qiziqtiradigan hodisani tavsiflovchi kanca OpenVPN chaqiradigan kancadir, systemd taxmin qiladigani emas.
Trigger tanlashdan oldin xizmatga qaysi shart kerakligini hal qiling, chunki uchta nomzod bir-birini almashtirmaydi.
Qurilma birligi aslida nimani kuzatadi
systemd qurilma birligini yadroning tarmoq interfeysiga qarashi asosida yaratadi, shuning uchun interfeys paydo bo'lganda tun0.device faol bo'ladi va olib tashlanganda faol bo'lmaydi. persist-tun bilan yumshoq qayta ishga tushirish interfeysni joyida saqlaydi, shuning uchun birlik hech qachon tebranmaydi va unga bog'langan hech narsa ishga tushmaydi. Barqarorlik bo'lmasa ham, birlik marshrutlar, DNS yoki uzoq tomon javob beradimi-yo'qmi haqida hech narsa demaydi.
Bu uni 'VPN tayyor' uchun yomon o'rinbosarga aylantiradi. Faqat mahalliy manzil kerak bo'lgan tinglovchi interfeys mavjudligi bilan qanoatlanishi mumkin, uzoq tarmoqdagi ilovani chaqiradigan xizmat esa marshrutlar va yetib borishni talab qiladi, buni qurilma birligi ifodalay olmaydi.
up, route-up va up-restart turlicha ma'no beradi
up TUN/TAP qurilmasi ochilib, interfeys sozlangandan keyin ishlaydi, bu tayinlangan manzilni bog'laydigan tinglovchi uchun to'g'ri payt. Marshrutlar o'rnatilgandan so'ng, sozlangan marshrut kechikishiga bo'ysunib route-up ishlaydi va marshrut bosqichi tugashini talab qiladigan ishlarga mos keladi. Ikkalasi ham uzoq ilova javob berishini isbotlamaydi. Ular orasidagi tanlov xizmatga nima kerakligi haqidagi savol, qaysi kanca tugallangandek eshitilishi emas.
persist-tun bilan qayta ishga tushirishlar qurilmadan qayta foydalanadi, shuning uchun up-restart o'rnatilmaguncha up qayta ishlamaydi. Bu parametr up skriptini hujjatlashtirilgan qayta ishga tushirish hayot tsikli uchun yoqadi va uning muhiti birinchi ishga tushirishga nisbatan qisqartirilgan. To'liq muhitni nazarda tutadigan skript birinchi ulanishda ishlaydi va keyingisida muvaffaqiyatsiz bo'ladi.
Harakatni kutmasdan yuboring
systemctl restart ni sinxron chaqiradigan kanca tartibi tunnelni kutayotgan birlik bilan boshi berk ko'chaga tushishi mumkin. systemctl --no-block try-restart vpn-dependent.service ishni navbatga qo'yadi va qaytadi, bu kancaning o'zi javob berayotgan ulanishni bloklashini oldini oladi. try-restart faqat ishlab turgan birlikka ta'sir qiladi, restart esa nofaol birlikni ham ishga tushiradi; odat bo'yicha emas, ataylab tanlang.
Navbatga qo'yish tekshirish emas. Ish qabul qilingan zahoti kanca muvaffaqiyat qaytaradi, shuning uchun tekshirish maqsadli birlik jurnalida yoki uning haqiqiy tinglovchi holatida bo'lishi kerak.
Qayta ishga tushirish siyosati birlikda yashaydi, kancada emas
RemainAfterExit=yes bilan oneshot birlik buyrug'i chiqqandan keyin ham faol qoladi va ikkinchi ishga tushirish so'rovi hech narsa qilmaydi, chunki systemd uni allaqachon ishga tushgan deb hisoblaydi. Bu atrofida loyihalash kerak bo'lgan xususiyat, takroriy ishga tushirish chaqiruvlari bilan chetlab o'tiladigan nuqson emas. Harakat har bir ulanish uchun ishlashi kerak bo'lsa, birlikka bunga imkon beradigan shakl kerak.
After= birliklarni tartibga soladi, BindsTo= umrlarni bog'laydi, lekin hech biri 'VPN qayta ulanganda buni qayta ishga tushir' degani emas. Tunnelga bog'langan birlik tunnel to'xtaganda to'xtaydi; tunnel qaytganda u o'zini qayta ishga tushirmaydi, agar biror narsa uni qayta ishga tushirmasa.
Bitta emas, uchta qayta ulanishni sinab ko'ring
Sovuq yuklash, to'liq mijoz qayta ishga tushirishi va yumshoq qayta ulanish har biri boshqa yo'lni mashq qiladi. Yumshoq qayta ulanish yo'qolgan up-restart, qisqartirilgan muhit yoki hech qachon nofaol bo'lmagan qurilma birligini ochib beradi. Uchtasini ham ishga tushiring va ikkala yo'nalishni tasdiqlang: tunnel ko'tarilganda xizmat ishlaydi va Wi-Fi roumingi kabi aloqasiz havola o'zgarishlarida qayta ishga tushmaydi.
Bog'liq xizmat o'zingizning boshqaruv kirishingizni olib yursa, mustaqil tiklash yo'lini saqlang. Siz ulanadigan narsani qayta ishga tushiradigan kanca sizni tashqarida qulflab qo'yishi mumkin bo'lgan o'zgarishdir.