TECH 으로 돌아가기
TECH HACKER NEWS 오늘 7분 읽기 29 READS

몇 천 원짜리 칩으로 집 전체 광고 차단하기: ESP32-C3로 만드는 초소형 Pi-hole

몇 천 원짜리 칩으로 집 전체 광고 차단하기: ESP32-C3로 만드는 초소형 Pi-hole
SOURCE IMAGE · HACKER NEWS
몇 천 원짜리 칩으로 집 전체 광고 차단하기: ESP32-C3로 만드는 초소형 Pi-hole

라즈베리파이 없이 집 전체 광고를 막을 수 있다면

집에서 Pi-hole을 돌려보신 분들 계실 거예요. Pi-hole은 네트워크 전체에 광고 차단을 걸어주는 프로그램인데, 보통 라즈베리파이 같은 작은 리눅스 컴퓨터에 설치해서 쓰죠. 그런데 GitHub에 올라온 esp32-c3-adblock은 같은 일을 ESP32-C3라는 손톱만 한 마이크로컨트롤러에서 해보자는 프로젝트예요. 리눅스도 SD카드도 없이요.

ESP32-C3가 뭐냐면, Espressif가 만든 Wi-Fi 내장 칩이에요. RISC-V 기반 싱글코어 CPU(최대 160MHz)에 SRAM이 400KB 정도 들어 있고, 개발 보드는 몇 천 원이면 살 수 있어요. 라즈베리파이가 '작은 컴퓨터'라면 ESP32-C3는 '똑똑한 전자 부품'에 더 가까워요. 메모리가 기가바이트도 메가바이트도 아닌 킬로바이트 단위라는 점, 이게 핵심이에요.

DNS 광고 차단, 원리부터 짚고 가요

브라우저가 ads.example.com에 접속하려면 먼저 DNS 서버에 “이 도메인 IP가 뭐야?”라고 물어봐야 해요. DNS는 인터넷의 전화번호부 같은 거거든요. DNS 기반 광고 차단기는 이 전화번호부 역할을 대신 맡아서, 광고나 추적 도메인을 물어보면 0.0.0.0 같은 '없는 번호'를 알려줘요. 광고 서버에 아예 연결이 안 되니 광고가 안 뜨는 거죠. 정상 도메인은 1.1.1.1 같은 상위 DNS에 대신 물어보고 받은 답을 그대로 넘겨줘요. 이걸 포워딩이라고 해요.

공유기 DHCP 설정에서 DNS 서버 주소를 이 장치 IP로 바꿔두면, 집 안의 스마트폰·TV·노트북이 전부 자동으로 이 필터를 거치게 돼요. 기기마다 앱을 깔 필요가 없다는 게 제일 큰 장점이에요.

400KB에 차단 목록을 어떻게 넣을까

이런 프로젝트는 여기서부터가 진짜 재미있어요. 널리 쓰이는 차단 목록에는 도메인이 수만에서 수십만 개 들어 있어요. 도메인 하나를 평균 20바이트로만 잡아도 10만 개면 2MB인데, RAM은 400KB밖에 없으니 통째로 올리는 건 불가능하죠.

그래서 임베디드 환경에서는 보통 이런 방법들을 놓고 고민하게 돼요.

이 저장소가 정확히 어떤 조합을 골랐는지는 코드를 직접 열어보시길 권해요. 어떤 방식이든 “자원이 부족할 때 무엇을 포기하고 무엇을 얻을까”라는 임베디드 설계의 기본기를 볼 수 있는 좋은 교재거든요.

Pi-hole, AdGuard Home과 비교하면

Pi-hole이나 AdGuard Home은 웹 대시보드, 쿼리 로그, 기기별 통계, 암호화 DNS 지원까지 기능이 풍부해요. 대신 늘 켜둔 리눅스 장치가 필요하고, OS 업데이트나 SD카드 손상 같은 관리 부담이 따라오죠. ESP32 방식은 기능은 단출하지만 USB 충전기 하나로 1W도 안 되는 전력으로 돌아가고, 관리할 OS 자체가 없어요. 기능도 최소, 관리 부담도 최소인 셈이에요.

알고 써야 할 한계

DNS 차단이 만능은 아니에요. 첫째, 유튜브처럼 광고와 본 영상을 같은 도메인에서 보내주는 서비스는 못 막아요. 둘째, 브라우저나 앱이 DoH(DNS over HTTPS)로 자기만의 DNS를 쓰면 이 장치를 그냥 건너뛰어요. 일부 스마트 TV나 IoT 기기는 8.8.8.8을 코드에 아예 박아두기도 하고요. 셋째, 단일 장애점이 돼요. 이 작은 보드가 멈추면 집 전체 인터넷이 '끊긴 것처럼' 보이거든요. 보조 DNS를 설정해두면 안전하긴 한데, 그러면 기기들이 보조 DNS로 새면서 차단이 일부 무력화되는 딜레마가 생겨요.

한국 개발자에게 주는 시사점

국내 사이트 광고까지 잡고 싶다면 List-KR 같은 한국 필터 목록을 참고할 수 있어요. 다만 이런 목록은 주로 브라우저 확장용 문법으로 되어 있어서, DNS 차단기에 쓰려면 도메인 단위 규칙만 추려내는 변환 작업이 필요해요.

무엇보다 이 프로젝트는 임베디드 입문 과제로 정말 좋아요. UDP 소켓으로 DNS 패킷을 받아서 헤더와 질의 섹션을 바이트 단위로 파싱하고, 응답을 직접 조립하고, 메모리 제약 안에서 자료구조를 골라보는 경험은 웹 개발만 해온 분들에게 신선한 자극이 될 거예요. 보드 하나 사서 주말에 해보기 딱 좋은 규모이기도 하고요.

마무리

한 줄 정리: 몇 천 원짜리 칩 하나로 집 전체에 DNS 광고 차단을 걸 수 있어요. 다만 메모리 제약과 DNS 차단의 근본적인 한계는 알고 쓰는 게 좋아요.

여러분은 집에서 광고 차단을 어떻게 하고 계세요? 라즈베리파이 Pi-hole, 공유기 내장 기능, 브라우저 확장… 이런 초소형 장치로 갈아탈 생각이 있으신가요?


🔗 출처: Hacker News

SOURCE · HACKER NEWS
원문 전체 보기 → https://github.com/M-Abozaid/esp32-c3-adblock
SHARE
NEXT · CHOOSE

변화를 읽었다면,
내가 만들 수익 구조를 고릅니다.

정보를 더 모으는 데서 멈추지 않고, 광고·외주·판매·중개·구독 중 내 상황에 맞는 출발점을 정해보세요.

21가지 수익 구조 살펴보기 →
처리 중...