OpenVPN-тің сағат сайынғы үзілуі: қайта келіссөз бе әлде нақты қайта қосылу ма?
Күдікті дөңгелек аралықтағы үзілу әдетте кілттердің жаңаруы, өлі байланыс емес. Бірдеңені өшіруден бұрын нақты қолданыстағы таймерді және журнал жолын оқыңыз.
Алпыс минут, немесе отыз, немесе жүз жиырма: дөңгелек аралыққа түскен үзілу ешқашан дерлік желі емес. OpenVPN таймер бойынша деректер арнасын қорғайтын кілт материалын жаңартады, және сіз болжағаннан қысқа таймер үнемі істен шығатын байланысқа дәл ұқсайды. Пайдаланушылар үзілген байланыс туралы хабарлайды, ал журнал кілттердің сәтті алмасуы туралы хабарлайды. Төмендегі нұсқаулық сол жаңартуды нақты қайта іске қосылудан ажыратады, іс жүзінде қолданыстағы мәнді оқиды және шығын үстелге қойылғаннан кейін ғана оны өзгертеді.
Қадамдарды ретімен орындаңыз, өйткені біріншісі беттің қалған бөлігі сізге мүлдем қатысты ма, соны шешеді. Алға секірсеңіз, онымен ешқандай қатысы жоқ ақау үшін таймерді реттеуге бір кеш жұмсайсыз.
Жұмсақ қайта орнатуды қайта іске қосылудан ажыратыңыз
Журнал жолы — бүкіл диагностика. Қайта келіссөз жұмсақ қайта орнатуды, содан кейін сол туннельдің ішінде жаңа кілт алмасуды жазады: интерфейс өз мекенжайын сақтайды, маршруттар қайта қосылмайды, және орнатылған TCP сессиялары әдетте үзіліспен аман қалады. Нақты қайта іске қосылу сессияны жұлып тастайды, интерфейсті қайта салады, басқа клиент мекенжайын беруі мүмкін және барлық ұзақ өмірлі байланыстарды өлтіреді. Екі оқиға да қарапайым; олардың тек біреуі ғана үзілген қоңырауды түсіндіреді.
journalctl -u openvpn-client@office -b --no-pager | grep -nE 'soft reset|Connection reset|reneg|TLS Error'
openvpn --version | head -n 1
Нұсқа жолы маңызды, өйткені журналдың тұжырымы шығарылымдар арасында өзгереді, және 2.3-тен есте қалған хабарлама 2.6-да басқаша тұжырымдалуы мүмкін. Біреудің форум үзіндісін емес, өз журналыңызды оқыңыз. Көмек сұрағанда нақты жолды дәйексөз етіңіз, өйткені қайта баяндау оқиғаны анықтайтын бөлшекті жоғалтады. Егер оқиға барысында интерфейс мекенжайы өзгермесе және сессиялар тізімі аман қалса, сіз жаңартуды көріп тұрсыз, ал қалған бөлімдер қолданылады.
Қолданыстағы таймерді оқыңыз, өз файлыңызды емес
reneg-sec — деректер арнасының қайта келіссөздері арасындағы секундтар саны, оның әдепкі мәні 3600. Әр тарап өз мәнін алып жүреді, және екеуінің кішісі жаңартуды іс жүзінде бастайды. Осы бір ереже есептердің көпшілігін түсіндіреді: үлкен санды қоятын клиент профилі сервер әдепкі мәнді ұстап тұрғанша сағат сайын қайта орнатылады.
grep -Rn --include='*.conf' -E 'reneg-sec|reneg-bytes' /etc/openvpn
# server side, including included files
grep -Rn -E '^reneg-sec' /etc/openvpn/server/
Клиент файлынан қорытынды жасамас бұрын сервердің қолданыстағы конфигурациясын да, ол итеретіннің бәрін қоса, оқыңыз. Содан кейін егжей-тегжейлілікті арттырып, бір аралықты басынан аяғына дейін бақылаңыз: 3-деңгей қайта келіссөз жолдарын әлдеқашан көрсетеді, ал уақыт белгілері оқиғаның әр 3600 секунд сайын қайталанатынын немесе белсенділікке еретінін айтады.
Оны іс жүзінде итерілетін жерде өзгертіңіз
Айналымдағы ем — клиент профиліндегі бір жол, және ол уақыттың шамамен жартысында дұрыс емес орын. Тараптың кіші мәні жеңетіндіктен, таймерді нөлге қоятын клиентті өзгермеген сервер әлі де қайта келіссөзге тарта алады.
# on both ends, or on the side that owns the pushed configuration
reneg-sec 0
Профильдер орталықтан жасалатын болса, орналастырылған көшірмені емес, үлгіні өңдеңіз, әйтпесе келесі жабдықтау жүгірісі жаңа ғана жойған мәнді қалпына келтіреді. Бір емес, екі аралықты бақылап тексеріңіз: бір тыныш сағат 7200-ге қойылған таймермен де үйлеседі.
Аралас орналастыруда не болатынын да шешіңіз. Өзгерісті алдымен клиенттерге таратсаңыз, сервер әлі де жаңартуды бастайтын терезе қалады; бұл зиянсыз, бірақ растау үшін журналдарды бақылап жүрсеңіз шатастырады. Алдымен кіші мән тұрған жақты өзгертіңіз, сонда симптом күткен жерде жоғалады.
Қайта келіссөзді өшіру арқылы неден бас тартасыз
Тұрақты қайта келіссөз деректер арнасы кілттерінің бір жиынтығы трафикті қанша ұзақ қорғайтынын шектейді. Таймерді өшіру туннельді бұзбайды, және үй маршрутизаторында немесе шағын кеңсе қақпасында практикалық әсер қарапайым. Бұл бәрібір айырбас, және оны жасамас бұрын айырбасты атап өткен жөн. Өзгеретіні — бір кілт жиынтығы сессияны қанша ұзақ қорғайтыны, ал туннельдің мүлдем жұмыс істеуі емес.
Өшірудің орынды жағдайы — жалғастыру мүмкін емес нәрсені бұзатын қайта орнату: үзілетін қоңырау, қайта орнатуды қажет ететін қашықтағы жұмыс үстелі сессиясы, басынан басталатын сақтық көшірме. Егер үзіліс пайдаланушыларға көрінбесе, әдепкі мәнді қалдыру ештеңе тұрмайды және сізге берілген кілттер ротациясын сақтайды.
Үлгі рұқсат етсе, себепті түзетуді артық көріңіз. Бірінші қол алысу сәтті болған кезде жарты жолда сәтсіздікке ұшырайтын жаңарту таймерге емес, жолға нұсқайды: басқару арнасының үлкенірек алмасуындағы пакет өлшемі мәселесін, ағынды тастайтын күйлі қауіпсіздік қабырғасын немесе тек бірінші әрекетте сәтті болатын ұсынысты іздеңіз. Олардың әрқайсысы жаңа ғана оқыған сол журналда із қалдырады. Таймерді өшіру сол дәлелді жасырады.
Аралық басқа жерді нұсқағанда
Конфигурациядағы екі көрші ұқсас симптомдар мен түрлі түзетулер береді. Белгіленген кезеңде ештеңе келмесе, ping-restart туннельді қайта іске қосады, ал ping-exit клиентті толығымен сөндіреді. Журналдың еш жерінде қайта келіссөзсіз бос тұрған үзілу осыларға немесе UDP картасын өз кестесімен мерзімінен бұрын бітірген NAT құрылғысына жатады.
Тұтынушы маршрутизаторлары, мобильді хотспоттар және операторлық деңгейдегі NAT бәрі де бос тұрған UDP сессияларының мерзімін ешкімге айтпай бітіреді. Бұл ақау сағатқа емес, бос тұруға ереді, және бұл — белгі: он тыныш минуттан кейін үзіліп, бір сағат тұрақты трафиктен аман қалған сессия қайта келіссөз жүргізбейді.
Төртіншісін өзгертуден бұрын үш нәрсені жазыңыз: өлшеген аралықты, тапқан қолданыстағы мәнді және оны көрсеткен пәрменді. Егер таймер қозғалғанда аралық та қозғалса, механизм анықталды, ал түзету — жоғарыдағы айырбас туралы шешім. Егер қозғалмаса, параметрді қайтарып қойыңыз және keepalive, NAT күйі мен пакет жоғалтуын бақылауды жалғастырыңыз.