در اکثر دانشگاهها، برای دسترسی خارج از دانشگاه به منابع علمی، سامانههای داخلی و سیستمهای آزمایشگاهها، از سرویس VPN همان دانشگاه استفاده میشود. بهمحض اتصال به VPN دانشگاه خود، IP شما به IP محل دانشگاه تغییر پیدا میکند. یعنی تمامی ترافیک اینترنت شما از طریق IP دانشگاه رد و بدل میشود.
محدودیت اولی که در این سناریو وجود دارد، اینکه ممکن است بعضی از سایتها از طریق IP دانشگاه شما فیلتر شده و قابل دسترس نباشد. و یا گاهی اوقات مشکلاتی پیرامونِ DNS دانشگاه پیش میآید که هرچند شما به سیستم آزمایشگاه خود وصل هستید، ولی لپتاپ شما اینترنت ندارد.
محدودیت دوم، که خیلی مهمتر و انگیزه اصلی این پست میباشد، کند شدن اینترنت شماست. یعنی چی؟ یعنی زمانی که شما به VPN دانشگاه خود وصل میشوید، سرعت اینترنت شما دچار افت بعضا چشمگیری میشود.
حال این محدودیتها زمانی بیشتر اعصابمان را خرد میکنند که ما از VPN دانشگاه بهطور خاص برای وصل شدن به سرور GPU یا سیستم آزمایشگاه استفاده کنیم. وگرنه در حالات دیگر، مثلا برای دانلود چندتا مقاله خیلی مشکلساز نیستند.
پس مخاطب این پست، کسایی هستند که از VPN دانشگاه برای اتصال به سرور یا سیستمی در داخل دانشگاه، استفاده میکنند.
برای حل این مشکل، سعی میکنم یک سناریو متفاوت برای وصل شدن به سیستمهای دانشگاه بهتون معرفی کنم؛ که البته ممکن است بهترین یا سادهترین سناریو نباشد.
شرح مفصل سناریوی قبلی:
من در آزمایشگاه دانشگاه یک سیستم لینوکس (ویندوز یا ..) دارم که تمامی فایلهای پروژهای که روش کار میکنم در این سیستم قرار دارد. برای اتصال به این سیستم از خانه، ابتدا به VPN دانشگاه وصل شده و سپس از طریق محیط VSCode، به آدرس IP سیستم دانشگاهم SSH میزنم و بهصورت ریموت به تمامی فایلها، کدها و سختافزار سیستم شخصیِ دانشگاه دسترسی پیدا میکنم.
شرح مفصل سناریو جدید برای رفع محدودیتها:
خب، وقتی تصویر اول پست را دیدید، احتمالا حدس زدید داستان از چه قرار است. میخواهم در سناریو پیشنهادی، از تکنیک SSH Jump استفاده کنیم. یعنی چی؟ یعنی اینکه بیاید بین لپتاپ خودمون و سیستم دانشگاهمون، یک سرور واسط قرار بدیم. چرا؟ الان میگم چرا. بالاتر گفتهشد که زمانی که به VPN دانشگاه وصل میشویم، تمامی ترافیک اینترنت لپتاپمون درگیر این ارتباط شده و محدودیتهایی که گفتیم را در پی دارد. در صورتی که ما فقط میخواهیم از محیط VSCode، ارتباط SSH بزنیم به سیستم دانشگاه، و دوست نداریم که ترافیک اینترنتمون برای مرورگردی و اپلیکیشنهای دیگر، درگیر این ارتباط شود. با یک سرور واسط این مشکل را حل میکنیم.
با استفاده از نرمافزار VirtualBox یا VMware یک ماشین مجازی خیلی سبک نصب کنید (زمان مورد نیاز حدود نیم ساعت). مهم نیست چی باشه، ویندوز باشه، اوبونتو باشه یا هرچی که دوست دارید. تنظیمات Network این ماشین مجازی را NAT قرار دهید و در تنظیمات Port Forwarding، پورت 22 را فوروارد کنید. به عنوان مثال اگر با VirtualBox ماشین مجازی ساختید، طبق تصویر زیر تنظیمات را انجام دهید.
بعد از نصب، ماشین مجازی را اجرا کرده و داخل این ماشین، به VPN دانشگاهتون وصل بشید.
حال در VSCode سیستم لپتاپ خودتون به جای اینکه با استفاده از دستور زیر SSH بزنید،
ssh username1@ip_address1
که username1 و ip_address1 مربوط به سیستم دانشگاهتون است، از دستور زیر استفاده کنید:
ssh -J username2@ip_address2 username1@ip_address1
که username2 و ip_address2 مربوط به ماشین مجازی است.
در نتیجه به جای اینکه ترافیک اینترنت لپتاپمون درگیر بشه، فقط ترافیک اینترنت آن ماشین مجازی درگیر شده و IP سیستم لپتاپ ما تحت تاثیر VPN دانشگاه قرار نمیگیرد.
پر سرعت بمونید )).