Bloccare la pubblicità su tutti i dispositivi collegati alla rete domestica senza utilizzare un computer dedicato potrebbe diventare molto più semplice. Un interessante progetto realizzato dallo sviluppatore egiziano conosciuto come ZedAxisdimostra infatti come sia possibile trasformare un piccolo ESP32-C3 SuperMini in un sistema capace di filtrare centinaia di migliaia di domini.
Il dispositivo ha dimensioni poco superiori a quelle di una comune chiavetta USB e dispone di appena 4 MB di memoria e circa 400 KB di RAM. Nonostante queste limitazioni, il progetto riesce a gestire oltre mezzo milione di indirizzi da bloccare.
Oltre 537.000 domini gestiti con pochissima memoria
Il sistema è stato pensato inizialmente come soluzione di emergenza per una rete che utilizza già Pi-hole. Se il server principale viene riavviato o diventa momentaneamente irraggiungibile, l’ESP32-C3 può subentrare mantenendo attivo il filtraggio DNS.
Per comprimere un database così ampio, ogni dominio viene trasformato in un hash a 40 bit attraverso l’algoritmo FNV-1a. Il software scarica le liste pubbliche dei domini indesiderati, rimuove duplicati e commenti e successivamente memorizza gli hash ottenuti.
Quando un dispositivo della rete effettua una richiesta DNS, il microcontrollore genera l’hash del dominio e lo confronta con quelli presenti nel database utilizzando una ricerca binaria ottimizzata. Se viene trovata una corrispondenza, la richiesta viene bloccata; diversamente viene inoltrata a un server DNS esterno.
In questo modo possono essere gestiti più di 537.000 domini, utilizzando circa 50 KB di RAM durante il funzionamento. Il tempo di risposta dichiarato è di circa 10 millisecondi.
Il compromesso riguarda gli aggiornamenti OTA
Per raggiungere questa capacità è stato necessario eliminare la partizione riservata agli aggiornamenti OTA. Mantenendola attiva, il database potrebbe contenere circa 250.000 domini.
Il progetto rimane naturalmente molto più semplice rispetto a piattaforme come Pi-hole o AdGuard, che offrono statistiche, whitelist, registri delle attività e numerose possibilità di configurazione.
Il vantaggio principale risiede invece nei costi e nei consumi estremamente contenuti: per alimentare il dispositivo sarebbe sufficiente persino una porta USB del router. Al momento, però, non sono state pubblicate istruzioni dettagliate che permettano di replicare facilmente il progetto.