Hizmetiniz OpenVPN hiç çalışmadan başarısız oluyor ve hata hiç yapılandırmadığınız bir bağlama biriminden söz ediyor. İşaret şu: systemd tüm işlemi reddediyor çünkü kök bağlama birimi maskelenmiş ve VPN profiliniz henüz okunmamış. Olağan neden, çalışma zamanı birim dizininde kalmış bir dosyadır; bozuk bir fstab ya da eksik bir sertifika değil. Önce dosyayı izleyin, çünkü elenmesi en ucuz açıklama odur.

Hata profilinizi değil, kök bağlamayı adlandırıyor

systemd kök bağlama birimini çekirdeğin bağlama bilgisinden kendisi üretir ve birimi -.mount olarak adlandırır, çünkü tire kök yolunu temsil eder. Bu birim normalde yalnızca bellekte bulunur ve arkasında dosya yoktur. Hata maskelendiğini söylediğinde, biri systemd'nin yükleyeceği yere bir birim dosyası koymuş ve o dosyayı /dev/null adresine yönlendirmiştir. Maske gerçek bir durumdur, mesajdaki bir yazım hatası değildir.

Örnek birimi başarısız olur çünkü iş grafiği sıralama ve kendi bağlama gereksinimleri üzerinden kök bağlamaya ulaşır. İşlem, OpenVPN ikili dosyası çalıştırılmadan önce reddedilir, bu yüzden istemci yapılandırmasındaki hiçbir şey neden olamaz. Bu yüzden profil, sertifika veya kimlik bilgisi değiştirmenin bu belirli hataya etkisi yoktur.

OpenVPN'de hata ayıklamadan önce çalışma zamanı dizinine bakın

Çalışma zamanı birim dizininde tam olarak bu adda bir dosya arayın, sonra systemd'ye birimin ne olduğunu düşündüğünü sorun. İki yanıt da hızlıdır ve birlikte kalmış bir dosyayı gerçek bir bağlama sorunundan ayırır.

ls -l /run/systemd/system/-.mount
systemctl status -.mount
systemctl list-unit-files --state=masked | grep mount

Normal bir makinede böyle bir dosya yoktur ve maskelenenler listesinde kök bağlama bulunmaz. İlk komut /dev/null adresine bir sembolik bağlantı yazdırıyorsa tanı kesindir. Aynı dizinde aynı araçların oluşturduğu bir tmp.mount maskesi de olabilir ve bu, başka bir ad altında aynı sınıf hatayı üretir. Yalnızca hatadaki ada değil, tüm dizine bakın.

ls -la /run/systemd/system/*.mount

Dizin temizse ve birim hâlâ maskeliyse, maske arama yolunun başka bir yerindedir ve systemctl cat -.mount hangi dosyanın yüklendiğini gösterir.

Dosyayı silin, yeniden yükleyin ve tekrar başlatın

Çalışma zamanı dosyasını kaldırıp yöneticiyi yeniden yüklemek yeterlidir ve bir paketten gelen hiçbir şeye dokunmaz. Başlatmadan önce yeniden yükleyin, çünkü systemd dizini yeniden okuyana kadar yüklü birimin durumunu korur.

sudo rm -f /run/systemd/system/-.mount /run/systemd/system/tmp.mount
sudo systemctl daemon-reload
systemctl status -.mount
sudo systemctl start [email protected]

Sonra düzeltmenin işe yaradığını varsaymak yerine hizmetin kendi günlüğünü okuyun. Temiz bir başlangıç yalnızca systemd'nin birimi kabul ettiğini kanıtlar; istemci eksik bir profil, erişilemeyen bir eş veya doğrulamayan bir sertifika yüzünden yine de ölebilir. Bunlar maskelenmiş birimin arkasında gizlenen sıradan OpenVPN sorunlarıdır. Günlük hangi profilin yüklendiğini ve tünelin gerçekten kurulup kurulmadığını kaydeder. Birim başlar ve tünel başlamazsa başka bir soruna geçmişsinizdir, ki bu ilerlemedir.

journalctl -u [email protected] -b --no-pager

/run geçici bir dosya sistemi olduğu için yeniden başlatma dosyayı da temizler. Bu, yeniden başlatmayı yararlı bir test yapar: hizmet yeniden başlatmadan sonra çalışıyor ve bir sonraki dağıtımdan sonra yine başarısız oluyorsa, dosya imaja gömülüyordur.

İmajdan geri gelmesini engelleyin

Derleme sırasında bağlama birimlerini maskeleyen bir konteyner veya sanal makine şablonu bu maskeyi her klona taşır. Sırada dosya sistemine ihtiyaç duyan ne varsa bozulur ve mesaj, geldiği imajı değil bağlamayı suçlar. Çalışan tek bir örnek içinde düzeltmek, sorunu bir sonraki örnek oluşturulana kadar saklar.

Derleme bağlamında dosya adını ve onu oluşturan komutu arayın, sonra maskeyi şablondan kaldırıp yeniden derleyin. Maske derleme sırasında gerçekten gerekiyorsa, derlemeyi bitiren aynı katmanda kaldırın, böylece gönderilen imaj temiz başlasın. Elle onardığınız makinede değil, yeni bir klonda doğrulayın. İmajın değiştiğini kanıtlayan tek test budur.

Hatırlanması gereken belirti hatanın ve yapılandırdığınız şeyin arasındaki uyumsuzluktur. Siz bir VPN istemcisi başlatırken systemd bir bağlamadan şikâyet ediyorsa, önce mesajdaki birim adını, sonra hizmet adını okuyun.

İlgili makaleler