مسدودکننده تبلیغات DNS برای تراشه ESP32-C3؛ فیلترینگ هوشمند بدون نیاز به PSRAM

مسدودکننده تبلیغات DNS برای تراشه ESP32-C3؛ فیلترینگ هوشمند بدون نیاز به PSRAM
1 بازدید
۱۴۰۵-۰۷-۲۱
7 دقیقه
  • نویسنده: 0x7a657573
  • درباره نویسنده: من اون دیوونه‌ام که وقتی بورد روشن نمی‌شه، ذوق می‌کنم؛ یعنی یه شب تا صبح قراره با منبع تغذیه و لاجیک آنالایزر عشق کنم! آدما قهوه می‌خورن که بیدار بمونن، ولی من بیدار می‌مونم تا بفهمم این بورد چرا باهام قهر کرده! زندگی من یه لوپ بی‌نهایته بین باگ و دیباگ... با چاشنی یه کم امید و یه عالمه دیوونگی!

به نقل از CNX Software – Embedded Systems News

در دنیای شبکه‌های خانگی، مسدودسازی تبلیغات در سطح شبکه معمولاً به سخت‌افزارهایی مانند رزبری پای و ابزارهایی مثل Pi-hole وابسته است. با این حال، یک پروژه متن‌باز جدید نشان می‌دهد که می‌توان با بهینه‌سازی نرم‌افزاری، حتی یک میکروکنترلر ساده را به ابزاری قدرتمند تبدیل کرد.

این پروژه با استفاده از الگوریتم هش FNV-1a و ساختار ذخیره‌سازی بهینه روی حافظه فلش، تراشه اقتصادی ESP32-C3 را به یک مسدودکننده تبلیغات DNS برای تراشه ESP32-C3 تبدیل می‌کند؛ سیستمی مستقل که بدون نیاز به حافظه جانبی (PSRAM)، توانایی فیلتر بیش از ۵۰۰ هزار دامنه تبلیغاتی را دارد. بهره‌گیری از جست‌وجوی دودویی (Binary Search) برای پاسخ‌دهی سریع به درخواست‌ها و ارائه یک داشبورد تحت وب جهت مدیریت شبکه، این راهکار را به جایگزینی فوق‌العاده کم‌مصرف، ارزان و پایدار در مقایسه با ابزارهای سنتی تبدیل کرده است.

پروژه esp32-c3-adblock: مسدودسازی حرفه‌ای تبلیغات با کمترین هزینه

پروژه esp32-c3-adblock که توسط Zed (M-Abozaid) توسعه یافته، یک راهکار متن‌باز و جذاب برای پیاده‌سازی یک مسدودکننده تبلیغات DNS برای تراشه ESP32-C3 است. جذابیت اصلی این پروژه در امکان تبدیل یک میکروکنترلر ارزان‌قیمت ۲ دلاری به ابزاری مشابه Pi-hole است؛ بدون اینکه نیازی به PSRAM یا سخت‌افزارهای گران‌قیمت داشته باشد. این سیستم با مدیریت هوشمند درخواست‌های DNS، تمامی تبلیغات و دامنه‌های ردیابی را در سطح شبکه خانگی یا دفاتر کوچک، شناسایی و مسدود می‌کند.

جزئیات فنی و عملکرد

تیم توسعه‌دهنده برای غلبه بر محدودیت‌های حافظه در میکروکنترلرها، استراتژی هوشمندانه‌ای را به کار گرفته است. به‌جای ذخیره مستقیم دامنه‌ها در RAM که فضای زیادی اشغال می‌کند، این سیستم از هش‌های ۴۰ بیتی FNV-1a استفاده کرده و آن‌ها را به‌صورت مرتب‌شده در حافظه فلش (Flash Memory) ذخیره می‌کند.

هنگامی که یک پرس‌وجوی UDP DNS توسط ESP32-C3 دریافت می‌شود، فرآیند زیر طی می‌شود:

  1. استخراج و هش: فریمور که با زبان ++C توسعه یافته، دامنه موردنظر (به‌همراه پسوندهای والد) را استخراج و هش می‌کند.
  2. جستجوی دودویی (Binary Search): سیستم با استفاده از الگوریتم جستجوی دودویی، جدول هش‌های موجود در حافظه فلش را بررسی می‌کند.
  3. تصمیم‌گیری: اگر دامنه در لیست مسدودشده باشد، ESP32-C3 بلافاصله آدرس 0.0.0.0 را برای بلاک کردن درخواست بازمی‌گرداند. در غیر این صورت، پرس‌وجو به سرور DNS بالادستی (Upstream) هدایت شده و پاسخ به کلاینت منتقل می‌شود.

بهره‌وری فوق‌العاده در مصرف منابع

