د یوې cgroup څخه د ترافیک نښه کول اسانه برخه ده. درې جلا پرېکړې باید سره سمون وخوري مخکې له دې چې یو اپلیکیشن د فزیکي انټرفیس له لارې ووځي او پاتې نور ټول په تونل کې پاتې شي: کوم ساکټ استثنا ته اړه لري، نښه کومه لارپوهنه لټون پیلوي، او کله چې پیکټ ووځي کومه سرچینه پته وړي. ډیری ناکامې هڅې لومړی سم کوي، دویم نیمګړی، او دریم ته هېڅکله نه ګوري.

درې پرېکړې، نه یوه

ډلبندي ځواب ورکوي چې څوک معاف دی. لارښوونه ځواب ورکوي چې نښه شوی پیکټ پرځای یې چېرته ځي. د سرچینې ټاکنه ځواب ورکوي چې لرې پای به څه وویني او ځواب باید چېرته بېرته راشي.

دا په خپلواکه توګه ناکامېږي. یو پیکټ کېدای شي ډلبندي شي، فزیکي انټرفیس ته بېرته ولارښوونه شي، او بیا هم یوه خصوصي پته وړي چې هېڅ پورتنۍ روټر یې بېرته نه شي لیږلی، چې د فایر وال بندېدو په څیر ښکارېدونکی وخت تېرېدل رامنځته کوي. د ډلبندۍ په ګام کې هېڅ شی د دې په اړه خبرداری نه درکوي. د لارښوونې په ګام کې هم هېڅ شی نه.

ترتیب هم مهم دی. ډلبندي هغه وخت پېښېږي چې پیکټ جوړېږي، لارښوونه له هغې وروسته، او ژباړه د وتلو په نقطه کې.

که ونه شئ ویلای چې د درې پړاوونو کوم یو خراب دی، تاسو ډیبګ نه کوئ، تاسو قواعد بیا تنظیموئ او هیله لرئ.

له هغې cgroup سره سمون وکړئ چې سبا هم وي

nftables کولی شي د ساکټ cgroup v2 غړیتوب وازموي، چې واقعاً ګټور دی ځکه چې د منزل پرځای پروسې تعقیبوي. لومړی پېچ پېژندونکی دی. د مینو څخه پیل شوی ډیسکټاپ اپلیکیشن ډیری وخت په لنډمهاله scope کې اوسیږي چې نوم یې په راتلونکي پیل کې بدلېږي.

nft list ruleset
systemctl status session.slice 2>/dev/null
cat /proc/self/cgroup

د یوې ناستې څخه د scope نوم کاپي کول او کلک لیکل هغه قاعده جوړوي چې نن کار کوي او سبا په خاموشۍ سره سمون نه خوري. پرځای یې اپلیکیشن په قصدي، باثباته اجرایي شرایطو کې کېږدئ، لکه هغه ځانګړی scope یا unit چې تاسو یې کنټرولوئ، او له هغې سره سمون وکړئ. بیا قاعده د بیا پیل او بستې تازه کېدو څخه ژغورل کېږي. دا د همکار لپاره داسې شی هم ګرځي چې ستاسو د ناستې تاریخ پرته پرې فکر وکړي.

په دې هم دقیق اوسئ چې کومه طریقه کاروئ. د cgroup v1 net_cls ډلبندي او د cgroup v2 ساکټ سمون جلا شیان دي، او په اسنادو کې ورته نوم لرونکی ساحه دوی د تبادلې وړ نه کوي.

دویم لټون route زنځیر پیلوي

په محلي ډول جوړ شوي ترافیک لپاره، زنځیر ډول فیصله کوي چې د نښې له ټاکلو وروسته څه پېښ شي. د filter ډول output زنځیر کولی شي پیکټ ونښلوي او کرنل به هغه لاره چې دمخه یې ټاکلې وه کاروئ. د route ډول زنځیر هغه طریقه ده چې نوې لټون غواړي.

