اینم یه تجربه پراکنده دیگه!

این ماه‌ها خیلی شلوغه و من نرسیدم به وبلاگ سر بزنم و این پست قرار نیست خیلی بلند باشه. من مدت‌هاست که هرجا میرم pfsense رو به عنوان ورتر و فایروال اونجا توصیه میکنم و خب همه جا هم از استفاده ازش راضی بودن. کل این پست در مورد captive portal هست.

یکی از ویژگی‌های این محصول استفاده می‌کنیم captive portal هست. کاری که میکنه اینه که اولین چیزی که شما توی بروزر میزنی رو redirect میکنه به صفحه لاگین. حالا یکی از چیزایی که من توی محصولاتی مثل cyberoam دیدم که یه کلاینت دارن واسه لاگین کردن توی captive portal هست. من هم دچار این مشکل بودم که چون معمولا tab های زیادی توی بروزر باز دارم همه صفحات redirect میشه و خیلی مدیریتش سخت میشه. حالا من هم یه کلاینت با پایتون توسعه دادم که خیلی ساده این کار رو انجام میده. اون رو هم توی github گذاشتم که اگه کسی خواست استفاده کنه. امیدوارم این کلاینت کمک کنه که آدم‌های بیشتری از محصولات متن باز استفاده کنن.

همین!

اینم یه تجربه پراکنده دیگه!

سر کار اخیرا نیاز شد که یه سیستم با قابلیت virtualization نصب کنیم. خوشبختانه همکارمون که مسئول این کار بود از من در این مورد مشورت گرفت. توی کارهای خیلی جدی شرکت معمولا از vmware ESXi استفاده میشه اما اینجا من و این دوستمون علاقه‌مند شدیم که از یه تکنولوژی دیگه استفاده کنیم. هر دومون با kvm و linux آشنایی داشتیم پس مطمئن بودیم که میتونیم در بدترین حالت با استفاده از لینوکس مشکل رو حل کنیم. پس من پیشنهاد دادم بریم سراغ smartos. یه شرکت به نام joyent از این سیستم عامل پشتیبانی میکنه که اسپانسر nodejs و چیزهای دیگه هم هست. همونطور که قبلا هم گفته بودم این سیستم عامل یه مدته «چشم من رو گرفته» دلایلش هم ایناست

  1. ریشه اش به سولاریس برمیگرده که سیستم عامل بسیار خوبیه!
  2. از zfs پشتیبانی میکنه که اون هم سیستم فایل محشریه!
  3. از kvm به عنوان مجازی ساز سخت افزار استفاده میکنه
  4. از zone های سولاریس به عنوان مجازی سازی سبک(مراجعه کنید به این و این) پشتیبانی میکنه

کاری که ما میخواستیم انجام بدیم این بود که میخواستیم علی الحساب یه ماشین مجازی pfsense توش نصب کنیم و یه کارهایی باهاش انجام بدیم در حین این کار نکات جالب و قابل توجهی برخوردیم که میخوام اینجا مستندشون کنم

نکات جالب در برخورد من با این سیستم عامل اینهاست

  1. کل سیستم نیاز به نصب نداره! و فقط کافیه که روی هارد بتونه سیستم فایل zfs رو تشخیص بده. پس بروز رسانی در حد خاموش و روشن کردن سیستم هزینه داره. از اون سمت با استفاده از pxe میشه سیستم رو بوت کرد که یعنی کل هاردهای سرور جهت ذخیره سازی اطلاعات بکار میره
  2. از json برای توصیف ماشین‌های مجازی و zone هاش استفاده میکنه. که این قضیه برنامه نویسی کردن برای اون رو به شدت ساده میکنه

نکات قابل توجهی که من در حین کار بهش برخوردم اینا بود

  1. کارت شبکه mainboard یکم مشکل داشت و smartos هم درست ازش استفاده نمیکرد
  2. مدت زمان لازم برای reboot شدن ماشین مجازی pfsense زیاد بود(حدود ۵ دقیقه)
  3. نمیشد از توی pfsense سیستم رو reboot کرد
  4. نصب واسط گرافیکی برای راحت‌تر کار کردن لینوکس و یونیکس نابلدها با سیستم به نظر پر دردسر میرسید!

