Ваша услуга пада пре него што се OpenVPN уопште покрене, а грешка говори о јединици монтирања коју никад нисте подесили. То је знак: systemd одбија целу трансакцију јер је јединица кореновог монтирања маскирана, а ваш VPN профил још није прочитан. Уобичајен узрок је заостала датотека у директоријуму runtime јединица, а не покварен fstab и не сертификат који недостаје. Прво пратите датотеку, јер је то најјефтиније објашњење које треба искључити.

Грешка именује коренско монтирање, не ваш профил

systemd сам генерише јединицу кореновог монтирања из података о монтирању језгра и назива је -.mount јер цртица представља коренску путању. Та јединица обично постоји само у меморији и нема датотеку иза себе. Када грешка каже да је маскирана, неко је ставио датотеку јединице тамо одакле ће је systemd учитати и усмерио ту датотеку на /dev/null. Маскирање је стварно стање, а не словна грешка у поруци.

Јединица инстанце пада јер њен граф послова достиже коренско монтирање кроз редослед и кроз сопствене захтеве за монтирање. Трансакција се одбија пре него што се изврши OpenVPN бинарна датотека, па ништа у конфигурацији клијента не може бити узрок. Зато промена профила, сертификата или акредитива нема ефекта на овај конкретни квар.

Погледајте runtime директоријум пре него што почнете да отклањате грешке у OpenVPN-у

Потражите датотеку са тачно тим именом у директоријуму runtime јединица, затим питајте systemd шта мисли да јединица јесте. Оба одговора су брза и заједно одвајају заосталу датотеку од стварног проблема са монтирањем.

ls -l /run/systemd/system/-.mount
systemctl status -.mount
systemctl list-unit-files --state=masked | grep mount

Нормална машина нема такву датотеку, а листа маскираних не садржи коренско монтирање. Ако прва команда испише симболичку везу на /dev/null, дијагноза је готова. Исти директоријум може садржати маску tmp.mount коју су направили исти алати, и то производи исту класу квара под другим именом. Гледајте цео директоријум, а не само име из грешке.

ls -la /run/systemd/system/*.mount

Ако је директоријум чист, а јединица је и даље маскирана, маска је негде другде у путањи претраге, и systemctl cat -.mount ће показати која се датотека учитава.

Обришите датотеку, поново учитајте и покрените изнова

Довољно је уклонити runtime датотеку и поново учитати менаџер, и то не дира ништа што долази из пакета. Поново учитајте пре покретања, јер systemd задржава стање учитане јединице док поново не прочита директоријум.

sudo rm -f /run/systemd/system/-.mount /run/systemd/system/tmp.mount
sudo systemctl daemon-reload
systemctl status -.mount
sudo systemctl start [email protected]

Затим прочитајте дневник саме услуге уместо да претпоставите да је поправка успела. Чисто покретање доказује само да је systemd прихватио јединицу; клијент и даље може да умре због профила који недостаје, недоступног партнера или сертификата који се не верификује. То су обични OpenVPN проблеми који су били скривени иза маскиране јединице. Дневник бележи који је профил учитан и да ли је тунел заиста успостављен. Ако се јединица покрене, а тунел не, прешли сте на други проблем, и то је напредак.

journalctl -u [email protected] -b --no-pager

Пошто је /run привремени датотечни систем, рестарт такође брише датотеку. Зато је рестарт користан тест: ако услуга ради после рестарта и поново падне после следећег распоређивања, датотека се уграђује у слику.

Спречите да се врати из слике

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

Претражите контекст изградње за именом датотеке и за командом која је ствара, затим уклоните маску из шаблона и поново изградите. Ако је маска заиста потребна током изградње, уклоните је у истом слоју који завршава изградњу, да испоручена слика почне чиста. Проверите на свежем клону, а не на машини коју сте ручно поправили. То је једини тест који доказује да се слика променила.

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

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