1 điểm bởi GN⁺ 2024-02-09 | 1 bình luận | Chia sẻ qua WhatsApp
  • AdGuard Home là một máy chủ DNS mã nguồn mở miễn phí, sau khi cài đặt sẽ áp dụng cho mọi thiết bị trong mạng gia đình, chặn quảng cáo và trình theo dõi mà không cần phần mềm phía máy khách
  • Cơ chế hoạt động là dùng DNS sinkholing để chuyển hướng các tên miền theo dõi vào “black hole”, khiến thiết bị không thể kết nối tới các máy chủ đó, và chia sẻ nhiều mã nguồn với máy chủ AdGuard DNS công khai
  • Khi tự vận hành máy chủ riêng, người dùng có thể trực tiếp chọn nội dung cần chặn hoặc cho phép hơn so với DNS công khai, giám sát hoạt động mạng và thêm các quy tắc lọc tùy chỉnh
  • Tương tự Pi-Hole, công cụ này hỗ trợ chặn quảng cáo/trình theo dõi và tùy biến danh sách chặn, nhưng AdGuard Home còn cung cấp sẵn các tính năng như upstream DNS mã hóa, chạy máy chủ DoH/DoT, chặn tên miền lừa đảo/phần mềm độc hại, kiểm soát của phụ huynh và ép buộc Safe Search
  • Chặn ở cấp DNS không thể chặn các quảng cáo dùng cùng tên miền với nội dung, như quảng cáo YouTube/Twitch hay bài đăng tài trợ trên Facebook/Twitter/Instagram; ngay cả hỗ trợ proxy chặn nội dung trong tương lai cũng sẽ không giải quyết được mọi trường hợp

Vai trò và cách hoạt động của AdGuard Home

  • AdGuard Home là máy chủ DNS chặn quảng cáo và trình theo dõi trên toàn mạng, được định vị như một trung tâm bảo vệ quyền riêng tư cho người dùng và thiết bị
  • Sau khi cài đặt, nó bao phủ mọi thiết bị trong mạng gia đình mà không cần cài phần mềm máy khách riêng trên từng thiết bị
  • Nó hoạt động như một máy chủ DNS, chuyển hướng các tên miền theo dõi vào “black hole” để thiết bị không thể kết nối tới máy chủ đó
  • Phần mềm này dựa trên phần mềm dùng cho máy chủ AdGuard DNS công khai, và hai sản phẩm chia sẻ nhiều mã nguồn

Cài đặt và tích hợp

  • Trên Linux, Unix, macOS, FreeBSD, OpenBSD, có thể chạy script cài đặt tự động bằng curl, wget, fetch
    • -c <channel>: dùng kênh được chỉ định
    • -r: cài đặt lại AdGuard Home
    • -u: gỡ AdGuard Home
    • -v: xuất thông tin chi tiết
    • Không thể dùng -r-u cùng lúc
  • Có thể xem tài liệu Getting Started để biết cách cài đặt thủ công và cấu hình thiết bị
  • Ảnh Docker chính thức được cung cấp trên Docker Hub
  • Người dùng Linux có thể cài qua Snap Store
  • Nếu cần tích hợp, có thể dùng REST API, và cũng có python client

Khác biệt với AdGuard DNS công khai

  • Khi tự vận hành máy chủ AdGuard Home riêng, người dùng có nhiều quyền kiểm soát hơn so với dùng máy chủ DNS công khai
  • Người dùng có thể tự chọn máy chủ sẽ chặn và cho phép những gì
  • Có thể giám sát hoạt động mạng
  • Có thể thêm các quy tắc lọc tùy chỉnh
  • Vì máy chủ là của chính người dùng, quyền kiểm soát nằm trong tay họ

