Chỉ với khoảng 5 USD, lập trình viên biến ESP32 thành máy chủ DNS chặn hơn 500.000 tên miền quảng cáo

Bạn không cần Raspberry Pi hay mini PC để xây dựng một hệ thống chặn quảng cáo cho toàn bộ mạng gia đình. Một lập trình viên vừa chứng minh rằng chỉ với một bo mạch ESP32-C3 giá khoảng 5 USD, bạn vẫn có thể tạo ra một máy chủ DNS có khả năng chặn hơn 500.000 tên miền quảng cáo với độ trễ chỉ khoảng 10 ms.

ESP32 thay thế Raspberry Pi làm DNS dự phòng

Nhà phát triển full-stack người Ai Cập ZedAxis (GitHub: M-Abozaid) đã chia sẻ dự án sử dụng bo mạch ESP32-C3 SuperMini để xây dựng một máy chủ DNS tích hợp tính năng chặn quảng cáo.

Trong hệ thống của anh, Pi-hole trên Raspberry Pi vẫn đóng vai trò máy chủ DNS chính, chịu trách nhiệm cấp phát DHCP và lọc quảng cáo.

ESP32 chỉ hoạt động như máy chủ DNS dự phòng, tự động tiếp quản khi Pi-hole khởi động lại hoặc gặp sự cố, giúp toàn bộ mạng vẫn duy trì khả năng phân giải DNS và chặn quảng cáo.

Chỉ với khoảng 5 USD, lập trình viên biến ESP32 thành máy chủ DNS chặn hơn 500.000 tên miền quảng cáo

Chỉ 400 KB RAM vẫn xử lý được hơn nửa triệu tên miền

Điều đáng chú ý là bo mạch ESP32-C3 không hề mạnh.

Thông số phần cứng chỉ gồm:

  • RAM: 400 KB
  • Flash: 4 MB
  • Wi-Fi tích hợp
  • Không có PSRAM như các mẫu ESP32 cao cấp

Với lượng bộ nhớ khiêm tốn này, việc lưu trực tiếp danh sách chặn hàng trăm nghìn tên miền là bất khả thi.

Thay vì vậy, ZedAxis đã lựa chọn một giải pháp thông minh hơn.

Sử dụng hàm băm để giảm kích thước dữ liệu

Toàn bộ dự án dựa trên việc băm (hash) tên miền thay vì lưu chuỗi văn bản gốc.

Quy trình hoạt động gồm:

  1. Tải các danh sách chặn công khai.
  2. Loại bỏ các mục trùng lặp và chú thích.
  3. Chuyển từng tên miền thành mã băm FNV-1a 40-bit.
  4. Sắp xếp toàn bộ danh sách.
  5. Ghi cơ sở dữ liệu vào bộ nhớ flash của ESP32.

Theo tác giả, lựa chọn 40-bit là điểm cân bằng hợp lý:

  • 32-bit tạo quá nhiều xung đột.
  • 64-bit lại tiêu tốn quá nhiều bộ nhớ.

Nhờ đó, ESP32 có thể lưu khoảng 537.000 tên miền trong bộ nhớ flash chỉ vài MB.

Chỉ với khoảng 5 USD, lập trình viên biến ESP32 thành máy chủ DNS chặn hơn 500.000 tên miền quảng cáo 2

Kiểm tra tên miền chỉ mất khoảng 10 mili giây

Khi một thiết bị trong mạng gửi yêu cầu DNS, ESP32 sẽ:

  • Băm tên miền theo cùng thuật toán.
  • Thực hiện tìm kiếm nhị phân trong danh sách hash đã sắp xếp.
  • Nếu tìm thấy, truy vấn bị chặn.
  • Nếu không, yêu cầu sẽ được chuyển tiếp tới máy chủ DNS bên ngoài.

Theo ZedAxis:

  • Thời gian phản hồi cho tên miền bị chặn khoảng 10 ms.
  • RAM sử dụng khi hoạt động chỉ khoảng 50 KB.

Đánh đổi để tăng gấp đôi số lượng tên miền có thể chặn

Một điểm thú vị khác là cách tận dụng bộ nhớ flash.

Thông thường, ESP32 dành một phần flash để lưu bản firmware thứ hai, phục vụ cập nhật OTA (Over-The-Air).

Nếu người dùng không cần cập nhật firmware qua Wi-Fi, phân vùng này có thể được tận dụng để lưu thêm cơ sở dữ liệu.

