Егер systemctl start openvpn-client@office іске қосып, жүйе systemd-мен жүктелмегені туралы хабарлама алсаңыз, бұл қызметтің істен шыққанындай көрінеді. Бұл мүлдем қызметтің істен шығуы емес: сіз шақырған systemctl сөйлесуге болатын жұмыс істеп тұрған менеджер таба алмайды, сондықтан OpenVPN туралы ештеңе тексерілмеді. sudo менеджер жасамайды, unit файлын орнату да оны жасамайды. Пәрмен мен машина екі түрлі әлемнен келеді, ал қате — бұл байқалған жалғыз жер.

Алдымен пәрмен орындалатын жерде PID 1 кімге тиесілі екенін сұраңыз, өйткені бұл жауап unit-тердің бар-жоғын шешеді.

Қате OpenVPN-ді емес, ортаны атайды

systemctl — клиент, менеджер емес. Ол жүйелік менеджерге socket арқылы қосылады, ал екінші жақта менеджер болмаса, адамдар форумдарға қоятын хабарламаны шығарады. ps -p 1 -o pid=,comm= шын мәнінде PID 1 ретінде не жұмыс істеп жатқанын көрсетеді, ал жауап көбінесе shell, init қабығы немесе контейнердің өз кіру нүктесі болады. Мұндай жағдайда unit файлы толығымен жарамды болып, бірақ ешқашан оқылмауы мүмкін. Пәрменді root ретінде қайталау клиенттің тіркелгі деректерін ғана өзгертеді.

Бірінші жолдың алдында бүкіл хабарламаны оқыңыз. Менеджердің өзінен шыққан қате, мысалы жоқ unit немесе орындалмаған шарт, сіз оған жеткеніңізді білдіреді; бұл қате жетпегеніңізді білдіреді.

WSL: systemd қосу — конфигурацияны өзгерту

WSL кейінгі шығарылымдарда systemd қолдауын алды, бірақ бұл мүмкіндік әр дистрибутив үшін бөлек қосылады және тек орнатылған WSL нұсқасы оны қолдайтын жерде жұмыс істейді. wsl --version Windows жағында немен жұмыс істеп жатқаныңызды көрсетеді, ал дистрибутивтің /etc/wsl.conf файлында [boot] бөлімі бар, онда systemd=true жазылады. Бар бөлімдерді жоймай сол файлды өңдеңіз, содан кейін өзгеріс күшіне енуі үшін WSL данасын қайта іске қосыңыз. wsl --shutdown барлық жұмыс істеп тұрған дистрибутивтерді тоқтатады, сондықтан алдымен жұмысыңызды сақтаңыз.

Қайта ашқаннан кейін, OpenVPN unit-іне тиюден бұрын менеджерді растаңыз: ps -p 1 -o comm= көрсетуі керек systemd деп. systemd қосу профиль, тіркелгі деректері немесе дана атауын бермейді, сондықтан келесі қате PID 1 емес, солардың бірі туралы болады.

Контейнерлер unit-терді емес, өз кіру нүктесін іске қосады

Қарапайым контейнер өзінің кіру нүктесі немесе пәрмені анықтаған нәрсені іске қосады және қандай пакеттерді орнатсаңыз да, ол systemd-мен жүктелген машина емес. Имиджге systemctl қосу сізге қосылатын ештеңесі жоқ клиент береді. Community OpenVPN үшін қолдау көрсетілетін үлгі әдетте алдыңғы планда жұмыс істейтін процесс, openvpn --config /path/to/client.conf, оны кіру нүктесі іске қосады және сырттан қадағалайды. Сол иесі іске қосуды, сигналдарды және өшіруді басқарады, және туннельді басқаратын жалғыз нәрсе сол болуы керек.

Сол туннельді әлдеқашан басқарып отырған кіру нүктесінің қасында интерактивті көшірмені ешқашан іске қоспаңыз, өйткені екі процесс құрылғы мен маршруттар үшін таласады. Контейнер ішіндегі ең аз init процесс балаларды жинайды және сигналдарды жібереді; ол имиджді unit-тері бар хостқа айналдырмайды.

Егер орналастыру шынымен контейнер ішінде systemd қажет етсе, оған осы үшін әдейі жасалған имидж керек, systemctl шағымдануды тоқтатқанша қосылатын қосымша артықшылықтар емес.

Менеджер пайда болған соң келесі қатені оқыңыз

Нағыз менеджер қызметті іске қосқаннан кейін пайдалы қателер басталады. Құрылғы рұқсатының істен шығуы, конфигурацияны талдау қатесі, жоқ тіркелгі деректері және қол жетпейтін серіктес — бұлар PID 1 хабарламасы ешқашан тексермеген төрт түрлі мәселе. Оларды unit шығарған ретпен оқыңыз, пайдаланып journalctl -u openvpn-client@office -n 50 systemd хостында, немесе менеджер жоқ жерде клиентті алдыңғы планда іске қосу арқылы. Алдыңғы планда іске қосу — профильдің өзі жұмыс істейтінін растаудың ең жылдам жолы да.

Жазбаларыңызда екі ортаны бөлек ұстаңыз: туннельді іске қосатын хост және пәрмендерді теретін орын.

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