یک توسعهدهنده با برد ۵ دلاری ESP32-C3، مسدودکننده تبلیغاتی ساخته است که ۵۳۷ هزار دامنه را با تاخیر حدود ۱۰ میلی ثانیه در شبکه فیلتر میکند.
به گزارش سرویس اینترنت و شبکه تکناک، یک فیلتر DNS سختافزاری را برای مسدود کردن تبلیغات با چه هزینه کمی میتوان ساخت؟ اگر امکان بازیابی و استفاده از سختافزارهای دستدومی که دور ریخته میشوند وجود داشته باشد، پاسخ «رایگان» است.
با وجود این، اگر چنین شانسی در کار نباشد، چه؟ در دوران «رمگدون» یا همان بحران حافظه، حتی یک رزبری پای هم ممکن است چند صد دلار هزینه داشته باشد. هرچند، نیازی به استفاده از دستگاهی با چنین قدرتی نیست. در واقع، میتوان با یک میکروکنترلر ۵ دلاری، فیلتری کاملا کاربردی برای مسدود کردن تبلیغات ساخت که بیش از ۵۰۰ هزار دامنه را مسدود میکند.
امکانپذیر بودن این ایده را میتوان در پروژهای دید که ZedAxis، توسعهدهنده فولاستک مصری با نام کاربری M-Abozaid در گیتهاب ساخته است. او با استفاده از برد حدود ۵ دلاری ESP32-C3 SuperMini، یک DNS پشتیبان برای شبکه خانگی خود ساخته است که همچنان قابلیت مسدود کردن تبلیغات را ارائه میدهد. روتر اصلی او به Pi-hole مجهز است؛ یعنی یک رزبری پای که نرمافزاری تخصصی را برای مدیریت آدرسدهی DHCP، پردازش درخواستهای DNS و مسدود کردن یکپارچه تبلیغات اجرا میکند. برد SuperMini نیز هنگام راهاندازی مجدد Pi-hole یا در دسترس نبودن آن، نقش سرور پشتیبان را بر عهده میگیرد.

در واقع، عملکرد ساخته ZedAxis هنوز به صورت عملی مشاهده نشده است، اما دلیلی هم برای تردید در کارکرد آن وجود ندارد. خانواده ESP32 از میکروکنترلرهای توکار مجهز به وایفای، کاملا شناختهشده هستند و چنین قابلیتی بههیچوجه خارج از محدوده تواناییهای آنها نیست. این روش حتی امکان استفاده از ESP32-C3 را فراهم میکند؛ نسخهای ارزانتر از این تراشه که برخلاف بعضی مدلهای پیشرفتهتر به ۸ مگابایت حافظه PSRAM مجهز نیست. البته مدلهای بسیار متنوعی از ESP32 وجود دارد.
برد ۵ دلاری ESP32-C3 مورد استفاده ZedAxis تنها ۴۰۰ کیلوبایت رم و ۴ مگابایت حافظه فلش دارد. با چنین مشخصات محدودی، ذخیرهسازی یک فهرست مسدودسازی متنی با اندازه قابل توجه ممکن نبود، چرا که حجم دادهها بیش از حد زیاد میشد. بنابراین، همان راهکاری به کار گرفته شد که از یک هکر خلاق انتظار میرود و آن هشکردن دادهها برای کاهش حجم آنها بود.
در این پروژه از هشهای ۴۰ بیتی FNV-1a استفاده شده است، چرا که هش ۳۲ بیتی برخوردهای بسیار زیادی ایجاد میکند و هش ۶۴ بیتی نیز فضای بیش از اندازهای مصرف میکند. با این روش میتوان اطلاعات حدود ۵۳۷ هزار دامنه را در حافظه فلش دستگاه ذخیره کرد.

