ESP32-C3 AdBlock: 2달러 슈퍼미니 보드로 구축하는 초경량 하드웨어 DNS 광고 차단기
라즈베리 파이나 상시 구동 서버 없이 약 2~5달러의 ESP32-C3 슈퍼미니 보드로 구현한 오픈소스 DNS 광고 차단기입니다. 플래시 메모리 기반 40비트 해시 이진 탐색으로 53만 개 도메인을 필터링하며, 공유기 USB 전원과 Wi-Fi로 네트워크 전체를 보호합니다.
개발자 ZedAxis(M-Abozaid)가 약 2~5달러 수준의 초소형 마이크로컨트롤러 보드인 ESP32-C3 SuperMini를 활용해 네트워크 전체의 광고와 트래커를 차단하는 오픈소스 하드웨어 DNS 싱크홀 프로젝트 'ESP32-C3 AdBlock'을 공개했습니다. 라즈베리 파이(Raspberry Pi)나 상시 가동 홈 서버 없이도 공유기 뒷면 USB 포트에 꽂아 전원을 공급받고 Wi-Fi로 동작하는 초소형 독립형 DIY 솔루션입니다.

이미지 출처: ZedAxis (M-Abozaid)
기존 파이홀(Pi-hole)이나 애드가드 홈(AdGuard Home)과 같은 네트워크 레벨 DNS 차단기는 수십만 개의 도메인 목록을 메모리에 유지하기 위해 최소 수백 메가바이트 이상의 RAM을 탑재한 싱글보드 컴퓨터(SBC)나 가상머신을 요구하는 경우가 많았습니다. 이번 프로젝트는 별도의 외장 PSRAM이 없는 400KB RAM 환경에서도 대규모 차단 목록을 고속으로 처리할 수 있도록 임베디드 아키텍처를 최적화했습니다.
40비트 FNV-1a 해시와 플래시 이진 탐색: 400KB RAM 한계 극복
ESP32-C3 AdBlock의 핵심 기술은 차단 목록을 RAM에 전부 로드하지 않고 플래시 메모리에서 직접 조회하는 데이터 구조 설계에 있습니다.
ESP32-C3 SuperMini는 400KB의 내장 RAM과 4MB의 SPI 플래시 메모리만을 갖추고 있습니다. 프로젝트는 약 53만 7천 개에 달하는 광고 및 추적 도메인 목록을 고정 길이 5바이트(40비트) FNV-1a 해시로 변환하여 정렬된 상태로 플래시 파티션에 기록합니다.
- 극단적인 메모리 절감: 14만 개 이상의 도메인이 약 0.7MB의 플래시 공간에 압축 저장되며, 시스템 구동 시 차단 엔진이 소비하는 RAM은 약 50KB~180KB 수준에 불과합니다.
- 고속 이진 탐색(Binary Search): DNS 쿼리가 유입되면 정렬된 플래시 인덱스를 대상으로 이진 탐색을 수행하여 약 1~10ms 이내에 차단 여부를 판별합니다.
- 블룸 필터 결합: 구현 변체에 따라 약 128KB 크기의 블룸 필터(Bloom Filter)를 사전 필터로 활용해 일반 정상 도메인에 대한 응답 지연을 1ms 미만으로 단축합니다.
이러한 접근법을 통해 고가의 SBC 하드웨어를 추가하지 않고도 마이크로컨트롤러 단독으로 안정적인 UDP DNS 싱크홀을 운용할 수 있습니다.
공유기 USB 전원 직결과 웹 대시보드 관리 환경
설치와 운용 방식은 홈 네트워크 환경의 편의성을 극대화하도록 설계되었습니다.
- 무전원 어댑터 직결 구조: 공유기(라우터) 후면의 USB 포트에 직접 꽂아 전원을 공급받습니다. USB 연결은 순수 전력 공급용이며, 실제 통신은 보드 내장 Wi-Fi 인터페이스를 통해 로컬 네트워크와 무선으로 이루어집니다.
- 네트워크 전역 적용: 공유기 관리자 페이지에서 기본 DNS 서버 주소를 ESP32 보드의 로컬 IP로 지정하면, 별도의 브라우저 확장 프로그램 설치나 기기별 개별 설정 없이 스마트폰, 스마트 TV, 태블릿, PC 등 연결된 모든 기기에 광고 차단이 적용됩니다.
- 내장 웹 대시보드: 펌웨어 내부에 가벼운 웹 서버가 탑재되어 있어, 웹 브라우저를 통해 실시간 차단 쿼리 통계를 모니터링하고 커스텀 허용/차단 도메인을 추가할 수 있습니다.
- 오픈소스 케이스와 웹 플래셔: 3D 프린터로 즉시 출력할 수 있는 전용 케이스 모델링 파일(.stl)이 함께 제공되며, 크로미움(Chromium) 기반 브라우저의 Web Serial API를 활용한 원클릭 웹 플래셔를 통해 복잡한 툴체인 설치 없이 펌웨어를 보드에 기록할 수 있습니다.
DNS 기반 차단의 기술적 범위와 암호화 DNS 유의점
하드웨어 기반 DNS 싱크홀을 구축할 때 고려해야 할 기술적 한계와 네트워크 설정 유의사항도 명확히 짚어두어야 합니다.
첫째, 본 기기는 DNS 질의를 가로채 차단 대상 IP를 0.0.0.0 또는 싱크홀로 반환하는 원리로 동작합니다. 따라서 웹 페이지의 서드파티 배너 광고나 범용 트래커는 효과적으로 차단되지만, 유튜브(YouTube)와 같이 동영상 스트림과 광고 영상이 동일한 퍼스트 파티 도메인 및 CDN 경로로 제공되는 플랫폼의 인스트림 광고는 DNS 레벨에서 완벽히 분리 차단할 수 없습니다.
둘째, 최신 모바일 OS 및 웹 브라우저가 DoH(DNS-over-HTTPS)나 DoT(DNS-over-TLS)와 같은 암호화 DNS를 강제 적용하는 경우, 로컬 라우터의 표준 DNS(UDP 포트 53)를 우회할 수 있습니다. 이를 방지하기 위해서는 공유기 방화벽에서 공용 DoH/DoT 포트 접근을 차단하거나 로컬 ESP32로 포트 리다이렉션을 구성하는 추가 설정이 권장됩니다.
출처
- GitHub 저장소: M-Abozaid/esp32-c3-adblock
- X 데모 시연 (@Psalteric): ESP32-C3 AdBlock Hardware Demo
- UNILAD Tech: $5 USB device is capable of blocking ads from over 500,000 websites in just 10 milliseconds