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

Shell тесті сәтті өтті, өйткені ол бәрі реттелгеннен кейін орындалды. Хук нақты бір сәтте іске қосылды.

up іске қосылу ретінде қайда тұр

OpenVPN туннель құрылғысын конфигурациялайды, содан кейін up хукін іске қосады. Маршруттарды орнату — кейінгі кезең және оның өз хукі бар, сондықтан up ішіне қойылған маршрутқа тәуелді тапсырма пайдалы жолы жоқ құрылғыны көреді. Маршрут жұмысын route-up ішіне қойыңыз, сонда уақыт мәселесі әдетте жоғалады.

Нұсқаулық осы ретті және әр хук алатын ортаны сипаттайды. Осы рет — “менің shell-імнен жұмыс істейді” деген классикалық есептің толық түсіндірмесі, сонымен қатар бір скрипттің бір машинада өтіп, баяу маршрут кезеңі бар басқа машинада құлауының себебі. Екі нәтиженің ешқайсысы скрипт сапасы туралы ештеңе айтпайды.

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

Хук шын мәнінде нені мұраға алады

Хук OpenVPN процесінің тіркелгісі мен ортасында іске қосылады, бұл сіздің интерактивті shell-іңізбен бірдей емес. Онда пайдаланушының сессия шинасы, жұмыс үстелі ортасы немесе тек кіру кезінде ашылатын тіркелгі деректері болмауы мүмкін. Тапсырмаға осылардың қайсысы шын мәнінде қажет екенін жазып алыңыз.

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

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

Неге кідіріс қосу дайындық тексерісі емес

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

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

Сәтсіздікті айқын қалдырыңыз. Нақты жұмысы сәтсіз болған кезде нөлмен шығатын хук — сәтсіз болатын хуктен жаман, өйткені қызмет менеджері сәттілік деп жазады да, ешкім енді қарамайды. Скрипттің өзі шығаратын бір жол журнал — мұны адал ұстаудың ең арзан жолы.

Тазарту мен қайта қосылу да осындай күтімді талап етеді

Ортақ күйді өзгертетін скриптке сәйкес кері қайтару жолы қажет. Хук қосқан маршруттар, шешуші жазбалары және брандмауэр белгілері идемпотентті және қайтымды болуы керек, әйтпесе қайта қосылу екінші көшірмені біріншісінің үстіне қояды.

Қайта қосылулар хуктерді қызметтің толық іске қосылуынан жиірек іске қосуы мүмкін. Сессияны қайта орнататын тұрақты интерфейс up және route-up циклін қайтадан тудыруы мүмкін, сондықтан әр жүктеуде бір орындалуды көздейтін скрипт ақырында дұрыс жұмыс істемейді. Бір күндік ауытқу журналындағы орындалуларды санап, оның шын мәнінде қаншалықты жиі іске қосылатынын көріңіз. Содан кейін скриптті сонша рет орындауға қауіпсіз етіп жасаңыз.

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

Әр тапсырма тәуелді оқиғаны атап, оны сол оқиғаға тіркеңіз. Қалғанының бәрі — тексеріс сияқты көрінген кідіріс.

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