VPN qalxdıqdan sonra işləməli olan skript bağlantıya sahib olan komponentdən hadisə tələb edir. Köhnə şəbəkə qarmağı qovluğuna atılan fayl NetworkManager, pppd və ya müstəqil OpenVPN prosesinin yarada biləcəyi hər VPN üçün geri çağırış deyil. Bu sahiblərin hər biri fərqli mühitlə fərqli hadisə bildirir, ona görə qarmaq seçilməzdən əvvəl sahib müəyyənləşdirilməlidir. Əks halda skript düzgündür və sadəcə heç vaxt işə düşmür.

NetworkManager tərəfindən idarə olunan VPN üçün dispetçer düzgün yerdir və vpn-up düzgün əməliyyatdır.

İnterfeys hadisəsini deyil, vpn-up-u istifadə edin

Dispetçer up ilə vpn-up-i fərqləndirir. Birincisi aktivləşdirilmiş interfeysi, ikincisi isə aktivləşdirilmiş VPN bağlantısını bildirir. Wi-Fi-nın qalxması yalnız əsas keçidin mövcud olduğunu göstərir; tunel hələ də danışıqlar apara bilər və ya ümumiyyətlə autentifikasiya olunmaya bilər.

Skript interfeysi və əməliyyatı alır, bağlantı detalları isə mühit vasitəsilə gəlir, o cümlədən profil UUID-si və VPN IP interfeysi. Kimliyi cihaz adlarından çıxarmaq əvəzinə həmin dəyişənləri oxuyun.

Uyğunluğu bir bağlantı ilə məhdudlaşdırın

Bağlantı UUID-si və ya dispetçerin verdiyi başqa kimlik üzrə uyğunlaşdırın, tun prefiksi və ya ppp0 üzrə deyil. İnterfeys adları sabit deyil, eyni anda birdən çox tunel ola bilər və iki profil eyni göstərilən adı daşıya bilər. tun prefiksi ilə uyğunlaşdırma skriptin sonda heç kimin toxunmaq istəmədiyi bağlantı üçün işə düşməsi deməkdir. Yenidən qoşulma cihazı yenidən qurduqda bir profil üçün iki dəfə də işə düşə bilər.

Tapşırığı idempotent edin. Hər çağırışda marşrut əlavə edən geri çağırış sonda cədvəli təkrarlarla doldurur və marşrutlaşdırmanı pozan məhz ikinci nüsxədir.

Aktivləşdirmənin nəyi sübut etmədiyini bilin

vpn-pre-up NetworkManager VPN-in tam aktivləşdiyini bildirməzdən əvvəl işləyir və menecer həmin skriptləri gözləyir. Bloklayıcı mərhələni yalnız tapşırıq həqiqətən oraya aid olduqda istifadə edin, çünki yavaş yoxlama bütün digər komponentlərin gözlədiyi aktivləşdirməni gecikdirir.

Marşrutların mövcud olması tətbiqin dinlədiyini, şəxsi adın həll olunduğunu və ya istifadəçi sessiyasının olduğunu sübut etmir. Bunları məhdud vaxt limiti ilə ayrıca yoxlayın və bütün zənciri yenidən sınamaq əvəzinə hansı qatın uğursuz olduğunu bildirin.

Skriptin işlədiyi kontekstə hörmət edin

Dispetçer skriptləri root kimi, heç bir istifadəçi sessiyasından kənar işləyir. Daxil olmuş istifadəçinin mühitinin, qrafik sessiyasının və ya açılmış açar halqasının mövcud olduğunu güman etməyin. Heç kim masaüstü kontekstinin olmamasına hər etimadı hər proses üçün oxunaqlı etməklə cavab verməməlidir. İstifadəçi sessiyası işini istifadəçi xidmətində və ya geri çağırışın istifadəçini təqlid etmədən siqnal verə biləcəyi sessiya köməkçisində saxlayın.

Skriptin sahibliyi və icazələri də vacibdir. Hər istifadəçinin əvəz edə biləcəyi, root tərəfindən icra olunan fayl imtiyaz yüksəltmə yoludur və bu, VPN məntiqinin düzgün olub-olmamasından asılı olmayan ayrıca bir tapıntıdır.

Heç vaxt işə düşməyən əlaqə kəsilməsini planlaşdırın

NetworkManager sənədləşdirir ki, vpn-pre-down gözlənilməz dayandırma və ya bağlantının itirilməsi kimi məcburi əlaqə kəsilmələrində göndərilmir. Buna görə yalnız mülayim pre-down ətrafında qurulmuş təmizləmə konstruksiyaya görə natamamdır. Skriptin dəyişdiyi hər hansı ortaq vəziyyət qəzadan sonra onu bərpa edə bilən başqa sahibə ehtiyac duyur və bu bərpa yolu güman edilmək əvəzinə sınaqdan keçirilməlidir.

Qarmağı normal qoşulma, yenidən qoşulma, qəsdən əlaqə kəsmə və dartılmış kabel ilə sınayın. UUID-ni, əməliyyatı və işə düşən interfeysi sirləri qeyd etmədən yazın. Bu qeyd qarmağın nəzərdə tutduğunuz bağlantı üçün işlədiyinə dair yeganə etibarlı sübutdur və növbəti dəyişikliyi təhlükəsiz edən də budur.

Əlaqəli məqalələr