client-config-dir gëtt ignoréiert, nodeems OpenVPN en Dienst ginn ass
E relative client-config-dir gëtt géint den Aarbechtsverzeechnis vum Daemon opgeléist. Liest d'Unit, gitt d'Rechter vum Pad duerch an da bestätegt d'Ufro am Log.
Ären Tunnel kënnt erop an de Client verbënnt, awer déi fest Adress an déi gepusht Route, déi Dir fir deen een Benotzer definéiert hutt, feelen. Am Log steet net “file not found”, an dat ass genee dat, wat d'Leit dozou bréngt, Zertifikater nei ze generéieren. An de meeschte vun dëse Fäll leeft den Daemon aus engem aneren Verzeechnis wéi der Shell, an där Dir getest hutt, an client-config-dir gouf ni sou opgeléist, wéi Dir ugeholl hutt. D'Korrektur ass eng Padkorrektur, keen Zerécksetze vun den Umellungsdaten.
Liest d'Unit, ier Dir d'Konfiguratioun beréiert
Fänkt mam Prozess un, deen tatsächlech leeft, net mat der Datei, déi Dir geännert hutt. Frot systemd no der Ausféierungszeil, dem Aarbechtsverzeechnis an dem Kont, op deen en erofgeet. Déi dräi Äntwerten erkläre meeschtens d'Feeler an dëser Klass:
systemctl show openvpn-server@server -p ExecStart -p WorkingDirectory -p User -p RootDirectoryEn eidelt WorkingDirectory heescht, datt d'Unit am / ufänkt, dofir gëtt en relative client-config-dir ccd am /ccd gesicht. Dee Verzeechnis gëtt et bal ni, an den Daemon gesäit säi Fehlen net als fatal un.
Vergläicht dat mam interaktiven Start, deen Dir beim Testen benotzt hutt, wou den aktuelle Verzeechnis vun Ärer Shell wahrscheinlech de Konfiguratiounsverzeechnis war. Déi selwecht Datei, déi selwecht Schlësselwierder, zwou verschidde Resultater.
Géint wat en relative Pad opgeléist gëtt
D'Schlësselwuert gëtt géint den Aarbechtsverzeechnis vum Prozess zu deem Moment opgeléist, wou d'Optioun benotzt gëtt. Et heescht net “nieft der Konfiguratiounsdatei, déi ech mat --config iwwerginn hunn”. OpenVPN liest gär eng Konfiguratioun aus engem absolute Pad an léist relativ Wäerter trotzdem soss anzwousch op, an dat ass genee d'Falle hei. Den Handbuch vun OpenVPN 2.6 nennt d'Regel ënner --client-config-dir an nach eng Kéier ënner --cd.
D'Schlësselwuert cd ännert dee Kontext, ier aner Dateien gelies ginn, dofir eng Unit, déi cd /etc/openvpn/server setzt an duerno client-config-dir ccd, léist sech zu /etc/openvpn/server/ccd op. Wann Dir cd bäisetzt, kontrolléiert d'Reiefolleg vun den Direktiven a denkt drun, datt se all aner relativ Referenz an der selwechter Datei beaflosst.
Gitt de Pad als Kont vum Daemon duerch
E Pad ka richteg sinn an awer onliesbar. No der Privilegienopgab ass den Daemon net méi root, dofir brauch all Eltereverzeechnis d'Sichrecht fir dee Kont, an d'Clientdatei selwer d'Liesrecht. Een eenzege fehlenden Ausféierungsbit op engem Eltereverzeechnis genüügt, fir d'Datei ze verstoppen, an de Feeler weist sech nëmmen als Client, dee roueg de Standardpool kritt.
namei dréckt d'Recht vun all Komponent der Rei no aus, wat méi séier ass wéi d'Verzeechnisser een nom aneren ze kontrolléieren:
namei -l /etc/openvpn/server/ccd/client1Test dann d'Liesen als Déngschtkont an net als Är eege Persoun:
runuser -u openvpn -- test -r /etc/openvpn/server/ccd/client1 && echo readableWann d'Unit chroot benotzt, muss d'Verzeechnis bannent dem Prisong existéieren, an de Pad an der Konfiguratioun gëtt interpretéiert, nodeems chroot ugewannt gouf. Eng Datei, déi um Host ausserhalb vum Prisong läit, ass vun bannen onsichtbar.
Bestätegt d'Ufro, amplaz ze roden
Hieft de Logniveau fir ee Neistart an liest, wat de Server iwwer clientspezifesch Optiounen seet. Bei verb 4 mellt den Daemon d'Konfiguratioun pro Client, déi en importéiert huet, dofir eng fehlend Zeil ass e direkte Beweis, datt keng Datei fir déi Verbindung gelies gouf.
openvpn --config /etc/openvpn/server.conf --verb 4 --client-config-dir /etc/openvpn/server/ccdLoosst dat am Virdergrond op engem zousätzleche Port lafen a verbënnt een Client. Dat hëlt systemd komplett aus dem Bild: wann d'Iwwerschreiwungen hei erschéngen an net ënner dem Dienst, ass den Ënnerscheed de Kontext vun der Unit, net d'Datei.
Entscheet, wat soll geschéien, wann keng Datei passt. Ouni ccd-exclusive gëtt de Client nëmme mat den globale Poolastellunge ugeholl, an dat ass de rouege Feeler, dee uewen beschriwwe gouf. Mat him gëtt eng fehlend Datei eng refuséiert Verbindung, an deen Refus ass méi einfach ze bemierken, awer ënner Laascht méi schwéier ze debuggen.
Korrigéiert, startet nei, iwwerpréift
Maacht d'Verzeechnis absolut an der Konfiguratioun a loosst et sou. Relativ Pade sinn nëmme sécher, wann d'Unit den Aarbechtsverzeechnis festhält, an dat Festhalen ass en zousätzlecht beweeglecht Deel, dat een später ewechhuele wäert.
client-config-dir /etc/openvpn/server/ccd
ccd-exclusiveStart d'Instanz nei, verbënnt en bekannte Client erëm a liest d'Adress, déi en kritt huet, zesumme mat de Route, déi op hien gepusht goufen. Wann d'Adress mat der Zeil ifconfig-push an der Datei vun deem Client iwwereneestëmmt, huet d'Ufro funktionéiert. Wann de Client nach ëmmer an den allgemenge Pool fält, gitt zréck op d'Zuel vun de Logzeilen: null Importen heescht, datt de Pad oder d'Identitéit falsch ass, een Import mat falschem Inhalt heescht, datt Dir eng aner Datei ännert wéi déi, déi den Daemon liest.
Gitt zréck, andeems Dir déi vireg Unit an d'Konfiguratioun zesummen erëmstellt an dann nei start. Zertifikater mussen dofir net nei ausgestallt ginn, an e Verzeechnisproblem als Umellungsproblem ze behandelen ass de Wee, op deem aus enger fënnefminutteger Korrektur eng Maintenance-Fënster gëtt.