یو براوزر https://203.0.113.10:8443 غواړي، پروکسي اړیکه مني، او د WireGuard peer په خدمت کې هیڅکله ځواب نه راځي۔ د DNAT قاعده خپله کار کوي؛ هغه برخه چې ناکامه کیږي ځواب دی۔ پاکټ د دواړو ژباړو له لارې تعقیب کړئ او ورکه قاعده ښکاره کیږي۔ حل په سم hook کې یوه بله NAT جمله ده، نه نوی تونل۔

یوه غوښتنه له پیل څخه تر پای پورې تعقیب کړئ

غوښتنه د پروکسي عام انٹرفیس ته رسیږي، سرچینه د مراجع عامه پته او هدف د پروکسي پته ده۔ په nat PREROUTING کې د DNAT قاعده هدف د peer د تونل پتې 10.90.0.2 ته بیا لیکي۔ بیا د لارښوونې پرېکړه پاکټ wg0 له لارې بهر ته لیږي، او د لیږد لار بشپړیږي۔

په peer کې پاکټ اوس اصلي عامه سرچینه پته لري، ځکه چې هیڅ شي بیا نه ده لیکلې۔ خدمت اړیکه مني او خپل ځواب خپل ډیفالټ ګیټوی ته لیږي، کوم چې د peer مخې ته کورنی روټر دی۔ هغه روټر د هغه بهیر لپاره هیڅ حالت نه لري چې هېڅکله یې نه دی لیدلی، نو یا پاکټ غورځوي یا یې خپلې عامه پتې ته ژباړي، چې مراجع به یې ونه مني۔

بې توازن ټوله ستونزه ده: غوښتنه د پروکسي له لارې ځي، او ځواب هڅه کوي مستقیم لاړ شي۔ د پروکسي د اړیکو تعقیب یوازې هغه وخت مرسته کوي چې ځواب د پروکسي له لارې بېرته راشي، او تر هغه ځایه نشي کولی بېرته راشي چې سرچینه پته لا هم اصلي مراجع ته اشاره کوي۔

بېرته ژباړه اضافه کړئ

د لیږل شوي بهیر سرچینه peer ته له تلو مخکې د پروکسي د تونل پتې ته بیا ولیکئ۔ بیا خدمت 10.90.0.1 ته ځواب وایي، پروکسي یې ترلاسه کوي، او پاکټ مراجع ته له بېرته تلو مخکې د اړیکو تعقیب دواړه ژباړې اړوي۔

iptables -t nat -A PREROUTING -p tcp -m multiport --dports 8080,8443 -j DNAT --to-destination 10.90.0.2
iptables -t nat -A POSTROUTING -d 10.90.0.2 -o wg0 -p tcp -m multiport --dports 8080,8443 -j SNAT --to-source 10.90.0.1

د POSTROUTING قاعده په قصد سره تنګه ده: دا د ژباړل شوي هدف او د تونل انٹرفیس سره سمون خوري، نو هغه نااړوند ترافیک بیا نه لیکي چې ناګهانه wg0 له لارې وځي۔ یوه پراخه masquerade قاعده به د مراجع پته هم پټه کړي، خو دا به د هر بهیر لپاره وکړي او د NAT جدول کتنه به ستونزمنه کړي۔

قاعدې هغه ځای کې ږدئ چې تونل شته

هغه قاعدې چې د تونل پتې یا انٹرفیس ته اشاره کوي باید وروسته له هغې چل شي چې wg-quick یې ترتیب کړ۔ انٹرفیس له PreUp مخکې جوړیږي، خو پتې، MTU، DNS او لارې وروسته پلي کیږي، او PostUp هغه وخت چلیږي چې دا ټول ځای پرځای وي۔ اضافې په PostUp او حذفونه په PreDown کې ږدئ۔

PostUp = iptables -t nat -A PREROUTING -p tcp -m multiport --dports 8080,8443 -j DNAT --to-destination 10.90.0.2
PostUp = iptables -t nat -A POSTROUTING -d 10.90.0.2 -o wg0 -p tcp -m multiport --dports 8080,8443 -j SNAT --to-source 10.90.0.1
PreDown = iptables -t nat -D PREROUTING -p tcp -m multiport --dports 8080,8443 -j DNAT --to-destination 10.90.0.2
PreDown = iptables -t nat -D POSTROUTING -d 10.90.0.2 -o wg0 -p tcp -m multiport --dports 8080,8443 -j SNAT --to-source 10.90.0.1

