Сиз туннелди текшересиз, 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 интеграциясы тууралуу эскертүүлөрү үлгүнүн жайгашуусун жана инстанциянын аты чечилген файл дал келүүсүн сүрөттөйт.

Тектеш макалалар