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

ولې کلاینټ دا نشي وړاندې کولی

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

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

ریښتینی د اپلیکیشن له مخې لارښونه هغه ځای شته چې پلیټ فارم ورته میکانېزم اضافه کړی، لکه په Windows کې د فلټر غږونه یا په Android کې د VPN خدمت تړل۔ د ډیسکټاپ OpenVPN نسخه له دې څخه هیڅ نه راوړي، او هیڅ ترتیب بیرغ یې نه جوړوي۔

Linux: پروسه نښه کړئ، بیا نښه لارښوونه کړئ

تر ټولو پاکه لاره پرېکړه د هغې پروسې سره تړي چې سوکیټ لري. د owner سمون په OUTPUT زنځیر کې د ځایي پیدا شوې ترافیک لپاره کار کوي، نو هلته لګول شوې نښه کولای شي جلا جدول غوره کړي:

iptables -t mangle -A OUTPUT -m owner --uid-owner 1001 -j MARK --set-mark 0x1
ip rule add fwmark 0x1 table 200
ip route add 192.168.1.0/24 dev eth0 src 192.168.1.0 table 200
ip route add default via 192.168.1.1 dev eth0 table 200

د کاروونکي 1001 بنډلونه بیا جدول 200 ته مراجعه کوي او له عادي دروازې څخه وځي، پداسې حال کې چې اصلي جدول لا هم نور هر څه تونل ته لېږي۔ د owner سمون یوازې ځایي پیدا شوو بنډلونو ته تطبیق کېږي، کوم چې هماغه ترافیک دی چې دلته مهم دی، او دا نشي کولای بل هوسټ ته لېږل شوي بنډلونه طبقه بندي کړي۔ د وسیلو سره وګورئ، نه د نیت سره: ss -tnp د جوړو شوو اړیکو ځایي پته او مالک پروسه ښیي، او ip route get 1.1.1.1 mark 0x1 ښیي چې نښه کوم جدول غوره کوي۔

د شبکې نوم ځای د یو خودکفا پروګرام لپاره کلک ځواب دی، ځکه چې د هغې دننه جوړ شوی هر سوکیټ په جوړښت سره ورسره تړلی وي، نو مرستندویه پروسې او زوزات اړیکې چلند په میراث وړي پرته له دې چې په بشپړه توګه طبقه بندي شي۔ بیه یې نلوهنه ده: یوه veth جوړه، په هره پای کې یوه پته، او د نوم ځای دننه یو ډیفالټ لار چې بېرته هوسټ ته اشاره کوي۔

ip netns add novpn
ip link add veth-host type veth peer name veth-ns
ip link set veth-ns netns novpn
ip addr add 10.200.0.1/24 dev veth-host
ip netns exec novpn ip addr add 10.200.0.2/24 dev veth-ns
ip netns exec novpn ip route add default via 10.200.0.1

Windows: منزل بیا هم پرېکړه کوي

Windows د منزل له مخې وتونکی انټرفیس غوره کوي، نو هغه پروګرام چې بله لار غواړي باید یو څه بدل کړي چې سټک یې د دې انتخاب څخه مخکې سلا اخلي۔ ForceBindIP لومړۍ نیمایي پوښي: پروګرام په داسې حالت پیلوي چې سوکیټونه یې لا دمخه هغې ځایي پتې ته تړلي وي چې تاسو یې نوموئ۔ یوازې همدا نه بدلوي چې بنډل له کوم انټرفیس څخه وځي، ځکه لار بیا هم منزل غوره کوي۔ په هغه لیپ ټاپ چې ډیفالټ لار یې تونل ته اشاره کوي سرچینه وتړئ، بنډل به سره له دې هم تونل ته ننوځي۔

نښه یوه لوستل کیدونکې بڼه لري، کله چې یو ځل یې وپېژنې۔ دا د هغې LAN پتې لپاره ریښتیا ده چې غوره شوی انټرفیس مستقیم ورته رسېږي، او په انټرنیټ کې هر هغه څه لپاره ناکامېږي چې لار یې تونل ته اشاره کوي۔ داسې ښکاري چې کار کوي تر هغه چې پروګرام کار یو مرستندوی ته وسپاري، ځکه هغه مرستندوی چې خپل سوکیټ پرانیزي هېڅکله د تړل کیدو په اړه نه وو ویلي شوي۔

پرېکړه واړوئ کله چې یوه پروسه غلطه واحد وي

که ریښتینی اړتیا پروګرام نه بلکې وسیله وي، هغه په خپل SSID یا VLAN کې کېږدئ او روټر ته پرېکړه پرېږدئ: هغه سرچینه عادي لار اخلي پداسې حال کې چې نورې سرچینې تونل کاروي۔ ځانګړې دروازې ماشین بله صادقانه ډیزاین دی: VPN ساتي او یوازې هغه منزلونه ترلاسه کوي چې روټر ورته لېږي۔ په VLAN کې پالیسي هره هغه جریان پوښي چې وسیله یې پرانیزي، په شمول هغو مرستندویه پروسو چې د Windows لاره یې مات کړه۔ بدلون په پراخه کې دی: په هغې وسیله دوو پروګرامونو ته نور د بېل توګه کتل نشي۔

دواړه د سرچینې یا منزل پالیسۍ دي چې پراخه یې په یوه جمله کې ویل کیدای شي۔ هیڅ یوه هم د اپلیکیشن له مخې نه ده، او هغه ډیزاین چې ځان د اپلیکیشن له مخې بولي هغه لومړی ځل ناکامېږي کله چې پروګرام خپل کار دویمې پروسې ته سپاري۔

اړوندې مقالې