این رویکرد بهینه، نتایج تحسین‌برانگیزی به همراه داشته است:

  • ظرفیت بالا: امکان ذخیره‌سازی بیش از ۱۴۰,۰۰۰ دامنه تنها در ۰.۷ مگابایت از حافظه فلش.
  • مصرف RAM ناچیز: اشغال تنها ۵۰ کیلوبایت از حافظه RAM برای پردازش‌های اصلی.
  • سرعت پاسخ‌دهی: هر جستجو به‌طور میانگین تنها ۱۰ میلی‌ثانیه زمان می‌برد (شامل زمان رفت‌وبرگشت Wi-Fi) و نیازمند ۱۸ عملیات خواندن از حافظه فلش است.

این پروژه نه تنها یک تمرین عالی برای کار با حافظه‌های فلش در میکروکنترلرهاست، بلکه ابزاری کاربردی برای کسانی است که به دنبال راهکاری ارزان، کم‌مصرف و مستقل برای فیلترینگ تبلیغات در شبکه خود هستند.

مسدودکننده تبلیغات DNS با ESP32-C3 SuperMini در یک محفظه چاپ سه‌بعدی شده همراه با مبدل USB-C به USB-A برای اتصال مستقیم به روتر
مسدودکننده تبلیغات DNS با ESP32-C3 SuperMini در یک محفظه چاپ سه‌بعدی شده همراه با مبدل USB-C به USB-A برای اتصال مستقیم به روتر

مشخصات فنی و قابلیت‌های کلیدی پروژه

پروژه esp32-c3-adblock با هدف بهینه‌سازی حداکثری منابع در میکروکنترلرها طراحی شده است. در ادامه، جزئیات سخت‌افزاری و ویژگی‌های عملکردی این سیستم را بررسی می‌کنیم.

۱. نیازمندی‌های سخت‌افزاری

این سیستم برای اجرا به حداقل سخت‌افزار نیاز دارد و بر روی بردهای رایج ESP32 به‌خوبی آزمایش شده است:

  • تراشه مرکزی (SoC): استفاده از تراشه Espressif ESP32-C3FH4 با معماری تک‌هسته‌ای 32-bit RISC-V (فرکانس تا ۱۶۰ مگاهرتز).
  • حافظه و ذخیره‌سازی: نیاز به حداقل ۴ مگابایت حافظه فلش و بهره‌گیری از ۴۰۰ کیلوبایت SRAM.
  • اتصالات: ماژول ESP32-C3 Super Mini (۱۶ پین)، پشتیبانی از Wi-Fi 4 (شبکه ۲.۴ گیگاهرتز) و درگاه USB Type-C برای برنامه‌نویسی.
  • طراحی فیزیکی: استفاده از آنتن سرامیکی داخلی؛ همچنین فایل‌های STL برای پرینت سه‌بعدی کیس اختصاصی جهت این ماژول در دسترس است.

۲. معماری ذخیره‌سازی و عملکرد DNS Sinkhole

تفاوت اصلی این پروژه با سایر نمونه‌های مشابه، عدم استفاده از RAM برای نگهداری لیست دامنه‌هاست:

  • بهینه‌سازی حافظه: به جای ذخیره رشته‌های متنی در RAM، دامنه‌ها به صورت هش‌های ۴۰ بیتی FNV-1a (هر دامنه ۵ بایت) در حافظه فلش مرتب‌سازی و ذخیره می‌شوند.
  • ظرفیت فیلترینگ: بسته به پارتیشن‌بندی فریمور، ظرفیت‌های زیر قابل دستیابی است:
  • ۱۴۱ هزار دامنه: در حالت استاندارد (بدون تداخل).
  • ۲۵۰ هزار دامنه: با استفاده از پارتیشن‌بندی دوگانه (Dual-App) برای پشتیبانی از به‌روزرسانی OTA.
  • ۵۳۷ هزار دامنه: در حالت تک‌پارتیشن (با حداقل تداخل احتمالی).
  • سرعت پاسخ‌دهی: میانگین زمان پاسخ‌دهی (Latency) حدود ۱۰ میلی‌ثانیه است که شامل ۱۸ بار خواندن از فلش و زمان رفت‌وبرگشت شبکه (RTT) می‌شود.

۳. امنیت و پایداری

در طراحی این مسدودکننده، ملاحظات امنیتی برای محیط‌های شبکه در نظر گرفته شده است:

  • محافظت در برابر حملات وب: ایمن‌سازی کامل در برابر حملات CSRF و جلوگیری از حملات XSS با استفاده از HTML-escaping برای نام دامنه‌ها.
  • مدیریت دسترسی: استفاده از انواع پروتکل ها شبکه HTTP Basic Auth برای نقاط پایانی (Endpoints) که تغییرات سیستمی ایجاد می‌کنند.
  • پایداری تغذیه: با توجه به مصرف جریان رادیو در تراشه‌های ESP32، استفاده از یک منبع تغذیه ۵ ولت پایدار از طریق USB الزامی است تا از افت ولتاژ (Brownout) و اختلال در عملکرد سیستم جلوگیری شود.
