OpenVPN-ը TLS սխալից հետո շարունակ փորձում է. ինչպես դադարեցնել այն
TLS ձախողումը լռելյայն կրկնվում է, ուստի հաճախորդը պտտվում է, և առաջին սխալը դուրս է գալիս տեսադաշտից։ tls-exit-ը ստիպում է նրան դուրս գալ. ստուգեք, թե ինչն է այն վերագործարկում։
Հաճախորդը միանում է, ձախողվում TLS բանակցության ընթացքում, սպասում և նորից փորձում նույն սերվերը նույն արդյունքով։ Վերահսկիչի ներքո, որը վերագործարկում է ձախողված գործընթացը, այդ փորձերը դառնում են անվերջ օղակ մատյանում, և առաջին ախտորոշիչ տողը դուրս է գալիս հասանելիությունից։ OpenVPN-ը տրամադրում է տարբերակ, որը այդ բանակցության ձախողումը դարձնում է տեսանելի ելք՝ հերթական փորձի փոխարեն։ Դա ախտորոշման և վերահսկման կարգավորում է, ոչ թե վերանորոգում, ուստի զուգակցեք այն քաղաքականության հետ, որն իսկապես թույլ է տալիս գործընթացին մնալ կանգնած։
Շրջանակը, որը թաքցնում է առաջին սխալը
Այն, ինչ տեսնում եք, կրկնվող բլոկ է, ոչ թե մեկ ձախողում՝ միացման փորձ, TLS սխալ, դադար, ապա նույն հաջորդականությունը։ Յուրաքանչյուր կրկնություն բնագրային տողը ավելի վեր է մղում մատյանում։ Եթե միավորը վերագործարկվում է ձախողման դեպքում, շրջանակը կարող է շարունակվել ժամերով, առանց որևէ մեկի պատճառը կարդալու։ Ախտանիշը օղակն է, թեև հիմնական արատը բանակցության մեկ խնդիր է։
Ինտերակտիվ նստաշրջանները հանդուրժում են դա, քանի որ անցողիկ ձախողումը կարող է անհետանալ հաջորդ փորձի ժամանակ։ Ավտոմատացված միացումները չեն կարող իրենց թույլ տալ նույն լավատեսությունը. գործընթացը պետք է կանգնի, որպեսզի մարդը կամ մոնիտորը տեսնի կարգավիճակը։
Նախքան որևէ բան փոխելը, գրանցեք մեկ ամբողջական շրջանակ։ Նշեք հեռավոր հասցեն, սխալի մեջ նշված TLS փուլը և արդյոք գործընթացն ընդհանրապես դուրս է գալիս։
Օղակի հետևի կրկնափորձի մեխանիզմը
Կրկնափորձը լռելյայն է, քանի որ մի քանի անկապ ժամկետներ կիսում են նույն մեխանիզմը։ connect-retry-ը սահմանում է միացման փորձերի միջև ընդմիջումը, connect-retry-max-ը կարող է սահմանափակել, թե յուրաքանչյուր հեռավոր գրառում քանի անգամ է փորձվում, իսկ resolv-retry-ը կառավարում է անունների կրկնվող որոնումները։ TLS բանակցության ձախողումը հասնում է այդ մեխանիզմին որպես տրանսպորտային իրադարձություն, ուստի հաճախորդը հաշվետվություն տալու փոխարեն պլանավորում է ևս մեկ փորձ։ Լռելյայն օգտակար է անկայուն կապի համար և վնասակար՝ արատի համար, որը չի կարող բուժվել։
--tls-exit տարբերակը փոխում է միայն բանակցության դեպքը։ Ձեռնարկը նկարագրում է այն որպես TLS բանակցության ձախողման դեպքում դուրս գալ, ինչը ավելի նեղ է, քան ամեն սխալի դեպքում դուրս գալը։ Ժամկետները, լուծիչի ձախողումները և նույնականացման մերժումները պահպանում են իրենց վարքը։
Ստիպել հաճախորդին դուրս գալ TLS ձախողման դեպքում
Տեղադրեք tls-exit-ը այն պրոֆիլում, որը հաճախորդն իսկապես բեռնում է, կամ տրամադրեք --tls-exit-ը գործարկելիս, և մեկ անգամ աշխատեցրեք այն առաջին պլանում։ Կարդացեք ելքի կարգավիճակը և վերջին մատյանի տողը, որովհետև հենց կարգավիճակն է, որի վրա գործում է վերահսկիչը։ Բանակցության ձախողումից հետո ոչ զրոյական ելքը նպատակային արդյունքն է։ Եթե գործընթացը ավարտվելու փոխարեն շարունակում է փորձել, ապա տարբերակը այն պրոֆիլում չէ, որը հաճախորդն իսկապես բեռնում է։
Վերահսկիչը որոշում է՝ արդյոք այդ ելքը տեսանելի է։ systemd միավորը Restart=always կամ Restart=on-failure-ով նորից գործարկում է հաճախորդին, ուստի օղակը շարունակվում է, և տարբերակը կարծես ոչինչ չի անում։ Ստուգեք քաղաքականությունը նախքան հաճախորդին մեղադրելը:
systemctl show -p Restart -p RestartSec openvpn-client@office
journalctl -u openvpn-client@office -n 40 --no-pager
Restart=no-ը թույլ է տալիս գործընթացին մնալ կանգնած, և Restart=on-failure-ը դեռ վերագործարկում է ոչ զրոյական կարգավիճակից հետո։ Եթե ուզում եք, որ ձախողումը տեսանելի լինի, բայց ծառայությունը վերականգնվի անկապ խափանումներից, սահմանեք Restart=on-failure-ը և օգտագործեք StartLimitBurst-ն ու StartLimitIntervalSec-ը՝ վերագործարկումների փոթորիկը կանգնեցնելու համար։ Ապա կարդացեք միավորի կարգավիճակը՝ վերջին ելքի կոդը հաստատելու համար. systemctl status-ը հաղորդում է այն, և մատյանը պահում է առաջին սխալը վերագործարկումներից վերև։
Գրեք որոշումը միավորում կամ պրոֆիլի նշումներում։ TLS ձախողման դեպքում դուրս եկող պրոֆիլը հաջորդ մարդուն պատահար է թվում, եթե պատճառը գրանցված չէ։ Նշեք, թե որ ձախողումները պետք է կանգնեցնեն գործընթացը, և որոնք՝ կրկնվեն։
Ապացուցել այն մեկանգամյա վերջնակետով
Վարքը նախքան դրան վստահելը տեսնելու համար պատճենեք պրոֆիլը և պատճենն ուղղեք մի վերջնակետի, որն ընդունում է TCP միացում, բայց երբեք չի խոսում OpenVPN։ Բավական է լսող, որը պատասխանում է, ապա լռում։ tls-exit-ով հաճախորդը պետք է ավարտվի, երբ ձեռնասեղմումը ձախողվում է. առանց դրա նույն պրոֆիլը պետք է շարունակի պտտվել։ Օգտագործեք պատճենը, երբեք՝ աշխատող պրոֆիլը։
Համեմատեք երկու գործարկումները ելքի կարգավիճակով և առաջին սխալի տողով, ոչ թե նրանով, թե որքան տևեց յուրաքանչյուրը։ Կարգավիճակը ասում է՝ տարբերակը գործարկվե՞ց, իսկ առաջին տողը՝ թե որ փուլը ձախողվեց։
Հեռացրեք փորձնական պրոֆիլը, երբ ավարտեք։ Դիտավորյալ սխալ վերջնակետով պատճենը թակարդ է բոլորի համար, ով ավելի ուշ գործարկում է գրացուցակի յուրաքանչյուր պրոֆիլը։
Փուլեր, որոնց այս տարբերակը երբեք չի հասնում
Նույնականացման մերժումը ավելի ուշ փուլ է։ Եթե սերվերը գնահատում է հաշիվը և մերժում այն, TLS-ն արդեն բանակցված է, ուստի tls-exit-ը չի գործարկվում։ Նույնականացման կրկնափորձի կարգավորումները հաջորդ դիտարկելու տեղն են, և սերվերի պատճառն ավելի կարևոր է, քան հաճախորդի վերջին տողը։ Սխալ գաղտնաբառը և բացակայող վկայականը կարող են հաճախորդի կողմում համանման հաղորդագրություններ առաջացնել։
Բացակայող երթուղին, սխալ լուծիչը կամ անհասանելի դարպասը նույնպես տարբերակից դուրս են, որովհետև դրանք բանակցության ձախողումներ չեն։ Լուռ փաթեթների կորուստը ամենաքիչ ակնհայտ դեպքն է. կախված նրանից, թե որքան առաջ է գնացել փոխանակումը, հաճախորդը կարող է հաղորդել բանակցության ձախողում կամ պարզապես ժամկետանց դառնալ։
Պահեք տարբերակումը ձեր նշումներում։ Կարգավորումը ախտորոշման և վերահսկման համար է, ոչ վերանորոգման, ուստի այն չի շտկում գաղտնագրման անհամապատասխանությունը, վկայականի խնդիրը կամ սխալ պորտը։ Նախ վերանորոգեք ձախողված բանակցության պատճառը, ապա որոշեք՝ արդյոք անհապաղ ելքը դեռ հարմար է տեղաբաշխմանը։