به نقل از CNX Software – Embedded Systems News
در دنیای شبکههای خانگی، مسدودسازی تبلیغات در سطح شبکه معمولاً به سختافزارهایی مانند رزبری پای و ابزارهایی مثل Pi-hole وابسته است. با این حال، یک پروژه متنباز جدید نشان میدهد که میتوان با بهینهسازی نرمافزاری، حتی یک میکروکنترلر ساده را به ابزاری قدرتمند تبدیل کرد.
این پروژه با استفاده از الگوریتم هش FNV-1a و ساختار ذخیرهسازی بهینه روی حافظه فلش، تراشه اقتصادی ESP32-C3 را به یک مسدودکننده تبلیغات DNS برای تراشه ESP32-C3 تبدیل میکند؛ سیستمی مستقل که بدون نیاز به حافظه جانبی (PSRAM)، توانایی فیلتر بیش از ۵۰۰ هزار دامنه تبلیغاتی را دارد. بهرهگیری از جستوجوی دودویی (Binary Search) برای پاسخدهی سریع به درخواستها و ارائه یک داشبورد تحت وب جهت مدیریت شبکه، این راهکار را به جایگزینی فوقالعاده کممصرف، ارزان و پایدار در مقایسه با ابزارهای سنتی تبدیل کرده است.
پروژه esp32-c3-adblock که توسط Zed (M-Abozaid) توسعه یافته، یک راهکار متنباز و جذاب برای پیادهسازی یک مسدودکننده تبلیغات DNS برای تراشه ESP32-C3 است. جذابیت اصلی این پروژه در امکان تبدیل یک میکروکنترلر ارزانقیمت ۲ دلاری به ابزاری مشابه Pi-hole است؛ بدون اینکه نیازی به PSRAM یا سختافزارهای گرانقیمت داشته باشد. این سیستم با مدیریت هوشمند درخواستهای DNS، تمامی تبلیغات و دامنههای ردیابی را در سطح شبکه خانگی یا دفاتر کوچک، شناسایی و مسدود میکند.
تیم توسعهدهنده برای غلبه بر محدودیتهای حافظه در میکروکنترلرها، استراتژی هوشمندانهای را به کار گرفته است. بهجای ذخیره مستقیم دامنهها در RAM که فضای زیادی اشغال میکند، این سیستم از هشهای ۴۰ بیتی FNV-1a استفاده کرده و آنها را بهصورت مرتبشده در حافظه فلش (Flash Memory) ذخیره میکند.
هنگامی که یک پرسوجوی UDP DNS توسط ESP32-C3 دریافت میشود، فرآیند زیر طی میشود:
0.0.0.0 را برای بلاک کردن درخواست بازمیگرداند. در غیر این صورت، پرسوجو به سرور DNS بالادستی (Upstream) هدایت شده و پاسخ به کلاینت منتقل میشود.این رویکرد بهینه، نتایج تحسینبرانگیزی به همراه داشته است:
این پروژه نه تنها یک تمرین عالی برای کار با حافظههای فلش در میکروکنترلرهاست، بلکه ابزاری کاربردی برای کسانی است که به دنبال راهکاری ارزان، کممصرف و مستقل برای فیلترینگ تبلیغات در شبکه خود هستند.

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

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

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