این پروژه، رابط کاربری سادهای دارد که از طریق آن میتوان بعضی آمارها را مشاهده و دامنههای سفارشی را برای مسدودسازی تنظیم کرد.
با وجود این، بخش هوشمندانه این پروژه صرفا به هشکردن دادهها مربوط نمیشود. فرایند ساخت بهجای ذخیرهسازی مستقیم دامنهها، ابتدا یک یا چند فهرست مسدودسازی عمومی را دانلود میکند. سپس ورودیهای تکراری و توضیحات را حذف مینماید، هر دامنه باقیمانده را به یک مقدار ۴۰ بیتی هش میکند، فهرست بهدستآمده را مرتب میسازد و پایگاه داده نهایی را در حافظه فلش ESP32 مینویسد.
هنگامی که یک درخواست DNS دریافت میشود، دستگاه نام میزبان درخواستشده را با همان روش هش میکند و سپس در جدول هش مرتبشده، جستوجوی دودویی انجام میدهد. اگر موردی مطابق با درخواست پیدا شود، درخواست مسدود خواهد شد. در غیر این صورت، درخواست به یک سرور حلکننده بالادستی ارسال میشود. به گفته ZedAxis، فرمور نهایی تنها حدود ۵۰ کیلوبایت رم مصرف میکند و درخواستهای مسدودشده را در حدود ۱۰ میلیثانیه پاسخ میدهد.
یک سازش هوشمندانه دیگر نیز در طراحی این پروژه وجود دارد. ESP32 معمولا بخشی از حافظه فلش را برای نگهداری دو نسخه کامل از فرمور کنار میگذارد. این ساختار امکان نصب بهروزرسانیهای بیسیم یا OTA را فراهم میکند، بدون اینکه خرابی فرایند نوشتن فرمور باعث شود دستگاه دیگر راهاندازی نشود.
اگر به بهروزرسانی بیسیم فرمور نیازی نباشد، میتوان پارتیشن مربوط به نسخه دوم فرمور را پس گرفت و از آن برای ذخیره پایگاه داده فهرست مسدودسازی استفاده کرد. با فعال بودن پشتیبانی از OTA، این پروژه میتواند حداکثر حدود ۲۵۰ هزار دامنه را مسدود کند. با صرفنظر کردن از OTA، این ظرفیت در میکروکنترلری که معمولا با قیمت یک وعده غذای فستفودی فروخته میشود، به حدود ۵۳۷ هزار دامنه افزایش پیدا میکند.
ZedAxis قیمت این برد را ۲ دلار اعلام کرده است، هرچند بردهای SuperMini با قیمتی کمتر از حدود ۵ دلار در ایالات متحده پیدا نشدند؛ هرچند در این محدوده قیمت، اختلاف میان ۲ و ۵ دلار چندان اهمیتی ندارد.
البته این پروژه قرار نیست جایگزین یک سیستم کامل Pi-hole یا AdGuard Home شود. پروژه ESP32 داشبوردی ساده دارد، اما آمار دقیق هر کاربر، تاریخچه درخواستها یا تمام تنظیمات و امکاناتی که این پلتفرمها را جذاب میکنند، ارائه نمیدهد. در عوض، این دستگاه به عنوان نوعی راهکار پشتیبان کوچک طراحی شده است.
این برد بدون جلب توجه در شبکه باقی میماند، تنها چند ده میلیآمپر برق مصرف میکند و اگر سرور DNS اصلی به دلیل راهاندازی مجدد یا قطعی برق از دسترس خارج شود، دستگاههای متصل همچنان پاسخهای DNS فیلترشده دریافت خواهند کرد؛ در نتیجه، مجبور نمیشوند به سرور حلکنندهای بازگردند که روتر به طور پیشفرض برای آنها تنظیم کرده است.

بر اساس گزارش تامز هاردور، جالبترین بخش پروژه این است که ZedAxis تمام دستگاه را از طریق درگاه USB پشت گیتوی فیبر نوری ارائهشده توسط شرکت سرویسدهنده اینترنت تامین برق میکند؛ دستگاهی که یک گیتوی فیبر خانگی Huawei OptiXstar است. اتصال USB هیچ دادهای منتقل نمیکند و تمام یکپارچگی میان دو دستگاه به این خلاصه میشود که روتر اعلام میکند «این هم ۵ ولت» و ESP32 پاسخ میدهد «ممنون».
در واقع، این درگاه فقط منبع تغذیه مناسبی برای دستگاهی محسوب میشود، که آنقدر کوچک است که عملا پشت روتر ناپدید میشود. تمام ارتباطات نیز از طریق آداپتور وایفای داخلی ESP32 انجام میشوند.
مشخص نیست پروژههایی از این نوع روزی فراگیر خواهند شد یا خیر. احتمالا چنین اتفاقی رخ نمیدهد، زیرا بیشتر افرادی که به دنبال مسدود کردن تبلیغات در سراسر شبکه هستند، همچنان یک رزبری پای یا مینیکامپیوتر دستدوم میخرند یا AdGuard Home را در یک ماشین مجازی اجرا میکنند. با وجود این، دیدن فردی که به یک میکروکنترلر ۵ دلاری با ۴۰۰ کیلوبایت رم نگاه میکند و به این نتیجه میرسد که «بله، همین کافی است»، اتفاقی جذاب و تازه به نظر میرسد.

















