Услуга се покреће, клијент се повезује и рута се никада не појављује на страни сервера. Или демон одбија да се покрене и наводи наредбу коју није могао да изврши. Оба исхода следе исте три линије, које се обично копирају заједно из водича за очвршћивање: прелазак на непривилеговани налог, одустајање од групе и промена корена фајл система. Само једна од три сакрива датотеке, и само једна од њих укида овлашћење за промену табеле рутирања. Њихово раздвајање је начин да научите која линија вам је заиста потребна.

Шта затвор уклања, а демону је још потребно

Промена корена се дешава после покретања, тако да демон задржава све што је већ отворио и губи све што би отворио касније. Сваки помоћник који веза покрене после те тачке мора да постоји унутар новог корена, заједно са дељеним библиотекама које учитава. Затвор састављен од конфигурационе датотеке и сертификата нема ни једно ни друго.

Прелазак на непривилеговани налог је одвојено ограничење. Процес који се одрекао root-а можда не може да мења руте или подигне интерфејс чак и када је бинарна датотека одмах ту, па се два квара морају дијагностиковати одвојено.

Три услова одлучују која вам је поправка потребна

Први услов је како ваша градња инсталира руте. Новија OpenVPN издања конфигуришу интерфејс и табелу рутирања унутар процеса, док се старији пакети и сопствена подешавања ослањају на спољне алате или на up и down скрипте. Ако запис наведе наредбу, умешан је спољни алат и затвор га скрива. Ако запис уместо тога показује грешку дозволе, проблем је налог.

Други је одржавање. Затвор са копираним бинарним датотекама мора да се освежи сваки пут када се пакет који их пружа надогради, иначе прва надоградња оставља сломљен тунел за собом. Трећи је да ли одређена контрола заиста захтева chroot; ако се захтев заправо односи на раздвајање овлашћења, промена налога може бити довољна сама.

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

Шта радни затвор мора да садржи

Затвор који извршава наредбе потребује бинарну датотеку, сваку библиотеку са којом се повезује и сваки чвор уређаја који демон отвара касно. Копирајте делове и тестирајте их без VPN-а у слици:

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

Прва наредба наводи зависности, и то је она коју људи прескачу. Копирана бинарна датотека која не пронађе библиотеку пада са другачијом поруком од недостајуће бинарне датотеке, и обоје изгледа као квар OpenVPN-а када се чита са клијентске стране. Ручно покретање наредбе у затвору репродукује квар без поновног покретања услуге.

Копирајте и конфигурацију, сертификате и евентуални CRL у затвор, јер датотека коју демон очекује да поново прочита после покретања неће бити пронађена када се корен промени. Запишите шта сте копирали, јер следећа надоградња мрежног пакета замењује оригинале и оставља затвор на старој копији.

Уместо тога смањите очвршћивање

Ако затвор постоји само зато што је водич тако рекао, уклањање те једне линије уз задржавање ограничења налога је одбрањив исход. Демон задржава свој поглед на фајл систем и губи проблем, а спуштање овлашћења и даље уклања root из дуговечног процеса.

Запишите шта остаје и зашто. Конфигурација која је тихо изгубила контролу без белешке је пут којим очвршћивање одступа, а следећа ревизија пита зашто је линија нестала.

Раздвојте три линије пре избора

Копирајте конфигурацију, онемогућите све три директиве и потврдите да се клијент повезује и да се појављују очекиване руте. Затим поново омогућите само линије налога, а потом сам chroot. Корак у којем се тунел ломи означава границу, и избегавате поновну изградњу затвора који никада није био узрок.

Када поново рутира, покрените једну клијентску сесију са вишим нивоом детаља и прочитајте линију која наводи наредбу или дозволу која није успела. Та линија вреди више од истека времена који клијент на крају пријави.

Повезани чланци