خب امروز میخوایم راجبع تانل و انواع تانل صحبت کنیم. این که تانل چیه؟ کاربردش چیه؟ و خب چجوری خودمون تانل بزنیم؟

خب چیزی که درک تانل و تانل زدن رو برای من راحت کرد، این بود که تانل زدن رو دقیقاً به چشم لولهکشی نگاه کردم. اگه شما هم بتونید موضوع رو دقیقاً شبیه لولهکشی تصور کنید، کمتر گیج میشید.
شما کامپیوتر خودتون رو از طریق یه تانل به کامپیوتر A وصل میکنید، بعد همون رو به کامپیوتر B وصل میکنید و در نهایت با IP کامپیوتر B توی اینترنت کارهاتون رو انجام میدید.
میبینید؟! موضوع دقیقاً شبیه لولهکشیه؛ ترافیک شما از طریق لولههایی که به هم وصل کردید منتقل میشه.
خب، برای اینکه موضوع روشنتر بشه، اجازه بدید با یه سناریو شروع کنیم.

فرض کنید چنین شبکهای داریم؛ شبکهای که شامل دو تا کامپیوتر میشه که از طریق ADSL به اینترنت متصل هستن و IP داینامیک (Dynamic IP) دارن.
همونطور که میدونید، داخل ایران و خیلی از جاهای دیگه، ISPها به دلایل امنیتی تمام پورتهای ورودی شبکه شما رو میبندن و شما اجازه ندارید از بیرون به شبکه خودتون دسترسی داشته باشید.
همچنین داخل شبکهای که کشیدیم، یک سرور با IP استاتیک (Static IP) داریم که بهراحتی از هر جای اینترنت میشه بهش دسترسی داشت و اون رو دید.
حالا اگه بخوایم از کامپیوتر A به کامپیوتر B ریموت بزنیم، باید چیکار کنیم؟ اصلاً همچین چیزی شدنی هست؟
قبل از اینکه ادامه مطلب رو بخونید، یه کم به جواب این سوال فکر کنید و بعد برید سراغ قسمت بعدی.

