up скрипти иштейт, нөл менен чыгат, бирок анын ичиндеги тапшырма терминалдан эки секунддан кийин эң жакшы иштеген жеке кызматка жете албайт. Инстинкт убакыт деп ойлойт, адаттагы оңдоо — бул күтүү, ал жарышты түшүнбөстөн жашырат. Пайдалуураак окуу — “up” хуктун аты, даярдыктын кепилдиги эмес. Ал туннель түзмөгү конфигурацияланганда ишке кирет, бул маршруттардан, DNSтен жана туннелдин артындагы кандайдыр бир колдонмодон эрте.

Shell текшерүүсү ийгиликтүү болду, анткени ал баары жайгашкандан кийин иштеди. Хук белгилүү бир учурда иштеди.

up иштөө тартибинде кайда турат

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

Колдонмо бул тартипти жана ар бир хук алган чөйрөнү документтештирет. Ошол тартип “менин shell'имден иштейт” деген классикалык билдирүүнүн толук түшүндүрмөсү, ошондой эле эле скрипт бир машинада өтүп, маршрут баскычы жайыраак башка машинада ийгиликсиз болушунун себеби. Эки жыйынтык тең скрипттин сапаты жөнүндө эч нерсе айтпайт.

DNS жана колдонмо даярдыгы андан да кечирээк келет. Орнотулган маршруттар да алыскы эндпоинттик тыңшап жатканын, ат чечилип жатканын же колдонуучуга байланыштуу тапшырма үчүн иш тактасынын сессиясы бар экенин далилдебейт.

Хук чындыгында эмнени мураска алат

Хук OpenVPN процессинин аккаунту жана чөйрөсү астында иштейт, бул сиздин интерактивдүү shell'иңиз менен бирдей эмес. Анда колдонуучунун сессия шинасы, иш тактасынын чөйрөсү же кирүүдө гана ачылуучу ыйгарым укуктар жок болушу мүмкүн. Тапшырмага алардын кайсынысы чындап керек экенин жазып алыңыз.

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

Хукта тапшырма ийгиликсиз болсо, аккаунтту, чөйрөнү жана ийгиликсиз болгон биринчи операцияны жазып алыңыз. Бул эрте убакытты укук же контекст маселесинен ажыратат, ал эми экөөнүн оңдоо жолу таптакыр башка. Алардын ортосунда божомолдоо — беш мүнөттүк оңдоону бүт күнгө айландырат.

Эмне үчүн күтүү кошуу даярдык текшерүүсү эмес

Күтүү скриптти кечиктирип, жарыш терезесин жылдырат. Тез күнү тапшырма ийгиликтүү болот; жай күнү ал кайра ийгиликсиз болот, ал эми кечигүү иштеп жаткандай көрүнгөндүктөн, катаны кайталоо кыйындайт. Жеңил жүктөмдө гана иштеген кечигүү — кокустук, оңдоо эмес.

Эгер көз карандылык маршрут болсо, маршрутту орнотууга туура келген хукту колдонуңуз. Эгер көз карандылык туннелдин артындагы кызмат болсо, ошол конкреттүү шартты күткөн жана ал эч качан келбесе, ачык ийгиликсиз болуучу чектелген текшерүүнү колдонуңуз.

Ийгиликсиздикти ачык калтырыңыз. Чыныгы иши ийгиликсиз болгондо нөл менен чыккан хук — ийгиликсиз болуучу хуктан жаман, анткени кызмат менеджери ийгилик деп жазат да, эч ким кайра карабайт. Скрипттин өзү чыгарган бир сап лог — муну чынчыл кармоонун эң арзан жолу.

Тазалоо жана кайра туташуу да ушундай камкордукту талап кылат

Жалпы абалды өзгөрткөн скриптке тиешелүү жокко чыгаруу жолу керек. Хук кошкон маршруттар, чечүүчү жазуулар жана файрвол белгилери идемпотенттүү жана кайтарылуучу болушу керек, болбосо кайра туташуу экинчи көчүрмөнү биринчисинин үстүнө жайгаштырат.

Кайра туташуулар хуктарды кызматтын толук башталышынан көбүрөөк иштетиши мүмкүн. Сессияны кайра түзгөн туруктуу интерфейс up жана route-up циклини кайра козгой алат, ошондуктан ар бир жүктөөдө бир аткарууну көздөгөн скрипт акыры туура эмес иштейт. Бир күндүк термелүү логундагы аткарууларды санап, анын чындыгында канчалык тез-тез иштешин көрүңүз. Андан кийин скриптти ушунча жолу иштетүүгө коопсуз кылыңыз.

Ийгиликсиз болгон жашоо циклини текшериңиз, кийинки буйрукту эмес. Жүктөөнү же кайра туташууну кайталаңыз, хуктун аткарылышын байкаңыз жана тапшырма чындыгында иштеген учурда ийгиликтүү болгонун ырастаңыз. Кийин интерактивдүү shell'ден алынган ийгилик — көз карандылык жөнүндө далил, баштоо жолу иштейт деген далил эмес.

Ар бир тапшырма көз каранды болгон окуяны атап, аны ошол окуяга байлаңыз. Калганынын баары — текшерүүгө окшошкон кечигүү.

Тектеш макалалар