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

ولې په LAN پته هیڅ ځواب نه راځي

نوم ځای یو بشپړ شبکه‌یي سټیک دی: انټرفیسونه، لارې، د اور وژنې قواعد او یو شخصي لوپ‌بیک۔ هغه پروسه چې د ip netns exec له لارې پیل کیږي یوازې همدا سټیک ویني او نه بل څه، نو هغه پته چې تړل کیږي یوازې د نوم ځای دننه حل کیږي۔ د کوربه خپله 127.0.0.1 په بشپړه توګه بله لوپ‌بیک ده۔

له همدې امله په کوربه کې curl ناکام کیږي، پداسې حال کې چې د نوم ځای دننه همدا امر بریالی کیږي۔ اپلیکیشن روغ دی؛ پته یوازې د کوربه په سټیک کې نشته۔

یو پورټ د socat ټوپ سره خپور کړئ

socat دوه سټیکونه د کارونکي په فضا کې نښلوي، کله چې یوازې یو TCP پورټ باید واوړي دا کافي ده۔ د کوربه اړخ په LAN اوریدل کوي او د هر منل شوي اړیکې لپاره د نوم ځای دننه دوهم socat پیلوي چې د اپ لوپ‌بیک سره نښلوي۔ داخلې پروسه اپلیکیشن ته په سمه توګه لکه څنګه چې یو ځایي کلاینټ رسیدلی شي۔ د نوم ځای په لارښوونه کې هیڅ نه بدلیږي، نو اپ تونل د خپل یوازیني وتلو په توګه کاروي۔

socat TCP-LISTEN:9100,reuseaddr,fork EXEC:'ip netns exec vpn socat STDIO tcp-connect:127.0.0.1:9100',nofork

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

کله چې له یوه ډیر پورټونه واوړي veth جوړه وکاروئ

کله چې څو پورټونه یا پروتوکولونه باید واوړي، یا نور کوربه اړیکې پیل کړي، veth جوړه سم ځواب دی۔ یو سر په کوربه کې پاتې کیږي، بل نوم ځای ته ځي، او یو کوچنی /30 دواړو خواوو ته ثابته پته ورکوي۔ بیا د کوربه لار د نوم ځای پته د جوړې له لارې لیږي۔

ip link add veth0 type veth peer name veth1
ip link set veth1 netns vpn
ip addr add 10.77.0.1/30 dev veth0
ip link set veth0 up
ip netns exec vpn ip addr add 10.77.0.2/30 dev veth1
ip netns exec vpn ip link set veth1 up

د کوربه له لارې د ډیفالټ لاره مه زیاته کړئ پرته له دې چې زندان ماتول غواړئ۔ تونل باید وتل وي، نو د جوړې له لارې یوازې خپره شوې خدمت پته ته رسیږي۔ نوم ځای ته د هغې خپل ریزالور فایل هم ورکړئ، ځکه ip netns exec /etc/netns/vpn/resolv.conf لولي او پرته له هغې د زندان دننه د نومونو حل خالي دی۔

له کوربه نه، بل ماشین ته ازموینه وکړئ

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

ip netns exec vpn ss -lntp

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

اړوندې مقالې