OpenVPN xidmətə çevrildikdən sonra client-config-dir nəzərə alınmır
Nisbi client-config-dir daemonun iş qovluğuna görə həll olunur. Unit faylını oxuyun, yolun icazələrini yoxlayın, sonra jurnalda axtarışı təsdiqləyin.
Tunel qalxır və müştəri qoşulur, lakin sabit ünvan və həmin bir istifadəçi üçün təyin etdiyiniz göndərilən marşrutlar itir. Jurnalda “file not found” yazmır və insanları sertifikatları yenidən yaratmağa məhz bu sövq edir. Bu halların çoxunda daemon sizin sınaq apardığınız qabıqdan fərqli qovluqda işləyir və client-config-dir heç vaxt güman etdiyiniz kimi həll olunmayıb. Düzəliş yolun düzəldilməsidir, etimad məlumatlarının sıfırlanması deyil.
Konfiqurasiyaya toxunmazdan əvvəl unit faylını oxuyun
Redaktə etdiyiniz fayldan deyil, həqiqətən işləyən prosesdən başlayın. systemd-dən icra sətrini, iş qovluğunu və hansı hesaba keçdiyini soruşun. Bu üç cavab bu sinifdəki uğursuzluqların çoxunu izah edir:
systemctl show openvpn-server@server -p ExecStart -p WorkingDirectory -p User -p RootDirectoryBoş WorkingDirectory unitin / qovluğunda başladığını bildirir, yəni nisbi client-config-dir ccd yolu /ccd altında axtarılır. Həmin qovluq demək olar ki, heç vaxt mövcud olmur və daemon onun olmamasını ölümcül saymır.
Bunu sınaq zamanı istifadə etdiyiniz interaktiv işə salma ilə müqayisə edin: orada qabığınızın cari qovluğu yəqin ki, konfiqurasiya qovluğu idi. Eyni fayl, eyni açar sözlər, iki fərqli nəticə.
Nisbi yol nəyə görə həll olunur
Açar söz seçim istifadə edildiyi anda prosesin iş qovluğuna görə həll olunur. Bu, --config ilə ötürdüyüm konfiqurasiya faylının yanında demək deyil. OpenVPN konfiqurasiyanı mütləq yoldan asanlıqla oxuyar və nisbi dəyərləri yenə də başqa yerdə həll edər; buradakı tələ məhz budur. OpenVPN 2.6 təlimatı qaydanı --client-config-dir və yenidən --cd altında qeyd edir.
cd açar sözü digər fayllar oxunmazdan əvvəl bu konteksti dəyişir, ona görə cd /etc/openvpn/server təyin edib sonra client-config-dir ccd yazan unit /etc/openvpn/server/ccd kimi həll olunur. Əgər cd əlavə etsəniz, direktivlərin sırasını yoxlayın və onun həmin fayldakı bütün digər nisbi istinadlara təsir etdiyini unutmayın.
Yolu daemonun hesabı ilə gəzin
Yol düzgün ola bilər və yenə də oxuna bilməz. İmtiyazlar azaldıqdan sonra daemon artıq root deyil, ona görə hər valideyn qovluq həmin hesab üçün axtarış icazəsi, müştəri faylının özü isə oxuma icazəsi tələb edir. Valideyn qovluqda bir icra bitinin olmaması faylı gizlətməyə kifayətdir və xəta yalnız səssizcə standart hovuzu alan müştəri kimi üzə çıxır.
namei hər komponentin icazəsini sıra ilə çap edir, bu da qovluqları bir-bir yoxlamaqdan sürətlidir:
namei -l /etc/openvpn/server/ccd/client1Sonra oxunuşu özünüz kimi deyil, xidmət hesabı kimi sınayın:
runuser -u openvpn -- test -r /etc/openvpn/server/ccd/client1 && echo readableƏgər unit chroot istifadə edirsə, qovluq həbsxananın içində mövcud olmalıdır və konfiqurasiyadakı yol chroot tətbiq edildikdən sonra şərh olunur. Hostda həbsxananın xaricində olan fayl içəridən görünmür.
Təxmin etmək əvəzinə axtarışı təsdiqləyin
Bir yenidən başlatma üçün jurnal səviyyəsini qaldırın və serverin müştəriyə xas seçimlər barədə nə dediyini oxuyun. verb 4 səviyyəsində daemon idxal etdiyi hər müştəri konfiqurasiyasını bildirir, ona görə olmayan sətir həmin bağlantı üçün heç bir faylın oxunmadığının birbaşa sübutudur.
openvpn --config /etc/openvpn/server.conf --verb 4 --client-config-dir /etc/openvpn/server/ccdBunu ehtiyat portda ön planda işə salın və bir müştəri qoşun. Bu, systemd-ni tamamilə mənzərədən çıxarır: əgər üstələmələr burada görünür, xidmət altında görünmürsə, fərq faylda deyil, unitin kontekstindədir.
Heç bir fayl uyğun gəlmədikdə nə olmalı olduğuna qərar verin. ccd-exclusive olmadan müştəri yalnız qlobal hovuz ayarları ilə qəbul edilir və bu, yuxarıda təsvir olunan səssiz uğursuzluqdur. Onunla itkin fayl rədd edilmiş bağlantıya çevrilir və bu rəddi görmək asandır, amma yük altında sazlamaq çətindir.
Düzəldin, yenidən başladın, yoxlayın
Qovluğu konfiqurasiyada mütləq edin və elə saxlayın. Nisbi yollar yalnız unit iş qovluğunu sabitlədikdə təhlükəsizdir və onu sabitləmək sonradan kiminsə siləcəyi əlavə hərəkət edən hissədir.
client-config-dir /etc/openvpn/server/ccd
ccd-exclusiveNüsxəni yenidən başladın, tanınan bir müştərini yenidən qoşun və aldığı ünvanı ona göndərilən marşrutlarla birlikdə oxuyun. Əgər ünvan həmin müştərinin faylındakı ifconfig-push sətri ilə üst-üstə düşürsə, axtarış işləyib. Əgər müştəri hələ də ümumi hovuza düşürsə, jurnal sətirlərinin sayına qayıdın: sıfır idxal yolun və ya kimliyin səhv olduğunu bildirir, səhv məzmunlu bir idxal isə daemonun oxuduğundan başqa faylı redaktə etdiyinizi bildirir.
Əvvəlki uniti və konfiqurasiyanı birlikdə bərpa edərək geri qayıdın, sonra yenidən başladın. Bunların heç biri üçün sertifikatların yenidən verilməsi lazım deyil və qovluq probleminə etimad məlumatı problemi kimi baxmaq beş dəqiqəlik düzəlişi texniki xidmət pəncərəsinə çevirən yoldur.