Shërbimi dështon, regjistrat përmendin një spawn dhe një direktori, dhe instinkti i parë është të kontrollosh konfigurimin e VPN. Në atë skedar nuk është lexuar ende asgjë. systemd dështoi ndërsa përgatiste procesin, përpara se të ekzekutohej skedari i ekzekutueshëm, kështu që asnjë parser, asnjë certifikatë dhe asnjë host i largët nuk u konsultua. Leximi i kodit të statusit si një deklaratë për systemd dhe jo për OpenVPN është ajo që e kthen këtë në një hetim të shkurtër.

Lexo kodin e statusit përpara aplikacionit

Kodi numerik pas emrit të shërbimit emërton fazën që dështoi. Një dështim direktorie raportohet si status CHDIR, ndërsa një skedar i ekzekutueshëm që nuk mund të ekzekutohej është një kod krejt tjetër. Të dy duken njësoj në një rresht përmbledhjeje dhe nuk kanë asgjë të përbashkët në shkaqet e tyre.

Ky dallim ka rëndësi sepse rregullimet janë në skedarë të ndryshëm. Një dështim CHDIR ka të bëjë me një shteg dhe me mënyrën se si e sheh shërbimi. Një dështim exec ka të bëjë me binarin, interpretuesin e tij ose një montim të palidhur. Ndryshimi i remote-it të VPN, listës së shifrave ose shtegut të certifikatës nuk mund të zgjidhë asnjërën.

Konfirmo që dështimi është në nisje dhe jo pas një ekzekutimi të suksesshëm. Nëse shërbimi funksiononte dje dhe tani dështon në të njëjtën fazë, diçka ka ndryshuar në drejtori, lejet e saj ose vetë unit-in, dhe ai ndryshim është prova që duhet kërkuar.

Pyet unit-in ku dëshiron të jetë

Lexo unit-in efektiv në vend të skedarit që mendon se është instaluar, sepse drop-in-et mund të zëvendësojnë drejtorinë e punës pa e redaktuar kurrë unit-in kryesor. Dalja e show i përgjigjet pyetjes drejtpërdrejt:

systemctl cat [email protected]
systemctl show [email protected] -p WorkingDirectory -p RootDirectory -p User -p ProtectHome
journalctl -u [email protected] -b --no-pager | tail -30

Për shabllonin e serverit upstream, drejtoria e punës është drejtoria e konfigurimit të serverit dhe emri i instancës zgjedh profilin brenda saj. Një instancë e quajtur branch pra pret skedarin e saj në të njëjtën drejtori, dhe një profil i vendosur diku tjetër nuk e plotëson fare kërkesën e drejtorisë së punës.

Krahaso atë që kërkon unit-i me atë që ekziston. Një shteg që ekzistonte, një lidhje simbolike që tani tregon diku tjetër ose një emër instance që nuk përputhet më me një drejtori janë ndryshime të zakonshme që prodhojnë pikërisht këtë dështim.

Kontrollo shtegun siç e sheh shërbimi

Shell-i yt dhe shërbimi nuk ndajnë të njëjtin pamje të sistemit të skedarëve. Një drejtori rrënjë ose imazh rrënjë i konfiguruar ndryshon kuptimin e një shtegu absolut brenda unit-it, dhe një shteg që është padyshim i pranishëm në host mund të mungojë në atë hapësirë emrash. Lexo cilësimet e unit-it përpara se t'i besosh një testi manual.

Lejet e përkeqësojnë problemin. Shërbimi ekzekutohet si një përdorues i caktuar, dhe ai përdorues duhet të mund të kalojë nëpër çdo drejtori prind për të arritur objektivin, jo vetëm të lexojë vetë objektivin. Një drejtori e lexueshme nga root dhe e pakalueshme nga përdoruesi i shërbimit prodhon një dështim që duket si shteg që mungon.

namei -l /etc/openvpn/server
systemctl show [email protected] -p ProtectSystem -p ReadOnlyPaths

Cilësimet e forcimit janë gjithashtu pjesë e këtij tabloje. Një unit që fsheh drejtoritë e shtëpisë ose bën vetëm-lexim një pjesë të sistemit të skedarëve bën pikërisht atë për të cilën është konfiguruar, dhe drejtoria e punës duhet të jetë diku ku sandbox-i ende e ekspozon.

Rregullo pronarin, pastaj prit një gabim tjetër

Rregullo paraqitjen ose unit-in përmes atij që zotëron atë konfigurim. Zhvendosja e një profili në drejtorinë e pritur është një rregullim legjitim kur paraqitja është e gabuar, por nuk shpjegon një drejtori ku nuk mund të hyhet, prandaj mos e trajto si përgjigjen e përgjithshme.

Kundërshto shkurtoren e zgjerimit të lejeve në pemën e konfigurimit ose heqjes së sandbox-it. Të dyja e bëjnë simptomën të zhduket ndërsa heqin mbrojtjet që u vendosën atje me qëllim, dhe dështimi i radhës do të jetë më i vështirë për t'u interpretuar.

Rinis instancën dhe lexo ngjarjen tjetër në vend që të supozosh sukses. Gabimi tjetër i mundshëm është që OpenVPN nuk mund të hapë skedarin e tij të konfigurimit, gjë që është përparim: u hy në drejtorinë e punës dhe parser-i tani po ekzekutohet. Ndiq nga atje hartëzimin real të skedarëve të unit-it në vend që të kthehesh te zgjidhja e problemeve të rrjetit.

Referenca e ekzekutimit të systemd përcakton se si interpretuar drejtoria e punës së bashku me drejtoritë rrënjë dhe sandbox-in. Modeli për t'u mbajtur mend është i thjeshtë: çdo kod statusi emërton një fazë të ndryshme, dhe vetëm gabimet e vetë aplikacionit e përshkruajnë aplikacionin.

Artikuj të ngjashëm