خب همونطور که بهتون گفتم، به دلیل محدودیت ISPها، نمیتونیم پورت 3389 رو روی IP داخلی 192.168.1.2 (همون کامپیوتر خودمون) فوروارد کنیم.
پس بیاید یه جور دیگه به مسئله نگاه کنیم.
اگه بتونیم از پورت 3389 کامپیوتر خودمون، به پورت 3389 سرورمون یه ارتباط بزنیم چی؟!
بعد به جای اینکه مستقیم به IP داینامیک کامپیوتر B ریموت بزنیم، به IP داینامیک سرور خودمون ریموت میزنیم و سرور، ترافیک رو میفرسته سمت کامپیوتر B.
اینجا از مفهوم تانل استفاده میکنیم.
ولی چون محدودیت داریم و نمیتونیم از سرور به کامپیوتر B تانل بزنیم، میایم یه Reverse Tunnel میزنیم؛ یعنی کامپیوتر B خودش به سرور وصل میشه و میگه:
«پورت 3389 من رو به پورت 3389 سرور وصل کن.»
اینجوری هرکی به IP سرور (مثلاً 188.136.196.2) ریموت بزنه، سرور اون رو منتقل میکنه به کامپیوتر B.
قشنگ نیست؟ 😄
اگه از من بپرسید، میگم زندگی یعنی همین...
مسئله اینه که این موضوع از دور خیلی ترسناک به نظر میاد، ولی ابزارهایی وجود دارن که پیچیدگیها رو برای ما حل میکنن و ما فقط باید به سناریومون فکر کنیم.
ما میتونیم از طریق SSH به سرورمون یه لولهکشی کنیم (بخونید: تانل بزنیم) و این کار با دستور SSH و سوئیچ -R انجام میشه.
CMD رو باز کنید و این دستور رو وارد کنید:
ssh -R 3389:localhost:3389 root@188.136.196.2
راهنما:ssh -R serverPort:localhost:computerPort userNameServer@IpAddressServer
ببا این دستور میتونید هر پورتی رو به هر پورت دیگهای به صورت Reverse روی سرور وصل کنید.
کار تموم شد؟! 😄
بلهههههه، به همین راحتی شما پورت 3389 کامپیوتر خودتون رو به سرور وصل کردید و از این به بعد هرکی به IP سرور ریموت بزنه، انگار داره به کامپیوتر خونهتون وصل میشه.
خب برای روشنتر شدن موضوع، اجازه بدید یه مسئله دیگه هم مطرح کنیم و با تانلها حلش کنیم.
فرض کنید اینترنت شما به دلایلی با محدودیت روبهرو شده و نمیتونید به اینترنت آزاد دسترسی داشته باشید. ولی یه سرور دارید در جایی که اینترنت آزاد داره و خودتون هم بهش دسترسی دارید.
حالا سوال اینه: چجوری میتونیم اینترنت اون سرور رو به کامپیوتر خودمون «لولهکشی» کنیم؟
یه کم فکر کنید روی مسئله و بعد برید سراغ ادامه مطلب.
چیزی که مشخصه اینه که جواب این سوال هم با تانلها حل میشه، ولی چجوری؟ بریم با هم جلو.
ببینید شما میتونید از طریق همین SSH که واقعاً یه شاهکار مهندسیه، یه تانل بزنید به سرور و بگید این تانل از پورت مثلاً 1020 روی کامپیوتر من به یه پورت روی سرور وصل باشه.
بعد میتونید با ابزارهای پراکسی روی ویندوز یا لینوکس این پورت رو به سیستم خودتون وصل کنید و بگید هر ترافیکی که از کامپیوتر من میخواد بره بیرون، از این مسیر و از طریق سرور رد بشه.
مثل قبل باید بگم شاید ترسناک به نظر بیاد، ولی همین چیزایی که گفتیم هم خیلی عجیب و سخت نیست. فقط باید بدونید SSH یه سوئیچ داره به اسم -D که میاد یه پورت روی کامپیوتر شما رو به یه SOCKS proxy روی سرور وصل میکنه.
کافیه با این دستور به سرورتون SSH بزنید:
ssh -D 1020 root@188.136.196.2
راهنما:
ssh -D computerPort userNameServer@IpAddressServer
حالا شما یه «لوله» دارید که روی localhost شما و پورت 1020 باز شده.
سوال اینجاست: حالا چجوری هر برنامهای روی سیستم رو به این لوله وصل کنیم؟
مراحل زیر رو دنبال کنید که کل ویندوز به این لوله متصل بشه.
اول Control Panel رو باز کنید و برروی Internet Option کلیک کنید.

در پنجره باز شده روی گزینه Connections کلیک کنید.

در پنجره باز شده برروی گزینه LAN Settings کلیک کنید.

در این مرحله تیک Use a proxy server for your LAN ... رو بزنید و برروی گزینه Advanced کلیک کنید.

در این مرحله چون پراکسی یا تانلی که ما ساختیم از نوع socks میشه باید فقط فیلد مربوط به socks رو با مقادیری که گفتم پر کنید. این شکلی لوله ای که شما کشیدید به کامپیوترتون وصل میشه. :))))))

این دو سناریویی که گفتم، فقط بخش کوچیکی از کارهایی هستن که میتونید با تانل زدن انجام بدید. اگه یه کم باهاش ور برید و ایدههایی که تو ذهنتونه رو امتحان کنید، میتونید کارهای خیلی خفنی باهاش انجام بدید.
اگه سوالی داشتید میتونید زیر همین پست ازم بپرسید یا ایمیل بزنید.
یادتون نره که یکی از راههای کم کردن رنج دنیا، یادگیری مداومه؛ وقتی که مدام یاد میگیریم و میسازیم :))
محمد مبین آقاشاهی اردستانی