دوه A ریکارډونه، یوه پته، یو ډیمون: کوم نوم چې کاروونکی ولیکي، رارسېدونکی پیکټ یو شان دی، او د 1194 پورټ سره تړلي پروسې د دواړو توپیر لپاره هېڅ نه لري. دا د سمون په تمه غلط ترتیبات نه دي؛ دا د نوم پلټنې هغه پوله ده چې څه څرګندولای شي. هر څه چې د دوو OpenVPN نمونه ګانو ترمنځ غوره کوي باید هغه ارزښت وي چې کلاینټ یې په اړیکه کې اېږدي او مخکې برخه یې بېرته لوستلای شي، او عادي OpenVPN کلاینټ داسې ارزښت په ښکاره توګه نه اېږدي. راتلونکی ښیي چې دا تاسو چېرته پرېږدي، او کوم ترتیبات په رښتیا ترافیک جلا کوي.

له هغه څه پیل وکړئ چې حل کوونکی یې بېرته راګرځوي

کلاینټ د vpn-a.example غوښتنه کوي او یوه پته ترلاسه کوي؛ هغه پته او یو پورټ هغه ټول شیان دي چې هغه یې ډایل کوي. نوم د پلټنې پر مهال په محلي ډول مصرفېږي او هېڅکله پر تار ساحه نه جوړېږي، نو بل سر اورېدونکی نشي لیدلای چې کوم نښان کارول شوی. vpn-a.example او vpn-b.example یوې کوربې ته اشاره کړئ، دواړه پلټنې یو ځای ورکوي، له همدې کبله ډیمون پرته له دې چې توپیر ثبت کړي دواړه اړیکې په یوه نمونه کې څښي. پر پته ولاړ پروفایلونه هم په همدې دلیل د نوم ولاړ پروفایلو په څېر چلند کوي.

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

یوازینی شمېرل کېدونکی غوره کوونکی د پیکټ په دننه کې ځي

HTTP دا د Host سرلیک سره سمبالوي، او TLS د ClientHello دننه د سرور نوم غځېدنې سره، او په دې توګه یوه پته د یوه اورېدونکي تر شا ډېرو سایټونو ته خدمت کوي. دواړه کار کوي ځکه چې پر تار پروتوکول د یوې ځانګړې خدمت غوښتنه وړي. د OpenVPN اړوند حقیقت دا دی چې د منځګړي صندوق لخوا کتل شوې طبقه کې له دې ساحو هېڅ یوه نشته.

په عادي ترتیب کې د کنټرول چینل ساتونکی TLS لاس ورکول وروسته له دې چې باندنی ناسته ټینګه شي پېښېږي او د هغې په دننه کې وړل کېږي، نو هغه اورېدونکی چې هغه ناسته نه ده پای ته رسولې یو ناڅرګند بهیر ویني. هغه اوس هم کولای شي ووایي چې دا OpenVPN دی، ځکه چې د پیل بایټونو کې اوپکوډ او چوکاټ پېژندل کېږي، خو د سرور نوم، که وي، په کوډ شوې برخه کې ناست دی. هغه ډیزاین چې تمه لري له باندني پیکټ څخه مجازي کوربه ولولي، هغه ساحه لولي چې پروتوکول هېڅکله هلته نه لیکي. دا د دې له امله دی چې تونل څنګه جوړ شوی، نه د هغې سوري له امله چې ډېر هوښیار بڼه سمون یې بندولای شي.

د پروتوکول وېشونکی چېرته درېږي

د هغه ډول مالتېپلېکسر چې sslh پروژه یې مستند کوي پر یوه پورټ اوري، پیل بایټونه ګوري، او اړیکه هغه backend ته سپاري چې پېژندل شوی پروتوکول وایي. کله چې یو پورټ باید SSH، HTTPS او OpenVPN یوځای خدمت وکړي دا ریښتینی ارزښت دی.