علی الحساب همین تا باز هم بیشتر باهاش کار کنم و نتایج رو بهتون بگم!

اینم یه تجربه پراکنده دیگه!

خیلی وقته که از pfSense ننوشتم و حالا وقت خوبیه که یه پست کوتاه ولی کاربردی ازش بنویسم. کلا سرویس dns سعی میکنه که اسم یه سایت رو به یه آدرس ip تبدیل کنه. اما این تبدیل معمولا ایستا است یعنی با تعویض آی پی یه سایت کار سختیه و معمولا مدت قابل توجهی طول میکشه که آدرسها آپدیت بشن! حالا یه نوع خاص از dns وجود داره که میگه آدرس اولا به سهولت و دوما به سرعت تغییر میکنه پس اگه آدرس عوض بشه به سرعت این تغییرات اعمال میشه! توضیحات این قسمت فنی نیست فقط قرار به صورت کلی به شما ایده بده که این سرویس چطوری کار میکنه.

بخشای این سیستم‌ها عبارتند از

  1. ‍یک سرور dns عادی
  2. یک واسط وب برای تعریف آدرس سایت
  3. یک واسط وب برای آپدیت سریع آدرس ip

استفاده این سرویس هم برای اینه که اونهایی که آدرس ip ایستا ندارند بتونن یه دامنه به خودشون اختصاص بدن و بتونن از بیرون به روتر و شبکه داخلیشون دسترسی داشته باشن!

خب یکی از این سرویس ها https://freedns.afraid.org/ هست یه چنین سرویسی ارائه میکنه. حالا بعد از گرفتن آدرس از این سایت اگه بخوایم این سیستم رو روی pfsense تنظیم کنیم روندش خیلی ساده است!

  1. ثبت دامنه پویا در سرویس freedns.afraid.org
  2. رفتن به منوی services -> dynamic dns
    Menu_031
  3. اضافه کردن یک مورد جدید
    Selection_032
  4. وارد کردن اطلاعات دامنه
    Selection_033
  5. گرفتن اطلاعات از سایت freedns
    Selection_034

    Selection_036

همین امیدوارم به درد خورده باشه!

اینم یه تجربه پراکنده دیگه!

همینطور که قبلا نوشته بودم(لینک، لینک، لینک) من تقریبا دوسال میشه که یه سیستم تمام وقت روشن توی خونه دارم که باهاش کارهای بسیاری میکنم که لیست اون کارها از این قراره:

  1. یه ماشین مجازی کوچک دارم و pfsense مسئولیت مسیریابی خونه رو به عهده داره
  2. روش minidlna دارم  که مسئولیت تفریحات فیلمی خونه رو برعهده داره
  3. روش یه samba server دارم که مسئولیت اشتراک فایل رو برعهده داره
  4. روش یه seafile سرور دارم که مسئولیت بک آپ اتوماتیک از تصاویر تلفن‌ها و اطلاعات مهم لپ تاپ‌ها رو برعهده داره.
  5. روش یه deluge دارم که شبها تورنتها رو دانلود و آپلود میکنه
  6. روش یه سرور taskwarior دارم که نقط بک آپ مدیریت لیست کارهایی هست که در هفته انجام میدم

کانفیگ سیستم هم اصلا جدید نیست و یه سیستم میشه گفت بسیار قدیمیه

  1. سی پی یو: AMD sempron 3000+ AM2
  2. رم : ابتدا ۱ گیگ و سپس ارتقا به ۲٫۵ گیگ
  3. هارد: ۵۰۰ گیگ
  4. سیستم عامل: اوایل ubuntu server و mint

این سیستم تقریبا با ثبات بسیار خوبی این دو سال گذشته رو خدمت رسانی کرده و من ازش راضیم خدا هم ازش راضی باشه! توی این دو سال من تجربه بسیاری خوبی در مورد مدیریت یه سیستم تنها به کمک ssh داشتم. همچنین توی این دوسال خانمم هم به مدت کوتاهی از این سیستم به عنوان دسکتاپ استفاده کرده.

اما این سیستم بعد از دوسال نیاز به بروزرسانی داره و من میخوام به دلایل زیر این سیستم رو از نظر سخت افزاری و نرم افزاری ارتقا بدم

  1. پرشدن هارد بر اثر دانلود زیاد
  2. نیاز به راه‌اندازی یک NAS به دلیل نزدیک شدن به پایان عمر مفید هارد دیسک‌های اکسترنال(حدودا سال ۸۷ خریداری شده اند)
  3. یادگیری تکنولوژی‌های جدید
  4. بهینه سازی سیستم فعلی

