AdGuard Home: Hướng dẫn DNS Local & Chặn Quảng cáo
I. Giới thiệu AdGuard Home
AdGuard Home là một DNS server mạnh mẽ cho phép chặn quảng cáo ở mức DNS và tạo DNS local cho các domain tùy chỉnh. Thay vì cài đặt phần mềm chặn quảng cáo trên từng thiết bị, AdGuard Home hoạt động trên toàn bộ mạng, bảo vệ tất cả các thiết bị kết nối.
Chức năng chính:
- Chặn quảng cáo: Lọc các domain quảng cáo trước khi chúng tải
- DNS Local: Phân giải domain tùy chỉnh cho lab/môi trường cục bộ
- Kiểm soát DNS: Quản lý các domain được phân giải trên toàn mạng
- Thống kê: Theo dõi các truy vấn DNS
II. Triển khai AdGuard Home với Portainer
1. Chuẩn bị Docker Compose
Trước tiên, bạn cần có file docker-compose.yml với nội dung sau:
version: "2"
services:
adguardhome:
image: adguard/adguardhome
container_name: adguard-dns
ports:
- 53:53/tcp
- 53:53/udp
- 784:784/udp
- 853:853/tcp
- 3001:3000/tcp
- 8070:80/tcp
volumes:
- /root/adguardhome/workdir:/opt/adguardhome/work
- /root/adguardhome/confdir:/opt/adguardhome/conf
networks:
- docker-net
mem_limit: 1024m
cpus: 0.1
restart: unless-stopped
networks:
docker-net:
external: true
Giải thích cấu hình:
- Ports: Port 53 là DNS (TCP/UDP), port 3001 là web UI, port 8070 là HTTP
- Volumes: Lưu cấu hình và dữ liệu
- mem_limit: Giới hạn RAM 1GB
- cpus: Giới hạn CPU 10%
2. Deploy qua Portainer
Các bước triển khai:
- Vào Portainer Dashboard
- Chọn Stacks → Add stack
- Đặt tên Stack:
adguard-home - Copy/paste nội dung docker-compose vào trường Web editor
- Chọn network:
docker-net(hoặc network của bạn) - Click Deploy the stack
Đợi một vài giây, container sẽ khởi động. Truy cập http://your-ip:3001 để vào web UI.
III. Cấu hình DNS Local cho Lab
1. Truy cập AdGuard Home UI
Mở trình duyệt và truy cập: http://your-server-ip:3001
Đăng nhập với tài khoản mặc định (nếu cần).
2. Thêm DNS Records Local
Để phân giải một domain local:
- Vào menu Filters → DNS Rewrites
- Click Add DNS Rewrite
- Điền:
- Domain:
app.local(tên domain của bạn) - IPv4 address:
192.168.1.100(IP máy chủ/container) - Click Add
Lặp lại cho các domain khác như web.local, db.local, etc.
3. Lưu ý khi đặt Domain Local
- Tên miền: Luôn sử dụng đuôi
.localhoặc.labhoặc.testđể tránh xung đột với domain thực tế trên internet - Không để trống: Phải có ít nhất một domain, không thể để rỗng
- IP địa chỉ: Phải là IP hợp lệ trong mạng cục bộ (192.168.x.x, 10.x.x.x, ...)
- Phân biệt hoa/thường: Domain không phân biệt hoa/thường, nhưng nên viết thường
- Wildcard: Có thể dùng wildcard như
*.localđể áp dụng cho tất cả subdomain - Test lại: Sau khi thêm, test bằng lệnh
nslookup app.localhoặcdig app.local
IV. Cấu hình Chặn Quảng cáo
1. Thêm Blocklist
AdGuard Home chặn quảng cáo bằng cách sử dụng danh sách các domain quảng cáo (blocklist):
- Vào Filters → DNS blocklists
- Click Add blocklist
- Dán URL của blocklist:
Blocklist phổ biến:
https://adguardteam.github.io/AdGuardSDNSFilter/Filters/filter.txt https://easylist.to/easylist/easylist.txt https://easylist.to/easylist/easyprivacy.txt
Mỗi blocklist sẽ chặn các domain khác nhau:
- AdGuard DNS Filter: Chặn quảng cáo chung
- EasyList: Chặn quảng cáo web
- EasyPrivacy: Chặn tracking/spy domains
2. Kiểm tra Blocklist
Sau khi thêm blocklist, bạn có thể:
- Xem số lượng domain bị chặn
- Tạm vô hiệu hóa để test
- Xóa nếu không cần thiết
V. Sử dụng AdGuard Home
1. Đặt DNS trên các thiết bị
Để sử dụng AdGuard Home, bạn cần chỉ định DNS server của nó cho các thiết bị:
Trên Linux (Ubuntu/Debian):
sudo nano /etc/resolv.conf # Thêm dòng: nameserver 192.168.1.x
Trên Windows:
- Settings → Network & Internet → Change adapter options
- Click chuột phải vào adapter → Properties
- IPv4 Properties → DNS:
192.168.1.x
Trên macOS:
- System Preferences → Network
- Advanced → DNS tab
- Thêm DNS server:
192.168.1.x
Trên Router (áp dụng cho toàn mạng):
Vào DHCP settings của router, đặt DNS server thành IP của AdGuard Home. Cách này sẽ áp dụng cho tất cả các thiết bị kết nối.
2. Test DNS Local
Sau khi cấu hình, test xem DNS có hoạt động không:
nslookup app.local 192.168.1.x dig app.local @192.168.1.x
Nếu trả về IP đã cấu hình, tức là DNS local đang hoạt động.
3. Kiểm tra thống kê
Vào AdGuard Home web UI, tab Dashboard để xem:
- Số truy vấn DNS
- Số domain bị chặn
- Top quảng cáo bị chặn
- Lịch sử truy vấn
VI. Load Balance DNS (Cân bằng tải)
1. Khái niệm Load Balance DNS
Load Balance DNS là tính năng cho phép phân phối lưu lượng truy vấn DNS đến nhiều upstream DNS server khác nhau. Điều này giúp:
- Cải thiện tốc độ phân giải DNS
- Tăng độ tin cậy khi một server DNS bị down
- Giảm tải cho từng server
- Kết hợp nhiều DNS service (Cloudflare, Google DNS, Quad9, ...)
2. Cấu hình Upstream DNS Servers
Để setup load balance DNS:
- Vào Settings → DNS settings
- Tìm mục Upstream DNS servers
- Thêm nhiều DNS server:
DNS servers phổ biến:
Cloudflare: 1.1.1.1, 1.0.0.1 Google DNS: 8.8.8.8, 8.8.4.4 Quad9: 9.9.9.9, 149.112.112.112 OpenDNS: 208.67.222.222, 208.67.220.220
Ví dụ cấu hình:
Upstream DNS 1: 1.1.1.1 (Cloudflare) Upstream DNS 2: 8.8.8.8 (Google) Upstream DNS 3: 9.9.9.9 (Quad9)
3. Cấu hình Advanced Load Balance
AdGuard Home hỗ trợ cấu hình nâng cao bằng cách sửa file AdGuardHome.yaml:
upstream_dns: - 1.1.1.1 - 8.8.8.8 - 9.9.9.9 upstream_dns_file: "" fallback_dns: - 1.0.0.1 - 8.8.4.4
Giải thích:
- upstream_dns: Danh sách DNS server chính
- fallback_dns: DNS backup nếu upstream DNS không phản hồi
4. Test Load Balance
Sau khi cấu hình, test xem DNS hoạt động như thế nào:
nslookup google.com 192.168.1.x dig google.com @192.168.1.x +short
Vào Dashboard để xem thống kê truy vấn và kiểm tra response time từ các upstream DNS khác nhau.
5. Lưu ý về Load Balance DNS
- Độ ưu tiên: AdGuard Home sử dụng round-robin hoặc failover tùy theo cấu hình
- DNS over HTTPS (DoH): Có thể cấu hình upstream DNS dùng DoH để bảo mật:
https://1.1.1.1/dns-query - DNS over TLS (DoT): Hỗ trợ cấu hình:
tls://1.1.1.1 - Response time: Nên chọn DNS servers gần nhất với vị trí địa lý để giảm latency
- Blocked queries: Nếu upstream DNS bị chặn domain, fallback DNS sẽ được sử dụng
VII. Lưu ý quan trọng
- Sao lưu cấu hình: Thư mục
/root/adguardhome/confdirchứa cấu hình, nên backup định kỳ - DNS Loopback: Đừng đặt AdGuard làm upstream DNS cho chính nó, sẽ gây vòng lặp DNS
- Tên miền riêng: Luôn sử dụng
.local,.lab,.testđể tránh xung đột - Test blocklist: Thử nghiệm blocklist trước khi áp dụng rộng, một số blocklist có thể chặn các domain cần thiết
- RAM: Giữ container có đủ RAM (ít nhất 512MB, tối ưu 1GB) để hoạt động ổn định
- Whitelist: Nếu một domain bị chặn nhưng bạn muốn dùng, thêm vào whitelist trong Filters → Allowlists
Vậy là bạn đã hoàn thành cấu hình AdGuard Home để chặn quảng cáo, sử dụng DNS local cho lab, và cân bằng tải DNS!
