VPN mijozi tarmoqni qayta sozlash uchun imtiyozli yordamga muhtoj va bu fakt atrofidagi hamma narsaga juda keng qo‘llaniladi. Fayl jildini ulaydigan skriptga root kerak emas, chunki jild tizimga kirgan foydalanuvchining sessiyasiga va uning hisob ma’lumotlariga tegishli. Ulanishni imtiyozli yo‘ldan chiqarish sudo qoidalariga, root ilgaklariga va birgalikda keladigan dasturlarni o‘zgartirishga bo‘lgan ehtiyojni yo‘q qiladi. Qolgani — ochiq turadigan, bitta profilni kuzatadigan va bitta urinish qiladigan kichik applet.

Nega bu foydalanuvchi sessiyasiga tegishli

Ulangan jild — uni ulagan sessiyaning xususiyati. Boshqa foydalanuvchining sessiyasi uni ko‘rmaydi, rootga tegishli ulanish esa Finder yaratganidan boshqacha harakat qiladi. Ulanishni foydalanuvchi sessiyasida saqlash shu semantikani saqlaydi.

Imtiyozli yordamchilar haqiqatan kerak bo‘lgan qismlar uchun mavjud: tunnel interfeysini yaratish, marshrutlarni o‘zgartirish, hal qiluvchini yangilash. SMB jildini ulash o‘sha qismlardan biri emas. Unga shunday munosabatda bo‘lish parolsiz sudo va hech kim yo‘q paytda ishlaydigan root skripti o‘rtasida tanlov qilishga majbur qiladi. Ikkalasi ham muammo oqlaydigandan kattaroq xavf, foydalanuvchi sessiyasi yondashuvi esa bu tanlovdan butunlay qochadi.

Tunnelblickning o‘z ulanish ilgaklari bu yerda o‘rinbosar emas, chunki ular ish stoli sessiyasidan tashqarida ishlaydi va ularning mijoz skriptlariga nisbatan tartibi belgilanmagan. Holatni foydalanuvchi appletidan so‘rash kamroq taxminlarga ega kichikroq mexanizmdir.

Avval jild ishlashini qo‘lda isbotlang

Avtomatlashtirish mavjud bo‘lmagan marshrut, ruxsat yoki hisobni bera olmaydi. Har qanday skript yozishdan oldin VPNga qo‘lda ulanib, jildni Finderda oching. Agar bu muvaffaqiyatsiz bo‘lsa, skript yanada chalkash tarzda muvaffaqiyatsiz bo‘ladi.

Skript ishlatadigan uchta qiymatni yozib oling: profil nomini Tunnelblick sanab o‘tganidek aniq, jildning URL manzilini va ulashdan keyin Finder ko‘rsatadigan jild nomini. Jild nomi muhim, chunki mavjud ulanishni tekshirish uni ishlatadi, faqat nomga asoslangan tekshirish esa qulaylik himoyasi, serverning kimligini isbotlash emas. Mashinada noyob nomdan foydalaning. So‘ngra serverning umuman javob berishini tasdiqlang.

smbutil view //files.corp.example
osascript -e 'tell application "Tunnelblick" to get state of first configuration whose name is "Office"'
mount | grep -i smbfs

Birinchi buyruq server javob berishini, ikkinchisi profil nomi hal bo‘lishini isbotlaydi, uchinchisi esa muvaffaqiyatli ulanish qanday ko‘rinishini ko‘rsatadi. Biror narsani avtomatlashtirishdan oldin uchtasini ham yozib oling.

Profil holatini Tunnelblickdan o‘qing

Tunnelblick o‘z konfiguratsiyalarini va ularning holatlarini AppleScript orqali ochib beradi, va bu loyihaga kerak bo‘lgan yagona ilgak. Muhim holat — aynan o‘sha profil uchun xabar qilinadigan satr, dasturning mavjudligi emas.

