Бірліктер дұрыс көрінуі мүмкін, systemctl start сәттілік туралы хабарлауы мүмкін, ал он секундтан кейін қызмет белсенді емес күйде қалады. Немесе іске қосу шегі оны тоқтатқанша әр жарты минут сайын қайта жүктеледі. Бұл мінез-құлықтардың ешқайсысы желі ақауы емес: бірлік клиенттің іс жүзінде жасайтынына сай келмейтін процесс ғұмырын сипаттайды. Клиент fork жасап шығуы мүмкін, немесе сессияны конфигурациялап бірден шығуы мүмкін.

Сәтті іске қосудан кейін бірнеше секундта бірлік неге белсенді емес болады

systemd күйді өзі іске қосқан процестен шығарады, сондықтан Type= сол процесс туралы тұжырым, құжаттама емес. Type=simple кезінде бірлік команда орындалып жатқанда белсенді саналады және ол қайтқанда белсенді емес болады. Сондықтан қосылымды көмекшіге тапсырып шығатын клиент құлау сияқты көрінеді, туннель жұмыс істеп тұрса да. Содан кейін журнал іске қосу мен тоқтату үлгісін көрсетеді, ол ақаулы бинар ретінде оқылады.

Желі конфигурациясына тиіспей тұрып, бірлік түрін клиенттің мінез-құлқымен қатар оқыңыз.

Клиентке сай келетін түрді таңдаңыз

Екі үлгі жеткізушілердің CLI-лерінің көбін қамтиды: сессияны конфигурациялап шығатын команда және қайту алдында көмекшіні fork жасайтын команда. Әрқайсысына бөлек бірлік пішіні қажет.

[Service]
Type=oneshot
RemainAfterExit=true
ExecStart=/usr/bin/protonvpn-cli connect -f
ExecStop=/usr/bin/protonvpn-cli disconnect

oneshot RemainAfterExit=true-мен бірге команда қайтқаннан кейін де бірлікті белсенді ұстайды, бұл конфигурацияла-және-шық үлгісіне сай келеді, ал тоқтату командасы қызметке таза жабылу береді. Fork жасайтын клиент сол пішінді сақтайды, бірақ systemd баланы ұстасын деп Type=forking қажет. Restart=on-failure, RestartSec=30 және шекті StartLimitBurst орнатыңыз, жеткізушінің үзілісі қатені көметін қайта жүктеу цикліне айналмас үшін.

Қадағаланатын клиенттің демонға айналуына ешқашан жол бермеңіз

systemd-ден тыс қадағалаушылар да сол қабырғаға соғылады. Демонға айналған клиентті іске қосатын runit скрипті дереу қадағалаушыға қайтады, ол қайтуды құлау деп оқып, тағы бір көшірмені іске қосады. Әр қадағалаушы алдыңғы пландағы процесті иеленуді күтеді, sshd -D алда қалатыны сияқты. Қадағаланатын командалардан демон жалаушасын алып тастаңыз және фондық жұмысты қадағалаушыға қалдырыңыз. Туннель пайда болмай тұрып қайтатын қаптама скрипттер де сол шатасуды тудырады.

Өзін-өзі ажырататын процесс оны қадағалауы тиіс нәрсенің бәріне көрінбейді.

Сессия аяқталады және туннельді өзімен бірге алып кетеді

Жұмыс үстелі сессиясы өзі іске қосқан клиентке иелік етеді. Кіруді аяқтаңыз, сессия шинасы жоғалады да, туннельді алып кетеді, бұл соңғы терезе жабылғанда графикалық клиенттің қосылымы неге жиі үзілетінін түсіндіреді. Серверлер өздігінен көтерілетін жүйелік бірлікті немесе NetworkManager профилін пайдалануы керек. Пайдаланушы бірлігі туннель кірумен бірге аяқталуы тиіс болғанда ғана мағыналы, сондықтан оны графикалық сессия мақсатына байлап, оны сипаттамасында көрсетіңіз.

Қызмет пайдаланушысы сол мәселенің екінші жартысы. root иелігіндегі және режимі 0600 кілтті басқа тіркелгімен жұмыс істейтін бірлік оқи алмайды, sudo сіздің қабығында неге қол жеткізсе де.

systemctl cat openvpn-server@work
sudo chown -R openvpn:network /etc/openvpn/server
sudo find /etc/openvpn -type f -perm /077 -ls

Мекенжай пайда болғаннан кейін тәуелділерді реттеңіз

Демон әлі жасалмаған туннель мекенжайына байланғанда, ол Cannot assign requested address хабарламасымен шығады. Түзету қайталау циклі емес, айқын реттеу.

[Unit]
After=network.target [email protected]
Requires=sys-devices-virtual-net-wg0.device

After= жұмыстарды реттейді, ал құрылғы бірлігіндегі Requires= тәуелдіні интерфейстің болуына байлайды, бұл тек желі мақсатын күтуден күштірек. Өңдеуден кейін менеджерді қайта жүктеп, тәуелді қызметті қайта іске қосыңыз, сосын реттің әсер етті деп болжамай, оның журналын оқыңыз. Клиенттің шығысын журналға StandardOutput=journal немесе лог параметрі арқылы жіберіңіз, өйткені ешкім ашпайтын файлға жазатын қадағаланатын клиент ешқашан іске қосылмаған клиентке тура ұқсайды.

Сосын бір рет қайта жүктеп, туннель құрылғысы пайда болғаннан кейін бірліктің белсенді екенін растаңыз. Тек systemctl start-пен тексерілген түзету түзетуі тиіс жүктелу ретін сынаған жоқ.

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