La servo startas, kliento aliĝas, kaj neniu vojo iam aperas ĉe la servila flanko. Aŭ la demono rifuzas starti kaj nomas komandon, kiun ĝi ne povis plenumi. Ambaŭ rezultoj sekvas la samajn tri liniojn, kiuj kutime estas kopiataj kune el hardada gvidilo: transiri al senprivilegia konto, forlasi la grupon kaj ŝanĝi la radikon de la dosiersistemo. Nur unu el la tri kaŝas dosierojn, kaj nur unu el ili forprenas la rajton ŝanĝi la enrutan tabelon. Apartigi ilin estas la maniero lerni, kiun linion vi vere volas.

Kion la malliberejo forprenas, kion la demono ankoraŭ bezonas

La ŝanĝo de la radiko okazas post la lanĉo, do la demono konservas ĉion, kion ĝi jam malfermis, kaj perdas ĉion, kion ĝi malfermus poste. Ĉiu helpanto, kiun la konekto rulas post tiu punkto, devas ekzisti ene de la nova radiko, kune kun la dividitaj bibliotekoj, kiujn ĝi ŝarĝas. Malliberejo konstruita el agorda dosiero kaj atestilo havas nek unu nek la alian.

Transiro al senprivilegia konto estas aparta limigo. Procezo, kiu rezignis pri root, eble ne povas ŝanĝi vojojn aŭ levi interfacon eĉ kiam la binaraĵo estas ĝuste tie, do la du fiaskoj devas esti diagnozitaj aparte.

Tri kondiĉoj decidas, kiun riparon vi bezonas

La unua kondiĉo estas, kiel via konstruo instalas vojojn. Pli novaj OpenVPN eldonoj agordas la interfacon kaj la enrutan tabelon ene de la procezo, dum pli malnovaj pakaĵoj kaj propraj agordoj fidas eksterajn ilojn aŭ skriptojn up kaj down. Se la protokolo nomas komandon, ekstera ilo estas implikita kaj la malliberejo kaŝas ĝin. Se la protokolo anstataŭe montras permesan eraron, la problemo estas la konto.

La dua estas prizorgado. Malliberejo kun kopiitaj binaraĵoj devas esti refreŝigita ĉiufoje, kiam la pakaĵo, kiu provizas ilin, estas ĝisdatigita, alie la unua ĝisdatigo lasas rompitan tunelon malantaŭe. La tria estas, ĉu specifa kontrolo vere postulas chroot; se la postulo fakte temas pri apartigo de privilegioj, la konta ŝanĝo povas sufiĉi sola.

Signal in the logOther side of the boundaryRepair direction
Command not found after startupBinary and its libraries absent inside the new rootPopulate the jail, or drop the chroot line
Operation not permittedAccount lost the privilege to edit routesKeep the account privileged, or pre-create routes elsewhere
No such deviceJail lacks the tun device nodeCreate the node inside, or open it before the root change

Kion funkcianta malliberejo devas enhavi

Malliberejo, kiu rulas komandojn, bezonas la binaraĵon, ĉiun bibliotekon al kiu ĝi ligiĝas, kaj ĉiun aparatan nodon, kiun la demono malfermas malfrue. Kopiu la pecojn kaj testu ilin sen la VPN en la bildo:

ldd /usr/sbin/ip
chroot /etc/openvpn/jail /sbin/ip route show
chroot /etc/openvpn/jail /sbin/ip link set tun0 up

La unua komando listigas la dependecojn, kaj ĝuste ĝin homoj preterlasas. Kopiita binaraĵo, kiu ne trovas bibliotekon, fiaskas per alia mesaĝo ol mankanta binaraĵo, kaj ambaŭ aspektas kiel paneo de OpenVPN, kiam oni legas ilin de la klienta flanko. Ruli la komandon permane ene de la malliberejo reproduktas la paneon sen restartigi la servon.

Kopiu ankaŭ la agordon, la atestilojn kaj ajnan CRL en la malliberejon, ĉar dosiero, kiun la demono atendas relegi post la lanĉo, ne estos trovita post kiam la radiko ŝanĝiĝis. Notu, kion vi kopiis, ĉar la sekva ĝisdatigo de la retpakaĵo anstataŭigas la originalojn kaj lasas la malliberejon sur la malnova kopio.

Anstataŭe malgrandigu la hardadon

Se la malliberejo ekzistas nur ĉar gvidilo tion diris, forigi tiun unu linion konservante la kontajn limigojn estas defendebla rezulto. La demono konservas sian vidon de la dosiersistemo kaj perdas la problemon, kaj la privilegia malaltigo ankoraŭ forprenas root de la longdaŭra procezo.

Notu, kio restas, kaj kial. Agordo, kiu silente perdis kontrolon sen noto, estas la maniero, kiel hardado drivas, kaj la sekva revizio demandos, kial la linio malaperis.

Dividu la tri liniojn antaŭ ol elekti

Kopiu la agordon, malŝaltu ĉiujn tri direktivojn kaj konfirmu, ke kliento konektiĝas kaj la atenditaj vojoj aperas. Poste reŝaltu nur la kontajn liniojn, kaj poste la chroot sola. La paŝo, kie la tunelo rompiĝas, indikas la limon, kaj vi evitas rekonstrui malliberejon, kiu neniam estis la kaŭzo.

Kiam ĝi denove enrutas, rulu unu klientan seancon kun pli alta detalo kaj legu la linion, kiu nomas la komandon aŭ la malsukcesintan permeson. Tiu linio valoras pli ol la tempolimo, kiun la kliento finfine raportas.

Rilataj artikoloj