Միացրեք VPN-ը իր իսկ անվանատարածքի ներսում, այնտեղ գործարկեք մեկ հավելված, և երթևեկը դեռ դուրս է գալիս հոսթի երթուղով։ Ոչինչ կոտրված չէ, քանի որ անվանատարածքը կառավարում է միայն այն պրոցեսները, որոնք մտնում են դրա մեջ, և արտահոսքը եկավ այն պրոցեսից, որը երբեք չմտավ։ Ինտերֆեյսները, հասցեները, երթուղիները, հրապարակի կանոնները և սոկետները այն են, ինչ անվանատարածքը տիրապետում է։ Ֆայլերը, հաշիվները և արդեն աշխատող ծառայությունները՝ ոչ, և այստեղից է գալիս անակնկալների մեծ մասը։

Ինչ է տիրապետում անվանատարածքը, և որտեղ է ծնվում սոկետը

Տեղափոխեք ինտերֆեյսը անվանատարածք, և հոսթը կկորցնի այն, կառուցեք թունել ներսում, և հոսթը չի կարող տեսնել այն։ Սա է անվանատարածքով սահմանափակված VPN-ի մեխանիզմը, սարքը և դեպի այն տանող երթուղիները ապրում են մի համատեքստում, որը հասանելի է միայն ընտրված պրոցեսներին։ Հոսթը պահում է իր լռելյայն երթուղին, ուստի ամեն ինչ դրսում մնում է անփոփոխ։

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

Ինչ չի մեկուսացնում անվանատարածքը

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

Լուծումը /etc/netns/<name>/resolv.conf հասցեում անվանատարածքի համար նախատեսված ֆայլն է, կամ պատրաստված ֆայլի bind mount, որն ուղղված է ներսից հասանելի րեզոլվերի։ /etc/resolv.conf-ը հոսթի վրա խմբագրելը ոչինչ չի փոխում այն բանից, ինչ տեսնում է անվանատարածքը։

Պրոցեսների տեղաբաշխումը հենց կառավարումն է

Ձեր ստացած մեկուսացումը հենց այն պրոցեսների մեկուսացումն է, որոնք դուք գործարկում եք ներսում։ Անվանատարածքի exec օգնականի միջոցով գործարկված shell-ը, և այն ամենը, ինչ այն ստեղծում է, մնում է ներսում, իսկ հոսթի նստաշրջանից գործարկված աշխատասեղանի հավելվածը՝ ոչ։ Ստեղծեք համատեքստը, տեղափոխեք սարքը, ապա ապացուցեք երկու կողմերը։

ip netns add vpn1
ip link set wg0 netns vpn1
ip netns exec vpn1 wg show
wg show

Կարդացեք առաջին wg show-ը անվանատարածքի ներսից, իսկ երկրորդը՝ հոսթից, և սպասեք, որ դրանցից միայն մեկը կներկայացնի զուգընկերը։ Եթե երկուսն էլ դա անեն, սարքը երբեք չի շարժվել, իսկ եթե ոչ մեկը, ապա այն գնացել է այլ տեղ։ Երբ գործարկիչը ծառայությունների կառավարիչ է, խմբագրելու ենթակա ֆայլը unit-ն է, ոչ թե աշխատասեղանի դյուրանցումը։ Առանց անվանատարածքի կարգավորման unit-ը դեմոնը գործարկում է հոսթի համատեքստում և լուռ չեղարկում է նախագիծը։

Փորձարկեք հավելվածի համատեքստից

Գործարկեք ստուգումը նույն բինարով և նույն օգտատիրոջով, որոնք օգտագործում է հավելվածը, անվանատարածքի ներսում։ Ներառեք DNS-ը և հասցեների երկու ընտանիքները, որովհետև IPv6 երթուղին, որի մասին երբեք չեք մտածել, սովորական ելք է։ Ձեր սեփական shell-ից արված փորձարկումը միայն ապացուցում է, որ ձեր shell-ը մեկուսացված է։

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

Փոխանցում, խափանման քաղաքականություն և մաքրում

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

Գրանցեք անվանատարածքների անունները, ինտերֆեյսները և թե ումն է կարգավորումը, որպեսզի մաքրումը հանի միայն այն, ինչ ստեղծել է տեղաբաշխումը։ Հոսթի ցանցի վերակայումը հետգնման ընթացքում մաքրումը վերածում է ընդհատման։ network_namespaces(7) էջը կարճ է և արժե կարդալ այդ ուղին նախագծելուց առաջ։

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