Աղբյուրային երթուղավորում երկու VPN ավազանի համար. ինչ է բաց թողնում ձեր կանոնը
from ձևի կանոնը համապատասխանում է կլիենտի հասցեին նախքան SNAT-ը կվերագրի այն, իսկ դարպասից արված փորձարկումը չի համապատասխանում նրանցից ոչ մեկին։ Կատարեք որոնումը յուրաքանչյուր ավազանի համար և փոխարենը կարդացեք առաջնահերթությունները։
Երկու կլիենտ ավազան, մեկ դարպաս, և պլանը թվում է պարզունակ՝ մեկ կանոն առաջին ավազանը դուրս է ուղարկում արագ վերին կապով, մյուսը երկրորդ ավազանն անցկացնում է գործընկերոջ թունելով։ Հետո կանոնները տեղում են, և երկրորդ ավազանը դեռ դուրս է գալիս լռելյայն երթուղով։ Կանոնը կոտրված չէ։ Փաթեթի աղբյուրը այն չէ, ինչ սպասում էր հեղինակը որոնման պահին, որովհետև թարգմանությունը և որոնումը տեղի են ունենում նույն փաթեթի ճանապարհի տարբեր կետերում, և հերթականությունը հակառակ է այն մտավոր գծապատկերին, որը նկարում են մարդկանց մեծ մասը։
Որոնումը տեղի է ունենում նախքան աղբյուրը վերագրելը
VPN կլիենտից փոխանցվող փաթեթի համար միջուկը կատարում է հաստատուն հաջորդականություն։ Այն հասնում է թունելի միջերես, անցնում prerouting-ով, որտեղ ապրում են conntrack-ը և DNAT-ը, ապա կայացվում է երթուղային որոշումը, ապա փոխանցումը, ապա postrouting-ը, որտեղ SNAT-ը կիրառվում է վերջինը։ from ձևի կանոնը դիտարկվում է այդ երթուղային որոշման ընթացքում, այսինքն՝ այն տեսնում է կլիենտի սկզբնական հասցեն, ոչ թարգմանվածը։
Այսպիսով, masquerade կանոն ավելացնելը չի փոխում, թե որ քաղաքականությունն է համապատասխանում ելքային հոսքին։ Փոխվում է այն, ինչ տեսնում է հեռավոր կողմը, և դրանով՝ թե որ վերադարձի ուղին գոյություն ունի։ Սրանք երկու տարբեր հետևանքներ են, և փոփոխությունների վերանայումները մշտապես շփոթում են դրանք։ Առանձնացրեք դրանք, և նախագիծը սովորաբար պարզ է դառնում մեկ րոպեի ընթացքում։
Հենց պատասխանի ուղղությամբ է թարգմանված հասցեն հայտնվում կանոններում։ Դարպասին վերադարձող փաթեթը հասցեագրված է թարգմանված հասցեին, և եթե ունեք նպատակակետի կամ այն միջերեսի վրա հիմնված քաղաքականության կանոններ, որով այն մտել է, ապա հենց այդ արժեքն եք համեմատելու։ Նույն կապը՝ յուրաքանչյուր ուղղությամբ ճշմարտության տարբեր աղբյուր։
| Stage | Source the kernel sees | What it means for your rule |
|---|---|---|
| Prerouting | Client address, 172.31.7.42 | Where marks and DNAT are applied |
| Routing decision | Still 172.31.7.42 | This is where from rules match |
| Postrouting | Becomes 198.51.100.9 | What the far end and its return route see |
Ուստի տարբեր աղբյուրներով երկու ավազաններին իսկապես պետք են տարբեր աղյուսակներ, և նախագիծը ճիշտ է։ Վերոնշյալ աղյուսակը բացառում է այն կարճ ճանապարհը, երբ վրիպազերծումը կատարվում է նայելով, թե ինչ է ստացել հեռավոր կայքը, և դրանից կանոն եզրակացնելով։
Դարպասից արված փորձարկումը ավազանի փորձարկում չէ
Դարպասի իսկ ստեղծած երթևեկությունը երբեք չի անցնում prerouting-ով, որովհետև այն չի ժամանել միջերեսի վրա։ Այն երթուղվում է ելքային ուղում՝ որպես աղբյուր ունենալով դարպասի սեփական հասցեն, և կլիենտ տիրույթի վրա կառուցված from կանոնը չի համապատասխանի։ Այս ոլորտի յուրաքանչյուր տոմս, որն ասում է՝ արկղից աշխատում է, կլիենտից՝ ոչ, հենց այդ փաստի կրկնությունն է։
Ընդօրինակեք կլիենտին՝ փոխարենը մոտավորելու, այսինքն՝ հարցրեք երթուղային որոնմանը ուղղակիորեն՝ տալով աղբյուր և մուտքային միջերես։
ip route get 198.51.100.9 from 172.31.7.42 iif tun0
ip route get 198.51.100.9 from 172.31.8.42 iif tun0
ip route show table 201
Գործարկեք այն մեկ անգամ յուրաքանչյուր ավազանի համար։ Եթե երկու հրահանգները վերադարձնում են նույն միջերեսը, ապա կանոնները չեն բաժանում ավազանները, և պատճառը կա՛մ բացակայող կանոնն է, կա՛մ ավելի բարձր առաջնահերթության կանոնը, որը համապատասխանում է երկուսին էլ։ Եթե նրանք տարբեր միջերեսներ են վերադարձնում, բայց կլիենտը դեռ ձախողվում է, ապա խոտանը որոնումից հետո է, և կարող եք դադարել նայել կանոններին։
Առաջնահերթություն, ոչ թե դիրք ֆայլում
Կանոնները գնահատվում են առաջնահերթության աճման կարգով, և նշանակալին թիվն է, ոչ թե ձեր մուտքագրած հերթականությունը։ local աղյուսակը 0 առաջնահերթության վրա է, main աղյուսակը՝ 32766-ի, իսկ լռելյայն կանոնը՝ 32767-ի, դրա համար լռելյայն առաջնահերթությամբ ավելացված կանոնը հայտնվում է ցուցակի վերջում և պարտվում գրեթե ամեն ինչից։
ip rule show
ip rule add from 172.31.8.0/24 lookup 201 priority 1000
ip -4 route show table 201
Հայտարարված առաջնահերթությունը տեսանելի է դարձնում նախատեսված կարգը ֆայլում և վերանայման ժամանակ։ Այն նաև կանխում է, որ ավելի ուշ ավելացումը լուռ առաջ անցնի գոյություն ունեցող կանոնից, ինչը աշխատող քաղաքականության՝ չկապված փոփոխությունից հետո դադարելու ամենատարածված պատճառն է։
Թերի աղյուսակին ուղղվող համապատասխան կանոնը մյուս թակարդն է։ Եթե 201 աղյուսակը պարունակում է լռելյայն երթուղ, բայց ոչ նպատակակետի երթուղ, փաթեթը մերժվում է կամ ուղարկվում սխալ տեղ, և կանոնը մեկուսացված թվում է միանգամայն ճիշտ։ Կարդացեք աղյուսակը, ոչ միայն կանոնը։ Կանոնը ցուցիչ է, իսկ դատարկ աղյուսակը՝ ցուցիչ դեպի ոչինչ։
Վերադարձի ուղին դեռ պետք է գոյություն ունենա
Աղբյուրի քաղաքականությունը ընտրում է ելք։ Այն վերադարձի ուղի չի ստեղծում։ Եթե երկրորդ ավազանը դուրս է գալիս գործընկերոջ թունելով, գործընկերը պետք է իմանա, թե ինչպես հասնել 172.31.8.0/24-ին՝ կամ դարպասին վերադարձող երթուղով, կամ ստանալով թարգմանված հասցեներ, որոնք նա արդեն գիտի։
Նրանց միջև ընտրությունը տեսանելի հետևանքներով նախագծային որոշում է։ Կլիենտ տիրույթը հետ երթուղելը պահպանում է յուրաքանչյուր կլիենտի ինքնությունը գործընկերոջ մոտ և պահանջում, որ նա ընդունի ձեր նախածանցը։ Թարգմանությունը թաքցնում է ավազանը մեկ հասցեի հետևում և պահանջում, որ գործընկերը ընդունի միայն այդ հասցեն, այն գնով, որ ձեր և նրա մատյաններն այլևս չեն համաձայնի, թե ով է միացել։
Ինչ էլ ընտրեք, գրեք այն ավազանի սահմանման կողքին։ Վերադարձի երթուղ, որը գոյություն ունի միայն ինչ-որ մեկի հիշողության մեջ, հենց այն բանն է, որը գոյատևում է այնքան, մինչև գործընկերը փոխի firewall-ը, և հետո մեկ օր է պահանջում վերականգնելու համար։
Չբռնեք դարպասի սեփական թունելը քաղաքականության մեջ
Կլիենտների համար գրված կանոնները վերաբերում են նաև դարպասի ստեղծած երթևեկությանը, եթե չբացառեք այն։ Նշանի կամ ելքային միջերեսի վրա հիմնված լայն կանոնը կարող է բռնել դարպասի սեփական կապը գործընկերոջ հետ, և այդ ժամանակ քաղաքականությունը կրող թունելը երթուղվում է քաղաքականությամբ։ Դա առաջացնում է օղակ կամ ընդհատում, որը նման է մատակարարի խոտանի։
Սահմանափակեք յուրաքանչյուր կանոնը որքան հնարավոր է նեղ՝ աղբյուրի նախածանց, մուտքային միջերես և, որտեղ աջակցվում է, նշան, որը կրում են միայն կլիենտ փաթեթները։ Այնուհետև յուրաքանչյուր կանոնի փոփոխությունից հետո փորձարկեք դարպասի սեփական կապը, որովհետև խոտանը ինքնահղումային է և չի երևում կլիենտի փորձարկումից։
ip-rule-ի ձեռնարկի էջը փաստաթղթավորում է ընտրիչի և առաջնահերթության իմաստաբանությունը։ Միավորեք այն յուրաքանչյուր ավազանի որոնման փորձարկման հետ, և նախագիծը դառնում է ստուգելի, ինչը տարբերությունն է տարվա դիմացող քաղաքականության երթուղավորման և այն բանի միջև, որից բոլորը վախենում են դիպչել։