د CGNAT له شا څخه د VPN کلاینټ پورټ خپرول: د چکلیست
یوازې د منزل NAT قاعده نیمګړې پرانیستې اړیکې درکوي۔ د تونل پته ټینګه کړئ، په دواړو خواو ژباړه وکړئ او د ازموینې دمخه د ځواب لاره تایید کړئ۔
یو خدمت د آپریټر کچې NAT شاته لپ ټاپ ته کېږدئ، هغه لپ ټاپ د VPN له لارې VPS ته وګرځوئ، او بهر هیڅوک نشي کولی ورته ورسیږي۔ تاسو په VPS باندې د منزل NAT قاعده ورزیاتوئ او له چوپتیا هم بدتر څه ترلاسه کوئ: اړیکې پرانیستل کیږي، بیا ودریږي۔ ځواب ورک نه دی، هغه د کلاینټ د خپل ډیفالټ لارې له لارې وځي، چې مانا یې دا ده چې سرور هغه هیڅکله نه ویني۔ دا پنځه کتنې په ترتیب سره وکړئ او په لومړۍ کتنه ودریږئ چې نه ټینګیږي۔
تایید کړئ چې سرور به په بشپړه توګه فوروارډ وکړي
له یوې ژباړې لیکلو دمخه دا کڅوړه نښه کړئ۔ د هغه پاکټ لپاره DNAT قاعده چې کرنل یې فوروارډ کول ردوي، د قاعدو پارسر مني او بیا یې د فوروارډ لاره غورځوي، چې د فایر وال ستونزه ته ورته وخت ختمیدل رامنځته کوي۔
sysctl net.ipv4.ip_forward
sysctl -w net.ipv4.ip_forward=1
په روان کرنل کې یې تنظیمول د بیا پیل په اوږدو کې تنظیمولو سره یو څه نه دي۔ net.ipv4.ip_forward=1 په /etc/sysctl.d/ لاندې یوه فایل کې ولیکئ، sysctl --system چل کړئ، او بیا ارزښت بیرته ولولئ د دې پرځای چې باور وکړئ فایل پورته شو۔ هغه کانټینر چې خپل شبکه یی نومځای اداره کوي هماغه ارزښت د هغه ځای په دننه کې غواړي، نه یوازې په کوربه۔
که بیرته لوستل لاهم صفر وي، دلته ودریږئ۔ لاندې هیڅ شی به کار ونه کړي۔
د تونل پته ټینګه کړئ دمخه چې کومه قاعده ورته اشاره وکړي
پول پتې د اړیکې په ترتیب سره ویشي، نو هغه قاعده چې د ننني کرایې لپاره لیکل شوې ممکن بله اونۍ په چوپتیا سره بل کلاینټ ته اشاره وکړي۔ پته د رارسیدو ترتیب سره نه، بلکې د سند هویت سره وتړئ۔
client-config-dir /etc/openvpn/ccd
ifconfig-push 10.77.0.14 10.77.0.13
هغه جوړه د نقطه تر نقطې تونل د کلاینټ پای او د پیر پای دی، او سرور د سند عام نوم ته کیلي شوی۔ په فرعي شبکه توپولوژي کې دویم ارزښت د هغې پرځای د شبکې ماسک په توګه لوستل کیږي، نو هغه بڼه ولیکئ چې د کارول شوې توپولوژي سره سمه وي۔ بیا کلاینټ بیرته وصل کړئ او پته په خپل کلاینټ باندې ولولئ، ځکه چې د سرور نظر د پول په اړه د هغه څه ثبوت نه دی چې کلاینټ تنظیم کړی۔
که پته د بیا وصلیدو وروسته بدله شي، ودریږئ۔ هغه NAT قاعده چې خوځنده هدف تعقیبوي به له وقفې سره ناکامه شي او تاسو ته به هیڅ ونه ښیي۔
په دواړو خواو ژباړه وکړئ
د منزل ژباړه راتلونکی پاکټ کلاینټ ته لیږي۔ د سرچینې ژباړه هغه څه ده چې کلاینټ اړ کوي سرور ته ځواب ووایي نه اصلي لیږونکي ته، او هغه قاعده همدغه ده چې خلک یې پرېږدي۔
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 29443 -j DNAT --to-destination 10.77.0.14:29443
iptables -t nat -A POSTROUTING -d 10.77.0.14 -p tcp --dport 29443 -j SNAT --to-source 10.77.0.13
د دویمې قاعدې پرته کلاینټ د خپل ISP پورتنۍ لینک له لارې ځواب وایي، نو لرې پیر د سرچینې هغه پته ویني چې هغه ورسره هیڅکله نه ده خبرې کړې، په داسې حال کې چې سرور د ځواب لپاره هیڅ تعقیبي ننوتنه نه لري۔ بهرنی کتونکی نیمګړی بشپړیدونکی لاس نیول ویني، او دا هغه نښه ده چې خلک د فایر وال هغه تېروتنې پلټنې ته لیږي چې نشته۔
دواړه قاعدې په iptables -t nat -S سره بیرته ولولئ او تایید کړئ چې د انټرفیس نوم هغه دی چې عامه پته لري۔ په هغه کوربه چې لا دمخه د nftables سره فلټر کوي، ژباړه په ورته پته کورنۍ د nftables NAT ځنځیر کې ولیکئ د دې پرځای چې وسایل یوځای کړئ۔
د فلټر جدول تیریدو ته پرېږدئ
د NAT جدولونه سرلیکونه بیا لیکي؛ دوی اجازه نه ورکوي۔ د ډیفالټ DROP پالیسۍ سره فوروارډ شوی جریان خپله مننه ته اړتیا لري، او د بیرته ستنیدو لوری چې ډیری پالیسي یې لا دمخه د established,related قاعدې سره پوښي۔
iptables -A FORWARD -i eth0 -o tun0 -p tcp --dport 29443 -m conntrack --ctstate NEW -j ACCEPT
iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
له هر څه زیاتولو دمخه د FORWARD ځنځیر پالیسي وګورئ، ځکه چې د ژر DROP ترتیب دا ټاکي چې ستاسو قاعده به هیڅکله وکتل شي که نه۔ په هغه کوربه چې فلټر یې په nftables کې اوسیږي، ورته قاعدې د inet جدول forward هنګ ته ورزیاته کړئ او تایید کړئ چې بنسټیز ځنځیر واقعیا فوروارډ شوی ترافیک ویني نه یوازې ځایي ننوتنه۔ که د نوي قاعدې پاکټ شمیرونکی په صفر پاتې شي په داسې حال کې چې NAT شمیرونکي لوړیږي، پاکټ ستاسو له قاعدې دمخه غورځول کیږي۔ دا د ځنځیرونو ترتیب لوستلو سیګنال دی، نه د همدې قاعدې دویمه کاپي زیاتول۔
دا د بهرنۍ شبکې څخه ثابت کړئ
له نااړوندې شبکې څخه ازموینه وکړئ۔ په همدې LAN کې د بل ماشین کتنه کیدای شي د hairpin NAT ملاتړ له لارې تیره شي او هیڅکله هغه لاره وانزمایي چې لرې کلاینټ یې کاروي، نو هلته شنې پایله غلط شی ثابتوي۔
tcpdump -ni any port 29443
conntrack -L | grep 29443
نیول په سرور او کلاینټ دواړو کې په یو وخت چل کړئ۔ د سرور نیول ښیي چې ژباړل شوی پاکټ د تونل په لور وځي که نه؛ د کلاینټ نیول ښیي چې غوښتنه رسیږي که نه او ځواب چیرته نیول شوی۔ په conntrack -L کې ژباړې ننوتنه ثابتوي چې قاعده سره سمون درلود، او د هغې نشتوالی ثابتوي چې پاکټ هیڅکله NAT ځنځیر ته ونه رسید۔
د پورټ سکینرونه کمزوري ثبوت دی۔ دوی پورټ تړلی اعلانوي تر هغه چې اپلیکیشن وتړل شي او واوري، نو اصلي خدمت ته اصلي اړیکه وکاروئ۔ کله چې بالاخره کار وکړ، افشا یوازې په هغه یوه پورټ کې وساتئ: SSH یا د مدیریت پینل فوروارډ کول ځکه چې لومړنۍ قاعده ناخوښه وه، د خدمت خپرولو څخه خورا لویه پریکړه ده۔