Repolode
M-Abozaid

M-Abozaid/esp32-c3-adblock

플래시 메모리에 차단 목록 해시를 저장해 PSRAM 없이 동작하는 2달러짜리 ESP32-C3용 Pi-hole 스타일 DNS 광고 차단기입니다.

대체할 수 있는 제품:Pi-hole

스타
3,519
포크
395
열린 이슈
34
마지막 커밋
어제

어떤 프로젝트인가요?

esp32-c3-adblock은 소형 ESP32-C3 마이크로컨트롤러 보드를 네트워크 DNS 싱크홀로 바꿔 줍니다. 네트워크의 기기에서 보드의 DNS를 사용하도록 설정하면, 보드는 차단 도메인에 0.0.0.0으로 응답하고 나머지 쿼리는 업스트림 리졸버로 전달합니다.

핵심 방식은 차단 도메인을 정렬된 40비트 FNV-1a 해시로 변환해 플래시에 저장하고, 조회할 때 이 테이블을 이진 탐색하는 것입니다. 덕분에 차단 목록을 RAM에 올리지 않아도 되며, 펌웨어는 약 50 KB의 RAM만 사용하고 PSRAM 없이 실행됩니다. 프로젝트에 따르면 약 0.7 MB의 플래시에 도메인 약 14만 1천 개를 저장할 수 있고, 더 큰 목록을 사용하면 약 53만 7천 개까지 저장할 수 있습니다.

보드는 클라이언트별 차단 횟수, 사용자 지정 차단 및 허용 항목, WiFi를 통한 차단 목록 또는 펌웨어 업데이트를 제공하는 웹 대시보드를 실행합니다. 차단 목록은 hosts 파일, 일반 도메인 목록 또는 AdGuard 스타일 규칙을 받아 Python 스크립트로 생성합니다.

핵심 기능

  • 01UDP DNS로 차단 도메인에 0.0.0.0을 응답하고, 그 외 쿼리는 업스트림으로 전달합니다.
  • 02차단 목록을 40비트 해시로 변환해 플래시에 저장하며, RAM 약 50 KB를 사용하고 PSRAM은 필요하지 않습니다.
  • 03클라이언트별 차단 횟수와 사용자 지정 차단 또는 허용 항목을 제공하는 웹 대시보드.
  • 04무선 펌웨어 및 차단 목록 업데이트와 예약된 원격 차단 목록 가져오기.
  • 05캡티브 포털 WiFi 설정과 c3adblock.local을 통한 mDNS 검색.
  • 06hosts 파일, 일반 도메인 목록, AdGuard 기본 규칙을 지원하는 차단 목록 생성기.

활용 사례

  • Raspberry Pi를 구매하지 않고 홈 라우터에서 네트워크 전체의 광고 및 트래커 차단을 설정할 때.
  • 기본 DNS 뒤에서 도메인을 차단하는 저전력 보조 DNS 리졸버를 운영할 때.
  • 저렴한 ESP32-C3 보드에서 임베디드 DNS 필터링을 실험할 때.

빠른 시작

  1. 1

    시크릿 템플릿을 복사한 뒤 Wi-Fi 및 대시보드 인증 정보를 입력합니다

    cp src/secrets.example.h src/secrets.h
  2. 2

    차단 목록 해시 테이블을 빌드합니다

    python3 tools/build_blocklist.py data/blocklist.bin
  3. 3

    USB를 통해 ESP32-C3에 펌웨어를 플래시합니다

    pio run -t upload
  4. 4

    USB를 통해 차단 목록 파일 시스템을 플래시합니다

    pio run -t uploadfs

사용 전 알아둘 점

  • 최신 PlatformIO가 필요합니다. 오래된 apt 패키지 버전은 빌드에 실패합니다.
  • 플래시 용량이 4 MB인 경우, 펌웨어 OTA 업데이트를 사용하면 차단 목록은 약 25만 개 도메인으로 제한됩니다.
  • secrets.h에 대시보드 및 OTA 비밀번호를 설정하지 않으면 기기가 공개된 기본 인증 정보로 부팅됩니다.
  • 트래픽은 Basic Auth를 사용하는 일반 HTTP이므로 LAN에서 암호화되지 않습니다.

포함된 컬렉션

토픽

자주 묻는 질문

esp32-c3-adblock은(는) 무엇인가요?
플래시 메모리에 차단 목록 해시를 저장해 PSRAM 없이 동작하는 2달러짜리 ESP32-C3용 Pi-hole 스타일 DNS 광고 차단기입니다. esp32-c3-adblock은 소형 ESP32-C3 마이크로컨트롤러 보드를 네트워크 DNS 싱크홀로 바꿔 줍니다. 네트워크의 기기에서 보드의 DNS를 사용하도록 설정하면, 보드는 차단 도메인에 0.0.0.0으로 응답하고 나머지 쿼리는 업스트림 리졸버로 전달합니다.
esp32-c3-adblock은(는) 무료로 사용할 수 있나요? 라이선스는 무엇인가요?
esp32-c3-adblock은(는) MIT 라이선스의 오픈소스입니다. 상업용 제품에 사용하기 전에 라이선스 조건을 확인하세요.
esp32-c3-adblock은(는) 아직 유지보수되고 있나요?
활발히 유지보수 중. esp32-c3-adblock의 마지막 커밋은 2026년 11월 6일입니다.
esp32-c3-adblock은(는) 어디에 사용할 수 있나요?
Raspberry Pi를 구매하지 않고 홈 라우터에서 네트워크 전체의 광고 및 트래커 차단을 설정할 때. 기본 DNS 뒤에서 도메인을 차단하는 저전력 보조 DNS 리졸버를 운영할 때. 저렴한 ESP32-C3 보드에서 임베디드 DNS 필터링을 실험할 때.
esp32-c3-adblock는 어떻게 설치하나요?
시크릿 템플릿을 복사한 뒤 Wi-Fi 및 대시보드 인증 정보를 입력합니다: cp src/secrets.example.h src/secrets.h 차단 목록 해시 테이블을 빌드합니다: python3 tools/build_blocklist.py data/blocklist.bin USB를 통해 ESP32-C3에 펌웨어를 플래시합니다: pio run -t upload USB를 통해 차단 목록 파일 시스템을 플래시합니다: pio run -t uploadfs
esp32-c3-adblock은(는) 어디서 받을 수 있나요?
소스 코드와 설치 방법은 GitHub에 있습니다: https://github.com/M-Abozaid/esp32-c3-adblock

요약은 프로젝트 README를 바탕으로 AI가 작성했습니다. GitHub 통계는 매일 갱신됩니다.

관련 프로젝트

모든 DNS 서버나 광고 차단기에서 네트워크 전체의 광고, 추적기, 텔레메트리, 피싱, 멀웨어, 사기 사이트를 차단하는 DNS 차단 목록 모음입니다.

보안#dns#blocklist#adblock
2.8만+280 이번 주861TextGPL-3.0업데이트 어제