Գործարկեք VPN-ից հետո աշխատանքները դիսպետչերից, ոչ if-up-ից
Հին ինտերֆեյսի կեռիկը չի տեսնի VPN միացում։ Համապատասխանեցրեք vpn-up-ը պրոֆիլի UUID-ին, պահեք առաջադրանքը կրկնելի և պլանավորեք անջատում, որը երբեք չի գործարկվի։
VPN-ի բարձրանալուց հետո պետք է աշխատող սկրիպտին իրադարձություն է անհրաժեշտ այն բաղադրիչից, որը տիրապետում է միացմանը։ Հին ցանցային կեռիկների պանակում դրված ֆայլը հետադարձ կանչ չէ յուրաքանչյուր VPN-ի համար, որը կարող է ստեղծել NetworkManager-ը, pppd-ն կամ առանձին OpenVPN գործընթացը։ Այս տերերից յուրաքանչյուրը հաղորդում է տարբեր իրադարձություն տարբեր միջավայրով, ուստի տիրոջը պետք է նույնականացնել մինչև կեռիկի ընտրությունը։ Հակառակ դեպքում սկրիպտը ճիշտ է և պարզապես երբեք չի աշխատում։
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-ն, գործողությունը և այն ինտերֆեյսը, որը գործարկվեց, առանց գաղտնիքներ գրանցելու։ Այդ արձանագրությունը միակ վստահելի ապացույցն է, որ կեռիկը աշխատել է ձեր նախատեսած միացման համար, և հենց այն է, որ հաջորդ փոփոխությունը դարձնում է անվտանգ։