Əgər systemctl start openvpn-client@office əmrini işə salıb sistemin systemd ilə yüklənmədiyi barədə mesaj alsanız, bu, xidmət nasazlığı kimi görünür. Əslində bu, heç də xidmət nasazlığı deyil: çağırdığınız systemctl danışmaq üçün işləyən menecer tapa bilmir, ona görə də OpenVPN ilə bağlı heç nə yoxlanmayıb. sudo menecer yaratmır, unit faylının quraşdırılması da onu yaratmır. Əmr və maşın iki fərqli dünyadan gəlir və bu, yalnız xətanın göründüyü yerdə üzə çıxıb.

Əvvəlcə soruşun: əmr hansı mühitdə işləyirsə, orada PID 1 hansı prosesə aiddir? Çünki bu cavab unit-lərin ümumiyyətlə mövcud olub-olmadığını müəyyən edir.

Xəta OpenVPN-i deyil, mühiti göstərir

systemctl menecer deyil, klientdir. O, sistem menecerinə soket vasitəsilə qoşulur və qarşı tərəfdə menecer olmadıqda insanların forumlara yapışdırdığı mesajı çap edir. ps -p 1 -o pid=,comm= əslində PID 1 kimi nə işlədiyini göstərir və cavab çox vaxt shell, init sarğısı və ya konteynerin öz giriş nöqtəsi olur. Bu halda unit faylı tam qanuni ola bilər və buna baxmayaraq heç vaxt oxunmaz. Əmri root kimi təkrarlamaq yalnız klientin etimad məlumatlarını dəyişir.

İlk sətirdən əvvəl bütün mesajı oxuyun. Menecerin özündən gələn xəta, məsələn çatışmayan unit və ya uğursuz şərt, ona çatdığınızı bildirir; bu xəta isə çatmadığınızı bildirir.

WSL: systemd-ni aktivləşdirmək konfiqurasiya dəyişikliyidir

WSL sonrakı buraxılışlarda systemd dəstəyi qazandı, lakin bu funksiya hər distributiv üçün ayrıca aktivləşdirilir və yalnız quraşdırılmış WSL versiyasının dəstəklədiyi yerdə işləyir. wsl --version Windows tərəfində nəyə sahib olduğunuzu göstərir, distributivin /etc/wsl.conf faylında isə [boot] bölməsi var və orada systemd=true yazılır. Həmin faylı mövcud bölmələri itirmədən redaktə edin, sonra dəyişikliyin qüvvəyə minməsi üçün WSL nüsxəsini yenidən başladın. wsl --shutdown bütün işləyən distributivləri dayandırır, ona görə əvvəlcə işinizi yadda saxlayın.

Yenidən açdıqdan sonra OpenVPN unitinə toxunmazdan əvvəl meneceri təsdiqləyin: ps -p 1 -o comm= çıxışı systemd göstərməlidir. systemd-ni işə salmaq nə profil, nə etimad məlumatı, nə də nüsxə adı verir, ona görə növbəti xəta PID 1-dən deyil, bunlardan biri ilə bağlı olacaq.

Konteynerlər unit-ləri deyil, giriş nöqtəsini işə salır

Adi konteyner giriş nöqtəsinin və ya əmrin təyin etdiyini işə salır və hansı paketləri quraşdırsanız da, o, systemd ilə yüklənən maşın deyil. Şəkilə systemctl əlavə etmək sizə qoşulacaq heç nəsi olmayan klient verir. Community OpenVPN üçün dəstəklənən nümunə adətən ön planda işləyən prosesdir: openvpn --config /path/to/client.conf — giriş nöqtəsi tərəfindən başladılır və kənardan nəzarət olunur. Həmin sahib başlatmanı, siqnalları və dayandırmanı idarə edir və tuneli idarə edən yeganə şey o olmalıdır.

Artıq həmin tuneli idarə edən giriş nöqtəsinin yanında interaktiv nüsxə başlatmayın, çünki iki proses cihaz və marşrutlar üstündə davaya düşəcək. Konteyner daxilində minimal init prosesi uşaqları yığır və siqnalları ötürür; lakin o, şəkli unit-ləri olan hosta çevirmir.

Əgər yerləşdirmə həqiqətən konteyner daxilində systemd tələb edirsə, buna görə qəsdən dizayn edilmiş şəkil lazımdır, systemctl şikayət etməyi dayandırana qədər əlavə imtiyazlar yox.

Menecer mövcud olduqdan sonra növbəti xətanı oxuyun

Real menecer xidməti işə saldıqdan sonra faydalı xətalar başlayır. Cihaz icazəsi nasazlığı, konfiqurasiya təhlili xətası, çatışmayan etimad məlumatı və əlçatmayan həmkar — bunlar PID 1 mesajının heç vaxt yoxlamadığı dörd fərqli problemdir. Onları unitin yaratdığı sıra ilə oxuyun: journalctl -u openvpn-client@office -n 50 systemd hostunda, ya da menecer olmayan yerdə klienti ön planda işə salmaqla. Ön planda işə salmaq profilin özünün işlədiyini təsdiqləməyin ən sürətli yoludur da.

Qeydlərinizdə iki mühiti ayrı saxlayın: tuneli işlədən host və əmrləri yazdığınız yer.

Əlaqəli məqalələr