Қызметті тоқтату persist-tun орнатылған күннің өзінде интерфейсті жояды. Бұл параметрдің құжатталғандай жұмыс істеуі, сәтсіздік емес. Параметр жұмыс істеп тұрған процесс ішіндегі бір қайта іске қосу жолын сипаттайды, және systemctl stop ол жол емес.

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

Екі ресурс және олар жататын қайта іске қосу

OpenVPN өзінің қайта іске қосылуын екі қарапайым жағдайда хабарлайды. Айқын SIGUSR1 мұны жасайды, ал өлі серіктес тудырған ping-restart дәл солай жасайды. Екеуі де процесті тірі қалдырып, қосылымды орнатуды қайта іске қосады, және дәл осы жерде параметрлер өз орнын алады.

EventTUN/TAP deviceKey and auth filesAddresses and routesup/down hooks
Soft reset, from SIGUSR1 or from a ping-restart the daemon sends itselfsurvives only with persist-tunsurvive only with persist-keysurvive with the device, otherwise rebuiltrun again only when restart hooks are enabled
Configuration reload, SIGHUPrecreatedre-read from diskrebuilt once the device returnsrun again
Service stoplostre-read at the next startremovedrun at the next start

Тек жұмсақ қайта іске қосу жолы ғана осы екі параметр өзгертетін нәрсе, ал олар өткізіп жіберетін жұмыс — бос емес байланыста қымбат бөлік. Құрылғыны қайта ашу оған тіркелген мекенжайлар мен маршруттарды бұзады, ал оларды қайта құру қайта іске қосу басталғанда жолда болған пакеттерді жоғалтуы мүмкін. Тоқтату сол нысандарды сақтаудың ешбір параметрінсіз жояды.

Бұл параметрлер неліктен мүлдем бар

Қатайтылған OpenVPN сервері әдетте root ретінде басталады, кілттері мен құрылғысын ашады, содан кейін артықшылығы жоқ пайдаланушыға ауысады. Сол ауысудан кейін кейбір операциялар жай ғана жоғалады. 0600 режимі бар кілт файлын оқу, желілік интерфейс жасау немесе маршруттарды өзгерту түгелдей қабылданбауы мүмкін.

persist параметрлері жоқ болса, ping-restart тудыру үшін жеткілікті ұзақ үнсіз қалған серіктес дәл сол операцияларды мәжбүрлер еді. Конфигурацияда ештеңе өзгермесе де қайта қосылу сәтсіз аяқталар еді. Процесс себепсіз өліп жатқандай көрінер еді, ал журнал желілік қатенің орнына рұқсат қатесін көрсетер еді.

Олармен жұмсақ қайта іске қосу артықшылығы бар кезең әлдеқашан алған нәрсені қайта пайдаланады. Ешбір сиқыр жоқ және процесс ештеңеден аман қалмайды. Ресурстарды алу жай ғана кейінге қалдырылады.

Соңғы емес, бірінші қатені оқыңыз

Қайта іске қосу сәтсіз болса, соңғының орнына бірінші қатені оқыңыз. Қорғалған кілт, auth файлы, интерфейстің ioctl және сыртқы ілмек — төрт түрлі ресурс. Біреуін сақтау қалғандарына қол жеткізу туралы ештеңе айтпайды. Firewall құралын шақыратын ілмек әлі де сол құрал талап ететін артықшылықтарды қажет етеді.

Ілмектердің өз ажыратқышы бар. OpenVPN нұсқаулығы persist параметрлерін up-restart-мен жұптайды, ол қайта іске қосудан кейін up және down скрипттерінің қайта орындалатынын шешеді. Сондықтан жоғарыда қалған интерфейс resolver интеграцияңыздың жаңарғаны туралы ештеңе айтпайды.

# which restart path just happened?
journalctl -u openvpn-client@office --since '10 min ago' | grep -E 'SIGUSR1|ping-restart|Restart pause|NOTE:'

# did the interface survive, and do its routes still exist?
ip -brief link show tun0
ip route show dev tun0

Бұл екі команда екі істен шығу режимін секундтар ішінде ажыратады. Бар болғанымен маршруттары жоқ интерфейс — ілмек немесе маршрут мәселесі. Жоғалып кеткен интерфейс процесс шынымен аяқталғанын білдіреді.

Сақталған интерфейс kill switch емес

Егер талап трафиктің тоннельден ешқашан шықпауы болса, сақталған құрылғы мұны бермейді. Басқа мекенжай тобының маршруттары, екінші әдепкі маршрут және процесс толығымен шығатын жағдай — бәрі параметр ауқымынан тыс қалады.

Екі талапты бөлек қарастырыңыз. Тоннель нысанын қайта қосылулар арасында сақтау — демон үшін қолайлылық. Тоннель өшіп тұрғанда шығысты блоктау — өз ережелері мен өз тесті бар firewall саясаты. Оларды шатастыру қорғанышты көрінетін, бірақ барынша күш салынған қайта қосылу сияқты әрекет ететін конфигурация жасайды.

Диагностикалау алдында оқиғаны атаңыз. Жұмсақ қайта іске қосу, сәтсіз қосылу әрекеті және қызметті тоқтату — үш тәртібі бар үш оқиға, және тек біріншісі ғана осы параметрлер сипаттайтын нәрсе.

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