Docker Homelab Series - Phần 4: AdGuard Home: Hướng dẫn DNS Local & Chặn Quảng cáo

Hướng dẫn AdGuard Home

AdGuard Home: Hướng dẫn DNS Local & Chặn Quảng cáo

AdGuard Home DNS

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:

  1. Vào Portainer Dashboard
  2. Chọn StacksAdd stack
  3. Đặt tên Stack: adguard-home
  4. Copy/paste nội dung docker-compose vào trường Web editor
  5. Chọn network: docker-net (hoặc network của bạn)
  6. 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:

  1. Vào menu FiltersDNS Rewrites
  2. Click Add DNS Rewrite
  3. Điền:
    • Domain: app.local (tên domain của bạn)
    • IPv4 address: 192.168.1.100 (IP máy chủ/container)
  4. 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 .local hoặc .lab hoặ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.local hoặc dig 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):

  1. Vào FiltersDNS blocklists
  2. Click Add blocklist
  3. 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:

  1. Settings → Network & Internet → Change adapter options
  2. Click chuột phải vào adapter → Properties
  3. IPv4 Properties → DNS: 192.168.1.x

Trên macOS:

  1. System Preferences → Network
  2. Advanced → DNS tab
  3. 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:

  1. Vào SettingsDNS settings
  2. Tìm mục Upstream DNS servers
  3. 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/confdir chứ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!

Post a Comment

Previous Post Next Post
QR Code
Quét mã QR để gọi miễn phí