حذفونه باید د اضافو سره ټوکن په ټوکن سمون خوري، د multiport او انٹرفیس سمونونو په ګډون۔ هغه حذف چې په یو سمون کې توپیر ولري هېڅ نه حذفوي، او بل بیا تړل د قاعدې دوهمه کاپي اضافه کوي۔ له څو بیا تړلو وروسته جدول کې داسې نقلونه وي چې د ترتیباتو کرښې ته یې نښلول ستونزمن دي۔

پایلله iptables -t nat -S سره له بیا تړلو وروسته وګورئ۔ که هماغه قاعده دوه ځله ښکاره شي، PreDown کرښه سمون نه خوري او پاکول په خاموشۍ ناکام کیږي۔

لیږد، فلټر او بل NAT

د IPv4 لیږد په دوامداره توګه فعال کړئ، بیا په فلټر جدول کې لیږل شوي بهیر ته اجازه ورکړئ۔ DNAT د FORWARD زنځیر مخکې پېښیږي، نو د فلټر قاعده د عامه پتې پرځای د ژباړل شوي هدف سره سمون خوري۔ که UFW اوروژنه اداره کوي، اجازه د لارې قاعدې په توګه بیان کړئ؛ عادي host قاعده لیږل شوی ترافیک نه پوښي۔

دوه نور NAT طبقې لا هم کولی شي لار ماته کړي حتی کله چې د پروکسي قاعدې سمې وي۔ په کورني اړیکه کې عامه پته د روټر ده، او په هغې اوروژنه کې پورټ خلاصول هغه پورټ پروکسي ته لیږونکې پورټ-فوروارد ننوتنه جوړول نه دي۔ هغه پورټ چې له بهر څخه خلاص ښکاري خو هیڅ ځواب نه ورکوي، ډېری وختونه هماغه نقشه نه لري۔

په NAT VPS کې چمتو کوونکی عامه پورټ یوې خصوصي پتې ته نقشه کوي۔ نقشه باید هغه پورټ سره سمون وخوري چې تاسو یې اعلان کوئ، او ناسمون بیا هم د ماتی شوې تونل په څېر ښکاري۔ د WireGuard ترتیباتو بدلولو مخکې د چمتو کوونکي نقشه تایید کړئ۔

بېرته لار وګورئ او لګښت ومنئ

له هغه شبکه اړیکه ونیسئ چې د پروکسي LAN نه ده، بیا تر هغه چې اړیکه خلاصه ده د ژباړې جوړه وګورئ:

conntrack -L -p tcp --dport 8080
tcpdump -ni any tcp port 8080

د conntrack ننوتنه باید اصلي tuple، ژباړل شوی tuple او د ځواب لوری ښکاره کړي۔ که ځواب نه وي، peer د تونل له لارې نه لیږي، چې معمولاً مانا یې دا ده چې د SNAT قاعده نه ده پلي شوې یا د peer خپله اوروژنه بهیر غورځولی۔

یو ځل بیا پیل کړئ ترڅو ثابته کړئ چې PostUp قاعدې بیا پلي کوي، بیا تونل ودرولئ او تایید کړئ چې PreDown هغه لرې کړې۔ مړې قاعدې چې له قطعېدو وروسته پاتې کیږي، هماغه لامل دی چې وروستۍ بدلون ناڅاپي چلند کوي۔

په پای کې، د SNAT لګښت ومنئ۔ خدمت هر غوښتنه د پروکسي څخه راغلې ګڼي، نو د لاسرسي لاګونه، د هر مراجع د سرعت حدود او د اجازه شوو پتو لیستونه نور کاروونکي نه توپیروي۔ د hairpin قضیه د پروکسي LAN کې مراجعینو لپاره خپله سرچینه ژباړه غواړي۔ که peer ته ریښتیني د مراجع پتې ورته اړینې وي، بدیل د مراجع شبکې ته بېرته لار ده، چې ډېر کار دی خو معلومات ساتي۔

اړوندې مقالې