اما طرح من برای بهینه کردن این سیستم از این قراره که:

  1. علی الحساب میخوام سه تا هارد دو ترا به سیستم اضافه کنم که یکیش بک آپ اون دوتای دیگه باشه. همچنین نمیخوام از کارت raid استفاده کنم و ترجیحم اینه که از سیستم فایل zfs استفاده کنم.
  2. میخوام بتونم روی این سیستم از مجازی سازی سبک یا همون container های استفاده کنم که این استفاده هم کلی چیز جدید به من یاد میده
  3. میخوام سیستم عامل رو سبک کنم و میزان مصرف منابع کاهش بدم. برای این کار به نظر میرسه باید از لینوکس به یه سیستم عامل دیگه مهاجرت کنم که این مهاجرت کلی مطالب جدید به من یاد میده
  4. در صورتی که پولم برسه میخوام یه ssd بخرم و اون رو به عنوان cache به zfs اضافه کنم,

چالشهای پیش روم هم ایناست:

  1. zfs یک سیستم فایل بسیار قوی هست اما من فکر نمیکنم که هنوز به اندازه کافی اون رو بلدم که بخوام بهش اعتماد کنم و کل هاردهام رو به اون بسپارم
  2. zfs روی سیستم عامل freebsd و illumos و حتی linux وجود داره اما من نمیدونم کدوم پیاده‌سازی بهتر و با ثبات تره. البته باید بگم که پیاده‌سازی‌های موجود روی این سیستم‌ها قدیمی و با ثبات هستن
  3. تکنولوژی مجازی سازی سبک یا container‌ ها همنطور که اینجا هم بررسی کردم روی لینوکس freebsd و illumos با هم متفاوته من هیچ دید عملیاتی ندارم که کدوم بهتره.
  4. هر کدوم از این سیستم‌های یه سری کارها رو راحت کردن مثلا freebsd با freenas و nas4free کار رو برای پیاده‌سازی آسون zfs راحت کرده و شیر کردن و تورنت بازی این چیزا خیلی ساده شده. همچنین illumos با یه محصول به نام smartos مجازی سازی و مجازی سازی سبک و مدیریت اونها رو بسیار ساده کرده. که این انتخاب رو سخت میکنه

حالا با توجه به اینکه انتخاب‌های من کم نیستن بایستی یکم بیشتر بررسی کنم و انتخاب کنم.

همین!

اینم یه تجربه پراکنده دیگه!

همینطور که گفته بودم میخوام در مورد ایده‌هام بنویسم. ایده اصلی اینجا اینه که چطور میشه حول یک محصول بسیار باکیفیت متن باز به نام pfSense کسب و کار درست کرد. من سعی میکنم اول یه مقدمه کوچک در مورد این سیستم بدم و بعدش کسب و کارها رو نام ببرم و اونها رو بصورت مختصر بررسی کنم.

