غوښتنه تل د همدې جملې یو ډول وي: VPN د براوز کولو لپاره وساتئ، خو SSH یا د بیک اپ کار ته اجازه ورکړئ چې عادي اړیکه وکاروي. د دې په اړه چې څرخیږي، د iptables NAT قاعدو سره پورټ فوروارډ کول، دا کار نه کوي. د NAT قاعده د یو جریان دننه پتې او پورټونه بیا لیکي؛ هغه هېڅکله نه ټاکي چې پاکټ کوم انټرفېس ته وځي. دا پرېکړه د روتینګ پلټنې پورې اړه لري، او روتینګ پلټنه د پورټ لیدلو لپاره مرستې ته اړتیا لري.

ولې ساده روت د پورټ سره مطابقت نه شي کولی

لینکس د منزل پته په جدول کې پلټلو سره روت ټاکي، وروسته له دې چې نوماند جدولونه د پالیسي قاعدو له لارې فلټر شي. هغه قاعدې کولی شي د فایر وال نښه، سرچینې پته، راتلونکی انټرفېس یا UID سره مطابقت وکړي. د روت داخلول خپله کوم د پورټ ساحه نه لري، ځکه چې روت د ټرانسپورټ هدر د اهمیت تر ټاکلو دمخه غوره کیږي.

اوسني iproute2 او کرنل د قاعدې غوراوی پراخوي: ipproto، sport او dport منل کیږي، نو ip rule add ipproto tcp dport 22 table 100 اراده په یوه لیکه کې څرګندوي. ip rule add help په ریښتیني هوسټ باندې چل کړئ ترڅو وګورئ چې ستاسو بیلډ dport لیست کوي که نه. که یې کوي، په یوه کمانډ کې بشپړ یاست؛ که نه، لاندې د نښې لاره معادل ده.

په هر حال، قاعده یوازې یو اشارہ دی. جدول 100 لا هم روت ته اړتیا لري، او دا هغه برخه ده چې خلک یې هېروي.

درې برخې، یا یوه

عصري بڼه پورتنۍ یوه قاعده او په بدیله جدول کې یو روت دی. کلاسیکه بڼه په منځ کې netfilter ورزیاتوي: پاکټ نښه کړئ، بیا په قاعده کې نښه سره مطابقت وکړئ. دواړه په هماغه پلټنه پای ته رسي؛ توپیر یې په دې کې دی چې پورټ چېرته لوستل کیږي.

د نښې طریقه ځکه شته چې netfilter ټرانسپورټ هدر ویني او د روتینګ کوډ په تاریخي ډول نه ویني. دا ټول میکانیزم دی، او دا څرګندوي چې ولې بدیله لاره درې همکارې برخې دي نه یو هوښیار کمانډ.

درې برخې په ترتیب

لومړی، هغه جریانونه چې غواړئ واوړئ نښه کړئ، په داسې زنځیر کې چې د روت پرېکړې دمخه د نښې شتون لپاره کافي ژر چلیږي:

nft add table inet vpnexempt
nft 'add chain inet vpnexempt out { type route hook output priority mangle; }'
nft add rule inet vpnexempt out tcp dport 22 meta mark set 0x1

دوهم، نښه شوي پاکټونه جلا جدول ته واستوئ:

ip rule add fwmark 0x1/0x1 table 100

دریم، هغه جدول ته د فزیکي لینک له لارې ډیفالټ روت ورکړئ. پتې یوازې بېلګې دي؛ خپلې ځای پرځای کړئ:

ip route add default via 192.168.1.1 dev wlan0 table 100

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

له لومړي پاکټ وروسته څه شی دا روان ساتي

نښې د وتونکو پاکټونو لپاره پلي کیږي. ځواب په فزیکي انټرفېس باندې د هغې پتې سره راځي چې لینک ټاکلې وه، او اصلي جدول ممکن د هغه منزل لپاره لا هم ټنل غوره کړي. دوه میکانیزمونه د ځواب لاره ثابته ساتي: د لینک پتې لپاره د سرچینې پر بنسټ قاعده، او connection tracking چې پرېکړه د جریان په ټول ژوند کې ساتي. نښه په conntrack کې خوندي کول او په ځواب کې یې بیا رغول د حالت لرونکې استثنا د ثابتولو عادي لاره ده.

د بیرته لارې فلټر کول بل خاموش وژونکی دی. که کرنل د بیرته لارې کلکه تصدیق کوي او ځواب داسې انټرفېس ته راځي چې اصلي جدول به یې نه غوره کاوه، پاکټ پرته له پیغامه غورځول کیږي. rp_filter ډیفالټ ارزښتونه د ویش له مخې او د دې له مخې چې انټرفېس فوروارډ کیږي که نه توپیر لري، نو د دې فرض کولو پرځای چې بند دی، اغیزمن ارزښت ولولئ.

د ټنل خپله ټرانسپورټ نښه مه کوئ. WireGuard یا UDP OpenVPN ټنل TCP 22 نه دی، نو پورتنی نسخه خوندي ده، خو هغه استثنا چې د ټنل منزل پرته هر څه وي کولی شي کوډ شوي پاکټونه ونیسي او ټنل داسې مات کړي چې د روتینګ لوپ په څیر ښکاري.

د فرض کولو پرځای یې وګورئ

له کرنل وپوښتئ چې کومه لار به غوره کړي، د منزل لپاره او د پورټ لپاره، بیا ریښتینی لیږد چل کړئ:

ip route get 203.0.113.10
ip rule show
nft list ruleset

که نښه شته خو کاونټرې هېڅکله نه خوځي، قاعده مطابقت نه کوي. کاونټرې د هغه ترتیب او هغې پالیسۍ ترمنځ توپیر دی چې کرنل یې پلي کوي.

کله چې دا غلط وسیله وي

د پورټ پر بنسټ استثناوې په طبیعت کې نازکې دي. خدمتونه پورټونه بدلوي، HTTP/3 د UDP 443 په توګه راځي، او یو اپلیکیشن کولی شي د بېلابېلو ډولونو څو جریانونه پرانیزي. که ریښتینې اړتیا دا وي چې دا پروګرام عادي لینک وکاروي، د روتینګ طبقه غلطه ځای دی؛ د شبکې نوم فضایه یا د هر اپلیکیشن پروکسي ښه ځواب دی.

که اړتیا دا وي چې دا سبنیټ عادي لینک وکاروي، نښې په بشپړه توګه پرېږدئ او یو ډېر ځانګړی روت ورزیات کړئ. دا ساده ده، په یوه جدول کې ښکاري، او بل کس یې پرته له دې چې قواعد ولیکي کتنه کولی شي.

د فایر وال لمس کولو دمخه ولیکئ چې له دریو اړتیاوو کومه واقعاً لرئ. پورتنی میکانیزم دقیق دی، او په غلطې طبقې باندې دقیقیت یوازې اوږده خنډ دی.

اړوندې مقالې