OpenVPN-in çoxsaylı --up skriptləri barədə xəbərdarlığı: yalnız biri işləyir
İki up sətrini yenidən sıralamaq hər ikisinin işləməsinə səbəb olmur. OpenVPN hər mərhələ üçün bir əmr saxlayır, ona görə hər iki tərifi tapın və işə vahid giriş nöqtəsi verin.
Çoxsaylı skript xəbərdarlığı cədvəllə bağlı şikayət kimi səslənir, ona görə aşkar həll sətirləri yox olana qədər yenidən sıralamaqdır. Amma bu cədvəl şikayəti deyil. Sonrakı --up tərifi həmin mərhələ üçün artıq saxlanılan əmri əvəz edir və analizator bunu deyir, yəni iki skriptinizdən düz biri heç vaxt işləyib. Digəri onun arxasında növbəyə durmayıb; o, yox olub.
Xəbərdarlıq ölümcül olmasa da diqqətə layiqdir: proqnozlaşdırdığı şey səssizcə baş verməyi dayandıran DNS yeniləməsi və ya marşrut dəyişikliyidir.
Xəbərdarlıq sıralama ilə bağlı deyil
OpenVPN up mərhələsi üçün tək istifadəçi skript əmri saxlayır. Analizator profildən, daxil edilmiş fayldan və ya əmr sətrindən başqa bir təriflə qarşılaşdıqda, artıq saxladığını əvəz edir və xəbərdarlığı verir. Heç nə birləşdirilmir, heç nə iki dəfə işləmir və heç bir sıralama sualı yoxdur. Sağ qalan əmr analizatorun ən son gördüyüdür, buna görə sətri yerindən tərpətmək qalibi dəyişə bilər, digər skript isə ölü qalır.
Eyni qayda digər skript mərhələləri üçün də keçərlidir: hər birinə bir əmr. Əgər iki iş birlikdə baş verməlidirsə, onlara siyahını xatırladan iki direktiv deyil, vahid giriş nöqtəsi lazımdır.
Hər iki tərifi real işə salmada tapın
Redaktə etdiyiniz profildən deyil, daemonun həqiqətən aldığından başlayın. ps -ef və unitin ExecStart əmr sətrini göstərir; konteyner giriş nöqtəsi və ya sarğı oradan --up əlavə edə bilər, distributivin init faylı da eyni şeyi edə bilər. systemctl cat openvpn-server@server xidmətin özünün nə töhfə verdiyini açır, konfiqurasiya qovluğunda rekursiv grep isə fayl səviyyəsindəki tərifləri tapır. Dublikatlar adətən müxtəlif qatqılardan gəlir və bir faylı redaktə etməyin heç nəyi dəyişməməsinin səbəbi də elə budur.
Skripti başqa qovluğa köçürmək və ya adını dəyişmək də direktivi silmir. Analizator faylları deyil, tərifləri sayır.
İşin sahibi bir hook olsun
Davamlı həll hər iki əməliyyatı qəsdən müəyyən ardıcıllıqla icra edən tək dispetçerdir. set -eu ilə qısa shell skripti tələb olunan inteqrasiyanı, sonra yerli əməliyyatı çağırır və arqument sərhədləri qorunsun deyə "$@" ötürür; beləliklə davranış yoxlanıla bilən bir yerdə qalır. Arqumentləri ötürmək onları yalnız saxlayır; iki köməkçinin eyni interfeysi gözlədiyini təsdiqləmir, ona görə hər birinin müqaviləsini oxuyun. Uğursuzluğun nə etməli olduğunu və qismən dəyişikliklərin geri qaytarılmasının lazım olub-olmadığını qərarlaşdırın.
Başladıcı dəstəklənən genişlənmə hooku təklif edirsə, onu əl ilə zəncirləməyə üstün tutun. Konteyner obrazı və ya təchizatçı paketi çox vaxt əlavə iş üçün sənədləşdirilmiş yerə malikdir və bundan istifadə yeniləmənin dispetçerinizi üzərinə yazmasının qarşısını alır.
Təmizləmə uyğun down mərhələsinə aiddir. DNS-i yenidən yazan və ya marşrutlar əlavə edən up əməliyyatı sənədləşdirilmiş geri qaytarma tələb edir və yalnız başlanğıcı idarə edən dispetçer dizaynın yarısıdır.
Yalnız sükutu deyil, inteqrasiyanı təsdiqləyin
Dublikat xəbərdarlığını silmək asan hissədir; inteqrasiya hələ də işləməlidir. Qoşulduqdan sonra resolvectl status ilə və ya /etc/resolv.conf faylını oxumaqla resolver vəziyyətini yoxlayın, marşrutları ip route ilə təsdiqləyin. Sonra əlaqəni kəsin və yenidən qoşulun, çünki tələsik zəncirlənmiş hook əvvəlki sessiyadan adətən nəsə qoyub gedir. journalctl -u openvpn-server@server -b dispetçerinizin işləyib-işləmədiyini və nə çap etdiyini göstərir.
Hookun imtiyazlarını lazım olan yerdə saxlayın. script-security dəyərini artırmaq və ya daemonu daha çox hüquqla işlətmək əvəz olunmuş hook üçün düzəliş deyil; bu, hər gələcək skriptin, o cümlədən hücumçunun adlandırdığı skriptin imkanlarını genişləndirir.
Düzəlişin həqiqi olduğunun əlaməti jurnalda sükut deyil. İki yenidən qoşulmadan sonra DNS cavabının, marşrut qeydinin və təmizləmənin hamısının işləməsidir.