Tenesta startar, ein klient assosierer, og det dukkar aldri opp ei rute på serversida. Eller daemonen nektar å starte og nemner ein kommando han ikkje kunne køyre. Begge utfalla følgjer dei same tre linjene, som vanlegvis blir kopierte saman frå ein herdingsguide: byt til ein uprivilegert konto, slepp gruppa og endre filsystemrota. Berre éi av dei tre skjuler filer, og berre éi av dei fjernar retten til å endre rutetabellen. Å skilje dei er måten du lærer kva linje du eigentleg vil ha.

Kva fengselet fjernar som daemonen framleis treng

Rotbytet skjer etter oppstart, så daemonen held på alt han alt har opna, og mistar alt han ville opne seinare. Kvar hjelpar som tilkoplinga køyrer etter det punktet, må finnast inne i den nye rota, saman med dei delte biblioteka han lastar. Eit fengsel bygt av ei konfigurasjonsfil og eit sertifikat har ingen av delane.

Å byte til ein uprivilegert konto er ei eiga avgrensing. Ein prosess som har gjeve opp rot kan kanskje ikkje endre ruter eller få eit grensesnitt opp, sjølv når binærfilen ligg rett der, så dei to feila må diagnostiserast kvar for seg.

Tre vilkår avgjer kva retting du treng

Det første vilkåret er korleis bygget ditt installerer ruter. Nyare OpenVPN utgåver konfigurerer grensesnitt og rutetabell i prosessen, medan eldre pakkar og eigne oppsett lener seg på eksterne verktøy eller på up- og down-skript. Nemner loggen ein kommando, er eit eksternt verktøy involvert, og fengselet skjuler det. Viser loggen i staden ein tilgangsfeil, er kontoen problemet.

Det andre er vedlikehald. Eit fengsel med kopierte binærfiler må oppdaterast kvar gong pakken som leverer dei, blir oppgradert, elles lèt den første oppgraderinga ein øydelagd tunnel att. Det tredje er om ein bestemd kontroll faktisk krev ein chroot; handlar kravet eigentleg om privilegieseparering, kan kontobyttet åleine oppfylle det.

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

Kva eit fungerande fengsel må innehalde

Eit fengsel som køyrer kommandoar treng binærfilen, kvart bibliotek han lenkjer mot, og kvar einingsnode som daemonen opnar seint. Kopier delane og test dei utan VPN i biletet:

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

Den første kommandoen listar avhengnadene, og det er den folk hoppar over. Ein kopiert binærfil som ikkje finn eit bibliotek, feilar med ei anna melding enn ein manglande binærfil, og begge ser ut som ein OpenVPN-feil når dei blir lesne frå klientsida. Å køyre kommandoen for hand i fengselet attskapar feilen utan å starte tenesta på nytt.

Kopier også konfigurasjonen, sertifikata og ein eventuell CRL inn i fengselet, for ei fil som daemonen ventar å lese på nytt etter oppstart, blir ikkje funnen når rota er endra. Skriv opp kva du kopierte, sidan neste oppgradering av nettverkspakken erstattar originalane og lèt fengselet bli på den gamle kopien.

Krympe herdinga i staden

Om fengselet berre finst fordi ein guide sa det, er det eit forsvarleg utfall å fjerne den eine linja og behalde kontogrensene. Daemonen beheld filsystemvisninga si og blir kvitt problemet, og privilegiefallet fjernar framleis rot frå den langliva prosessen.

Skriv ned kva som står att, og kvifor. Ein konfigurasjon som stille mista ein kontroll utan eit notat, er korleis herding driv, og neste revisjon spør kvifor linja forsvann.

Bisektér dei tre linjene før du vel

Kopier konfigurasjonen, slå av alle tre direktiva og stadfest at ein klient koplar til og at dei venta rutene dukkar opp. Slå så på berre kontolinjene, deretter chroot åleine. Steget der tunnelen bryt, peikar ut grensa, og du slepp å byggje om eit fengsel som aldri var årsaka.

Når det ruter igjen, køyr éin klientsesjon med høgare verbosity og les linja som nemner kommandoen eller den mislykka tilgangen. Den linja er meir verdt enn tidsavbrotet klienten til slutt rapporterer.

Relaterte artiklar