Noutbuk allaqachon o'sha tarmoqda bo'lsa, uy tarmog'i VPN'ining qiladigan ishi yo'q. Vasvasaga soluvchi qisqa yo'l — noldan farqli kod bilan chiqadigan tayyorgarlik buyrug'i; bu unitni ishdan chiqaradi va har bir panel buzilgandek ko'rinadi. systemd'da aynan shu turdagi qaror uchun direktiva bor va u qasddan o'tkazib yuborishni haqiqiy nosozlikdan ajratadi. Buni to'g'ri qilish asosan har bir chiqish kodi nimani anglatishini yozib qo'yishdir.

Nega muvaffaqiyatsiz old shart noto'g'ri shakl

ExecStartPre noldan farqli chiqishni ishga tushish xatosi deb qabul qiladi, bu xizmatni tayyorlaydigan buyruq uchun to'g'ri. Uni shart sifatida ishlatish siyosat qarorini buzilgan bog'liqlikdan ajratib bo'lmaydigan qiladi. ExecCondition unit muvaffaqiyatsiz deb belgilanmasdan ishga tushishdan bosh tortishi uchun mavjud.

Bu farq tungi soat uchda muhim, chunki hech kim dizaynga muvofiq ishlagan qizil unitni tekshirishni xohlamaydi. Muvaffaqiyatsiz unit qasddan qilingan nosozliklar orasida haqiqiy xatolarni ham yashiradi.

Avval chiqish kodlari shartnomasini yozing

Shartnomani skriptdan oldin yozing. Nol chiqish davom etish, bir chiqish qolgan ishga tushirish buyruqlarini o'tkazib yuborish, 255 chiqish esa shartning o'zi ishlay olmaganini bildiradi. Ikki va 254 orasidagi kodlar ham odatda o'tkazib yuborishni bildiradi, yordamchi tasodifiy xato kodi qaytarganda buni unutish oson. Quyidagi drop-in yordamchini unitning haqiqiy nomiga bog'laydi.

[Service]
ExecCondition=/usr/local/libexec/should-start-home-vpn

Standart semantikani qabul qilishdan oldin amaldagi unitni meros qolgan SuccessExitStatus yoki stop-post sozlamalari bo'yicha tekshiring. So'ng uchta natijaning har birini qasddan sinab ko'ring.

Tarmoq ishorasi joylashuv isboti emas

Erishsa bo'ladigan router manzili yoki ma'lum MAC to'g'ri tarmoqni ko'rsatishi mumkin va ikkalasi ham buni isbotlamaydi. Boshqa tarmoq o'sha manzilni qayta ishlatishi mumkin, ARP ma'lumotlari eskirgan bo'lishi mumkin va identifikatorlarni taqlid qilish mumkin. Tekshiruvni siyosatga mos optimallashtirish deb qarang, autentifikatsiya natijasi deb emas.

Noaniqlik nimani anglatishini oldindan hal qiling. Ishonchingiz komil bo'lmaganda VPNni ishga tushirish oddiygina ulana olmaydigan mijoz uchun xavfsiz; ishonchingiz komil bo'lmaganda uni o'tkazib yuborish xavfsiz emas. Tekshiruvni cheklangan qiling va ro'yxatdagi birinchisini taxmin qilish o'rniga faol interfeysni o'qing. Osilib qolgan tekshiruv «yo'q» deb javob beradiganidan yomonroq, chunki unit uni kutadi.

Bu taxminlarni unit fayli yoniga yozib qo'ying, keyingi odam yordamchi nimaga ishonishini bilsin. Skript boshidagi izoh ularni saqlash uchun eng arzon joy.

Tarmoqlar orasidagi o'tishni boshqaring

Shart xizmat ishga tushganda bajariladi va keyin qayta baholanmaydi. O'tkazib yuborilgan unit noutbuk kafega ko'chgandan keyin ham o'tkazib yuborilgan bo'lib qoladi, ishlab turgan tunnel esa noutbuk uyga qaytgandan keyin ham ko'tarilgan holda qoladi. Tarmoq o'zgarishining hayot tsiklini alohida mexanizm orqali ishga tushirish va to'xtatish qaroriga bog'lang.

systemctl cat home-vpn.service

To'rt holatni sinab ko'ring: uyda ishga tushirish, tashqarida ishga tushirish, ishlay olmaydigan tekshiruv va unit faol bo'lganda tarmoqlar orasidagi o'tish. O'tkazib yuborish sababini jurnalda ko'rinadigan tuting, qasddan qabul qilingan qaror hech qachon autentifikatsiya xatosiga o'xshamasin. Xizmat ma'lumotnomasi chiqish semantikasi va minimal versiyani hujjatlashtiradi.

O'xshash maqolalar