Հասցեի վերանշանակումը տևում է մեկ րոպե. հաջորդ շաբաթն այն տեղն է, որտեղ տեղափոխումը կոտրվում է, և հազվադեպ այնտեղ, որտեղ հուշում է մատակարարի կոնսոլը։ Նոր հանրային IP-ն հիշատակվում է չորս տեղում՝ այն socket-ը, որի վրա լսում է դեմոնը, այն վստահության խարսխը, որը ստուգում են հաճախորդները, հին հասցեն անվանող յուրաքանչյուր կանոն, և այն DNS գրառումը, որը կապում է դրանք։ Երկու տեղափոխում կառավարման վահանակից նույն են երևում, բայց բոլորովին տարբեր են վարվում՝ հասցեն վերանշանակել ձեր կառավարած մեքենայի վրա, կամ երկրորդ endpoint կանգնեցնել և հաճախորդներին տեղափոխել դրա վրա։ Ստորև ստուգումները էժան ձախողումները դնում են առաջինը, և յուրաքանչյուր բաժին նշում է, թե որ տեղափոխմանն է վերաբերում։

Տեղում փոխարինումը և զուգահեռ անցումը տարբեր աշխատանքներ են

Տեղում փոխարինումը պահում է հոսթը, բանալիները, երթուղային աղյուսակը և օգտվողների ցանկը. փոխվում է միայն հասցեն։ Դա է անում լողացող IP-ի վերանշանակումը, և մի քանի մատակարարների մոտ հյուրը դա չի նկատում, որովհետև թարգմանությունը կատարվում է ինստանսի առջև։ Վերակառուցումը կամ մատակարարի վերանշանակումը ավելի կոպիտ է. հյուրը տեսնում է փոփոխությունը, և ամեն ինչ, որ հին արժեքը քեշ էր արել, իմանում է դրա մասին նույն պահին։

Զուգահեռ endpoint-ը երկրորդ հոսթն է, որը կատարում է նույն աշխատանքը։ Կառուցեք այն, փորձարկեք մեկ պրոֆիլով, և թողեք հինը պատասխանի, մինչև նորը իրեն ապացուցի իրական ուղու վրա։ Գինը վիճակն է։ Առանց ընդհանուր peer գրառումների, չեղարկումների և գրանցման՝ ունեք երկու ցանց, որոնք պատահաբար կիսում են անունը։

QuestionIn-place swapParallel endpoint
Rollback in one step?Only if you can get the old address backPoint DNS back; old host still up
Blast radiusEvery client at onceOnly the clients you moved
Best whenThe address is yours to reassignThe old address is gone for good

Գտեք բոլոր տեղերը, որտեղ գրված է հին հասցեն

Սկսեք տեքստային սկանավորմամբ, որովհետև կարգավորման ֆայլերը հեշտ կեսն են։ Փնտրեք դեմոնի կարգավորումում, ֆայրվոլի հատվածներում, մոնիտորինգի թիրախներում և սկավառակի վրա գեներացված ցանկացած հաճախորդային փաթեթում։ Ներառեք IPv6 հասցեն, եթե այդպիսին հրապարակում եք. միայն A գրառումը հետևող տեղափոխումը կրկնակի ստեկի հաճախորդներին թողնում է հին ուղու վրա։

OLD=203.0.113.10
grep -RIn -- "$OLD" /etc /root
ss -lunpt | grep -F "$OLD"
nft list ruleset | grep -F "$OLD"
iptables-save | grep -F "$OLD"
wg show all endpoints

Ապա սկանավորեք միջուկը, որովհետև աշխատող համակարգը հասցեն պահում է այնպիսի տեղերում, որոնք ոչ մի ֆայլ չի հիշատակում։ Ստատիկ աղբյուրի NAT կանոնը, ipset գրառումը, bind հասցեն և conntrack գրառումը ապրում են ավելի երկար, քան դրանք հեռացրած կարգավորման խմբագրումը, և ոմանք վերապրում են նաև վերագործարկումը, որովհետև վերադարձել են պահված կանոնների հավաքածուից։ Մեկ շերտ վերևում մատակարարի անվտանգության խմբերը, բեռնվածքի հավասարակշռիչի թիրախները և մոնիտորինգի ստուգումները բոլորովին էլ ձեր ֆայլային համակարգում չեն։

Գրանցեք գույքագրումը նախքան որևէ բան փոխելը. այն նաև ծառայում է որպես հետադարձ սկրիպտ։

Հոսթանունով հաճախորդները վերականգնվում են. բառացի IP-ով հաճախորդները լռում են

Եթե հաճախորդները սերվերին հասնում են հոսթանունով, անցումը հիմնականում DNS խնդիր է, և երեկ դրած TTL-ը որոշում է, թե որքան վատ կլինի։ Լուծիչները քեշավորում են, stub լուծիչները նորից են քեշավորում, և շատ հաճախորդներ անունը փնտրում են միայն նոր միացման ժամանակ, այնպես որ հաստատված թունելը պահում է իր մեկնարկային հասցեն։

Եթե endpoint-ը բառացի հասցե է, ոչինչ նորից չի լուծվում և ոչինչ բողոք չի գրանցում։ WireGuard-ը պահում է լուծված socket հասցեն. Endpoint = vpn.example.net:51820-ը IP է դառնում այն պահին, երբ աշխատում է wg-quick up-ը, և մնում է այդ IP-ն, մինչև չփոխեք այն։ OpenVPN-ը ավելի ներողամիտ է. այն լուծում է remote հոսթանունը միացման պահին և resolv-retry infinite-ի հետ նորից փորձում DNS՝ վերամիացման ժամանակ։ Բառացի IP-ի դեպքում երկուսն էլ շարունակում են զանգահարել մի մեքենայի, որն այլևս չկա։

