client-config-dir estas ignorata post kiam OpenVPN fariĝis servo
Relativa client-config-dir solviĝas kontraŭ la labora dosierujo de la demono. Legu la unit-on, trairu la permesojn de la vojo, poste konfirmu la serĉon en la protokolo.
Via tunelo ekfunkcias kaj la kliento konektiĝas, sed la fiksa adreso kaj la puŝitaj vojoj, kiujn vi difinis por tiu unu uzanto, mankas. La protokolo ne diras “file not found”, kaj ĝuste tio sendas homojn regeneri atestilojn. En la plej multaj el ĉi tiuj kazoj la demono funkcias el alia dosierujo ol la ŝelo, en kiu vi testis, kaj client-config-dir neniam solviĝis tiel, kiel vi supozis. La korekto estas vojkorekto, ne restarigo de akreditaĵoj.
Legu la unit-on antaŭ ol tuŝi la agordon
Komencu per la procezo, kiu efektive funkcias, ne per la dosiero, kiun vi redaktis. Demandu al systemd pri la plenumlinio, la labora dosierujo kaj la konto, al kiu ĝi falas. Tiuj tri respondoj klarigas la plej multajn malsukcesojn de ĉi tiu klaso:
systemctl show openvpn-server@server -p ExecStart -p WorkingDirectory -p User -p RootDirectoryMalplena WorkingDirectory signifas, ke la unit-o komenciĝas en /, do relativa client-config-dir ccd estas serĉata en /ccd. Tiu dosierujo preskaŭ neniam ekzistas, kaj la demono ne konsideras ĝian foreston fatala.
Komparu tion kun la interaga lanĉo, kiun vi uzis dum testado, kie la nuna dosierujo de via ŝelo probable estis la agorda dosierujo. Sama dosiero, samaj ŝlosilvortoj, du malsamaj rezultoj.
Kontraŭ kio solviĝas relativa vojo
La ŝlosilvorto solviĝas kontraŭ la labora dosierujo de la procezo en la momento, kiam la opcio estas uzata. Ĝi ne signifas “apud la agorda dosiero, kiun mi transdonis per --config”. OpenVPN volonte legos agordon el absoluta vojo kaj tamen solvos relativajn valorojn aliloke, kaj ĝuste tio estas la kaptilo ĉi tie. La manlibro de OpenVPN 2.6 esprimas la regulon sub --client-config-dir kaj denove sub --cd.
La ŝlosilvorto cd ŝanĝas tiun kuntekston antaŭ ol aliaj dosieroj estas legitaj, do unit-o, kiu agordas cd /etc/openvpn/server kaj poste client-config-dir ccd, solviĝas al /etc/openvpn/server/ccd. Se vi aldonas cd, kontrolu la ordon de la direktivoj kaj memoru, ke ĝi influas ĉiun alian relativan referencon en la sama dosiero.
Trairu la vojon kiel la konto de la demono
Vojo povas esti ĝusta kaj tamen nelegebla. Post la demeto de privilegioj la demono ne plu estas root, do ĉiu patra dosierujo bezonas serĉpermeson por tiu konto, kaj la klienta dosiero mem bezonas legpermeson. Unu mankanta plenuma bito ĉe patro sufiĉas por kaŝi la dosieron, kaj la eraro montriĝas nur kiel kliento, kiu kviete ricevas la defaŭltan naĝejon.
namei presas la permeson de ĉiu komponanto laŭorde, kio estas pli rapida ol kontroli la dosierujojn unu post unu:
namei -l /etc/openvpn/server/ccd/client1Poste testu la legadon kiel la servokonto anstataŭ kiel vi mem:
runuser -u openvpn -- test -r /etc/openvpn/server/ccd/client1 && echo readableSe la unit-o uzas chroot, la dosierujo devas ekzisti ene de la malliberejo, kaj la vojo en la agordo interpretiĝas post kiam chroot aplikiĝis. Dosiero, kiu troviĝas sur la gastiganto ekster la malliberejo, estas nevidebla de interne.
Konfirmu la serĉon anstataŭ diveni
Altigu la protokolan nivelon por unu restartigo kaj legu, kion la servilo diras pri klient-specifaj opcioj. Ĉe verb 4 la demono raportas la agordon por ĉiu kliento, kiun ĝi importis, do mankanta linio estas rekta pruvo, ke neniu dosiero estis legita por tiu konekto.
openvpn --config /etc/openvpn/server.conf --verb 4 --client-config-dir /etc/openvpn/server/ccdRulu tion en la fono sur rezerva pordo kaj konektu unu klienton. Tio tute forigas systemd el la bildo: se la superregadoj aperas ĉi tie kaj ne sub la servo, la diferenco estas la kunteksto de la unit-o, ne la dosiero.
Decidu, kio devas okazi, kiam neniu dosiero kongruas. Sen ccd-exclusive la kliento estas akceptata nur kun la tutmondaj naĝejaj agordoj, kaj tio estas la silenta malsukceso priskribita supre. Kun ĝi, mankanta dosiero fariĝas rifuzita konekto, kaj tiu rifuzo estas pli facile rimarkebla sed pli malfacile sencimigebla sub ŝarĝo.
Korektu, restartigu, kontrolu
Faru la dosierujon absoluta en la agordo kaj lasu ĝin tiel. Relativaj vojoj estas sekuraj nur kiam la unit-o fiksas la laboran dosierujon, kaj fiksi ĝin estas plia moviĝanta parto, kiun iu forigos poste.
client-config-dir /etc/openvpn/server/ccd
ccd-exclusiveRestartigu la instancon, rekonektu unu konatan klienton kaj legu la adreson, kiun ĝi ricevis, kune kun la vojoj puŝitaj al ĝi. Se la adreso kongruas kun la linio ifconfig-push en la dosiero de tiu kliento, la serĉo funkciis. Se la kliento ankoraŭ eniras la ĝeneralan naĝejon, revenu al la nombro de protokolaj linioj: nulo da importoj signifas, ke la vojo aŭ la identeco malĝustas, unu importo kun malĝusta enhavo signifas, ke vi redaktas alian dosieron ol tiun, kiun la demono legas.
Reiru restarigante la antaŭan unit-on kaj agordon kune, poste restartigu. Atestilojn oni ne bezonas reeldoni pro io ajn el tio, kaj trakti dosierujan problemon kiel akreditaĵan problemon estas la maniero, kiel kvinminuta korekto fariĝas bontenada fenestro.