client-config-dir yn cael ei anwybyddu ar ôl i OpenVPN ddod yn wasanaeth
Mae client-config-dir cymharol yn cael ei ddatrys yn erbyn cyfeiriadur gweithio'r daemon. Darllenwch yr uned, cerddwch caniatadau'r llwybr, yna cadarnhau'r chwiliad yn y log.
Mae eich tiwnel yn codi ac mae'r cleient yn cysylltu, ond mae'r cyfeiriad sefydlog a y llwybrau a wythiwyd a ddiffiniwyd gennych ar gyfer yr un defnyddiwr hwnnw ar goll. Nid yw'r log yn dweud “file not found”, a dyna sy'n gyrru pobl i ailgynhyrchu tystysgrifau. Yn y rhan fwyaf o'r achosion hyn mae'r daemon yn rhedeg o gyfeiriadur gwahanol i'r plisgyn y gwnaethoch brawf ynddo, ac client-config-dir ni chafodd ei ddatrys fel y tybiasoch erioed. Cywiriad llwybr yw'r atgyweiriad, nid ailosod manylion mewngofnodi.
Darllenwch yr uned cyn cyffwrdd â'r ffurfweddiad
Dechreuwch gyda'r broses sy'n rhedeg mewn gwirionedd, nid y ffeil y gwnaethoch ei golygu. Gofynnwch i systemd am y llinell weithredu, y cyfeiriadur gweithio a'r cyfrif y mae'n disgyn iddo. Mae'r tri ateb hynny'n esbonio'r rhan fwyaf o'r methiannau yn y dosbarth hwn:
systemctl show openvpn-server@server -p ExecStart -p WorkingDirectory -p User -p RootDirectoryMae WorkingDirectory gwag yn golygu bod yr uned yn dechrau yn /, felly mae client-config-dir ccd cymharol yn cael ei chwilio yn /ccd. Mae'r cyfeiriadur hwnnw bron byth yn bodoli, ac nid yw'r daemon yn ystyried ei absenoldeb yn angheuol.
Cymharwch hynny â'r lansiad rhyngweithiol a ddefnyddiwyd gennych wrth brofi, lle roedd cyfeiriadur cyfredol eich plisgyn yn ôl pob tebyg yn gyfeiriadur y ffurfweddiad. Yr un ffeil, yr un geiriau allweddol, dau ganlyniad gwahanol.
Yn erbyn beth y mae llwybr cymharol yn cael ei ddatrys
Mae'r gair allweddol yn cael ei ddatrys yn erbyn cyfeiriadur gweithio'r broses ar y foment y defnyddir yr opsiwn. Nid yw'n golygu “wrth ymyl y ffeil ffurfweddu a basiais gyda --config”. Bydd OpenVPN yn barod iawn i ddarllen ffurfweddiad o lwybr absoliwt ac yn dal i ddatrys gwerthoedd cymharol yn rhywle arall, a dyna'n union y trap yma. Mae llawlyfr OpenVPN 2.6 yn nodi'r rheol o dan --client-config-dir ac unwaith eto o dan --cd.
Mae'r gair allweddol cd yn newid y cyd-destun hwnnw cyn i ffeiliau eraill gael eu darllen, felly mae uned sy'n gosod cd /etc/openvpn/server ac yna client-config-dir ccd yn datrys i /etc/openvpn/server/ccd. Os ychwanegwch cd, gwiriwch drefn y cyfarwyddiadau a chofiwch ei fod yn effeithio ar bob cyfeiriad cymharol arall yn yr un ffeil.
Cerddwch y llwybr fel cyfrif y daemon
Gall llwybr fod yn gywir ac eto'n annarllenadwy. Ar ôl gollwng y fraint nid yw'r daemon yn root mwyach, felly mae angen caniatâd chwilio ar bob cyfeiriadur rhiant ar gyfer y cyfrif hwnnw, ac mae angen caniatâd darllen ar y ffeil cleient ei hun. Mae un did gweithredu ar goll ar riant yn ddigon i guddio'r ffeil, a'r unig ffordd y mae'r gwall yn ymddangos yw cleient sy'n cael y pwll diofyn yn dawel.
Mae namei yn argraffu caniatâd pob cydran mewn trefn, sy'n gyflymach na gwirio cyfeiriaduron un ar y tro:
namei -l /etc/openvpn/server/ccd/client1Yna profwch y darlleniad fel cyfrif y gwasanaeth yn hytrach nag fel chi'ch hun:
runuser -u openvpn -- test -r /etc/openvpn/server/ccd/client1 && echo readableOs yw'r uned yn defnyddio chroot, rhaid i'r cyfeiriadur fodoli y tu mewn i'r carchar, a dehonglir y llwybr yn y ffurfweddiad ar ôl cymhwyso chroot. Mae ffeil sydd ar y gwesteiwr y tu allan i'r carchar yn anweledig o'r tu mewn.
Cadarnhewch y chwiliad yn hytrach na dyfalu
Codwch lefel y log am un ailgychwyn a darllenwch beth mae'r gweinydd yn ei ddweud am opsiynau sy'n benodol i'r cleient. Ar verb 4 mae'r daemon yn adrodd y ffurfweddiad fesul cleient a fewnforiwyd ganddo, felly mae llinell yn absennol yn dystiolaeth uniongyrchol na ddarllenwyd unrhyw ffeil ar gyfer y cysylltiad hwnnw.
openvpn --config /etc/openvpn/server.conf --verb 4 --client-config-dir /etc/openvpn/server/ccdRhedwch hynny yn y blaendir ar borth sbâr a chysylltwch un cleient. Mae hynny'n tynnu systemd o'r darlun yn gyfan gwbl: os yw'r gorreolaethau'n ymddangos yma ac nid o dan y gwasanaeth, y cyd-destun uned sydd wedi newid, nid y ffeil.
Penderfynwch beth ddylai ddigwydd pan nad oes ffeil yn cyfateb. Heb ccd-exclusive derbynnir y cleient gyda gosodiadau'r pwll byd-eang yn unig, a dyna'r methiant tawel a ddisgrifiwyd uchod. Gyda hi, mae ffeil ar goll yn dod yn gysylltiad a wrthodwyd, ac mae'r gwrthodiad hwnnw'n haws ei sylwi ond yn anoddach ei ddadfygio dan lwyth.
Trwsiwch, ailgychwynnwch, gwiriwch
Gwnewch y cyfeiriadur yn absoliwt yn y ffurfweddiad a'i gadw felly. Dim ond pan fydd yr uned yn pinio'r cyfeiriadur gweithio y mae llwybrau cymharol yn ddiogel, ac mae pinio'n rhan symudol ychwanegol y bydd rhywun yn ei thynnu'n ddiweddarach.
client-config-dir /etc/openvpn/server/ccd
ccd-exclusiveAilgychwynnwch y gorchymyn, ailgysylltwch un cleient hysbys a darllenwch y cyfeiriad a gafodd ynghyd â'r llwybrau a wythiwyd ato. Os yw'r cyfeiriad yn cyfateb i'r llinell ifconfig-push yn ffeil y cleient hwnnw, llwyddodd y chwiliad. Os yw'r cleient yn dal i lanio yn y pwll cyffredinol, ewch yn ôl at y cyfrif llinellau yn y log: sero mewnforio yn golygu bod y llwybr neu'r hunaniaeth yn anghywir, un mewnforiad â chynnwys anghywir yn golygu eich bod yn golygu ffeil wahanol i'r un y mae'r daemon yn ei darllen.
Rholiwch yn ôl trwy adfer yr uned a'r ffurfweddiad blaenorol gyda'i gilydd, yna ailgychwynnwch. Nid oes angen ailddyroddi tystysgrifau am unrhyw ran o hyn, a thrin problem cyfeiriadur fel problem manylion mewngofnodi yw'r ffordd y mae atgyweiriad pum munud yn troi'n ffenestr gynnal a chadw.