Ինչո՞ւ է OpenVPN-ը մեկնարկում մուտք գործելիս, այլ ոչ Windows-ի բեռնման ժամանակ։
Մեկնարկային դյուրանցումը գործարկում է աշխատասեղանի հավելված, ոչ թե ավտոմատ ծառայությունը։ Ստուգեք, թե ծառայությունը որ պրոֆիլի աղբյուրն է կարդում, նախքան ֆայլերը տեղափոխելը։
Թունելները, որոնք հայտնվում են միայն այն բանից հետո, երբ ինչ-որ մեկը մուտք է գործում, սովորաբար գործարկվում են այդ մարդու սեսիայի կողմից, ոչ թե ավտոմատ ծառայության։ Սովորական մեղավորը մեկնարկային դյուրանցումն է, որը գործարկում է openvpn-gui.exe-ը, և դա կոտրված տեղադրում չէ։ Դյուրանցումը գործարկում է աշխատասեղանի հավելված օգտվողի սեսիայի ներսում՝ այդ օգտվողի պրոֆիլով, նրա վկայագրերի պահոցներով և հուշմանը պատասխանելու նրա ունակությամբ։ Այդ ամենից ոչինչ կապը կախյալ չի դարձնում մուտք գործած մարդուց, և դա հենց այն է, ինչ պահանջում է մուտքից առաջ աշխատող թունելը։
Ախտանիշը սովորաբար ունի երեք պատճառ
Երեք օրինաչափություններ դրսից նման են իրար և տարբեր լուծումներ ունեն։ Առաջինը կատարման տերն է, որը ծառայության փոխարեն օգտվողի սեսիա է, այսինքն՝ մեկնարկային դյուրանցումի դեպքը։ Երկրորդը պրոֆիլ է, որը գտնվում է այնտեղ, որտեղ ծառայությունը չի նայում, ուստի ծառայությունը մեկնարկում է, ոչինչ չի գտնում և մաքուր դուրս գալիս։ Երրորդը պրոֆիլ է, որը ծառայությունը գտնում և գործարկում է, բայց որի հավատարմագրերը պահանջում են փոխազդեցություն, որը ոչ մի ծառայություն չի կարող ապահովել։
Որ դեպքն է կիրառելի, պարզելու համար երկու ընթերցում է պետք՝ ինչ գործարկելու համար է կարգավորված ծառայությունը, և ինչ ֆայլեր կարող է տեսնել։ Երկուսն էլ մեկական հրաման են, և ոչ մեկը չի խանգարում աշխատող կապին։
Ինչ է իրականում կարդում ավտոմատ ծառայությունը
Community-ի ավտոմատ ծառայությունը փաթաթան է, որը սկանավորում է իր կարգավորված ավտոմատ մեկնարկի պանակը, սովորաբար տեղադրման տակ գտնվող config-auto-ը, և գործարկում է OpenVPN պրոցես յուրաքանչյուր համապատասխան պրոֆիլի համար, որը գտնում է։ Օգտվողի GUI ընտրացանկում տեսանելի պրոֆիլը փոխարենը գտնվում է այդ օգտվողի թափառող պրոֆիլի տակ՝ պանակում, որը ծառայության հաշիվը չի կարդում։ Windows ծառայության ուղեցույցը նկարագրում է այդ հայտնաբերումը, և արժե կարդալ այն նախքան որևէ բան պատճենելը, որովհետև նպատակային պանակը տեղադրման հատկություն է, ոչ թե հաստատուն պայմանավորվածություն։ Այսպիսով՝ ֆայլը GUI-ի պանակ պատճենելը ծառայության համար ոչինչ չի փոխում, իսկ config անունով յուրաքանչյուր պանակ պատճենելը լուծման փոխարեն կրկնօրինակներ է ստեղծում։
Get-Service OpenVPNService | Select-Object Status, StartType
Get-CimInstance Win32_Service | Where-Object Name -eq 'OpenVPNService' | Select-Object PathName, StartName
gci 'C:\Program Files\OpenVPN\config-auto'
Վերջին հրամանը թվարկում է, թե ինչ է իրականում տեսնելու փաթաթանը, և դա ամենաարագ միջոցն է հաստատելու, որ պրոֆիլը սխալ տեղում է։ Երկրորդ տողը նաև ցույց է տալիս այն հաշիվը, որի տակ աշխատում է ծառայությունը, և այդ հաշիվն է որոշում, թե որ ֆայլային ուղիներն ու վկայագրերի պահոցներն են ընդհանրապես հասանելի։
Ինչու է աշխատում աշխատասեղանի մուտքը, իսկ բեռնման մեկնարկը՝ ոչ
Աշխատասեղանի հաջողությունը կարող է երկար թաքցնել մուտքային տվյալներից կախվածությունը։ GUI-ն կարող է հավաքել բանալու գաղտնաբառ, հաշվի գաղտնաբառ կամ երկրորդ գործոն երկխոսության մեջ, որովհետև աշխատում է տեսանելի աշխատասեղանով ինտերակտիվ սեսիայում։ Ծառայությունն աշխատում է առանց աշխատասեղանի սեսիայում, ուստի մուտքային տվյալների հարցումը տեղ չունի հայտնվելու, և կապը ձախողվում է այնպիսի ժամկետից հետո, որը բոլորովին նման չէ հավատարմագրերի խնդրին։
Ֆայլերի հասանելիությունը հետևում է նույն կանոնին։ Օգտվողի պրոֆիլի տակ պահված մասնավոր բանալին կամ օգտվողի անձնական պահոցում գտնվող վկայագիրը հասանելի չէ որպես մեքենա աշխատող ծառայությանը։ Համեմատեք բացարձակ ուղիները, թույլտվությունները և յուրաքանչյուր կողմի ընտրած վկայագիրը՝ փոխարենն այն ենթադրելու, որ նույն պրոֆիլի ֆայլը նշանակում է նույն միջավայրը։
Ժամանակացույցով առաջադրանքը, որը դրված է աշխատելու անկախ այն բանից՝ օգտվողը մուտք է գործել, թե ոչ, ժառանգում է նման սահմանափակում։ Այն կարող է հաջողությամբ գործարկել GUI-ի գործարկվող ֆայլը և այնուամենայնիվ ստեղծել պրոցես, որը երբեք հավատարմագրեր չի ստանում, ուստի առաջադրանքների կառավարիչում պրոցեսի առկայությունը աշխատող թունելի ապացույց չէ։
Ընտրեք մեկ տեր և փորձարկեք իրական կենսացիկլը
Մուտք գործած անձին պատկանող կապի համար օգտագործեք GUI-ի աջակցվող ավտոմատ մեկնարկի վարքը և ծառայությունը թողեք դուրս։ Թունելի համար, որը պետք է գոյություն ունենա նախքան որևէ մեկի մուտք գործելը, կարգավորեք ծառայությունը, տեղադրեք պրոֆիլը այնտեղ, որտեղ փաթաթան կարդում է այն, և օգտագործեք աջակցվող առանց հսկողության հավատարմագրերի մեխանիզմ, ինչպիսին է ինտերակտիվ գաղտնաբառ չունեցող բանալին կամ փաստաթղթավորված հավատարմագրերի ֆայլը։
Get-Content 'C:\Program Files\OpenVPN\log\openvpn.log' -Tail 40
Get-WinEvent -LogName Application -MaxEvents 20 | Where-Object ProviderName -like '*OpenVPN*'
Փորձարկեք այն կենսացիկլը, որն իսկապես կարևոր է՝ վերագործարկում առանց որևէ մեկի մուտքի, ապա վերակապակցում ցանցի փոփոխությունից հետո։ Պահեք մեկ տեր կապի համար, որովհետև երկու մրցակից մեկնարկային մեխանիզմներ սովորաբար ստեղծում են երկու օրինակ, որոնք կռվում են նույն երթուղիների և նույն սերվերի սեսիայի համար, և դա ավելի դժվար է ախտորոշել, քան մեխանիզմներից յուրաքանչյուրը առանձին։