Մարդկանց մոլորեցնում է հայելային պատկերը։ Հաճախորդը, որն արդեն ուղղված է նոր հասցեին, մինչ հին լսողը դեռ պատասխանում է, անցնում է ձեր սեփական սեղանից արված բոլոր փորձարկումները։ Ինձ էլ են այդպես խաբել. նոր endpoint-ը հեռախոսում բարձրացավ առաջին փորձից, իսկ հին պրոֆիլով հաճախորդը հայտնվեց միայն այն ժամանակ, երբ հին լսողը շատ ավելի ուշ անջատվեց։

Վստահությունը հասցեի հետ չի տեղափոխվում

WireGuard-ը առանձնացնում է ինքնությունը հասանելիությունից, ինչը հասցեի տեղափոխումը գրեթե անվճար է դարձնում։ Peer-երը նույնացվում են հանրային բանալիով, և endpoint-ը միայն այն տեղն է, ուր փաթեթները հիմա գնում են. հոսթը թարմացնում է peer-ի endpoint-ը վերջին նույնականացված փաթեթի աղբյուրի հասցեից։ Անգործ peer-ին դեռ պետք է պատճառ՝ նոր տեղի հետ խոսելու համար, և նա հասցեն սովորում է միայն այն ժամանակ, երբ նրա սեսիան հնանում է, և handshake-ի կրկնափորձերը ձախողվում են տեսանելի տեղում։ WireGuard-ի արագ ուղեցույցը ընդգրկում է endpoint դաշտը։

TLS-ի վրա հիմնված սերվերները հակառակ դեպքն են։ Վկայագիրը կապված է անվան հետ, և հասցե հավաքող հաճախորդը համեմատում է հավաքածը սուբյեկտի այլընտրանքային անունների հետ։ Միացեք IP-ով վկայագրին, որը կրում է միայն DNS SAN, և ստուգումը ձախողվում է. հաճախորդի օգտագործած անունը վկայագրում չկա։ IP SAN-ով վերաթողարկումը ուղղում է այդ մեկ միացումը և վատացնում հաջորդ տեղափոխումը։ Պրոֆիլում հոսթանուն պահելը և verify-x509-name-ը տեղում թողնելը ստուգումը խիստ է պահում, մինչ ներքևի հասցեն փոխվում է։

Ապա ստուգեք, թե ինչին է կապված դեմոնը. հին հասցեին ամրացված socket-ը լուռ ձախողվում է։ local 203.0.113.10-ով սկսված OpenVPN սերվերը հրաժարվում է բարձրանալ, հենց որ այդ հասցեն անհետանում է, մինչ 0.0.0.0-ի վրա լսողը անվճար հետևում է փոփոխությանը։ NAT-ը նույն կերպ է բաժանվում. MASQUERADE-ը հետևում է, թե մեքենան հիմա ինչ հասցե ունի, իսկ ստատիկ SNAT --to-source 203.0.113.10-ը շարունակում է վերագրել մի հասցեի, որը դուք այլևս չեք տիրապետում, ուստի վերադարձի տրաֆիկը անհետանում է։ Եթե նոր հասցեն գալիս է այլ upstream դարպասով, ստուգեք rp_filter-ը. հակադարձ ուղու զտումը գցում է վերադարձի տրաֆիկը, որը հասնում է ինտերֆեյս, որը միջուկը չէր սպասում։

Անցման հերթականությունը և ապացույցը, որ այն աշխատեց

Մեկ օր առաջ իջեցրեք TTL-ը, կանգնեցրեք նոր լսողը և ապացուցեք այն պրոֆիլով, որը միայն դուք ունեք։ Նույն ցանցի ներսից արված փորձարկումը գրեթե ոչինչ չի ապացուցում, ուստի օգտագործեք բջջային ցանցի հեռախոս և փորձարկեք մի բան, որը թունելը պետք է տանի, այլ ոչ թե ping դեպի endpoint։

Ամբողջ պատուհանի ընթացքում հետևեք երկու հասցեներին։ wg show all latest-handshakes-ը նոր հոսթի վրա, կամ OpenVPN-ի կարգավիճակի ֆայլը, ասում է, թե իրականում քանի peer է տեղափոխվել։ Երբ նոր endpoint-ն ունի սպասված peer-երը, իսկ հինը՝ միայն հետ մնացածները, հանեք հին լսողը շահագործումից, հեռացրեք հնացած NAT կանոնը և հանեք հասցեն մատակարարի ֆայրվոլից։ Հին լսողի հեռացումը այն քայլն է, որը բաց է թողնվում, և այն փակում է այն ճեղքը, որտեղ հնացած պրոֆիլը դեռ հասնում է հին ցանց։

Նախքան սկսելը գրավոր սահմանեք հետադարձի ձգանը. եթե պայմանավորված պատուհանից հետո նոր endpoint-ը ոչ մի իրական հաճախորդից handshake չի ստանում, վերականգնեք հին հասցեն և դադարեցրեք պրոֆիլների բաշխումը։ Դրանից հետո նորից գործարկեք սկանավորումը և հաստատեք, որ ոչ մի լսող դեռ կապված չէ դուրս բերված հասցեին։ Երկու բան անցնում է հաջորդ տեղափոխմանը. հաճախորդի պրոֆիլում հոսթանուն, որպեսզի հաջորդ փոփոխությունը DNS խմբագրում լինի, և սերվերի վերականգնման նշումների կողքին պահված գույքագրումը։

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