با توجه به تجربه سه ساله کار با pfSense میدونم که بسیار خوش ساخت طراحی شده و با ثبات وکیفیت بسیار خوبی به کار  خودش ادامه میده. نیازمندی‌های سخت افزاری قابل قبولی داره و اون کاری که باید انجام بده رو به درستی انجام میده . باید اضافه کنم که شرکت‌های فعال در زمینه امنیت شبکه از این محصول به عنوان پایه محصولات بومیشون که اکثرا ورتر، فایروال و utm هست استفاده کردن. اما به نظر من این rebranding و توسعه، نیاز بازاری هست که شامل بخش دولتی و دستگاه‌های حساس میشه. این بازار معمولا بسیار پر رقابت هست و پول‌های بسیاری خوبی توش جابجا میشه پس جزابه اما این بازار دوتا ایراد داره اولا بسیار کوچک هست و دوما بزرگ نمیشه پس از نظر من واسه راه انداختن کسب و کار که بشه startup به درد نمیخوره. پس این ایده‌هایی که اینجا مطرح میشه هدفش بازار هرچه نزدیکتر به خونه مردم هست که تعدادش بزرگ باشه و بشه بصورت انبوه فروختش. ایده‌ها اینجا لیست شده:

  1. فروش سرویس نصب و راه‌اندازی pfSense: یعنی شما برای مشتری نهایی سیستم و پیکربندی کنی و راه‌اندازی کنی. این کار خوبه اما به دلیل محدود بودن نیروی متخصص pfSense این ایده که معمولا ساده‌ترین ایده استفاده از سیستم‌های متن باز هست خیلی جذاب نیست.
  2. فروش appliance که بصورت پیشفرض pfSense روی اونها نصب شده: نمونه این سخت افزارها اینجا و اینجا پیدا میشه. این کار بسیار خوب میتونه باشه چون نیاز نیروی انسانی کمی داره و شما خدماتی ارائه نمیدی و عملا یه سخت افزار میفروشی. ایراد این ایده اینه که در دنیای appliance ها معمولا از روترها و فایروال‌های cisco و یا mikrotik استفاده میشه. مهمترین دلیل این استفاده هم وجود آموزشهای تخصصی برای این روترها و آشنایی مدیران شبکه با این روترها هست. دومین مشکل این سیستم هم وارداته که خب اگه کسی از این کارها نکرده باشه بسیار میتونه به مشکل بر بخوره. همچنین قیمت تمام شده این محصول تقریبا هم سطح رقبا است و عملا رقبا به علت سابقه بیشتر برنده میشن. اما اگه کسی بتونه این مشکلات رو حل کنه که حل ناشدنی نیست بسیار میتونه موفق باشه.
  3. راه‌اندازی hotspot مبتنی بر pfsense و فروش اینترنت در سطح شهر: برای بسیاری از ما اتفاق افتاده که وسط خیابون باشیم و واقعا نیاز به اینترنت با کیفیت داشته باشیم. اخیرا با اومدا نسل سوم و چهارم موبایل این نیاز تا حدی مرتفع شده اما هنوز قیمت گران اینترنت نسل سه و  چهار جا رو برای این کار باز میگذاره. حالا شما به راحتی با config کردن pfsense اون رو به یه hotspot بسیار قوی تبدیل میکنی و با فروش اکانت اینترنت سود میبری. این کار تقریبا عملی ترین کار به حساب میاد. ممکله از نظر قانونی مشکلاتی وجود داشته باشه اما چیز خاصی به نظر نمیرسه. نیازمند یه سیستم اکانت ساختن و فروش اکانت هست که من برای حل این مشکل فاز اول رو نصب و راه‌اندازی این ایده در کنار کافی نت ها میدونم. یعنی کافی نت‌ها عامل فروش هستند و شما سیستم پورسانت اونها رو میدی. ایراد این ایده نیاز هماهنگی و همکاری با بخش‌های زیادی هست. همچنین سرمایه گذاری اولیه زیادی رو هم میطلبه. همچنین بازارش یکم نا آشناست یعنی اینکه معمولم نیست که واقعا این نیاز وجود داره یا نه.
  4. خاص منظوره کردن این سیستم مخصوص کافی شاپ‌ها، رستوران‌ها و هتل‌ها: الان وضعیت سرویس اینرنت مجانی کافی‌شاپ ها و رستوران‌ها خیلی داغونه در این حد که من تا بحال نتونستم از اینترنتشون به درستی استفاده کنم. واسه اونها ممکنه ارائه خدمات قابل اعتماد ارزشمند باشه. این کار هم بسیار به عملیاتی بودن نزدیکه اما مشکلش نیاز به سرمایه گذاری بالا و پشتیبانی زیاد هست
  5. راه اندازی سیستم accounting ساده روی این سیستم و استفاده از اشتراکی از اینترنت در ساختمان‌های بزرگ یا شرکت‌ها. در این ساختمان‌ها معمولا آدم‌هایی هستن که نمیخوان اینترنت داشته باشن و دوست دارن به اندازه مصرفشون پول بدن که میشه با استفاده از pfSense پیاده‌سازی شه. همچنین در شرکت‌ها معمولا حجم افراد محدود بوده و نباید بیشتر از یک حد در روز از اینترنت استفاده کنن. که با این سیستم قابل پیاده‌سازی هست.

