Сіз туннельді тексересіз, systemctl status openvpn іске қосасыз және Main PID жоқ, процестер тізімі бос active (exited) аласыз. Табиғи оқу — қызмет іске қосылып, өлді, сондықтан unit-ті ашып, /bin/true тауып, пакет бүлінген деп қорытынды жасайсыз. Debian пакетінде бұл күй — жобаланғандай жұмыс істеп тұрған wrapper, ал туннель ол іске қосатын instance-unit-тердің бірінде өмір сүреді. Жалпы unit қай инстанция оны құрғанын ешқашан айтпайды.

Бұл unit-те active (exited) шын мәнінде нені білдіреді

Пакеттелген unit — бір реттік тапсырма: оның ExecStart /bin/true, ал RemainAfterExit=yes аяқталған unit-ті active (exited) деп хабарланып тұруын қамтамасыз етеді. Осы директиваны алып тастасаңыз, сол сәтті /bin/true тапсырмасы inactive (dead) күйінде аяқталады, бұл адамдар күтетін және қарсы бағытта қате оқитын дәл сол күй. Команда — жай орын толтырғыш, ал unit басқа unit-тер атқаратын жұмыс туралы есеп береді. Бұл реттеуде ештеңе бүлінбеген, ал /bin/true-ны ауыстыру туннельді емес, пакеттеу келісімін өзгертеді.

Wrapper өкілеттік береді. Ол пакет конфигурациясы немесе оның systemd генераторы беретін instance-unit-терді іске қосады, сондықтан бос процестер тізімі туннель туралы ештеңені дәлелдемейді. Ешбір инстанция таңдалмаса, wrapper бәрібір сәтті болады және бәрібір ештеңе іске қоспайды. Күй wrapper жүрді ме, жоқ па — соған жауап береді, туннель бар ма, жоқ па — оған емес.

status шығысының үш жолын оқыңыз, жақшадағы сөзді емес. Loaded systemd оқыған unit файлын атайды, Active соңғы сәтті жүгірістің уақыт белгісін алып жүреді, ал Main PID-тің жоқтығы аяқталған бір реттік тапсырмаға сай келеді. Осы үш жол — бұл wrapper-ді іске қосылғаннан бір секунд кейін құлаған қызметтен ажыратудың да жолы.

status-ты қайта оқымас бұрын unit-терді тізімдеңіз

Не жұмыс істеп тұрғанын сұрамас бұрын systemd-ден не бар екенін сұраңыз. Үлгі орнатылған болуы мүмкін, бірақ бірде-бір инстанция құрылмаған, ал туннельді тек құрылған unit алып жүреді. Жүктелген жиынтықтан бастаңыз:

systemctl list-units 'openvpn*'

Бұл тізім — systemd дәл қазір жүктеген нәрсе, және ол туннельдер тізіміне ең жақын. Орнатылған unit файлдары басқа сұраққа жауап береді, ал ештеңе құрылмаған кезде де бұл тізім үлгіні көрсетеді:

systemctl list-unit-files 'openvpn*'

Екі тізімді бірге оқыңыз, өйткені екіншісіндегі үлгі мен біріншісіндегі инстанция екі түрлі жауап. Бар үлгі мен жұмыс істеп тұрған инстанция бір факт емес, және тек екіншісі туннельді білдіреді. Пакет орналасуы дистрибутивтер мен OpenVPN нұсқалары бойынша да ерекшеленеді. Ескі openvpn@ үлгісі, бөлек client және server жұбы және дистрибутив wrapper-і өз пакетінде заңды бола алады.

Тапқан оқулыққа емес, өз машинаңызға бейімделіңіз. Біреудің шығысындағы инстанция атауы office болуы мүмкін, ал сіздікі home немесе work. Берілетіні — әдіс, жол емес.

Инстанция атауынан ол оқитын файлға дейін барыңыз

upstream client үлгісінде unit-тің жұмыс каталогы /etc/openvpn/client және оның командасы сол жерден %i.conf алады, сондықтан openvpn-client@office /etc/openvpn/client/office.conf файлын оқиды. Бұл сәйкестікті мысалға сенудің орнына орнатылған unit-те растаңыз, өйткені сіздегі үлгі ескі немесе дистрибутивтің қайта жазуы болуы мүмкін:

systemctl cat [email protected]

Осы шығыстың төменгі жағында көрінетін drop-in-дерді оқыңыз, өйткені .d/ астындағы файл ExecStart, жұмыс каталогы немесе конфигурация жолын өзгерте алады. office.ovpn деп жүктеген профиліңіз инстанция ашатын файл емес. Осы алшақтық — қате ешқашан өңдемеген жолды атауының әдеттегі себебі.

Профиль ішіндегі салыстырмалы жолдар — келесі тұзақ. Негізгі файлды жылжытып, ca, cert және key сілтемелерін салыстырмалы қалдырсаңыз, жоғалған файл қатесін басқа жоғалған файл қатесіне ауыстырасыз. Екіншісі бар екеніне сенімді болған файлды көрсетеді, сондықтан профиль каталогы файл атауынан маңыздырақ.

Оны іске қосыңыз, содан кейін сол инстанцияның журналын оқыңыз

Жаңа тексерген инстанцияны іске қосыңыз, өйткені жалпы unit журналында туннель қателері болмайды. Содан кейін осы жүктелудің журналын оқып, осы ретпен конфигурация қатесін, файлға қатынау қатесін және қосылым қатесін іздеңіз, өйткені әрқайсысы іске қосылудың әртүрлі сатысында сәтсіз болады.

sudo systemctl start [email protected]
journalctl -u [email protected] -b

Іске қосу мен қосу — бөлек шешімдер: start unit-ті қазір орындайды, enable келесі жүктелуді реттейді, ал enable --now екеуін бір қадамда жасайды. daemon-reload unit анықтамаларын қайта оқиды және жұмыс істеп тұрған процесті қайта іске қоспайды, өңделген профильді қолданбайды. Профильді өзгерткеннен кейін инстанцияны қайта іске қосыңыз, өйткені файлды қайта оқитын — сол.

Бір туннельге екінші менеджер қоймаңыз

NetworkManager және OpenVPN 3 сессия менеджерлерінің өз қосылым күйі бар, ал олардың бірінің жанындағы systemd инстанциясы бір туннельге екі ие қояды. Симптом — көтеріліп, бірнеше секундтан кейін ауыстырылатын туннель немесе тоқтаулы күйде қалудан бас тартатын туннель. Дистрибутивіңіз жұмыс үстелі үшін құжаттайтын менеджерді таңдаңыз, ал серверде systemd-ді әдейі қолданыңыз.

Инстанцияны іске қоспас бұрын бар иені тексеріңіз. Жұмыс үстелінің applet-і қосылымды көрсеткенде, сіз іске қосқан инстанция оны толықтырудың орнына онымен бәсекелеседі. Екеуін де жүргізіп, реттің сақталуына үміттенудің орнына пайдаланбайтын менеджерді өшіріңіз. Бұл қақтығыс туннель орнығып, содан кейін сіз ешқашан іске қоспаған процесс оны бұзатын журналдарды да түсіндіреді.

Бастапқы сұраққа инстанция атауымен, ол оқыған файлмен және сәтсіз болған журнал жолымен жауап беріңіз. OpenVPN-нің systemd интеграциясы туралы жазбалары үлгі орналасуын және инстанция атауы шешілетін файл сәйкестігін сипаттайды.

Қатысты мақалалар