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

Երկու աշխատանք՝ առանձին պահված

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

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

Նախագծեք երկու շերտերը միասին, ապա փորձարկեք երկուսն էլ։ Այն կոնֆիգուրացիան, որը ճիշտ է մեկ շերտում և չփորձարկված՝ մյուսում, ձախողվում է բաց կամ փակ՝ կախված լռելյայն արժեքից։

Յուրաքանչյուր գործընկերոջ տվեք միայն իր հասցեն

Բազմահոսթ գործընկերները գայթակղում են ձեզ սերվերի կողմում տալ ամբողջ խմբի տիրույթը։ Այդ թույլտվությունը աղբյուրի հասցեի հայտարարում է, ուստի վտանգված կամ սխալ կարգավորված հաճախորդը կարող է ներկայացնել տիրույթի ցանկացած հասցե, և թունելը կընդունի այն։ Յուրաքանչյուր գործընկերոջ համար նշանակեք /32 իր սեփական ներքին հասցեի համար։ Խմբերի տիրույթները սահմանեք միայն հաճախորդների վրա, որտեղ դրանք նկարագրում են թե այդ հաճախորդը որ նպատակակետերին կարող է հասնել և ոչ թե՝ որ աղբյուրներից կարող է օգտվել։

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

Գրեք փոխանցման քաղաքականությունը, որը բաժանում է խմբերը

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

iifname "wg0" oifname "wg0" ip saddr 10.66.10.0/24 ip daddr 10.66.10.0/24 accept
iifname "wg0" oifname "wg0" ip saddr 10.66.20.0/24 ip daddr 10.66.20.0/24 accept
iifname "wg0" oifname "wg0" drop

Առաջին երկու կանոնները թույլատրում են երթևեկությունը յուրաքանչյուր խմբի ներսում։ Վերջինը արգելափակում է այդ ինտերֆեյսով անցնող մնացած ամեն ինչ, և հենց դա է ստեղծում խմբերի միջև մեկուսացումը։ Ավելացրեք բացահայտ կանոններ մյուս հասցեների ընտանիքի համար, եթե դրանք անհրաժեշտ են, որովհետև IPv4-ի համար գրված drop-ը չի լիազորում և չի նկարագրում IPv6-ի վարքը։

Հերթականությունն է որոշում քաղաքականության կիրառումը

Կանոնների հերթականությունն ավելի կարևոր է, քան ինքը բեկորը։ Ընդհանուր կանոնը, որը ընդունում է հաստատված միացումները և տեղադրված է այս գրառումներից առաջ, թույլ է տալիս հին միջխմբային հոսքին շարունակվել, ուստի մեկուսացումը վերաբերում է միայն նոր միացումներին։ Որոշեք, թե այս երկու արդյունքներից որն եք ուզում, նախքան վերաբեռնելը։

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

Փորձարկեք մատրիցը, ոչ թե ֆայլերի քանակը

Կառուցեք ակնկալվող արդյունքների փոքր մատրից և ստուգեք յուրաքանչյուր բջիջ։ A խմբից A խումբ պետք է աշխատի, B խմբից B խումբ պետք է աշխատի, իսկ A-ից B՝ ոչ, երկու ուղղություններում և երկու հասցեների ընտանիքների համար, եթե դրանք աջակցում եք։

nft list ruleset
wg show wg0 allowed-ips
ping -c 2 10.66.10.5
conntrack -L -s 10.66.20.7 2>/dev/null | head

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

Հանգույցի հոսթ-ծառայությունները և դրա հետևում գտնվող LAN-ի հասանելիությունը առանձին ուղիներ են՝ առանձին քաղաքականությամբ։ Գրանցեք, թե դրանցից որոնք է ընդգրկում մատրիցը, որովհետև միայն գործընկեր-գործընկեր երթևեկությունը ստուգող թեստը ոչ մեկի մասին ոչինչ չի ասում։

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