این‌های به نظرم عملیاتی‌ترین ایده‌ها بود اما به علت تعدد پکیجهای این سیستم عملامیشه کارهای بسیار دیگه‌ای ازش استفاده کرد. مثلا استفاده به عنوان loadbalancer بین چند اینترنت، استفاده به عنوان cache سرور با استفاده از squid. اما این ایده‌ها خیلی خام هستن ونیاز به پختن زیادی دارن.

همین

اینم یه تجربه پراکنده دیگه!

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

پیش‌نیازها

پیش‌نیازها به شرح زی هست:

  1. مهمترین پیش‌نیاز برای راه‌اندازی این سیستم یه کامپیوتر هست که بتونه بصورت ۲۴ ساعته روشن باشه
  2. دومین ویژگی اینه که اون کامپیوتر یا دوتا کارت شبکه داشته باشه یا اونقدر قوی باشه که بشه روش ماشین مجازی اجرا کرد
  3. حداقل هارد مورد نیاز ۱ گیگ هست
  4. حداقل رم مورد نیاز ۲۵۶ مگ هست

نصب pfSense

روند اجرای مرحله به مرحله به صورت زیره:

  1. اول تنظیمات مودمتون رو عوض کنید و dhcp اون رو خاموش کنید. فرض میکنم که آی پی مودم ۱۹۲٫۱۶۸٫۱٫۱/۲۴ هست. البته برای راحت‌تر بودن میتونید تنظیمات رو ۱۹۲٫۱۶۸٫۱٫۱/۱۶ بدید.
  2. فرض میکنم که رنج آدرس جدیدی که قرار pfsense به کاربرها بده ۱۹۲٫۱۶۸٫۲٫۰/۲۴ هست.
  3. آدرس کامپیوتری که برای پیکربندی قراره استفاده بشه رو ۱۹۲٫۱۶۸٫۲٫۵۰/۱۶ بدید که همزمان بتونید هم مودم رو ببینید هم pfsense
  4. حالا شروع به نصب pfsense روی سیستم اصلی کنید. نصب خیلی راحته در حد next زدن فقط حواستون باشه که در هنگام نصب اطلاعات هاردتون رو از دست ندید.
  5. مهمترین قسمت بعد از نصب انتخاب درست کارتهای شبکه است. یعنی اینکه کدوم کارت شبکه به عنوان LAN و کدوم کارت شبکه به عنوان WAN استفاده بشه. منظور از WAN اون کارت شبکه است که قراره ازش اینترنت بگیره و منظور از LAN هم شبکه داخلیه. اینجا فرض من اینه که هردوی اونها به یک سوئیچ وصل میشن پس فقط مهمه که درست کانفیگ بشه
  6. قدم بعد تخصیص IP به کارت شبکه wan هست. از توی منویی که نشون داده شده گزینه ۲ رو انتخاب کنید و با انتخاب wan اول گرفتن IP رو از DHCP غیر فعال کنید آدرس اون رو مثلا مقدار ۱۹۲٫۱۶۸٫۱٫۱۰ بدید. مقدار subnet mask رو هم ۲۴ بدید و آدرس gateway رو هم مقدار ۱۹۲٫۱۶۸٫۱٫۱ که همون آدرس مودم هست بدید
    منوی اصلی pfsense
    تنظیم wan
  1. قدم بعد آدرس دادن به LAN هست که در این مرحله مثل مرحله قبل عمل میکنید و آدرس رو ۱۹۲٫۱۶۸٫۲٫۱ میدید با subnet mask به مقدار ۲۴ بدون gateway

بعد از این عمل پیکربندی از طریق وب قابل انجامه و آدرس اون https://192.168.2.1 هست.