So sánh với Pi-Hole và trình chặn quảng cáo truyền thống

  • AdGuard Home và Pi-Hole đều dùng DNS sinkholing để chặn quảng cáo và trình theo dõi, đồng thời cho phép tùy biến đối tượng bị chặn
  • AdGuard Home hướng tới việc cung cấp sẵn nhiều tính năng mà không cần cài thêm phần mềm hay cấu hình thủ công
  • Theo bảng so sánh trong README, AdGuard Home cung cấp các tính năng sau
    • chặn quảng cáo và trình theo dõi
    • tùy biến danh sách chặn
    • máy chủ DHCP tích hợp
    • HTTPS cho giao diện quản trị
    • upstream DNS mã hóa bằng DNS-over-HTTPS, DNS-over-TLS, DNSCrypt
    • chạy đa nền tảng
    • chạy như máy chủ DNS-over-HTTPS hoặc DNS-over-TLS
    • chặn tên miền lừa đảo và phần mềm độc hại
    • kiểm soát của phụ huynh để chặn tên miền người lớn
    • ép buộc Safe Search trên công cụ tìm kiếm
    • cài đặt theo từng thiết bị
    • cài đặt truy cập để chọn người dùng AGH DNS
    • chạy không cần quyền root
  • So với trình chặn quảng cáo truyền thống, DNS sinkholing có thể chặn một tỷ lệ lớn quảng cáo, nhưng thiếu sự linh hoạt và sức mạnh của các trình chặn quảng cáo truyền thống
  • Trình chặn dựa trên DNS có thể hữu ích trong việc chặn yêu cầu quảng cáo, theo dõi và phân tích trên SmartTV, loa thông minh và thiết bị IoT, nơi không thể cài trình chặn quảng cáo truyền thống

Giới hạn đã biết và hướng phát triển tương lai

  • Trình chặn ở cấp DNS không thể chặn các ví dụ sau
    • quảng cáo YouTube, Twitch
    • bài đăng tài trợ trên Facebook, Twitter, Instagram
  • Quảng cáo dùng chung tên miền với nội dung không thể bị chặn bằng trình chặn cấp DNS
  • Chỉ với DNS thì không thể xử lý vấn đề này, mà cần một proxy chặn nội dung như ứng dụng AdGuard độc lập
  • AdGuard Home dự kiến trong tương lai sẽ hỗ trợ tính năng proxy chặn nội dung
  • Ngay cả khi đó, vẫn có thể còn những trường hợp chưa đủ hiệu quả hoặc đòi hỏi cấu hình phức tạp

Build từ mã nguồn và phát triển

  • Để chuẩn bị môi trường phát triển, chạy make init
  • Để build, cần các thành phần sau
    • Go v1.25 trở lên
    • Node.js v24.10.0 trở lên
    • npm v10.8 trở lên
  • Build cơ bản được thực hiện bằng cách clone kho mã rồi chạy make
  • Cờ -j không chuẩn hiện chưa được hỗ trợ, nên make -j 4 hoặc cấu hình MAKEFLAGS có chứa -j 4 có thể làm hỏng quá trình build
    • Nếu cần, có thể ghi đè bằng make -j 1
  • Có thể cross-build cho các mục tiêu OS/ARCH mà Go hỗ trợ bằng cách chỉ định GOOSGOARCH khi chạy make
  • Để chuẩn bị build phát hành, cần snapcraft, và dùng make build-release CHANNEL='...' VERSION='...'
  • Ảnh Docker cục bộ được build bằng make build-docker, còn ảnh chính thức dùng Docker Buildx
  • Khi debug frontend, chạy bản build phát triển ở chế độ watch trong thư mục client, rồi chỉ định cờ --local-frontend cho binary AdGuardHome để dùng các tệp trong thư mục ./build/ thay vì frontend nhúng sẵn
  • Kiểm thử frontend E2E dùng Playwright, và các bài test nằm trong tests/e2e
    • npm run test:e2e: chạy toàn bộ test ở chế độ headless
    • npm run test:e2e:interactive: test tương tác
    • npm run test:e2e:debug: chế độ debug
    • npm run test:e2e:codegen: tạo mã test mới
    • Playwright sẽ tải xuống và cài các binary trình duyệt riêng, có thể khác với trình duyệt đang cài trên hệ thống

Đóng góp, kênh không ổn định và dự án bên ngoài

  • Người đóng góp có thể fork kho mã, thực hiện thay đổi rồi gửi pull request, và phải tuân theo code guidelines
  • Không bắt buộc phải đóng góp UI và backend cùng lúc; lý tưởng nhất là phần triển khai backend gồm cấu hình/API/tính năng được đưa vào trước, còn UI có thể được triển khai sau trong pull request khác
  • Có hai kênh phiên bản không ổn định
    • beta: phiên bản beta tương đối ổn định, thường được phát hành mỗi 2 tuần hoặc thường xuyên hơn
    • edge: phiên bản mới nhất của nhánh phát triển, có bản cập nhật mới được đẩy lên hằng ngày
  • Có thể cài các phiên bản không ổn định qua kênh betaedge trên Snap Store, các tag betaedge trên Docker Hub, script cài đặt tự động hoặc bản build độc lập trên Wiki
  • Có các dự án liên quan do nhà phát triển bên thứ ba và người hâm mộ tạo ra, không liên kết với AdGuard