table inet bypass {
  chain mark {
    type route hook output priority mangle; policy accept;
    socket cgroupv2 level 2 "app.slice" meta mark set 0x1 comment "app bypass"
  }
}
ip rule add fwmark 0x1 lookup 200
ip route add default via 203.0.113.1 dev wlan0 table 200

بیا نښې ته هغه پالیسي قاعده ته اړتیا ده چې هغه جدول ته لیږي، او هغه جدول باید بشپړ وي: اصلي لاره، هغه محلي منزلونه چې اپلیکیشن ته لا اړین دي، او پورتنۍ ګېټوې چې واقعاً ځواب ورکوي.

د نښې ارزښت په قصد ټاکئ. WireGuard د باندني لېږد ترافیک لپاره خپله fwmark کاروي، او په ناڅاپي ډول ورته شمیرې ته رسېدل کولی شي د تونل خپله لارښوونې استثنا په داسې ډول خرابه کړي چې تشخیص یې دردناک وي.

سرچینه پته لارې تعقیب نه کوي

هغه ساکټ چې دمخه یې د تونل لارې لپاره سرچینه پته ټاکلې وه، د بیا لارښوونې وروسته هم هغه پته ساتي. د لارې بدلون کې هېڅ شی هغه بیا نه لیکي، نو ځکه پیکټ د فزیکي انټرفیس څخه د خصوصي سرچینې سره وځي چې پورتنی شبکه یې بېرته نه شي لیږلی.

ښکارېدونکی نښه هغه اپلیکیشن دی چې د ډیټا لیږلو په څیر ښکاري او هېڅکله ځواب نه ترلاسه کوي، او د فایر وال ثبت چې هېڅ نه ښیي ځکه پیکټ هېڅکله بېرته نه راغی.

تنګ سمون هغه د سرچینې ژباړې قاعده ده چې د هغه اپلیکیشن نښې او د هغې ریښتیني وتلو انټرفیس پورې محدوده ده، له دمخه موجود NAT سره یوځای شوې، نه یې بدله کوونکې:

table inet bypass {
  chain postrouting {
    type nat hook postrouting priority srcnat; policy accept;
    meta mark 0x1 oifname "wlan0" masquerade
  }
}

یوازې استثنا وژباړئ او نور هېڅ. پراخه masquerade قاعده نښه سمه کوي او ستاسو وړتیا له منځه وړي چې ووایاست کوم ترافیک کومه لاره واخیسته. په نښه، ریښتیني وتلو انټرفیس او که شئ کولای، د اپلیکیشن خپله پته سمون وکړئ. پراخې قواعد لیکل اسانه او وروسته پلټل نږدې ناممکن دي.

لا هم له استثنا څخه څه وتښتي

د نومونو حل ممکن د بلې cgroup په جلا resolver پروسه کې راشي، نو د براوزر ساکټ ډلبندي کول د هغې لټونونه نه ډلبندي کوي. که د resolver پوښتنې په تونل کې پاتې شي او اړیکه له هغې بهر ووځي، split-horizon ځوابونه ممکن له لارې سره سمون نه وخوري. هغه ناسمون د DNS غلطیو په څیر ښکارېدونکي خو نه وي خرابۍ رامنځته کوي.

ماشوم پروسې په ډیری تنظیماتو کې cgroup په میراث اخلي، خو هغه مرستندوی چې ځان خپل scope ته لېږدوي نه یې اخلي. د انګیرنې پرځای وګورئ، په ځانګړي ډول هر هغه څه لپاره چې ځان بیا پرمخ وړي.

په پای کې، فیصله وکړئ چې کله تونل بند وي څه باید وشي. هغه استثنا چې په خاموشۍ سره بشپړ تېرېدل شي د هغې استثنا څخه جلا امنیتي دریځ دی چې په ناکامۍ کې بندېږي، او یوازې یو یې هغه دی چې تاسو یې اراده لرله.

اړوندې مقالې