Ваша служба падае яшчэ да таго, як OpenVPN увогуле запусціцца, а паведамленне пра памылку гаворыць пра модуль мантавання, які вы ніколі не наладжвалі. Гэта і ёсць прыкмета: systemd адмаўляе ўсю транзакцыю, бо модуль каранёвага мантавання замаскіраваны, а ваш профіль VPN яшчэ не прачытаны. Звычайная прычына — файл, які застаўся ў каталогу модуляў часу выканання, а не сапсаваны fstab і не адсутны сертыфікат. Спачатку праверце файл, бо гэта самае таннае тлумачэнне, якое можна выключыць.

Памылка называе каранёвае мантаванне, а не ваш профіль

systemd сам стварае модуль каранёвага мантавання з звестак аб мантаванні ядра і называе модуль -.mount, бо працяжнік азначае каранёвы шлях. Гэты модуль звычайна існуе толькі ў памяці і не мае файла за сабой. Калі памылка кажа, што ён замаскіраваны, нехта паклаў файл модуля туды, адкуль systemd яго загрузіць, і накіраваў гэты файл на /dev/null. Маскіраванне — рэальны стан, а не друкарская памылка ў паведамленні.

Модуль асобніка падае, бо яго граф заданняў дасягае каранёвага мантавання праз парадак і праз уласныя патрабаванні мантавання. Транзакцыя адхіляецца да выканання бінарніка OpenVPN, таму нішто ў канфігурацыі кліента не можа быць прычынай. Таму змена профіляў, сертыфікатаў або ўліковых даных не ўплывае на гэтую канкрэтную адмову.

Загляніце ў каталог часу выканання, перш чым адладжваць OpenVPN

Шукайце файл з дакладна такой назвай у каталогу модуляў часу выканання, затым спытайце ў 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 пакажа, які файл загружаецца.

Выдаліце файл, перазагрузіце і запусціце зноў

Дастаткова выдаліць файл часу выканання і перазагрузіць мэнэджар, і гэта не кранае нічога, што прыйшло з пакета. Перазагрузіце перад запускам, бо 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, спачатку прачытайце назву модуля ў паведамленні, а потым назву службы.

Падобныя артыкулы