Հեռավոր դարպասը վերագործարկվում է, վերադառնում մեկ րոպեի ընթացքում, և տեղական strongSwan daemon-ը շարունակում է աշխատել, մինչ թունելը դեռ ցած է։ ESTABLISHED-ը grep անող և daemon-ը վերագործարկող cron աշխատանքը ի վերջո կծածկի դա, և այն նաև կընդհատի մեքենայի յուրաքանչյուր անկապ թունել, մինչ հնարավոր է բաց թողնի այն, որ ձախողվել է։ Վերականգնումը պատկանում է այն կապին, որը պետք է վերադառնա, արտահայտված կարգավորումներով, որոնք դիմանում են վերաբեռնմանը։ Այս runbook-ը դա սարքում է մեկ կապի համար և ապացուցում արդյունքը անունով։

Հրաժարվեք գլոբալ վերագործարկումից, պահեք դրա ապացույցները

Daemon-ի վերագործարկումն ունի երկու կոնկրետ թերություն՝ այն ոչնչացնում է յուրաքանչյուր կապի վիճակը և ոչինչ չի ասում, թե որ իրադարձությունն է իրականում ձախողվել։ Ձեր grep արած կարգավիճակի տեքստը կարող է եկած լինել այլ կապից, մինչ պահանջվող child-ը պարապ մնացել էր, որովհետև ոչինչ այն չէր գործարկել։

Կարդացեք բեռնված կապերը և ակտիվ ասոցիացիաները նախքան որևէ բան փոխելը, որպեսզի ունենաք «առաջ» պատկեր, որի հետ համեմատեք peer-ի վերադարձից հետո։

swanctl --list-conns
swanctl --list-sas

Մեկնարկը և կրկնափորձերը դրեք վերադարձող կապի վրա

swanctl.conf տեղակայման մեջ այս կարգավորումներն ապրում են կապի և child-ի մակարդակում, ոչ թե գլոբալ քաղաքականության մեջ։ Ստորև բերված հատվածը նախաձեռնողի կողմի օրինակ է, որը ենթադրում է, որ առաջարկները, նույնականացումը և ընտրիչներն արդեն ճիշտ են։

connections {
    branch {
        keyingtries = 0
        dpd_delay = 30s
        children {
            private-lan {
                start_action = trap|start
                dpd_action = restart
            }
        }
    }
}

start_action-ը որոշում է, թե ինչ է լինում child-ը բեռնելիս. start-ը սկսում է անմիջապես, մինչ trap-ը տեղադրում է քաղաքականություն, որը մեկնարկը գործարկում է համապատասխան երթևեկության հայտնվելիս։ trap|start գրելու համար պահանջվում է strongSwan 5.9.6 կամ ավելի նոր, այնպես որ տողը պատճենելուց առաջ ստուգեք տարբերակը։ dpd_action=restart-ը պահանջում է նոր բանակցություն, հենց peer-ը մեռած հռչակվի, և կապի մակարդակի keyingtries=0-ը թույլ է տալիս լրացուցիչ փորձեր մինչև հաջողություն կամ մշտական սխալ։ IKEv2-ի ներքո dpd_timeout-ը բացարձակապես ազդեցություն չունի, որովհետև սովորական վերահաղորդումն է որոշում, թե երբ peer-ը չի պատասխանում։

Այդ օրինակի ուշացումը մեկնարկային կետ է, ոչ թե համընդհանուր վերջնաժամկետ։ Ընտրեք այն՝ ելնելով peer-ի վերագործարկման տևողությունից և որքան վերահաղորդում եք պատրաստ դիմանալ։

Իմացեք, թե որ իրադարձությունից եք վերականգնում

Երեք ձախողումներ նույն տեսքն ունեն վահանակի վրա և տարբեր կարգավորումներ են պահանջում։ Երբեք չբարձրացած սկզբնական կապը կազմաձևման կամ հասանելիության խնդիր է։ Պատասխանելը դադարեցրած peer-ը DPD-ի դեպքն է։ Այն child-ը, որը peer-ը բացահայտ փակել է, քաղաքականության իրադարձություն է իր սեփական close_action-ով, որը DPD-ն երբեք չի նկատում։ Ընդհատման շուրջ մատյանը կարդալը ձեզ ասում է, թե երեքից որն ունեք, և պատասխանը փոխում է լուծումը։

Ագրեսիվ վերամեկնարկ մի ավելացրեք այն կապին, որը օպերատորները դիտավորյալ փակում են սպասարկման համար, այլապես թունելը նորից կհայտնվի պատուհանի մեջտեղում։ Պահանջով աշխատող ձևավորումների համար բավական է պահպանված trap-ը, որովհետև համապատասխան երթևեկությունը վերականգնում է child-ը առանց որևէ ժամաչափի։

Ստուգեք անունով, ոչ թե daemon-ի կարգավիճակով

Կարդացեք կապը և նրա child-ը անունով, մինչ peer-ը դեռ ցած է, ապա նորից, երբ այն վերադառնա. այդ երկու ելքերի տարբերությունն է ապացույցը։

swanctl --initiate --child private-lan
swanctl --terminate --ike branch

Ապա հաստատեք ծառայությունը, ոչ թե ասոցիացիան։ Թարմ child անվտանգության ասոցիացիան գումարած դրա հետևում գտնվող մասնավոր նպատակակետին ուղղված հաջող հարցումը այն երկու փաստն են, որ կարևոր են, և աշխատող daemon-ը առողջ անկապ թունելով չի ապացուցում դրանցից ոչ մեկը։

Եթե child-ը երբեք չի մեկնարկում, ստուգեք, որ թեստային երթևեկությունը ճշգրտորեն համապատասխանում է կազմաձևված ընտրիչներին, ներառյալ արձանագրությունը և պորտը։ Եթե այն մեկնարկում է և ձախողվում, կարդացեք նույնականացման կամ առաջարկի սխալը՝ անվերջ ցիկլի հետևում թաքցնելու փոխարեն, որովհետև keyingtries=0-ը հավերժ կկրկնի մշտական մերժումը։

Բեռնեք փոփոխությունը պատուհանում և նորից փորձարկեք

Վերաբեռնումն ավելի անվտանգ է, քան daemon-ի վերագործարկումը, և այն դեռ անվճար չէ. child-ի փոխարինումը կամ դուրսբերումը կարող է փակել մեկնարկված ասոցիացիան կամ գցել դրա trap-ը։

Բեռնեք սպասարկման պատուհանի ընթացքում, պահպանեք նախորդ ֆայլը և հաստատեք, որ կապը հայտնվում է ձեր նախատեսած կարգավորումներով, ոչ թե լռելյայններով։

swanctl --load-conns
swanctl --list-conns

Հետ գլորեք՝ վերականգնելով նախորդ ֆայլը և նորից բեռնելով այն, ապա կրկնեք նույն երկու հրահանգները։ Թունելը, որը վերադառնում է միայն daemon-ի վերագործարկումից հետո, չի վերանորոգվել, այլ վերակայվել է։

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