اندازه گیری ترافیک

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

  1. مرحله اول پیکربندی DHCP هست. برای اینکار به منوی services->dhcp server میریم
    03_pfsense_dhcp_server
  2. روی lan کلیک میکنیم
  3. اگه dhcp غیر فعاله اون رو فعال میکنیم.
    04_pfsense_dhcp_server_config
  4. رنج آی پی رو درست میکنیم
  5. و مهمتر از همه برای کسایی که توی خونه هستن توی قسمت DHCP static mapping یه entry اضافه میکنیم و به mac اونها یه آی پی اختصاص میدیم
    04_pfsense_dhcp_server_static
  6. بعد از اینکار میریم به منوی system->packages
  7. به بخش available packages میریم
  8. در این بخش پکیج bandwidthd رو نصب میکنیم
  9. بعد از نصب توی منو services->bandwidthd میریم و این پکیج رو برای LAN فعال میکنیم.
  10. دوتا گزینه output_cdf و recover_cdf رو تیک میزنیم که اطلاعات با reset شدن سیستم از دست نره
    05_pfsense_bandwidthd
  11. تغییرات رو ذخیره میکنیم
  12. بایستی بگذارید سیستم یه چند دقیقه‌ای کار کنه. بعد از قسمت access bandwidthd میتونید نمودارهای ساعتی هفتگی و ماهیانه رو ببینید.

با این کار بصورت ساده میتونید ببینید هر کسی در ساعت گذشته، هفته گذشته و ماه گذشته حتی سال گذشته چقدر مصرف داشته.

همین

اینم یه تجربه پراکنده دیگه!

یکی از مشکلاتی که همیشه در محل‌هایی که من فعالیت داشتن وجود داشته اینه که چطور پهنای باند رو بین تمام استفاده کنندگان تقسیم کرد بصورتی که اگه ۱۰ کاربر داریم که در حال حاضر ۲ تاشون فعالن، پهنای باند بین دو نفر تقسیم بشه و اگه به عنوان مثال ۳ نفر فعال باشن پهنای باند بین اون ۵ نفر تقسیم بشه. مزایای این اتفاق بسیاره که اگه عمری بود در موردش مینویسم. سعی میکنم مراحل کار رو اینجا با مثال رو شکل توضیح بدم:

  1. ابتدا باید به منوی firewall -> traffic shaper -> limiter رفته و یه limiter جدید میسازیم
    1.0
  2. سپس اسم limiter رو برای راحتی کار آینده download میگذاریم و اون رو فعال میکنیم
    1.1
  3. سپس تو قسمت bandwidth یک گزینه جدید اضافه می‌کنیم
    1.2
  4. بعد توی قسمت bandwidth حد دانلود رو وارد می‌کنیم. و ذخیره می‌کنیم
    1.3
  5. توی صفحه بعد گزینه اضافه کردن یک صف جدید رو انتخاب می‌کنیم
    2.0
  6. توی این قسمت هم تنها یه اسم وارد کنید که بعدا بتونید به یاد بیاردش و مثلا download_lan باشه و نحوه انتخاب رو براساس آدرس مقصد انتخاب کنید و تنظیمات رو ذخیره کنید
    2.1
  7. حالا بایستی همین کار برای آپلود هم انجام بشه پس یه limiter جدید ساخته میشه
    3.0
  8. یه اسم برای آپلود انتخاب کنید و تنظیمات رو ذخیره کنید
    3.1
  9. حال دوباره توی قسمت bandwidth یک گزینه جدید اضافه کنید
    3.2
  10. پهنای باند آپلود رو اینجا وارد کنید و تغییرات رو ذخیره کنید
    3.3
  11. دوباره برای این قسمت هم یک صف اضافه می‌کنیم
    4.0
  12. توی این قسمت هم تنها یه اسم وارد کنید که بعدا بتونید به یاد بیاردش و مثلا upload_lan باشه و نحوه انتخاب رو براساس آدرس مبدا انتخاب کنید و تنظیمات رو ذخیره کنید
    4.1
  13. حالا به بخش قوانین مسیریابی برید و قانون اصلی رو که اجازه میده ترافیک رد بشه ویرایش کنید
    5.0
  14. به بخش In/Out برید و روی گزینه advance کلیک کنید
    5.1
  15. و برای خروجی از صف upload_lan و برای ورودی از صف download_lan استفاده کنید.
    5.2

با این مراحل شما یه اینترنت خواهید داشت که پهنای باندش به نسبت کاربرهای فعال تقسیم میشه.

منبع: اینجا

اینم یه تجربه پراکنده دیگه

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

اگه به شخص من باشه، من در برای کسب و کارهای کوچک و متوسط پیشنهاد میکنم که از pfSense استفاده بشه. چون کیفیت این محصول خوبه و کنترل کافی روی پهنای باند و شبکه رو فراهم میکنه و نگهداریش سربار اضافی برای اون کسب و کار به همراه نداره. هزینه راه‌اندازی به نسبت  کمی هم داره تنها چیزایی که میخواد یه کامپیوتر قدیمی که دارای حداقل دوتا کارت شبکه باشه هست.

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