مسدودکننده تبلیغات DNS با ESP32-C3 SuperMini که مستقیماً به پورت USB روتر متصل شده است
مسدودکننده تبلیغات DNS با ESP32-C3 SuperMini که مستقیماً به پورت USB روتر متصل شده است (تصویر با هوش مصنوعی بهبود یافته است)

مدیریت هوشمند: داشبورد تحت وب و به‌روزرسانی‌های OTA

یکی از نقاط قوت پروژه esp32-c3-adblock، رابط کاربری ساده و منعطف آن است که نیاز به دانش برنامه‌نویسی برای پیکربندی را به حداقل می‌رساند.

مدیریت آسان با داشبورد تحت وب

کاربران پس از راه‌اندازی، می‌توانند از طریق آدرس http://c3adblock.local به پنل مدیریتی سیستم دسترسی پیدا کنند. این داشبورد ابزارهای کاربردی زیر را در اختیار کاربر قرار می‌دهد:

  • مانیتورینگ لحظه‌ای: مشاهده تفکیک‌شده درخواست‌های DNS مسدودشده و مجاز برای هر کلاینت متصل به شبکه.
  • کنترل دسترسی: امکان مسدودسازی اختصاصی برای دستگاه‌های خاص در شبکه.
  • مدیریت لیست سیاه: قابلیت افزودن دستی دامنه‌های سفارشی به لیست سیاه (Blacklist).

پیکربندی اولیه نیز بسیار ساده طراحی شده است؛ به لطف قابلیت Captive Portal، دستگاه در اولین اجرا یک اکسس‌پوینت موقت ایجاد می‌کند تا کاربر بدون نیاز به اتصال مستقیم یا کدنویسی، اطلاعات وای‌فای خود را وارد و سیستم را به شبکه متصل کند.

قابلیت اطمینان با به‌روزرسانی‌های بی‌سیم (OTA)

این سیستم برای حفظ کارایی در طول زمان، از قابلیت به‌روزرسانی بی‌سیم (OTA) پشتیبانی می‌کند که شامل دو بخش مجزاست:

  1. به‌روزرسانی فریمور: دریافت آخرین اصلاحات و قابلیت‌های پروژه.
  2. به‌روزرسانی خودکار لیست‌ها: دانلود و جایگزینی فایل‌های لیست مسدودسازی از یک URL مشخص به صورت زمان‌بندی شده.

نکته فنی در مورد حافظه: طراحی پارتیشن‌بندی حافظه در این پروژه انعطاف‌پذیر است. در بردهای ۴ مگابایتی، استفاده از طرح Dual-App (برای پشتیبانی از OTA) حدود ۱.۳ مگابایت فضا برای لیست‌های مسدودسازی باقی می‌گذارد که ظرفیت ذخیره‌سازی ۲۵۰ هزار دامنه را فراهم می‌کند. در صورتی که نیاز به فیلترینگ گسترده‌تر (تا ۵۳۷ هزار دامنه) داشته باشید، می‌توانید از طرح Single-App استفاده کنید؛ هرچند در این حالت قابلیت به‌روزرسانی OTA برای فریمور غیرفعال خواهد شد.

داشبورد وب ESP32 C3 AdBlock که آمارهای لیست مسدودسازی، کلاینت‌های متصل، قدرت سیگنال وای‌فای، میزان مصرف حافظه و دامنه‌های مسدود شده سفارشی را نشان می‌دهد
داشبورد وب که آمارهای لیست مسدودسازی، کلاینت‌های متصل، قدرت سیگنال وای‌فای، میزان مصرف حافظه و دامنه‌های مسدود شده سفارشی را نشان می‌دهد (تصویر با هوش مصنوعی بهبود یافته است)

تحلیل معماری حافظه: چرا هش ۴۰ بیتی؟

شاید در نگاه اول، استفاده از یک هش غیرمعمول ۴۰ بیتی انتخابی نامتعارف به نظر برسد؛ اما بررسی‌های فنی نشان می‌دهد که این تصمیم، مهندسی‌شده‌ترین نقطه تعادل میان «حجم حافظه فلش» و «احتمال وقوع تداخل هش (Hash Collision)» است.