sslh د هر پروتوکول لپاره جلا پلټنه ساتي، او د هغې TLS پلټنه کولای شي له ریښتیني ClientHello څخه د سرور نوم یا ALPN ارزښت راوکاږي. اصلي OpenVPN پېژندل د TLS غځېدنې لوستلو څخه بېله طبقه بندي ده، او دواړه یوځای نه کېږي، ځکه هغه کلاینټ چې هېڅکله اورېدونکي ساکټ ته ClientHello نه لېږي پلټنه پرته له لوستلو شيان پریږدي. له همدې کبله د OpenVPN سره سمون خوړونکی قاعده «دا OpenVPN کلاینټ دی» ځواب ورکوي او نور نه ځي. د هغې قاعدې شاته دوه OpenVPN backendونه جلا کېدلای نه شي، مخکې برخه د غوره کولو هېڅ بنسټ نه لري، او هر ناسته په یوه ځای کېني. مالتېپلېکسېنګ یو پورټ د بېلو خدمتونو ترمنځ شریکوي؛ دا د یو خدمت په دننه کې مجازي کوربه توب نه کوي.

هغه ترتیبات چې دوه سرورونه په رښتیا جلا کوي

تر ټولو ارزانه رښتینی وېش دوهمه عمومي پته ده، له هر نمونې لپاره یوه، او موجود پروفایلونه لا دمخه اړین شیان لري ځکه چې بېلو پتو ته اشاره کوي. بل د همدې پتې پر سر بېل پورټ دی، چې په هر پروفایل کې له یوې شمېرې پرته نور څه نه لګوي. TCP او UDP جلا د پورټ جدولونه ساتي، نو 1194/tcp او 1194/udp ناتړلي ساکټونه دي او له هر یوه یو کولای شي پر یوه کوربه یوځای وي؛ دا د لېړنې وېش دی نه د نوم له مخې لارښوونه، او ډېری وخت ورسره ګډوډېږي. دواړه انتخابونه د اور دېوال بیاکتنې تېروي، ځکه قاعده د هغه څه سره سمون خوري چې پیکټ واقعاً لري.

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

د OpenVPN مخې ته ایښودل شوی TLS پای کوونکی کولای شي وړ مخکې برخې ته ریښتینی سرور نوم ښکاره کړي، خو یوازې هغه وخت چې کلاینټ اړخ هم دې اضافي طبقې لپاره ترتیبات شوی وي. موجود پروفایلونه همدې پتې ته په اشاره کولو سره دا چلند نه ترلاسه کوي.

له جوړولو دمخه غوره کوونکی ثابت کړئ

هغې ساحې ته نوم ورکړئ چې backend به پېژني، بیا تایید کړئ چې کلاینټ یې واقعاً لېږي؛ که ځواب پته وي پلان ټینګ دی، او که هغه د لاس ورکولو په دننه کې سرور نوم وي چې هېڅکله اورېدونکي ته نه رسېږي، هېڅ DNS کار به یې ونه ژغوري. درې لارښوونې د اورېدونکي اړخ ژر فیصله کوي.

ss -lntup | grep -E ':443|:1194'
openssl s_client -connect vpn-a.example:443 -servername vpn-a.example </dev/null | head -n 20
journalctl -u openvpn-server@server-a -n 20 --no-pager

د openssl کرښه یوازې هغه ځای سند ورکوي چې په هغه پته څه شی TLS پای ته رسوي؛ د اصلي OpenVPN اورېدونکي پر وړاندې هغه بندېږي یا ناکامېږي، او دا پخپله د دې ځواب دی چې باندنې طبقه څه ښکاره کوي. د journal کرښه، چې پر هر backend لوستل شي، ښیي چې کومه نمونه ناسته منلې ده. د مخکې برخې لاګونه هغه څه لیکي چې طبقه بندي شوي او هېڅکله هغه څه نه چې موخه وه، نو د کاروونکي د کېناستو ځای په اړه backend یوازینی واکمن پاتې کېږي.

د بېلو سرورونو د رسېدو لپاره جوړ شوي دوه پروفایلونه سره پای ته ورسوئ، دوی یو یو وصل کړئ او د هر یوه لپاره backend لاګ ولیکئ. که دواړه ناستې په یوه journal کې ښکاره شي، غوره کوونکی غایب دی نه غلط ترتیبات شوی، او سمون هغه پته یا پورټ دی چې کلاینټ یې هدف ګرځولای شي. د لارښوونې قاعده سمول به مرسته ونه کړي، ځکه قاعدې هېڅکله د لارښوونې لپاره څه نه دي ورکړل شوي. کله چې وېش ریښتینی شو، هغه د پروفایلونو ترڅنګ ولیکئ تر څو بل کس دوهم لقب اضافه نکړي او له هغه څخه د کار تمه ونه کړي.

اړوندې مقالې