Երկու առողջ VPN ելք, մեկ երկար վերբեռնում արդեն ընթացքի մեջ, և պահանջ, որ հաջորդ միացումը օգտագործի մյուս թունելը։ Դա բավարարելու երկու եղանակ կա, և դրանցից միայն մեկն է անվտանգ աշխատող դարպասի վրա։ Լռելյայն երթուղու փոխանակումը տեղափոխում է յուրաքանչյուր փաթեթ, ներառյալ վերբեռնմանը պատկանողները։ Պլանավորված արտահոսքը փոխում է ընտրությունը նոր միացումների համար՝ հետևված հոսքերը թողնելով այն ուղու վրա, որտեղ նրանք սկսվել են։

Ելքը փոխելու երկու եղանակ

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

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

Գինը բարդությունն է՝ երկու երթուղավորման աղյուսակ, ճիշտ կեռիկում աշխատող դասակարգիչ և նշաններ, որոնք պետք է համաձայնեցվեն մեքենայի վրա դրանք օգտագործող մնացած ամեն ինչի հետ։

Տվեք յուրաքանչյուր ելքի իր աղյուսակը

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

ip rule add fwmark 0x10/0x10 table 101
ip rule add fwmark 0x20/0x20 table 102
ip route add default via 192.0.2.1 dev wg-a table 101
ip route add default via 198.51.100.1 dev wg-b table 102

Ավելացրեք blackhole երթուղի յուրաքանչյուր աղյուսակի վերջում, որպեսզի համընկնում չգտնող որոնումը բարձր ձայնով ձախողվի՝ ձեր չընտրած լռելյայնին փախչելու փոխարեն։

Ընտրեք մեկ անգամ՝ առաջին փաթեթի ժամանակ

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

Նուրբ մասը նոր բառի իմաստն է։ Conntrack-ը դեռ կարող է NEW հաղորդել վաղ փաթեթների և կրկնվող ուղարկումների համար մինչև պատասխան տեսնելը, ուստի միայն այդ վիճակի վրա հիմնվող դասակարգիչը կարող է վերագրել արդեն կայացված ընտրությունը։ Նշանակելուց առաջ ստուգեք, որ միացման համար ոչ մի ելք պահված չէ։

nftables-ը փաթեթի և միացման նշանները պահում է առանձին, և մետատեղեկատվության ուղեցույցը փաստաթղթավորում է նրանց միջև բացահայտ պատճենումը։ Միացման նշանն ինքնին չի դառնում այն փաթեթի նշանը, որի հետ համընկնում է ձեր կանոնը, և սա է խնամքով գրված դասակարգիչի անազդեցության ամենատարածված պատճառը։

Սահմանափակեք վերականգնումը ձեր նկատի ունեցած ուղղությամբ և երթևեկությամբ։ Ինտերնետ-ելքի նշանը վերադարձող փաթեթներին կիրառելը կարող է պատասխաններն ուղարկել դեպի ելքը՝ LAN-ի փոխարեն, և ախտանիշը միակողմանի միացումն է, որը նման է firewall-ի խնդրի։ Կարդացեք պատասխանի ուղին նախքան firewall-ի կանոնին դիպչելը, քանի որ փաթեթը երթուղավորվում է, պարզապես ոչ հետ դեպի ուղարկողը։

Արտահոսքի չորս փուլ

  1. Պատրաստեք B-ն առանց A-ին դիպչելու՝ երթուղավորում, փոխանցում, թույլտվություն, NAT և վերադարձի ուղի։ Տեղադրեք նրա աղյուսակը և ընտրության քաղաքականությունը դարպասի գոյություն ունեցող կոնֆիգուրացիայի սեփականատիրոջ միջոցով։

  2. Փոխեք դասակարգիչը, որպեսզի նոր, չդասակարգված միացումները ընտրեն B-ն՝ պահպանելով պահված ընտրությունները։ nftables-ի ատոմային գործարքը խուսափում է պատուհանից, որտեղ հին վիճակը պետք է մաքրվի։

  3. Թողեք A-ն աշխատի, մինչև նրա հոսքերը ավարտվեն։ Նրա ինտերֆեյսը, աղյուսակը, հեռավոր ելքը և NAT քարտեզագրումները դեռ այդ հոսքերի մասն են, և NAT կանոնի խմբագրումը չի վերակառուցում արդեն գոյություն ունեցող կապերը։

  4. Հանեք A-ն, երբ արտահոսքի պայմանը կատարված է՝ գնահատված միացումների վիճակով և հավելվածի վարքով, ոչ թե մեկ հանգիստ միջակայքով։

Ինչ արտահոսքը չի կարող խոստանալ

Բրաուզերի հարցումը նոր տրանսպորտային միացում չէ. միավորումը շարունակում է հարցումները ուղարկել հին միացումով։ Հակառակը, UDP հոսքը կարող է ծերանալ conntrack-ից, և ավելի ուշ փաթեթը դասակարգվում է նորից։ Արտահոսքը հետևում է հետևված հոսքերին, ոչ թե հավելվածի պատկերացմանը նստաշրջանի մասին։

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

Ստուգեք երկու կեսերը

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

Չմաքրեք conntrack աղյուսակը, որպեսզի նոր ընտրությունը հայտնվի։ Դա ոչնչացնում է հենց այն վիճակը, որը արտահոսքը պետք է պահպանի, և վերահսկվող միգրացիան վերածում է ընդհատման՝ մաքուր թվացող թեստով։

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