OpenVPN покажува active (exited)? Најдете ја инстанцата што сте ја стартувале
active (exited) не е тунел, туку еднократна задача /bin/true што ја држи RemainAfterExit. Најдете ја инстанцата, прочитајте ја датотеката на која покажува, потоа прочитајте го нејзиниот журнал.
Ја проверувате тунелот, извршувате systemctl status openvpn и добивате active (exited) без Main PID и со празен список на процеси. Природното читање е дека услугата стартувала и умрела, затоа ја отворате unit, ја наоѓате /bin/true и заклучувате дека пакетот е расипан. Во Debian пакувањето таа состојба е wrapper што работи како што е проектиран, а тунелот живее во една од instance единиците што ги стартува. Збирната единица никогаш нема да ви каже која инстанца ја изградила.
Што всушност значи active (exited) на оваа единица
Пакуваната единица е еднократна задача: нејзиниот ExecStart е /bin/true, а RemainAfterExit=yes е тоа што држи завршена единица пријавена како active (exited). Отстранете ја таа директива и истата успешна /bin/true задача завршува во inactive (dead), што е точно состојбата што луѓето ја очекуваат и погрешно ја читаат во спротивната насока. Командата е само замена, а единицата известува за работа што ја вршат други единици. Ништо во овој распоред не е расипано, а замената на /bin/true го менува договорот за пакување, а не тунелот.
Wrapper-от делегира. Ги стартува instance единиците што ги обезбедува конфигурацијата на пакетот или неговиот systemd генератор, затоа празниот список на процеси ништо не докажува за тунелот. Кога не е избрана инстанца, wrapper-от сепак успева и сепак не стартува ништо. Состојбата одговара дали wrapper-от работел, а не дали постои тунел.
Читајте ги трите реда од излезот на status, а не зборот во заградите. Loaded го именува unit файлот што го прочитал systemd, Active ја носи временската ознака на последното успешно извршување, а отсутниот Main PID одговара на завршена еднократна задача. Тие три реда се и начинот да го разликувате овој wrapper од услуга што паднала секунда по стартувањето.
Излистајте ги единиците пред повторно да го прочитате status
Прашајте го systemd што постои пред да прашате што работи. Шаблонот може да е инсталиран додека не е создадена ниту една инстанца, и само создадена единица носи тунел. Започнете со вчитаниот сет:
systemctl list-units 'openvpn*'
Тој список е она што systemd го вчитал во овој момент, и тоа е најблиску до инвентар на тунели. Инсталираните unit файлови одговараат на друго прашање, а тој список сѐ уште покажува шаблон кога ништо не е создадено:
systemctl list-unit-files 'openvpn*'
Читајте ги двата списка заедно, зашто шаблон во вториот и инстанца во првиот се различни одговори. Шаблон што постои и инстанца што работи не се истиот факт, и само вториот значи тунел. Распоредите на пакетите се разликуваат и меѓу дистрибуциите и верзиите на OpenVPN. Постар openvpn@ шаблон, одделен пар client и server и дистрибуциски wrapper можат сите да бидат легитимни во сопственото пакување.
Прилагодете се на вашата машина, а не на упатството што го најдовте. Името на инстанцата во туѓ излез може да биде office, додека вашето е home или work. Се пренесува методот, не низата.
Следете го името на инстанцата до датотеката што ја чита
Во upstream client шаблонот работниот директориум на единицата е /etc/openvpn/client и нејзината команда оттаму зема %i.conf, затоа openvpn-client@office ја чита /etc/openvpn/client/office.conf. Потврдете го тоа мапирање на инсталираната единица наместо да му верувате на примерот, зашто шаблонот што го имате може да е постар или дистрибуциско препишување:
systemctl cat [email protected]
Читајте ги drop-in што се појавуваат на дното од тој излез, зашто датотека под .d/ може да го смени ExecStart, работниот директориум или патеката на конфигурацијата. Профилот што го превземавте како office.ovpn не е датотеката што ја отвора инстанцата. Таа празнина е вообичаената причина грешка да именува патека што никогаш не сте ја уредувале.
Релативните патеки внатре во профилот се следната стапица. Преместувањето на главната датотека додека референците ca, cert и key остануваат релативни ја заменува грешката за исчезната датотека со друга грешка за исчезната датотека. Втората покажува на датотека за која бевте сигурни дека постои, затоа директориумот на профилот е поважен од името на датотеката.
Стартувајте ја, потоа прочитајте го журналот на таа инстанца
Стартувајте ја инстанцата што штотуку ја прегледавте, зашто журналот на збирната единица нема да ги содржи грешките на тунелот. Потоа прочитајте го журналот за ова подигање и во тој редослед барајте грешка во конфигурацијата, грешка при пристап до датотека и грешка при поврзување, зашто секоја од нив не успева во различен стап од стартувањето.
sudo systemctl start [email protected]
journalctl -u [email protected] -b
Стартувањето и овозможувањето се одделни одлуки: start ја извршува единицата сега, enable го уредува следното подигање, а enable --now ги прави двете во еден чекор. daemon-reload повторно ги чита дефинициите на единиците и не рестартира процес што работи и не применува уреден профил. Откако ќе го смените профилот, рестартирајте ја инстанцата, зашто тоа е она што повторно ја чита датотеката.
Не ставајте втор менаџер на истиот тунел
NetworkManager и менаџерите на сесии на OpenVPN 3 имаат сопствена состојба на врската, а systemd инстанца до еден од нив става два сопственици на истиот тунел. Симптомот е тунел што се подига и по неколку секунди се заменува, или таков што одбива да остане запрен. Изберете го менаџерот што вашата дистрибуција го документира за десктоп, и намерно користете systemd на сервер.
Проверете дали веќе има сопственик пред да стартувате инстанца. Кога десктоп аплетот ја покажува врската, инстанцата што ја стартувате се натпреварува со него наместо да го дополни. Оневозможете го менаџерот што не го користите наместо да ги пуштите двата и да се надевате дека редот ќе се задржи. Тој конфликт ги објаснува и журналите каде тунелот се воспоставува и потоа се разградува од процес што никогаш не сте го стартувале.
Одговорете на првичното прашање со името на инстанцата, датотеката што ја прочитала и редот од журналот што не успеал. Белешките на OpenVPN за интеграцијата со systemd го опишуваат распоредот на шаблонот и мапирањето на датотеката преку кое се решава името на инстанцата.