از نظر ویژگی‌ها هم کارهای بسیار خوب زیادی میشه باهاش انجام داد. که من لیست کارهایی که باهاش کردم رو مینویسم:

  • سر هم کردن دوتا اینترنت برای افزایش پهنای باند و افزایش ثبات
  • راه اندازی یک captive portal برای احراز هویت کاربران برای دسترسی به اینترنت
  • استفاده از ویژگی NAT برای تخصیص پورتهایی به یکی از سیستم‌های داخلی
  • پشتیبانی از سیستم تلفنی مبتنی بر IP به نام Asterisk
  • پشتیبانی از محدود کردن پهنای باند و ترافیک کاربران
  • محدود کردن دسترسی عده‌ای یا گروهی از کاربران به اینترنت
  • پشتیبانی از squid‌به منظور افزایش کارایی استفاده از اینترنت
  • امکان بررسی ترافیک عبوری و ویروسیابی آن
  • امکان اعمال سیاستهای تضمین کیفیت

این کارهایی که من انجام دادم اکثرا توسط پکیج‌های جانبی این سیستم انجام شده و اگه عمری بود سناریوی اجرای تک تک این قسمت‌ها رو میگم

همین!

این یه تجربه پراکنده دیگه

امروز یه پست خیلی کوچیک و تو دل برو دارم. یعنی زیاد  توضیح نمیدم و تنها یه شمای کلی از راه حل میدم.

برای توزیع بار چند قدم ساده داره. یه مفهوم وجود داره به نام gateway که هر اتصال اینترنت یکی داره. در اولین قدم اینه که چندتا gateway رو با هم گروه‌بندی میکنید تا بتونید با استفاده از این گروه‌ها توزیع بار رو انجام بدید. در گروه یک اولویت به هر gateway اختصاص داده میشه و یه معیار برای اینکه کی بین اولویت‌های مختلف انتخاب انجام بشه. برای انجام این کار باید به منوی system -> routing رفت و توی tab به نام Group این گروه رو ساخت.

مرحله دوم هم خیلی ساده است. بایستی در قسمت قوانین دیواره آتش، قانون عمومی که برای اتصال LAN به اینترنت وجود داره رو ویرایش کرد و گفت که ترافیکی که توی این قانون صدق میکنه بجای اینکه به gateway پیش فرض فرستاده بشه به این گروه فرستاد بشه تا عملیات تقسیم بار به خوبی انجام بشه. و کار تا این لحظه تمومه.

مرحله سوم که اختیاری هم هست اینه که بایستی DNS هایی برای کل سیستم تعریف بشه که از هر کدوم از اون gateway ها قابل دسترس باشه. در حالت معمول نیاز به این تنظیم نیست اما اطمینان پذیری سرویس‌ها با این تنظیم افزایش پیدا می‌کنه.

 

بعد از یه مدت که سرم توی کار خیلی شلوغ بوده با یه تجربه پراکنده دیگه اومدم اینجا.

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

خب راه حل‌های گوناگونی برای اینکار وجود داره. یکی از راه استفاده از سخت افزارهایی هست که برای این کار ساخته شده. mikrotik یا مسیریاب‌های اختصاصی شرکتهای دیگه که قابلیت loadbalancing رو دارند و معمولا با سام تجاری loadbalancing router شناخته میشن این قابلیت رو داره.

نرم افزارهای تجاری هم وجود دارند که این امکان رو برای شما ایجاد میکنه. اما از اونجایی که به قول دوستان ما روی راه حل‌های متن باز غیرت خاصی داریم اینجا هم میخوام چند تا محصول معرفی کنم که این کار باهاشون امکان پذیره.

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

خب راه حل هایی که من باهاشون مستقیما کار کردم zeroshell و pfSense هست که یکیشون یه لینوکسه یک دیگش هم یه freeBSD  هست. اما دیدم دوستان با استفاده از kerio و محصولات cisco اینکار رو انجام دادن. هردوی zeroshell و pfSense امکاناتی دارند که به راحتی کانفیگ میشن و این کار انجام میشه.

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