محمدرضا ملاصالحی
محمدرضا ملاصالحی
خواندن ۳ دقیقه·۳ سال پیش

استفاده از چند ISP

طرح مشکل

احتمالا خیلی از افرادی که به دنبال اینترنت سریع تر، به فکر استفاده از چندتا ISP افتاده اند. همین جوری که در آخر داستان اینترنت در ایران گفته ام من از دوتا ISP شاتل و زیتل اینترنت میگیرم و اولین سوالی که پیش میاد اینه که ترافیک را بین این ISP ها چگونه تقسیم کنیم؟

بهترین راه این است که پکت ها را، بر حسب سرعت هریک از لینک ها، بر روی هردو ارسال کنیم این گونه سرعت ما جمع سرعت دو لینک خواهد بود ولی نتیجه این خواهد بود که خیلی از نرم‌افزار ها دچار مشکل خواهند شد چرا که بخشی از ترافیک از دوتا لینک با IP های مختلف ارسال میشود.

راه دیگر این است که برحسب کیفیت و سرعت هریک از لینک ها نت خود را عوض کنیم. در این حالت سرعت شما جمع سرعت دوتا ISP نخواهد بود ولی همیشه بهترین سرعت بین ISP ها خواهد بود.

راه حل های دیگران

یکی از راه حل های مشهور واسه این مشکل pfSense و مشتق های آن مثل OPNsense میتواند باشد. با این که OPNsense خیلی ساده‌تر از pfSense ولی همچنان برای مشکل ما بسیار ابزار بزرگی است و شاید یک بخشی از ویژگی هایی که ما میخواهیم را نداشته باشد، درست است هردو نرم‌افزار open source هست ولی بخاطر بزرگ شدن پروژه آنان تغییر در کد سخت خواهد بود و نیاز به مهارت بالا دارد.

راه حل بعدی یک پروژه خوب در گیت هاب هست به نام Net-ISP-Balance و من با دیدن این مقاله خیلی جذب این نرم‌افزار شدم حتما توصیه میکنم نگاهی بیندازید.

بررسی بیشتر مشکل

ولی نباید فراموش کرد که ما فقط میخواهیم فقط یه دکمه داشته باشیم که نتورک ما رو عوض کند.

راه حل اولیه من این بود که جفت نتورک ها روی یک سابنت تنظیم کنم. من زیتل رو روی 192.168.1.1/24 و شاتل رو روی 192.168.1.254/24 تنظیم کردم، فراموش هم نکردم که dhcp یکی رو خاموش کنم :)

بعد از این هم کافی بود فقط Gateway دستگاهی که میخاستم رو عوض کنم و به راحتی نتورک من عوض میشد. البته این راه حل باید اتوماتیک باشه و درصورت نیاز قابلیت عوض کردن Gateway به صورت دستی و Local باشد.

شاید بگید که pfSense ،OPNsense یا حتی همین Net-ISP-Balance بیشتر فایروال هستن و من با این کار فایروالی نخواهم داشت. نباید فراموش کنید که هریک از مودم های شاتل و زیتل فایروال خود را دارند و انداختن نت ها پشت فایروال امکان جابه جایی دستی بین نتورک ها رو از ما خواهد گرفت علاوه بر این ها کانفیگ فایروال مجازی نیاز به یه دستگاه نسبتا قوی و حداقل دارای 3 پورت باید باشد(2 تا VAN و 1 LAN)، پس هزینه بر خواهد بود.



راه حل من

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

https://github.com/mm3906078/vGate

ایده این است که با تغییر در مسیرهای(Routes) یک VM لینوکس بتوانیم از آن به Gateway های مختلف وصل بشیم.

یک بخش مهم دیگر نیازهایی هست که ما داریم پس باید یک لیست ویژگی ها هم بسازیم:

  • در صورت قطع هریک از اینترنت ها در سریع ترین وقت مسیر ترافیک به بهترین ISP تغییر کند.✅
  • امکان تنظیم اولویت و زمان (پینگ زیتل شب ها خیلی بده) تغییر برای هر یک از ISP ها✅
  • امکان بررسی سرعت و پینگ هر یک از ISP ها و تغییر اولویت آنان✅
  • ساخت API برای استفاده بهتر از نرم‌افزار✅

تا به اینجا فقط تیک های سبز انجام شده ولی تا به اینجای کار هم بسیار راضی کننده بوده نتیجه.

‌ispاینترنتLoad_balanceشاتلزیتل
مهندسی کامپیوتر دانشگاه علامه طباطبایی ، عاشق کامپیوتر ، برنامه نویس ، دواپس ، اصرار بر متن باز
شاید از این پست‌ها خوشتان بیاید