
537,000개 도메인을 작은 5달러짜리 ESP32 광고 차단 동글에 담다 — 펌웨어는 약 50KB의 RAM만 사용하며 10밀리초 만에 차단된
요약
5달러짜리 ESP32 마이크로컨트롤러를 활용하여 50만 개 이상의 도메인을 차단하는 저비용 광고 차단 DNS 필터를 구현할 수 있습니다. 이 시스템은 Pi-hole의 백업 역할을 수행하며, 플래시 메모리에 해시 테이블을 저장하고 요청된 도메인과 비교하여 매우 낮은 지연 시간(약 10ms)으로 작동합니다.
핵심 포인트
- 저렴한 ESP32 마이크로컨트롤러로 고성능 광고 차단기 구현 가능
- DNS 필터링에 해시 테이블과 이진 검색을 활용하는 것이 핵심 기술
- Pi-hole의 백업 시스템으로서 저비용 네트워크 보안 솔루션 제공
하드웨어 기반의 광고 차단 DNS 필터를 얼마나 저렴하게 만들 수 있을까요? 버려지는 중고 하드웨어를 구하는 의향이 있다면 '공짜'입니다. 하지만 그렇게 운이 좋지 않다면 어떨까요? RAMageddon 시대에는 Raspberry Pi조차도 몇백 달러가 들 것입니다. 하지만 여러분, 그토록 강력한 것이 필요하지 않습니다. 사실 5달러짜리 마이크로컨트롤러를 사용하여 50만 개 이상의 도메인을 차단하고 약 10ms의 지연 시간(latency)을 가진 완벽하게 작동하는 광고 차단 필터를 만들 수 있습니다.
이것이 가능하다는 것을 우리는 알고 있습니다. 이집트의 풀스택 개발자 ZedAxis(@M-Abozaid on GitHub)가 이미 하나를 구축했기 때문입니다. 그는 ESP32-C3 "SuperMini" 보드를 사용하여 광고 차단 기능을 제공하는 가정용 네트워크 백업 DNS을 만들었습니다. 그의 주 라우터는 DHCP 주소 지정 및 광고 차단을 통합하여 DNS 해석(DNS resolution)을 관리하는 특수 소프트웨어를 실행하는 Pi-hole이며, Pi-hole은 Raspberry Pi입니다. SuperMini는 Pi-Hole이 재부팅되거나 달리 사용할 수 없을 때 백업 역할을 합니다.

ZedAxis가 사용한 특정 ESP32-C3 SuperMini 보드. (이미지 출처: ZedAxis/YouTube)
엄밀히 말하자면, 우리는 ZedAxis가 만든 것을 작동하는 모습을 본 적은 없지만, 그것이 작동하지 않을 이유도 없습니다. ESP32 계열의 임베디드 Wi-Fi 지원 마이크로컨트롤러는 잘 알려진 기술이며, 이러한 기능은 그 능력 범위를 벗어난 것이 결코 아닙니다. 실제로 이 특정 트릭은 일부 고급 모델에서 볼 수 있는 8MB의 PSRAM이 없는 비용 절감 버전인 ESP32-C3를 사용할 수 있게 해줍니다. (ESP32에는 많은 변종이 있습니다.
흥미로운 점은 해싱(hashing) 자체가 아닙니다. 도메인 자체를 저장하는 대신, 빌드 과정에서 하나 이상의 공개 블록리스트(public blocklists)를 다운로드하고, 중복 항목과 주석을 제거한 다음, 남아 있는 각 도메인을 40비트 값으로 해시화하고, 결과 목록을 정렬하여 완성된 데이터베이스를 ESP32의 플래시 메모리에 기록합니다. DNS 쿼리가 도착하면, 장치는 요청된 호스트 이름을 동일한 방식으로 해시화하고, 정렬된 해시 테이블을 대상으로 이진 검색(binary search)을 수행합니다. 일치하는 항목을 찾으면 요청을 차단합니다. 그렇지 않으면 쿼리를 상위 리졸버(upstream resolver)로 전달합니다. ZedAxis에 따르면, 완성된 펌웨어는 약 50KB의 RAM만 사용하면서도 대략 10밀리초 만에 차단된 조회 결과를 알려줍니다.
설계에는 또 다른 멋진 절충안이 숨어 있습니다. ESP32는 일반적으로 자체 펌웨어를 두 개의 완전한 복사본을 담을 수 있는 충분한 플래시 메모리를 예약하여, 실패한 플래시가 장치를 부팅 불가능하게 만들 위험 없이 무선 업데이트(OTA: over-the-air)를 허용합니다. 만약 무선 펌웨어 업데이트에 신경 쓰지 않는다면, 두 번째 펌웨어 파티션을 블록리스트 데이터베이스로 재활용할 수 있습니다. OTA 지원을 활성화하면 프로젝트는 약 250,000개의 차단 도메인으로 제한됩니다. OTA를 포기하면 이 숫자는 보통 패스트푸드 점심 가격에 살 수 있는 마이크로컨트롤러에서 약 537,000개까지 증가합니다. ZedAxis는 이 가격을 $2라고 설명했지만, 저는 SuperMini 보드를 $5 US보다 더 싸게 찾을 수는 없었습니다. 하지만 그 가격대에서는 차이점을 따질 필요가 거의 없습니다.
물론 이것이 제대로 된 Pi-hole이나 AdGuard Home 설치를 대체하려는 목적은 아닙니다. 이 ESP32 프로젝트는 기본적인 대시보드를 제공하지만, 클라이언트별 상세 통계, 과거 쿼리 로그 또는 해당 플랫폼들을 매력적으로 만드는 모든 기능(knobs and dials)을 제공하지는 않습니다. 대신, 이것은 작은 보험 정책처럼 설계되었습니다. 네트워크에 조용히 자리 잡고, 수십 밀리암페어의 전력만 소모하며, 만약 주 DNS 서버가 재부팅이나 정전으로 사라지더라도, 클라이언트들은 라우터가 우연히 설정한 어떤 리졸버로 폴백(fallback)하는 대신 필터링된 DNS 응답을 받게 됩니다.

이 백업 광고 차단기는 제작자의 가정용 게이트웨이에 연결되어 있어 거의 눈에 띄지 않습니다. (이미지 출처: ZedAxis/YouTube)
제가 가장 좋아하는 부분은 ZedAxis가 이 모든 것을 ISP에서 제공하는 광섬유 게이트웨이인 Huawei OptiXstar의 뒷면 USB 포트 전원으로 구동한다는 점입니다. USB 연결로는 데이터가 전혀 전달되지 않습니다. 통합의 전체 과정은 라우터가
AI 자동 생성 콘텐츠
본 콘텐츠는 Tom's Hardware의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기