Բեռնման պահին չմեկնարկող OpenVPN սերվերի համար առաջարկվում է երկու լուծում. սպասել հասցեին կամ թույլ տալ ծառայությանը կրկին փորձել, քանի դեռ կապումը չի հաջողվել։ Երկուսն էլ լուծում են նույն ախտանշանը՝ տարբեր ձախողման վարքով։ Սպասումը կոդավորում է կոնկրետ նախապայման և բարձրաձայն ձախողվում, երբ այն բացակայում է. կրկին փորձելը թաքցնում է նախապայմանը և շարունակում փորձել։ Թե որն է համապատասխանում ձեր միավորին, կախված է նրանից՝ այդ հասցեն նախագծված կախվածություն է, թե ժամանակի պատահականություն։

Երկուսն էլ լավ են ֆիքսված քնից, որ ոչ մեկի չի սպասում և չի էլ հայտնում, թե ինչի էր սպասում։

Ինչ է իրականում պահանջում local ընտրանքը

local-ը նշում է այն հասցեն, որին դեմոնը կապում է իր socket-ը, և դեռ գոյություն չունեցող հասցեին կապվելը անմիջապես ձախողվում է պահանջված հասցեի մասին սխալով։ Երբ ընտրանքը բացակայում է, դեմոնը լսում է բոլոր հասցեներում, դրա համար նույն պրոֆիլը աշխատում է մեքենայում, որի ինտերֆեյսը դեռ վեր չի եկել. այն լսում է ամենուր՝ ձեր նշած մեկ հասցեի փոխարեն։ Այդ տարբերությունն ամբողջ ձախողումն է, և այն անտեսանելի է մնում մինչև վերագործարկումը։

Պահանջը չէ, որ ինտերֆեյսը վեր լինի ինչ-որ ընդհանուր իմաստով։ Հասցեն պետք է վերագրված լինի ճիշտ ինտերֆեյսին կապման պահին, և դա պետք է լինի հիմքային ինտերֆեյսը, այլ ոչ թե թունել, որը նույն դեմոնը կստեղծեր ավելի ուշ։ Մուտքից րոպեներ անց արված ստուգումը ոչինչ չի ապացուցում բեռնման հաջորդականության մասին։

Սպասել հասցեին, թե՞ կրկին փորձել կապումը

Սպասումը նշանակում է ExecStartPre, որը հարցումներ է անում, քանի դեռ հասցեն չի հայտնվել, սահմանափակ թվով փորձերով և ոչ զրոյական ելքով, երբ ժամանակը սպառվում է։ Կրկին փորձելը նշանակում է թույլ տալ հիմնական գործընթացին ձախողվել և խնդրել ծառայությունների կառավարչին նորից գործարկել այն, օրինակ՝ Restart=on-failure-ը RestartSec=5-ի հետ։ Առաջինը բացակայող նախապայմանը հայտնում է որպես ձախողված միավոր, իսկ երկրորդը՝ որպես վերագործարկումների շարք, որն ի վերջո դադարում է. դա ավելի աղմկոտ է մատյանում, բայց դիմանում է հասցեի, որը ուշանում է ձեր չկանխատեսված պատճառներով։

Նախընտրեք սպասումը, երբ հասցեն նախագծված կախվածություն է, և կրկին փորձելը, երբ հասցեն սովորաբար հայտնվում է, բայց դրա ժամանակը տատանվում է։ Դրանց համադրումը խելամիտ է. սահմանափակ սպասումը ծածկում է սովորական դեպքը, իսկ վերագործարկման քաղաքականությունը՝ բացառությունը։ Ոչ մեկը չպետք է աշխատի հավերժ, քանի որ անվերջ կրկին փորձող միավորը թաքցնում է սխալ կարգավորումը՝ փոխարենը հայտնելու։

Ինչու network-online.target-ը բավարար չէ

network-online.target-ը խոստանում է այն, ինչ ակտիվ ցանցային իրականացումը հասկանում է online-ից, և ոչ ավելին։ systemd-networkd-ի դեպքում systemd-networkd-wait-online-ը որոշում է, թե երբ է այդ նպատակը ձեռք բերվել, և դրա լռելյայն online պատկերացումը կարող է բավարարվել նախքան ձեր կոնկրետ հասցեի գոյությունը։ NetworkManager-ի ներքո wait-online ծառայությունը կիրառում է իր կանոնները։ Թիրախից հետո դասավորելը ողջամիտ հիմք է, ոչ թե երաշխիք, որ մեկ հասցե, DNS պատասխան կամ հեռավոր գործընկեր պատրաստ է։

Նույն տրամաբանությունը բացառում է սովորական այլընտրանքները։ Սեղանադրի ինքնագործարկման գրառումը սպասում է օգտվողի սեսիայի, որը սերվերի վրա կարող է երբեք չբացվել, իսկ հետաձգված cron հրամանը ավելացնում է անցած ժամանակ՝ չնշելով այն ռեսուրսը, որի հայտնվելուն այն հույս ուներ։ Երկուսն էլ կարող են ամիսներով հաջող երևալ և հետո ձախողվել այն մեկ բեռնման ժամանակ, որը կարևոր է։

Ստուգեք կապումը սառը բեռնումից հետո

Ստուգեք իրական սառը բեռնմամբ, ոչ թե ծառայության վերագործարկմամբ, քանի որ վերագործարկումը ժառանգում է հասցե, որը բեռնման հաջորդականությունը պետք է ստեղծեր։ Բեռնումից հետո ss -lntp-ը կամ ss -lunp-ը ցույց է տալիս, թե յուրաքանչյուր լսող իրականում որ տեղական հասցեին է կապվել, իսկ journalctl -b -u openvpn-server@server-ը ցույց է տալիս՝ առաջին փորձը ձախողվել է։ Համեմատեք կապված հասցեն պրոֆիլում եղածի հետ, ապա կրկնեք համեմատությունը ցանցի վերամիացումից հետո։

Եթե պրոֆիլին երբեք ֆիքսված հասցե պետք չէր, local-ի հեռացումը օրինական պարզեցում է, բայց դարձրեք այն անվտանգության որոշում, ոչ թե խնդրահարույց որոնման սովորություն։

Լսողի ընդլայնումը փոխում է, թե ով կարող է հասնել դրան, ուստի զուգակցեք այդ փոփոխությունը firewall-ի այն քաղաքականության հետ, որը պետք է սահմանափակեր այն։ Ծառայությունը, որը հուսալիորեն մեկնարկում է յուրաքանչյուր ինտերֆեյսում, չի լուծել սկզբնական խնդիրը. այն խնդիրը տեղափոխել է ցանցի եզր։

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