NET_ADMIN gudaha konteyner VPN: maxaa iyo halkee ayuu beddeli karaa
Awooddan waxay ogolaataa isbeddellada interface, dariiqo iyo firewall gudaha hal meel magac oo shabakadeed. Marka la isticmaalayo shabakadda martigeliyaha, meeshaas waa istaacka martigeliyaha laftiisa.
NET_ADMIN waa awoodda Linux ee u ogolaata habsocod inuu sameeyo maamulka shabakadda, gudaha konteynerna waxay si sax ah u samaysaa taas gudaha meesha magac ee shabakadda ee habsocodku ku socdo. Ma aha laysanka furitaanka socket, mana aha beddelka qalab ama dariiqo. Su'aasha xiisaha leh weligeed ma aha haddii awoodda la bixiyay, laakiin waa meesha magac ee isbeddelka helaya.
Awoodda waxay dabooshaa maxaa
Gudaha meesha magaceeda, habsocodka haysta NET_ADMIN wuxuu kori karaa oo hoos u dhigi karaa interface-yada, u qoondeyn karaa cinwaanno, ku dari karaa oo ka saari karaa dariiqooyin, oo qori karaa xeerarka firewall, taas oo ah kooxda hawlgallada ee capabilities(7) ku ururiyo awooddan hoosteeda. Wuxuu kaloo hagaajin karaa dejinta heerka interface ee xakameysa sida kernel-ku u safo oo u shaandheeyo taraafikada. Macmiilka VPN badanaa wuxuu u baahan yahay dhowr ka mid ah bilowga oo wax kale ma aha dabadeed. Sidaas darteed inta badan sawirradu waxay codsadaan baaxad ka ballaaran tan ay isticmaalaan.
Hawlgallada ka baxsan meeshaas magac lama daboolin, oo mudnaanta ku xigta waa gooni. Akhrinta iyo qorista baakadaha ceyriinka ah waxay ka tirsan yihiin NET_RAW, abuurista qalabka tun-na waxay u baahan tahay awoodda iyo gelitaanka noodhka qalabka labadaba. Habsocodka aan qalabka lahayn wuxuu helaa khalad fasax oo u eg dhibaato shabakadeed laakiin aan ahayn.
Meesha magac ayaa go'aamisa baaxadda waxyeellada
Konteyner ku jira shabakaddiisa buundada wuxuu gaaraa loopback-kiisa, interface-yadiisa iyo shaxdiisa dariiqooyinka. In halkaas NET_ADMIN la siiyo waxay u ogolaataa macmiilka VPN inuu dhiso tunnel isagoon taaban go'aamada dariiqooyinka martigeliyaha, taas oo ah habaynta inta badan sawirrada konteynerka ay u malaynayaan.
U beddel konteynerkaas shabakadda martigeliyaha oo isla fasaxaas hadda waxay tafatiraysaa dariiqooyinka martigeliyaha iyo firewall-ka martigeliyaha, sababtoo ah ma harin meel magac gooni ah. Macmiilka loo malaynayay inuu maareeyo hal tunnel ayaa markaas leexin kara taraafikada mashiinka oo dhan, khalad ku jira qoraalkiisa dumintaana wuxuu martigeliyaha uga taga xeerar aan cidna qorin. Awoodda lafteeda waxba kama beddelmin; macnaha guud ayaa isbeddelay. Taas darteed isla faylka compose ayaa u dhaqma si kala duwan laba martigeliyeyaal.
Saddex shuruud oo hal loo daro
Guuldarrooyinka bilowga ee konteynerrada VPN badanaa waxay khuseeyaan mid ka mid ah saddex shay oo gooni ah: awoodda, qalabka tunnel-ka iyo taageerada kernel-ka ee borotokoolka. Saddexda oo wada bixinta way shaqaysaa, waxayna kaloo ka dhigtaa guuldarrada xigta mid aan loo nisbayn karin. Qayb yar oo compose ah waxay bixisaa awoodda oo si cad u gudbisaa noodhka qalabka:
services:
vpn:
image: example/vpn-client:latest
cap_add:
- NET_ADMIN
devices:
- /dev/net/tun
sysctls:
- net.ipv4.conf.all.src_valid_mark=1Akhri dukumeentiga sawirka laftiisa si aad u ogaato sysctl-ada loo baahan yahay, sababtoo ah sysctl ku jira konteyner wuxuu u baahan karaa mudnaan dheeraad ah ama dejinta heerka martigeliyaha. Meesha sawirku taageero kaliya habka meel bannaan ee isticmaalaha, qalab gebi ahaanba lama baahna oo liiska awoodaha si la mid ah ayuu u yaraadaa.
Bixi hawlgalka cidhiidhiga ah, ma aha habka
Habka mudnaanta leh wuxuu gudbiyaa awood kasta oo isla waqtigaas ballaariya helitaanka qalabka, sidaas darteed wuxuu qariyaa mid ka mid ah saddexda shuruud ee maqnaa. Wuxuu kaloo ka dhigaa hababka guuldarrada konteynerka mid aan laga sooci karin isbeddellada martigeliyaha. Dooro liis cad xitaa marka qoraalkiisu dheer yahay.
Geynta root-la'aanta ah iyo tan meelaha magacyada isticmaalaha waxay beddelaan macnaha awoodda ficil ahaan, sababtoo ah habsocodku wuxuu hayn karaa kaliya gudaha meel magac la khariiday. Koobista liiska awoodaha tusaale root leh oo loo guuro deegaan root la'aan iyo filashada isla baaxaddaas waa hab caadi ah oo galab lumis ah.
Sirta waxay ka tirsan tahay go'aan gooni ah. Haynta NET_ADMIN waxba kama sheegto aqoonsiga lammaanaha ee macmiilku soo bandhigo, shahaadooyinka uu raro ama sida loo rogrogo. Maamulka shabakaddu ma bixiyo kalsooni.
Xaqiiji isbeddelka oo qor sababta fasaxu u jiro
Ka hor intaadan cilad-saarin tunnel-ka, xaqiiji waxa konteynerku dhab ahaan helay. Baaritaanka hoose wuxuu soo sheegaa awoodaha lagu daray iyo habka shabakadda, ka dibna wuxuu muujinayaa sida liiska interface-yadu uga muuqdo gudaha:
docker inspect --format '{{.HostConfig.CapAdd}} {{.HostConfig.NetworkMode}} {{.HostConfig.Privileged}}' vpn
docker exec vpn sh -c 'grep CapEff /proc/self/status'
docker exec vpn ip -br addr
docker exec vpn ip routeHaddii awooddu jirto oo liiska interface-yadu weli madhan yahay, macmiilku wuu guuldarraystay ka hor inta uusan wax abuuri karin, meesha xigta ee la eegona waa diiwaannada konteynerka. Haddii tunnel-ku jiro laakiin taraafikadu aan qulqulayn, shaxda dariiqooyinka gudaha konteynerka ayaa ka jawaabta su'aasha xigta.
Tijaabi sidoo kale wadada duminta, sababtoo ah macmiil qora xeerarka firewall wuxuu ka tagi karaa iyaga. Jooji konteynerka oo mar kale hubi xeerarka martigeliyaha haddii shabakadda martigeliyaha la isticmaalayo. Fasaxa loo baahan yahay oo kaliya laba ilbiriqsi bilowga laguma sharraxna inuu yahay shuruud joogto ah faylka compose iyada oo aan lahayn qoraal taas sharraxaya.
Qor sababta agteeda awood kasta: hawlgalkee ayaa u baahday iyo waxa guuldarraysta iyada la'aan. Qoraalkaas wuxuu ka gudbaa cusboonaysiinta sawirrada, waana farqiga u dhexeeya liis mudnaan la dib u eegay iyo mid ku koray koobista iyo dhejinta.