په یوه لینوکس ماشین کې دوه VPN: هر یو جلا وڅېړئ پرته له دې چې پایلې ګډې کړئ
دوه شنه نښې سیالي نه ده۔ هر ټونل په خپل نوم ځای کې کېږدئ، لومړی تمه ولیکئ او د پایلې باور کولو دمخه لاره ثابته کړئ۔
دوه شنې د اړیکې نښې د پرتلهېدو په څېر ښکاري او معمولاً یوازې تصادف دي۔ که د ازموینې غوښتنه کولای شوای له دواړو ټونلونو څخه یو هم وکاروي، پایله په غوره حالت کې یوازې یو یې بیانوي او په بدترین حالت کې هېڅ یو هم نه۔ هرې کتنې ته شبکهییز زمینه، پامشوی منزل او د ازموینې له پیل دمخه لیکل شوې تمه ورکړئ۔ په خپلواکه توګه اداره شوي لینوکس ماشین کې، نوملرونکي شبکهییز نوم ځایونه د دغه جلاوالي پیرودلو تر ټولو ارزانه لاره ده۔
دوه شنې څراغونه پرتله نه ده
نوم ځای د لارښوونې جدولونه، سطحې او د شبکې د ډنډ حالت بېلوي، له همدې امله په یوه کې پیل شوې غوښتنه نشي کولای په خاموشۍ سره د بل ټونل پور واخلي۔ هغه څه چې نه یې بېلوي پروسیسر، فزیکي پورته لینک یا په کوربه کې روان د نوم حل خدمت دی۔ همدا په وروستي تشه کې د دغو ازموینو ډېری بې له دې چې څوک پام وکړي ناکامېږي۔ هغه پلټنه چې نوم ځای پرېږدي او د کوربه له حلال کوونکي وپوښتي، هغه ځواب راګرځوي چې له ازمویل شوي ټونل سره هېڅ تړاو نه لري۔
دا بهیر دوه مخکې چمتو شوي او تصویب شوي ازموینې نوم ځایونه، فعاله بهرنۍ اړیکه او ملاتړ شوي مراجعین په پام کې نیسي۔ دا هېڅ نه جوړوي، هېڅ نه ثبتوي او هېڅ ترتیب نه بدلوي۔ کله چې مراجع ته بشپړ ډیسکټاپ ناسته ته اړتیا وي یا له هغې بهر کار کولو څخه انکار وکړي، جلا مجازي ماشینونه بیا هم صادقانه انتخاب دی۔
له لومړي پرمخ وتلو دمخه تمه ټینګه کړئ
د هرې زمینې لپاره پرېکړه وکړئ چې بریا څنګه ښکاري: حلال کوونکی، د خدمت نوم، تمه شوی پته او هغه چلند چې د ټونل لوېدو پر مهال ورته اړتیا ده۔ هغه پلان شوي ارزښتونه په خپل کالم کې وساتئ، ځکه هغه ریکارډ چې پلان او کتنه ګډوي د وخت نښې سره خیالي کیسه ده۔ لاندې چکلېست هغه بڼه ده چې ریکارډ ورته اړتیا لري، او هر قطار باید له لومړنۍ اړیکې دمخه د ډکولو وړ وي۔
| Tunnel | Owner | Client interface inside the namespace | Proof command | Required on disconnect |
|---|---|---|---|---|
| vpn-a | the identity that owns profile A, recorded by name | its own tun device, never the host's | ip -n vpn-a -4 route get 10.55.10.20 | traffic stops; no host-side fallback |
| vpn-b | a separate owner, even when both run on one box | its own tun device in its own namespace | ip -n vpn-b -4 route get 10.55.20.20 | verified separately, never inferred from A |
د حلال کوونکي تارونو په هغه ریکارډ کې خپل قطار ته اړتیا ده، ځکه چې همدا هغه برخه ده چې تر ټولو زیات درواغ ویلای شي۔ د نوم ځای سره تړلي فایلونه، لکه /etc/netns/vpn-a/resolv.conf کله چې امر د نوم ځای په داخل کې وچلېږي په خپلو عادي لارو کې ښکاري، لکه څنګه چې د iproute2 د نوم ځایونو حواله تشریح کوي، خو د نوم خدمت د بدلون ترتیب او هر هغه ځایي حلال کوونکی چې دا یې پیلوي لا هم کولای شي پلټنه بېرته کوربه ته راکش کړي۔
په یو وخت کې یو ټونل، بل قطع شوی
A د هغې له موجود مالک له لارې وصل کړئ په داسې حال کې چې B لاندې پاتې وي، بیا د ادارې له زمینې څخه تګلاره، لارې او ټاکل شوې لاره وګورئ۔ لاندې له امرونو درې یې حالت لولي؛ یوازې وروستی یې د نوم خدمت سره اړیکه نیسي، او هېڅ یو یې د غوښتنلیک غوښتنه نه استوي۔
sudo ip -n vpn-a -4 rule show
sudo ip -n vpn-a -4 route show table all
sudo ip -n vpn-a -4 route get 10.55.10.20
sudo ip netns exec vpn-a getent ahostsv4 svc-a.lab.internalد لارې پلټنه د منزل په اړه فرضي پوښتنې ته ځواب وایي، له همدې امله نشي ښودلای چې خدمت ترافیک مني۔ د شاهد دغه دوه ډوله په جلا کالمونو کې وساتئ، ځکه د رد شوې اړیکې ترڅنګ روغه لاره یوه ریښتینې او عامه پایله ده۔ بیا د اصلي غوښتنلیک سره یوه بېزیانه اجازهلرونکې غوښتنه واستوئ، چې د A په زمینه کې د هغې عادي بېامتیازه کاروونکي په توګه پیل شي، د سند تصدیق او د غوښتنلیک تصدیق نیمګړي پاتې کړئ، او پایله د هغې سرچینې پتې سره یوځای ثبت کړئ چې خدمت لیدلې وه۔ A د هغې له مالک له لارې قطع کړئ او د B لپاره ټوله بنسټیزه کرښه تکرار کړئ، هر هغه ترتیب بدلون یاد کړئ چې کوئ، که نه نو دواړه بنسټیزې کرښې پرتلهکېدونکې نه پاتې کېږي۔
دواړه پورته، بیا په یو وخت کې یو لاندې
ثابته حالت اسانه برخه ده۔ کله چې دواړه ټونلونه وصل وي، د هرې زمینې پلټنه او د غوښتنلیک غوښتنه تکرار کړئ، بیا یو ټونل مات کړئ او بل وګورئ۔ کله چې د اړیکې ترتیب خپله پوښتنه وي، په معکوس ترتیب بیا وصل شئ۔
sudo ip netns exec vpn-a tcpdump -ni any port 443 -c 5
sudo ip netns exec vpn-b getent ahostsv4 svc-b.lab.internal
sudo ip -n vpn-b -4 route get 10.55.20.20نیول هغه جنجالونه حل کوي چې د غوښتنلیک پایله یې نشي حل کولای: ښیي چې غوښتنه ستاسو د تمې وړ سطحې له لارې ووته که له یو بل بشپړ توپیر لرونکي شي څخه۔ د هر بدلون لپاره د مالک کړنه، د وخت نښه، د لارې پایله، د نوم پایله او د غوښتنلیک پایله ثبت کړئ۔ بیا د اغېزمن شوي نوم ځای په داخل کې د خوندي تړل کېدو شرط وګورئ، ځکه جلاوالی د بندولو کلي نه دی۔ نوم ځای دوه ټونلونه جلا ساتي؛ خو کله چې د هغې پروفایل ووایي چې ترافیک باید ودرېږي، هېڅ یو یې هم له ترافیک وړلو نه منع نه کوي۔
دا ریکارډ څه ادعا کولای شي او څه نه
یوه بریالیتوب د دغې ترتیب لپاره، په دغه کوربه، په هغه وخت کې هماغه کتنې ثابتوي۔ دا د یوې ډیسکټاپ لارښوونې جدول شریکولو دوه مراجعینو په اړه هېڅ نه وایي، او د تېزوالی په اړه هم هېڅ نه وایي کله چې دواړه ټونلونه بار وړي۔ دا جلا ازموینې لرونکې جلا پوښتنې دي، او پرتله یوازې هومره ښه ده چې هر قطار ته نښلول شوې زمینه ده۔
ناکامۍ په ریکارډ کې د بریالیتوبونو ترڅنګ وساتئ، په دې نښه چې په هغه وخت کې کوم ټونل پورته و۔ هغه پاکه پاڼه چې د اندازهکېدنې پر مهال حالت پټوي له هغې بدرنګه پاڼې څخه بدتره ده چې هغه ښیي۔ هغه څه چې ریکارډ بیا وروسته د بیا کارولو وړ کوي زمینه ده، نه نمره۔
په یوه ماشین کې دوه ټونلونه صادقانه پرتله کېدای شي، خو یوازې هغومره زمینو کې چې تاسو یې واقعاً کنټرول کړي وو۔ له دې هاخوا هر څه یوه هیلې ده چې څنګ ته یې شنه نښه ده۔