Կախյալ ծառայությունը tun0.device-ին կապելը թվում է, թե բաժանորդագրվում եք թունելին, բայց այդպես չէ։ Սարքի միավորը արտացոլում է ինտերֆեյսի գոյությունը, ինչը կարող է ճիշտ մնալ ձախողված կապի և դրան հաջորդող վերակապակցման ընթացքում։ Այնուհետև ծառայությունը գործում է սխալ պահին, կամ երբեք, կախված նրանից՝ ինտերֆեյսը միջանկյալ անհետացել է, թե ոչ։ Կեռը, որը նկարագրում է իրադարձությունը, որն իսկապես ձեզ հետաքրքրում է, այն է, որը կանչում է OpenVPN-ը, ոչ այն, որը ենթադրում է systemd-ը։

Որոշեք, թե որ պայմանն է անհրաժեշտ ծառայությանը, նախքան ձգանն ընտրելը, քանի որ երեք թեկնածուները փոխարինելի չեն։

Ինչին է իրականում հետևում սարքի միավորը

systemd-ը սարքի միավոր է ստեղծում միջուկի՝ ցանցային ինտերֆեյսի վերաբերյալ պատկերացումից, ուստի tun0.device ակտիվանում է, երբ ինտերֆեյսը հայտնվում է, և անգործում է, երբ այն հեռացվում է։ persist-tun-ի դեպքում մեղմ վերագործարկումը ինտերֆեյսը պահում է տեղում, ուստի միավորը երբեք չի թարթում, և դրան կապված ոչինչ չի գործարկվում։ Նույնիսկ առանց կայունության՝ միավորը ոչինչ չի ասում երթուղիների, DNS-ի կամ այն մասին, թե արդյոք հեռավոր կողմը պատասխանում է։

Դա այն դարձնում է վատ փոխարինող 'VPN-ը պատրաստ է'-ի համար։ Լսողը, որին միայն տեղական հասցե է պետք, կարող է բավարարվել ինտերֆեյսի գոյությամբ, մինչդեռ հեռավոր ցանցում հավելված կանչող ծառայությանը պետք են երթուղիներ և հասանելիություն, ինչը սարքի միավորը չի կարող արտահայտել։

up-ը, route-up-ը և up-restart-ը տարբեր բաներ են նշանակում

up-ը գործարկվում է այն բանից հետո, երբ բացվել է TUN/TAP սարքը և կարգավորվել է ինտերֆեյսը, ինչը ճիշտ պահն է հատկացված հասցեն կապող լսողի համար։ route-up-ը գործարկվում է երթուղիների տեղադրումից հետո՝ ենթակա լինելով ցանկացած կարգավորված երթուղու ուշացման, և հարմար է աշխատանքի համար, որին անհրաժեշտ է երթուղային փուլի ավարտը։ Նրանցից ոչ մեկը չի ապացուցում, որ հեռավոր հավելվածը պատասխանում է։ Նրանց միջև ընտրությունը հարց է այն մասին, թե ինչ է պետք ծառայությանը, ոչ թե այն մասին, թե որ կեռն ավելի ավարտուն է հնչում։

persist-tun-ի դեպքում վերագործարկումները նորից օգտագործում են սարքը, ուստի up-ը նորից չի գործարկվում, եթե up-restart-ը սահմանված չէ։ Այդ ընտրանքը միացնում է up սկրիպտը փաստաթղթավորված վերագործարկման կյանքի ցիկլի համար, և դրա միջավայրը կրճատված է առաջին մեկնարկի համեմատ։ Սկրիպտը, որը ենթադրում է ամբողջական միջավայր, աշխատում է առաջին կապում և ձախողվում հաջորդում։

Ուղարկեք գործողությունը՝ չսպասելով դրան

Կեռը, որը սինխրոն կանչում է systemctl restart-ը, կարող է փակուղի մտնել միավորի հետ, որի հերթականությունը սպասում է թունելին։ systemctl --no-block try-restart vpn-dependent.service-ը աշխատանքը դնում է հերթի մեջ և վերադառնում, ինչը թույլ չի տալիս կեռին արգելափակել այն կապը, որին այն արձագանքում էր։ try-restart-ը գործում է միայն աշխատող միավորի վրա, մինչդեռ restart-ը սկսում է նաև անգործ միավոր։ Ընտրեք դիտավորյալ, ոչ սովորությամբ։

Հերթում դնելը ստուգում չէ։ Կեռը հաջողություն է վերադարձնում հենց որ աշխատանքն ընդունվում է, ուստի ստուգումը պետք է տեղի ունենա թիրախ միավորի մատյանում կամ դրա լսողի փաստացի վիճակում։

Վերագործարկման քաղաքականությունը ապրում է միավորում, ոչ թե կեռում

oneshot միավորը RemainAfterExit=yes-ով ակտիվ է մնում իր հրամանի ավարտից հետո, և երկրորդ մեկնարկի հարցումը ոչինչ չի անում, քանի որ systemd-ը այն համարում է արդեն մեկնարկված։ Սա հատկություն է, որի շուրջ պետք է նախագծել, ոչ թե թերություն, որը շրջանցվում է կրկնվող մեկնարկի կանչերով։ Եթե գործողությունը պետք է աշխատի յուրաքանչյուր կապի համար, միավորին անհրաժեշտ է ձև, որը դա թույլ է տալիս։

After=-ը դասավորում է միավորները, և BindsTo=-ը կապում է կյանքի տևողությունները, բայց նրանցից ոչ մեկը չի նշանակում 'վերագործարկիր սա ամեն անգամ, երբ VPN-ը նորից միանում է'։ Թունելին կապված միավորը կանգ է առնում, երբ թունելը կանգ է առնում։ Այն ինքն իրեն չի վերագործարկում, երբ թունելը վերադառնում է, եթե ինչ-որ բան նորից չմեկնարկի այն։

Փորձարկեք երեք վերակապակցում, ոչ թե մեկը

Սառը մեկնարկը, հաճախորդի ամբողջական վերագործարկումը և մեղմ վերակապակցումը յուրաքանչյուրը փորձարկում է տարբեր ուղի։ Մեղմ վերակապակցումն այն է, որը բացահայտում է բացակայող up-restart-ը, կրճատված միջավայրը կամ սարքի միավորը, որը երբեք անգործ չի դարձել։ Գործարկեք բոլոր երեքը և հաստատեք երկու ուղղությունները. ծառայությունը գործում է, երբ թունելը բարձրանում է, և այն չի վերագործարկվում կապի անկապ փոփոխությունների ժամանակ, ինչպիսին Wi-Fi ռոումինգն է։

Պահեք անկախ վերականգնման ուղի, երբ կախյալ ծառայությունը կրում է ձեր սեփական վարչական հասանելիությունը։ Կեռը, որը վերագործարկում է այն, ինչի միջոցով դուք միացած եք, փոփոխություն է, որը կարող է ձեզ դուրս փակել։

Առնչվող հոդվածներ