Kết quả là:

  • Có OTA: khoảng 250.000 tên miền.
  • Không OTA: khoảng 537.000 tên miền.

Đây là một cách đánh đổi khá hợp lý đối với thiết bị vốn chỉ đóng vai trò máy chủ DNS dự phòng.

Chỉ với khoảng 5 USD, lập trình viên biến ESP32 thành máy chủ DNS chặn hơn 500.000 tên miền quảng cáo 3

Không thay thế Pi-hole nhưng là phương án dự phòng lý tưởng

ZedAxis khẳng định dự án này không nhằm cạnh tranh với Pi-hole hay AdGuard Home.

ESP32 không có:

  • thống kê theo từng thiết bị,
  • lịch sử truy vấn,
  • giao diện quản trị nâng cao,
  • các bộ lọc và tùy chỉnh phức tạp.

Thay vào đó, mục tiêu của nó là trở thành một DNS dự phòng cực kỳ tiết kiệm điện, hoạt động âm thầm trong mạng nội bộ.

Nếu Raspberry Pi gặp sự cố hoặc đang khởi động lại, toàn bộ thiết bị trong nhà vẫn tiếp tục nhận được phản hồi DNS đã lọc quảng cáo thay vì chuyển sang máy chủ DNS mặc định của router.

Một giải pháp giá rẻ nhưng đầy sáng tạo

Bo mạch ESP32-C3 SuperMini hiện có giá khoảng 5 USD (thậm chí rẻ hơn tại một số thị trường), nhưng vẫn đủ sức đảm nhiệm vai trò mà nhiều người nghĩ cần đến Raspberry Pi.

Dự án của ZedAxis cho thấy với một chút tối ưu thuật toán và tận dụng hợp lý tài nguyên phần cứng, ngay cả một vi điều khiển chỉ có 400 KB RAM cũng có thể xử lý danh sách chặn hơn nửa triệu tên miền.

Đây là một minh chứng thú vị cho khả năng của dòng ESP32, đồng thời là lựa chọn đáng cân nhắc cho những ai muốn bổ sung một lớp dự phòng cho hệ thống Pi-hole hoặc AdGuard Home mà không phải đầu tư thêm phần cứng đắt tiền.

Bài liên quan

Bài đọc nhiều nhất

Bài mới trong ngày

Bi hài World Cup: Nữ VTuber Essie chính thức "rửa tay gác kiếm" vì lời nguyền cổ vũ đội nào đội đó thua

Bi hài World Cup: Nữ VTuber Essie chính thức "rửa tay gác kiếm" vì lời nguyền cổ vũ đội nào đội đó thua

hoanlagvnDũng Nhỏ TT

Một trong những câu chuyện tâm linh thú vị và hài hước nhất bên lề ngày hội bóng đá lớn nhất hành tinh vừa chính thức khép lại. Nữ VTuber độc lập đình đám Essie vừa khiến cộng đồng người hâm mộ dở khóc dở cười khi phát đi tuyên bố đanh thép: Cô sẽ hoàn toàn dừng việc đưa ra mọi dự đoán hay công khai mặc áo cổ vũ cho bất kỳ đội tuyển nào tại giải đấu năm nay, ngay sau khi "nạn nhân" tiếp theo gọi tên đội tuyển Anh.

Giải trí
Góc khuất kinh hoàng của AKB48: Nữ idol 21 tuổi lộ ảnh nắm tay fan, tố quản lý ép cạo trọc đầu để tạ tội

Góc khuất kinh hoàng của AKB48: Nữ idol 21 tuổi lộ ảnh nắm tay fan, tố quản lý ép cạo trọc đầu để tạ tội

hoanlagvnDũng Nhỏ TT

Một cơn địa chấn truyền thông vừa làm rung chuyển ngành công nghiệp giải trí Nhật Bản khi nhóm nhạc nữ huyền thoại AKB48 chính thức thông báo sa thải thành viên Mei Hanada (21 tuổi). Tuy nhiên, vụ việc ngay lập tức biến thành một cuộc khủng hoảng nhân quyền tồi tệ khi nữ thần tượng xuất hiện với chiếc đầu cạo trọc, lên tiếng tố cáo ban quản lý đã dùng áp lực tâm lý khủng khiếp để ép cô thực hiện hành vi này nhằm thể hiện sự hối lỗi.

Giải trí
Lên đầu trang