So‘rovning aytib o‘tishga arziydigan oqibatlari bor. Intervaldan qisqaroq qayta ulanish sezilmasdan o‘tishi mumkin, applet esa o‘tishni umuman ko‘rmaydi. Bu ulanish himoyasi uchun maqbul va har bir hodisaga javob berishi kerak bo‘lgan har qanday narsa uchun maqbul emas. Agar hodisalar aniqligi kerak bo‘lsa, bu noto‘g‘ri mexanizm, qisqaroq taymer kerak bo‘lgan mexanizm emas. Intervalni shu murosa bilan tanlang.

property attempted : false

on idle
    set profileName to "Office"
    set shareURL to "smb://files.corp.example/OfficeTeam"
    set volName to "OfficeTeam"
    tell application "Tunnelblick" to set vpnState to state of first configuration whose name is profileName
    if vpnState is not "CONNECTED" then
        set attempted to false
        return 20
    end if
    tell application "Finder" to set mounted to (exists disk volName)
    if (not mounted) and (not attempted) then
        set attempted to true
        try
            mount volume shareURL
        end try
    end if
    return 20
end idle

Uni ochiq qolish tanlovi bilan dastur sifatida eksport qiling, so‘ngra sudo orqali emas, tizimga kirgan sessiyada ishga tushiring.

Bir marta ulang, so‘ngra urinishni to‘xtating

Urinilgan bayrog‘i bu hisob ma’lumotlarini taxmin qiluvchi halqaga aylanishiga yo‘l qo‘ymaydi. Applet urinib bo‘lgach, qayta urinishdan oldin ulanish holati o‘zgarishini kutadi.

Bu xatti-harakat ataylab. Ulanishni rad etadigan jild odatda buni yangi urinish tuzata olmaydigan sabab bilan rad etadi, takroriy urinishlar esa bitta so‘rovni ularning oqimiga aylantiradi. Bayroq profil ulangan holatdan chiqqanda qayta tiklanadi, shuning uchun haqiqiy qayta ulanish aynan bitta yangi urinish beradi. Appletdan chiqish va qayta ishga tushirish ham uni qayta tiklaydi, va bu qo‘lda chetlab o‘tishdir. Ikki yo‘lning hech biri muvaffaqiyatsizlikni yashirmaydi; ikkalasi ham uni Finderda ko‘rinadigan qilib qoldiradi.

Skript hech qanday parol olib yurmaydi va shunday qolishi kerak. Ulash amali so‘rasin, kalitlar bog‘lami esa tashkilot qo‘llab-quvvatlaydigan narsani qilsin. Hisob ma’lumotini URLga joylash qulaylik skriptini aylantirilishi kerak bo‘lgan sirga aylantiradi.

Yordamchi nima qila olmaydi

Uchta chegara applet yonida yozishga arziydi. U tarmoq nosozligidan keyin band jildni chiqara olmaydi, holat ulangan deyilganda DNS va server tayyor ekaniga kafolat bera olmaydi va har bir qayta ulanishga javob bermaydi.

Birinchi chegara amalda eng muhim. Serveri yo‘qolgan jild ulangan ko‘rinadigan va kirishda to‘sqinlik qiladigan jildni qoldiradi, xushmuomala tuzatish esa fayl amallarini tugatib, rejalashtirilgan uzilishdan oldin uni chiqarishdir. Ikkinchisi muvaffaqiyatsiz birinchi urinishlarning ko‘pini tushuntiradi: tunnel ko‘tarilgan, hal qiluvchi esa hali yetib kelmagan, shuning uchun kuting va keyin tasdiqlash uchun bir marta qo‘lda ulang. Uchinchisi — avval aytilgan so‘rov murosasi, tuzatilishi kerak bo‘lgan xato emas.

Nazoratsiz mashina yoki boshqariladigan park uchun bu dizayn noto‘g‘ri shaklda. Ish stoli appletini imtiyozli xizmatga kengaytirish o‘rniga administratorga tegishli ulash siyosatidan foydalaning.

O'xshash maqolalar