Quyền riêng tư và công nghệ sử dụng

  • Ý tưởng cốt lõi của AdGuard Home là người dùng phải kiểm soát dữ liệu của chính mình
  • AdGuard Home không thu thập thống kê sử dụng và không dùng dịch vụ web trừ khi người dùng tự cấu hình
  • privacy policy đầy đủ về mặt lý thuyết bao gồm mọi mục mà AdGuard Home có thể gửi đi
  • Các công nghệ nền tảng chính là hệ sinh thái Go và Node.js
    • Về thư viện Go, công cụ này dùng gcache, miekg's dns, go-yaml, service, dnsproxy, urlfilter
    • Ở phía Node.js, công cụ dùng React.js, Tabler và nhiều gói Node.js khác
    • Dữ liệu từ whotracks.me cũng được sử dụng
  • AdGuard Home không còn sử dụng CoreDNS như từng được đề cập trước đây

1 bình luận

 
GN⁺ 2024-02-09
Ý kiến trên Hacker News
  • Sau vài năm chạy dự án cạnh tranh Pi-hole[0] trên mạng gia đình, tôi biết đến NextDNS[1]
    Về hiệu năng thì tôi mất lợi thế là yêu cầu không rời khỏi nhà, nhưng tính di động để mọi thiết bị có thể dùng cả trong lẫn ngoài nhà và thời gian tiết kiệm được còn đáng giá hơn
    Pi-hole hoạt động tốt 90% thời gian, nhưng khi nó dừng thì mất thời gian sửa; với $20/năm thì khó cạnh tranh với NextDNS bằng cách tự vận hành
    Không phải quảng bá NextDNS, và tôi nghĩ những dự án như thế này nhất định phải tồn tại, nhưng NextDNS đúng là một công cụ SaaS rất đơn giản với giá trị trên chi phí rất tốt
    0 - https://pi-hole.net/
    1 - https://nextdns.io

    • Tôi không biết bạn gặp vấn đề gì mà Pi-hole bị gián đoạn đến tận 10%, nhưng nói phóng đại như vậy nghe giống quảng cáo
      99,9% trường hợp hỏng thẻ SD là do adapter nguồn thiếu công suất, nên nếu ngại tìm nguồn USB 2,5~3A phù hợp thì cứ mua adapter nguồn Raspberry Pi chính hãng là được
      Với $20/năm, mỗi năm bạn vẫn mua được một RPi Zero 2W dự phòng và thẻ SD, mà còn dư tiền cho một chiếc sandwich Sheetz ăn mừng
      Tôi nghĩ tổ hợp Pi-hole + WireGuard + mua một lần RPi Zero giá $15 là rất khó đánh bại
    • Tôi tò mò bạn đã gặp vấn đề gì với Pi-hole
      Instance của tôi chạy suốt vài năm mà không có vấn đề nào, và khoảng một năm trước tôi chuyển sang AdGuard Home vì muốn chạy nó trên hộp OPNSense
      Tôi đã thiết lập WireGuard VPN tự động trên thiết bị để khi không kết nối với SSID của mình thì VPN về mạng gia đình, nhờ vậy DNS cục bộ vẫn hoạt động từ xa
    • Tôi thích NextDNS, nhưng có một vấn đề khá lớn là khi bật trên iPhone thì không xử lý được captive portal
      Khi kết nối Wi-Fi trên máy bay chẳng hạn, phải nhớ tắt nó đi, nên tôi thấy khó khuyên dùng cho bạn bè không rành kỹ thuật
    • Trường hợp của tôi thì Pi-hole chạy tốt quá lâu đến mức tôi còn quên cả cách đăng nhập, nhưng khi sắp tới cấu hình lại mạng gia đình, tôi sẽ đánh giá lại các lựa chọn
      Có vẻ giờ đã có khoảng 3 ứng viên
    • Tôi chưa dùng NextDNS, đã dùng Pi-hole và hiện đang chạy AdGuard Home
      Nếu phải trả $20/năm chỉ để mã hóa DNS và chặn, thì cũng đáng cân nhắc nâng lên Mullvad, vốn không chỉ chặn quảng cáo DNS mà còn cung cấp ẩn danh IP, tunneling, v.v.
  • Gần đây tôi xem qua Pi-hole rồi chọn AdGuard Home
    Nhìn bề ngoài UI tốt hơn và tổng thể có vẻ ổn hơn; với một công cụ bóng bẩy như vậy mà mức độ tùy biến cũng nhiều bất ngờ, như chuyển tiếp truy vấn tên miền riêng cục bộ sang DNS nội bộ
    Tôi không rõ vì sao AdGuard cung cấp nó miễn phí và có lẽ nên tìm hiểu, nhưng hiện tại đây có vẻ là một lựa chọn rủi ro tương đối thấp
    Việc các quảng cáo khó chịu biến mất khiến trải nghiệm dùng những thứ như ứng dụng NYTimes dễ chịu hơn rất nhiều, nói bao nhiêu cũng không đủ

    • Thực sự rất tuyệt
      Tính năng split DNS có đủ mọi tùy chọn mà bạn có thể tưởng tượng
      Tôi đã nghĩ sẽ cần một máy chủ DNS thứ hai phía sau, nhưng có thể đưa toàn bộ quy tắc cần thiết trực tiếp vào AdGuard Home
      Nó cũng hỗ trợ upstream DoT và DoH, điều vẫn chưa phổ biến trên nhiều router gia đình
      Tài liệu: https://github.com/AdguardTeam/AdGuardHome/wiki/Configuratio...
    • Tôi cũng thắc mắc về phần miễn phí
      Có thể họ đặt máy chủ DNS của mình làm upstream mặc định và hy vọng nhiều người giữ nguyên mặc định
      DNS là một trong những công nghệ tốt nhất cho khai thác dữ liệu và bán dữ liệu, nên tôi nghĩ đó cũng là lý do tồn tại những máy chủ DNS dễ nhớ như 8.8.8.8 hay 1.1.1.1
      Google và Cloudflare chắc không chỉ làm vì thiện ý
      Tuy nhiên, AdGuard tuyên bố không bán dữ liệu khách hàng
    • Sau khi mở rộng nền tảng người dùng và có đủ lượng người dùng, họ cũng có thể chuyển sang mô hình cấp phép
    • Theo tôi thì luồng này như sau
      Bạn đọc tài liệu, cài đặt cho chạy tốt, rồi khoe với bạn bè rằng mạng nhà mình không có quảng cáo phiền phức
      Khi đó bạn bè sẽ nói “cài cho tôi với”
      Bạn có thể cài giúp, nhưng không thể bảo trì luôn, nên sẽ nói rằng “thay vì sự phức tạp đó, có một thiết lập dựa trên ứng dụng đơn giản, dùng ngay cho cả gia đình với $29/năm”
      Thế là trong buổi tối đó, năm người bạn tải dịch vụ xuống và trả tiền
      Tôi nghĩ triết lý của các startup công nghệ ngày nay cũng tương tự: có một sản phẩm mã nguồn mở rồi xây dựng kinh doanh thương mại trên đó
    • Pi-hole cũng hỗ trợ conditional forwarding
  • AdGuard là một công ty Nga có kỹ sư Nga, nhiều nhà phát triển và nhân viên làm việc tại Moskva, và được đăng ký tại Síp
    Đây không phải là một tổ hợp tốt, và tôi sẽ tránh vì lý do bảo mật

    • Đây là phần mềm mã nguồn mở
      Lý do MacPaw phân loại phần mềm do Nga phát triển là rủi ro là vì chính phủ có thể truy cập dữ liệu bất cứ lúc nào, nhưng cái này là mã nguồn mở tự host
      FSB không thể truy cập máy chủ cục bộ chỉ bằng một lệnh tòa tùy ý
      Vì vậy tôi thấy nó giống bài Nga hơn là một mối lo chính đáng, và càng không phù hợp vì tôi trực tiếp biết các nhà phát triển Nga đã khổ sở thế nào vì sự ngu xuẩn của chính phủ họ
    • Vì là mã nguồn mở nên bạn có thể tự kiểm chứng
    • MacBook cũng được sản xuất ở Trung Quốc
  • Bạn cũng có thể quan tâm đến py-hole
    Nó chỉ gồm một script Python và cấu hình dnsmasq, chạy trên OpenWrt, miễn phí và mức dùng CPU gần như bằng 0
    https://github.com/time4tea-net/py-hole

  • Một điểm hay khác của AdGuard là nó được cung cấp dưới dạng add-on Home Assistant
    Vì tích hợp với phần còn lại của HA, nên chẳng hạn bạn có thể đặt một công tắc bật/tắt chặn trên dashboard

    • NextDNS cũng làm được, tôi vừa cấu hình xong
  • AdGuard Home rất tuyệt
    Tôi từng dùng Pi-hole một thời gian, nhưng khá thường gặp những vấn đề lặt vặt
    Không có gì nghiêm trọng, nhưng những công cụ kiểu này chỉ thực sự hữu ích khi chúng cứ thế hoạt động
    Trên cấu hình Pi của tôi, nó chạy ổn với docker-compose[1], và tôi dùng một container rất hay tên là adguardhome-sync[2] để chạy chiếc Pi thứ hai làm dự phòng và đồng bộ cấu hình
    Giờ trong mạng không còn thấy quảng cáo, và cũng khá thú vị khi xem những thiết bị nào gửi bao nhiêu yêu cầu theo dõi/quảng cáo
    1 - https://thesmarthomejourney.com/2021/05/24/adguard-pihole-dn...
    2 - https://thesmarthomejourney.com/2023/02/12/adguardhome-sync-...

    • Khoảnh khắc thật sự mở mang tầm mắt là khi bắt đầu redirect các yêu cầu DNS 53 về DNS server của mình và chặn DoT/DoQ/DoH
      Rất nhiều thiết bị và ứng dụng cố đi thẳng ra các DNS server được hard-code để phục vụ theo dõi và nhắm mục tiêu quảng cáo
  • Không biết ở đây có ai dùng Technitium DNS không
    Nó là mã nguồn mở, miễn phí và chạy được cả trên phần cứng tối thiểu
    Tôi đang chạy nó trên Orange Pi 3 LTS
    https://technitium.com/dns/

    • Trông có vẻ tốt
      Nó ghi “Technitium DNS Server is an open source authoritative as well as recursive DNS server”, nên tôi tò mò liệu Pi-hole hay AdGuard cũng là DNS server đệ quy hay chỉ đơn thuần là bộ chặn
      Tôi đã dùng Pi-hole lâu rồi và đang cố hiểu xem cái này có ưu điểm gì
    • Có thể thêm danh sách chặn quảng cáo, nên có được DNS vững chắc kèm chặn quảng cáo, và cũng không còn cảnh YouTube quay vòng vì các lỗi DNS ngẫu nhiên
      Chỉ cần cấu hình một chút là làm miễn phí được
    • Tôi đang chạy trên Pi 4, hài lòng vì cấu hình và sử dụng đơn giản
      Tôi không biết AdGuard, nhưng dù trông có vẻ tốt thì cũng không muốn thử cho lắm
    • Tôi đã dùng vài năm và thấy thích
      dựa trên .NET nên cũng đa nền tảng
      Nếu muốn theo cách đó thì cũng có Docker image
    • Tôi đã không chọn vì nó được viết bằng C#/.NET và tương đối mới, rồi chuyển sang Unbound
  • Có vài ý kiến nhìn chung tích cực về NextDNS, nhưng tôi đang cân nhắc rời NextDNS nên ghi riêng ra đây
    Lý do là hiện tôi dùng Mac/Safari và muốn bật tính năng “ẩn địa chỉ IP khỏi trình theo dõi”, nhưng khi bật lên thì quảng cáo trên website mà NextDNS vốn chặn lại bắt đầu hiện ra
    Vì vậy tôi phải tắt tùy chọn này và không thể dùng tính năng của Apple
    Nhìn chung có vẻ hai thứ này không dùng cùng nhau được, và trên trang trợ giúp của NextDNS cũng có vấn đề liên quan được đăng
    https://help.nextdns.io/t/q6yq4xy/nextdns-stops-working-prop...
    Không biết có ai biết đây có phải là vấn đề đã biết với AdGuard hay Pi-hole không

    • Nếu bạn đang nói đến iCloud Private Relay, thì đây là hành vi được kỳ vọng với các trình chặn quảng cáo dựa trên DNS
      Khi bật relay, kết nối được proxy và không dùng DNS server của mạng cục bộ
      Dù là Pi-hole, NextDNS hay AdGuard thì cũng vậy
    • Về cơ bản là bạn đang dùng một sản phẩm để chặn quảng cáo và trình theo dõi, rồi dùng một sản phẩm khác để đi vòng qua nó nhằm truy cập quảng cáo và trình theo dõi, chỉ là thông qua một bên thứ ba
      Tôi không rõ mục đích của vế sau là gì
  • Có vẻ HN có một khoảng thời gian cố định mà không thể chịu nổi nếu không có bài về Pi-hole hoặc AdGuard Home

    • Tôi đã đặt một việc lặp lại mỗi nửa năm trong lịch: HN: Pi-hole / AdGuard? ;-)
  • Hay
    Tương tự, nếu đang chạy pfSense trong mạng thì pfBlockerNG cũng đáng xem. Cá nhân tôi khá thích: https://docs.netgate.com/pfsense/en/latest/packages/pfblocke...