NET_ADMIN په VPN کنټینر کې: څه او چېرې بدلولی شي
دا وړتیا د یوې شبکې نومفضا په داخل کې د انټرفیس، لارې او فایر وال بدلون ته اجازه ورکوي۔ د هوسټ شبکې سره هغه فضا د هوسټ خپله سټک ده۔
NET_ADMIN د لینکس هغه وړتیا ده چې یو پروسې ته د شبکې اداره کولو اجازه ورکوي، او په کنټینر کې دا په هغه شبکهيي نومفضا کې چې پروسه پکې ځي، هماغه کار کوي۔ دا د سوکټ پرانیستلو جواز نه دی، او د وسیلې یا لارې بدیل نه دی۔ زړهپوهونکې پوښتنه هېڅکله دا نه ده چې وړتیا ورکړل شوې که نه، بلکې دا ده چې کومه نومفضا بدلون ترلاسه کوي۔
وړتیا څه رانغاړي
د خپلې نومفضا په داخل کې، د NET_ADMIN لرونکې پروسه کولی شي انټرفیسونه پورته او ښکته کړي، پته وټاکي، لارې اضافه او حذف کړي او د فایر وال قواعد ولیکي، چې دا هغه عملیات دي چې capabilities(7) دې وړتیا لاندې راټولوي۔ دا کولی شي د انټرفیس کچې تنظیمات هم سم کړي چې کنټرولوي کرنل څنګه ترافیک په قطار کې اړوي او فلټروي۔ VPN کلاینټ معمولاً په پیل کې څو ورته اړتیا لري او له هغې وروسته بل څه نه۔ نو ځکه ډېری عکسونه له کارولو زیاته لاسرسی غواړي۔
د هغې نومفضا څخه بهر عملیات نه رانغاړل کیږي، او نږدې امتیازات جلا دي۔ د خامو پاکټونو لوستل او لیکل NET_RAW پورې اړه لري، او د tun وسیلې جوړول هم وړتیا او هم د وسیلې نوډ ته لاسرسی غواړي۔ هغه پروسه چې وسیله نه لري د اجازې تېروتنه ترلاسه کوي چې د شبکې ستونزې په څېر ښکاري خو نه ده۔
نومفضا د زیان ساحه ټاکي
په خپله پل شبکه کې کنټینر خپل loopback، خپل انټرفیسونه او خپله د لارښوونې جدول ته رسېږي۔ هلته NET_ADMIN ورکول VPN کلاینټ ته اجازه ورکوي چې پرته له دې چې د هوسټ د لارښوونې پرېکړو ته لاس ووهي، تونل جوړ کړي، چې دا هغه ترتیب دی چې ډېری کنټینر عکسونه یې فرض کوي۔
هغه کنټینر هوسټ شبکې ته واړوئ او هماغه اجازه اوس د هوسټ لارې او د هوسټ فایر وال سمونږي، ځکه چې جلا نومفضا نه ده پاتې۔ هغه کلاینټ چې باید یو تونل اداره کړي، بیا کولی شي د ټول ماشین ترافیک بېلارې کړي، او د هغې د ویجاړولو سکریپټ تېروتنه پر هوسټ هغه قواعد پرېږدي چې چا نه دي لیکلي۔ په خود وړتیا کې هیچا نه بدلېده؛ زمینه بدله شوه۔ نو ځکه هماغه compose فایل پر دوو هوسټونو بېل چلند کوي۔
درې مخکیني شرایط چې یو کې یوځای کیږي
په VPN کنټینرونو کې د پیل ناکامۍ معمولاً له درې جلا شیانو څخه یوې پورې اړه لري: وړتیا، د تونل وسیله او د پروتوکول لپاره د کرنل ملاتړ۔ درېواړه یوځای ورکول کار کوي، او دا بل ناکامي د نسبت وړ نهکېدونکې هم کوي۔ یو لږ compose ټوټه وړتیا ورکوي او د وسیلې نوډ په څرګنده توګه تېروي:
services:
vpn:
image: example/vpn-client:latest
cap_add:
- NET_ADMIN
devices:
- /dev/net/tun
sysctls:
- net.ipv4.conf.all.src_valid_mark=1په خپل عکس کې د دې اسناد ولولئ چې کوم sysctl ته اړتیا لري، ځکه چې په کنټینر کې sysctl ممکن اضافي امتیاز یا د هوسټ کچې تنظیم وغواړي۔ چېرې چې عکس یوازې د کارونکي فضا حالت ملاتړ کوي، هلته وسیلې ته په بشپړه توګه اړتیا نشته او د وړتیاوو لیست په هماغه اندازه کموالی کیږي۔
نری عملیات ورکړئ، نه حالت
امتیازي حالت هرې وړتیا ته سپاري او په هماغه وخت کې د وسیلو لاسرسی پراخوي، نو پټوي چې له درې مخکینو شرایطو کوم یو نیمګړی و۔ دا د کنټینر د ناکامۍ بڼې د هوسټ بدلونونو څخه د توپیر وړ نهکېدونکې هم کوي۔ حتی کله چې لیکل یې اوږده وي، څرګند لیست ته ترجیح ورکړئ۔
بېریښې او د کارونکي نومفضا ځای پرځای کول په عمل کې د وړتیا معنا بدلوي، ځکه چې پروسه یې یوازې په نقشهشوې نومفضا کې ساتلی شي۔ له ریښې لرونکي بېلګې څخه د وړتیاوو لیست بېریښې چلولو چاپېریال ته کاپي کول او ورته لاسرسی تمه کول د ماسپښین له لاسه ورکولو عادي لاره ده۔
پټ رازونه جلا پرېکړې ته اړه لري۔ NET_ADMIN ساتل هېڅ نه وایي چې کلاینټ کوم همګړی هویت وړاندې کوي، کوم اسناد باروي یا دوی څنګه څرخي۔ شبکهيي اداره باور نه برابروي۔
بدلون تایید کړئ او ولیکئ چې اجازه ولې ده
له دې مخکې چې تونل تصحیح کړئ، تایید کړئ چې کنټینر واقعاً څه ترلاسه کړي۔ لاندې تفتیش د اضافه شوو وړتیاوو او د شبکې حالت راپور ورکوي، بیا ښیي چې د انټرفیسونو لیست له داخل څخه څنګه ښکاري:
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 routeکه وړتیا موجوده وي او د انټرفیسونو لیست لا هم تش وي، کلاینټ مخکې له دې چې څه جوړ کړي ناکام شوی، او بل ځای چې وګورئ د کنټینر لاګونه دي۔ که تونل موجود وي خو ترافیک نه روان وي، د کنټینر دننه د لارښوونې جدول بلې پوښتنې ته ځواب ورکوي۔
د ویجاړولو لاره هم وآزمویئ، ځکه چې د فایر وال قواعد لیکونکی کلاینټ کولی شي دوی پرېږدي۔ کنټینر ودروئ او که د هوسټ شبکه کارول کیږي، د هوسټ د قواعدو ټولګه بیا وګورئ۔ هغه اجازه چې یوازې د پیل په دوو ثانیو کې ورته اړتیا وي، په compose فایل کې دې د تلپاتې اړتیا په توګه بې له دې چې دا تشریح کوي یادښت ونهلري، نهبایې تشریح شي۔
د هرې وړتیا ترڅنګ لامل ولیکئ: کوم عملیات ورته اړتیا درلوده او پرته له دې څه ناکامېږي۔ هغه یادښت د عکس تازهکولو وروسته هم پاتې کیږي، او هماغه د بیاکتل شوي امتیازاتو لیست او د کاپي-پیسټ له لارې لوی شوي لیست ترمنځ توپیر دی۔