نتایج تحلیل تداخل‌ها در مقیاس‌های مختلف به شرح زیر است:

  • در لیست ۱۴۱ هزار دامنه: احتمال بروز تداخل عملاً صفر است.
  • در لیست ۵۳۷ هزار دامنه (حالت تهاجمی/Aggressive): طبق محاسبات، تنها یک تداخل احتمالی رخ می‌دهد؛ یعنی در بدترین حالت ممکن است تنها یک دامنه بی‌خطر به‌اشتباه مسدود (Over-blocked) شود.
  • چرا هش استاندارد ۳۲ بیتی انتخاب نشد؟ اگرچه هش ۳۲ بیتی فضای فلش کمتری مصرف می‌کرد، اما در ظرفیت ۲۵۰ هزار دامنه منجر به حدود ۷ تداخل می‌شد که خطای قابل‌توجهی برای یک DNS Blocker به شمار می‌رود. بنابراین، استفاده از ۵ بایت (۴۰ بیت) دقیق‌ترین بالانس فنی ممکن بوده است.

مقایسه معماری و پتانسیل توسعه در تراشه های دیگر

این پروژه از کد منبع ESP32_AdBlocker (اثر توسعه‌دهنده‌ای با نام مستعار s60sc) الهام گرفته شده، اما بازنویسی کاملاً مستقل با معماری متفاوتی است. در حالی که راهکارهای قبلی برای هندل کردن لیست‌های بزرگ نیازمند حافظه گران‌تر PSRAM بودند، این پیاده‌سازی بار اصلی ذخیره‌سازی را به حافظه فلش داخلی منتقل کرده است.

مزیت این معماری فقط به تراشه ارزان‌قیمت ESP32-C3 محدود نمی‌شود؛ بلکه قابل تعمیم به تراشه‌های بالارده‌تر خانواده Espressif نیز هست:

سناریوی ذخیره‌سازی در تراشه ESP32-S3 ظرفیت ذخیره‌سازی دامنه بستر ذخیره‌سازی
روش سنتی (ذخیره رشته متنی در PSRAM) حدود ۴۶۶,۰۰۰ دامنه ۸ مگابایت PSRAM
روش هش ۴۰ بیتی در فلش (معماری این پروژه) حدود ۲,۷۰۰,۰۰۰ دامنه ۱۶ مگابایت حافظه فلش

این مقایسه نشان می‌دهد که با این تکنیک، بدون صرف هزینه برای حافظه جانبی PSRAM، می‌توان به ظرفیت فیلترینگی تا ۶ برابر بیشتر در میکروکنترلرهای امبدد دست پیدا کرد.

اطلاعات
1
0
0
اشتراک و حمایت
profile نویسنده: 0x7a657573 متخصص الکترونیک

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


مقالات بیشتر

slide

پالت | بازار خرید و فروش قطعات الکترونیک

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

آیسی | موتور جستجوی قطعات الکترونیک

سامانه آی سی سیسوگ (Isee) قابلیتی جدید و کاربردی از سیسوگ است. در این سامانه سعی شده است که جستجو، انتخاب و خرید مناسب تر قطعات برای کاربران تسهیل شود. جستجو در آیسی
family

سیسوگ‌شاپ | فروشگاه محصولات Quectel

فروشگاه سیسوگ مجموعه ای متمرکز بر تکنولوژی های مبتنی بر IOT و ماژول های M2M نظیر GSM، GPS، LTE، NB-IOT، WiFi، BT و ... جایی که با تعامل فنی و سازنده، بهترین راهکارها انتخاب می شوند. برو به فروشگاه سیسوگ
family

سیسوگ فروم | محلی برای پاسخ پرسش‌های شما

دغدغه همیشگی فعالان تخصصی هر حوزه وجود بستری برای گفتگو و پرسش و پاسخ است. سیسوگ فروم یک انجمن آنلاین است که بصورت تخصصی امکان بحث، گفتگو و پرسش و پاسخ در حوزه الکترونیک را فراهم می‌کند. پرسش در سیسوگ فرم
family

سیکار | اولین مرجع متن باز ECU در ایران

بررسی و ارائه اطلاعات مربوط به ECU (واحد کنترل الکترونیکی) و نرم‌افزارهای متن باز مرتبط با آن برو به سیکار
become a writer
نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله
become a writer
نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله

خانواده سیسوگ

سیسوگ‌شاپ

فروشگاه محصولات Quectel

پالت
سیسوگ فروم

محلی برای پاسخ پرسش‌های شما

سیسوگ جابز
سیسوگ
سیسوگ فروم
سی‌کار

اولین مرجع متن باز ECU در ایران

سیسوگ مگ
آی‌سی

موتور جستجوی قطعات الکترونیکی

سیسوگ آکادمی
پالت

بازار خرید و فروش قطعات الکترونیک

دیدگاه ها

become a writer
نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله
become a writer
نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله