OpenVPN 3 Linux։ կարդացեք D-Bus սխալը նախքան հետ գլորելը
Հինգ ծառայություն, մեկ ճակատային մաս։ Կապեք D-Bus սխալը մերժած բաղադրիչին, ստուգեք՝ արդյոք սեսիա կա, ապա ուղղեք այդ սահմանին։
OpenVPN 3 Linux-ի ձախողումները գալիս են որպես D-Bus մեթոդի սխալ՝ անծանոթ անունով, և գայթակղությունը փաթեթը հետ գլորելն ու հույս ունենալն է։ Հաճախորդը մեկ ծրագիր չէ։ Հրամանի տողի ճակատային մասը խոսում է ավտոբուսով ծառայությունների հետ, որոնք տիրապետում են պրոֆիլներին, սեսիաներին, VPN շարժիչին և արտոնյալ ցանցային փոփոխություններին։ Որոշելը, թե այդ հինգից ով է տիրապետում ձախողված կանչին, ախտորոշման մեծ մասն է, և արժե մեկ հրաման՝ հետ գլորելու փոխարեն։ Հետևյալը հենց այդ որոշումն է՝ այն հերթականությամբ, որով սովորաբար հայտնվում են ձախողումները։
Հինգ տեր մեկ հրամանի հետևում
Հինգ գործընթաց կարևոր է, և յուրաքանչյուրն ունի իր ավտոբուսի անունը՝ ճակատային մասը, որ ընդունում է ձեր հրամանը, կոնֆիգուրացիայի կառավարիչը, որ պահում է պրոֆիլները և դրանց հասանելիության քաղաքականությունը, սեսիաների կառավարիչը, որ տիրապետում է սեսիայի կյանքի տևողությանը, հետին մասը, որ վարում է կապը OpenVPN 3 Core Engine-ով, և ցանցի կարգավորման ծառայությունը, որ տեղադրում է ինտերֆեյսը, երթուղիները և DNS կարգավորումները։ Կոնֆիգուրացիայի օբյեկտ անվանող սխալը հետևաբար հետին մասի սխալ չէ, և չմեկնարկող հետին մասը նույնականացման ձախողում չէ։ Հաղորդագրությունն այդ տողերից մեկին դասելը պետք է կատարվի նախքան որևէ բան փոփոխելը, որովհետև յուրաքանչյուր հաջորդ քայլ կախված է նրանից, թե որ տողն է ճշմարիտ։ Տողը գուշակելը այն ուղին է, որով կարճ ուղղումը դառնում է փաթեթների հետ անցկացվող կես օր։
Հարցրեք համակարգային ավտոբուսին, թե որ ծառայություններն են առկա, նախքան ուրիշ բան հարցնելը, ապա հաստատեք, որ տեղադրված մասերը համաձայն են տարբերակի շուրջ։ OpenVPN 3 Linux-ը գրանցում է այդ ծառայությունները որպես համակարգային միավորներ, ուստի հարցվող ավտոբուսը համակարգայինն է, տարբերակի հարցումը պահանջում է վարչական լիազորություն, և --user-ով կազմված ցանկը կարդում է ձեր մուտքի սեսիան, որտեղ միավորները երբեք չեն հայտնվում։ Ծառայությունները ակտիվանում են ըստ պահանջի, և ոմանք դադարում են, երբ պարապ են, ուստի ձեր առաջին հարցումից առաջ բացակայող ծառայությունը պարզապես դեռ ոչինչ չի հարցվել։ Ստորև նշված երեք հրամանները պատասխանում են առկայության, տարբերակի և միավորի վիճակի մասին՝ առանց VPN սեսիա բացելու։
sudo busctl list | grep -i openvpn
sudo openvpn3-admin version --services
systemctl list-units 'openvpn3*'Ինչ է իրականում ապացուցում յուրաքանչյուր ցանկը
Հաճախորդի սեփական տեսակետները ամենաէժան հասանելի ապացույցն են, և դրանցից յուրաքանչյուրը ապացուցում է ավելի քիչ, քան թվում է։ Կոնֆիգուրացիայի ցանկում պրոֆիլը ցույց է տալիս, որ պրոֆիլը ներմուծված է, և ոչինչ այն մասին, թե արդյոք որևէ մեկին թույլատրվում է դրանով միանալ։ Սեսիաների ցանկում սեսիան ցույց է տալիս, որ սեսիայի օբյեկտ գոյություն ունի, և ոչինչ այն մասին, թե արդյոք հեռավոր նույնականացումն ավարտվել է։
openvpn3 configs-list
openvpn3 sessions-listԱյդ ելքերում օբյեկտների ուղիները նշում են ավտոբուսի կառավարվող օբյեկտները, ոչ թե ֆայլերը, ուստի դրանք հնարավոր չէ խմբագրել, և ավելի վաղ գրանցված ուղին հնանում է այն պահին, երբ այդ սեսիան անջատվում է։ Ձեր նշումներից մեկի վերօգտագործումը ստեղծում է "no such object" սխալներ, որոնք ոչ մի կապ չունեն VPN-ի հետ։ Ստորև նշված փուլերի աղյուսակը տարանջատում է, թե ինչ է հաստատում կապի յուրաքանչյուր քայլը նրանից, թե ինչ է թողնում բաց, և հետ գլորելու որոշումը հենց այդ տարբերության վրա է հիմնված։ Կարդացեք ձեր ապացույցին համապատասխան տողը, ապա նորից կարդացեք սխալի տեքստը։
| Stage | What exists | What proves it | What it does not prove |
|---|---|---|---|
| Profile imported | A configuration object held by the configuration manager | The profile is listed by the client | That the profile owner permits a connection |
| Session requested | A session object held by the session manager | The session appears in the session list | That the remote side accepted the credentials |
| Connect dispatched | An asynchronous attempt on the VPN backend | Status changes arrive for that session | That an interface was configured |
| Tunnel configured | An interface, routes and DNS settings | The network service reports success and routes appear | That traffic reaches the peer |
Միացման կանչը վերադառնում է նախքան թունելի գոյությունը
Միացման կանչը ձեզ տալիս է դիտարկելու սեսիա և վերադառնում է, այդ պատճառով արտաքուստ հաջող կանչը, որին հաջորդում է լռություն, սովորական միջանկյալ վիճակ է, ոչ թե հակասություն։ Ճակատային մասը դեռ պետք է հետևի վիճակի փոփոխություններին և պատասխանի փոխազդեցության ցանկացած հարցման։ Պրոֆիլը, որին անհրաժեշտ է վկայական և որը պատասխան չի ստանում, սպասում է վիճակում, որը ճիշտ տեսք ունի կախված հետին մասի նման։ Այդ սպասման վիճակը արժանի է ճանաչման, որովհետև մարդկանց ուղարկում է սխալ բաղադրիչի մոտ։
Քանի դեռ փորձը ընթանում է, հետևեք սեսիաների ցանկին և ճակատային մասի սեփական մատյանին այդ պրոֆիլի համար։ Սեսիան, որը երբեք չի լքում իր սկզբնական վիճակը, անվանում է այն բաղադրիչը, որ կանգնել է, և մատյանը սովորաբար անվանում է այն արդեն առաջին տողերում։ Ձեռքի տակ պահեք պրոֆիլի անունը, քանի որ մատյանի հրամանը վերցնում է պրոֆիլ, ոչ թե սեսիայի ուղի, ինչը ևս մեկ պատճառ է ցանկը նորից կարդալու՝ ուղին վերօգտագործելու փոխարեն։
openvpn3 sessions-list
openvpn3 log --config <profile> --level 6Մեկ բաղադրիչի մատյանի ընթերցումը՝ առանց սեսիա բացելու
Երբ ճակատային մասը ոչ մի օգտակար բան չի հաղորդում, գնացեք այն բաղադրիչի մոտ, որը գրանցել է ձախողումը՝ նոր կապ սկսելու փոխարեն։ Կարգավորված systemd-journald գրանցիչի դեպքում ադմինիստրատորի սահմանափակ մատյանի դիտումը կարդում է մեկ բաղադրիչի իրադարձությունները՝ չդիպչելով ավտոբուսի քաղաքականությանը և չբացելով սեսիա, ինչը կարևոր է, որովհետև այն ախտորոշումը, որը փոխում է չափվող համակարգը, շատ քիչ բան է ապացուցում։ Զտեք ըստ միավորի, ոչ թե syslog պիտակի՝ առանձին ծառայության միավորները չեն երաշխավորում ընդհանուր նույնացուցիչ, ուստի պիտակով հարցումը կարող է դատարկ էջ վերադարձնել, մինչդեռ միավորն ինքն է գրանցել ձախողումը։
Գրանցեք չորս դաշտ նախքան որևէ մեկից օգնություն խնդրելը՝ սխալի ամբողջական անունը, ներգրավված ծառայությունն ու օբյեկտը, ժամանակի դրոշմը և տեղադրված փաթեթների տարբերակները։ Դա այն է, ինչ անհրաժեշտ է սպասարկողին, և դրանցից ոչ մեկը չի պահանջում պրոֆիլ կամ վկայական տեղադրել տոմսի մեջ։ Ավտոբուսի հասանելիության քաղաքականության ընդլայնումը՝ սխալը լռեցնելու համար, ախտորոշում չէ, այն ջնջում է այն սահմանը, որը ձեզ համար անվանում էր բաղադրիչը։ Պրոֆիլների մասնավոր բովանդակությունը մնում է ընդհանուր հաշվետվություններից դուրս նույն պատճառով, ինչ վկայականները։
journalctl -u 'openvpn3-service-*' -n 50 --no-pager
openvpn3-admin journal --service <name>Մերժած սահմանի ուղղումը
Քարտեզի յուրաքանչյուր տող ունի իր ուղղումը, և տողերը միմյանց չեն փոխարինում։ Պրոֆիլի վրա մերժված գործողությունը քաղաքականության և սեփականության հարց է, մինչդեռ չակտիվացող հետին մասը ծառայությունների և փաթեթավորման հարց է։ Նույնականացումը մերժող սերվերը ոչ մեկն է, ոչ մյուսը, ուստի կրկնվող գաղտնաբառի փոփոխությունները չեն կարող ուղղել տեղական ակտիվացման խնդիրը։ Սխալ ուղղում ընտրելը այն ուղին է, որով քաղաքականության խնդիրը դառնում է վերատեղադրում։
Փաթեթների փոփոխությունից հետո ստուգեք համահունչ և աջակցվող տեղադրում՝ հին երկուական ֆայլը տեղում պատճենելու փոխարեն։ Վերահսկվող հետ գլորումը հաստատված ռեգրեսիայի օրինական պատասխան է, պայմանով, որ փաթեթները մնան համատեղելի և գոյություն ունենա ճանապարհ դեպի աջակցվող սպասարկում։ Սահմանեք այդ ճանապարհը նախքան ծառայության չմեկնարկելը, ոչ թե հետո։
Այլ հարթակ կարող է կիսել նույն հիմնական VPN գրադարանը՝ չկիսելով Linux-ի ավտոբուսային ծառայությունները, ուստի Windows-ում նմանատիպ ձախողումը ոչինչ չի ասում այս մասին։ D-Bus-ի ակնարկը փաստագրում է կոնֆիգուրացիաների և սեսիաների համար բացված օբյեկտների ուղիները, և հենց ճարտարապետության այդ մասի վրա է հիմնված այս ախտորոշումը։ Կարդացեք այն մեկ անգամ, և հաջորդ սխալը կգա արդեն իրեն կցված բաղադրիչով։