VPN көтерілгеннен кейін іске қосылуы керек скриптке қосылымды иемденетін компоненттен оқиға қажет. Ескі желілік ілгектер қалтасына салынған файл NetworkManager, pppd немесе жеке OpenVPN процесі жасай алатын әр VPN үшін кері шақыру емес. Бұл иелердің әрқайсысы әртүрлі ортамен әртүрлі оқиға хабарлайды, сондықтан ілгек таңдалмай тұрып иесі анықталуы керек. Әйтпесе скрипт дұрыс және жай ғана ешқашан іске қосылмайды.

NetworkManager басқаратын VPN үшін диспетчер дұрыс орын, ал vpn-up дұрыс әрекет.

Интерфейс оқиғасын емес, vpn-up-ты қолданыңыз

Диспетчер up мен vpn-up-ні ажыратады. Біріншісі белсендірілген интерфейсті хабарлайды; екіншісі белсендірілген VPN қосылымын хабарлайды. Wi-Fi көтерілуі тек астыңғы байланыс бар екенін білдіреді; туннель әлі келіссөз жүргізіп жатқан болуы мүмкін, немесе ешқашан аутентификацияланбауы мүмкін.

Скрипт интерфейс пен әрекетті алады, ал қосылым мәліметтері орта арқылы келеді, оның ішінде профиль UUID-і және VPN-нің IP интерфейсі. Идентификацияны құрылғы атауларынан болжаудың орнына сол айнымалыларды оқыңыз.

Сәйкестікті бір қосылыммен шектеңіз

Қосылым UUID-і немесе диспетчер беретін басқа идентификация бойынша сәйкестендіріңіз, tun префиксі немесе ppp0 бойынша емес. Интерфейс атаулары тұрақты емес, бір уақытта бірнеше туннель болуы мүмкін, және екі профиль бірдей көрсетілетін атауды алып жүруі мүмкін. tun префиксіне сәйкестендіру скрипттің ақырында ешкім тиісуге ойламаған қосылым үшін іске қосылатынын білдіреді. Қайта қосылу құрылғыны қайта құрғанда ол бір профиль үшін екі рет те іске қосылуы мүмкін.

Тапсырманы идемпотентті етіңіз. Әр шақыруда маршрут қосатын кері шақыру ақырында кестені көшірмелермен толтырады, және дәл екінші көшірме маршруттауды бұзады.

Белсендіру нені дәлелдемейтінін біліңіз

vpn-pre-up NetworkManager VPN-нің толық белсендірілгенін хабарламай тұрып іске қосылады, және менеджер сол скрипттерді күтеді. Блоктайтын кезеңді тапсырма шынымен сол жерге тиесілі болғанда ғана қолданыңыз, өйткені баяу тексеру барлық басқа компоненттер күтіп тұрған белсендіруді кешіктіреді.

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

Скрипт жұмыс істейтін контексті құрметтеңіз

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

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

Ешқашан іске қосылмайтын ажыратуға дайындалыңыз

NetworkManager vpn-pre-down күтпеген тоқтау немесе байланыс жоғалту сияқты мәжбүрлі ажыратуларда шығарылмайтынын құжаттайды. Сондықтан тек жұмсақ pre-down төңірегінде құрылған тазалау құрылымы бойынша толық емес. Скрипт өзгертетін кез келген ортақ күйдің ақаулықтан кейін қалпына келтіре алатын басқа иесі болуы керек, және бұл қалпына келтіру жолы болжам емес, сынақтан өтуі тиіс.

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

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