Nội dung chính
AdGuard Home là một phần mềm mã nguồn mở, hoàn toàn miễn phí. Hoạt động như một máy chủ DNS (DNS Server) riêng cho mạng nội bộ. Mục đích chính của nó là chặn quảng cáo, chặn các trình theo dõi (trackers) và bảo vệ quyền riêng tư cho tất cả các thiết bị kết nối vào mạng Wi-Fi/LAN của bạn mà không cần cài đặt phần mềm lên từng thiết bị riêng lẻ.
Cơ chế hoạt động
Bình thường, khi bạn truy cập một trang web, thiết bị sẽ hỏi máy chủ DNS (thường là của nhà mạng hoặc Google): “Địa chỉ IP của trang web này là gì?”.
Khi dùng AdGuard Home, thiết bị sẽ hỏi AdGuard Home trước.
- Nếu là trang web bình thường: AdGuard Home sẽ trả lời địa chỉ IP để bạn truy cập.
- Nếu là trang web quảng cáo hoặc theo dõi: AdGuard Home sẽ nhận ra nó nằm trong “danh sách đen” (Blacklist) và trả lời rằng “Không tìm thấy” hoặc trả về một địa chỉ rỗng. Kết quả là quảng cáo không tải được, nên nó sẽ không xuất hiện nữa.

Các tính năng nổi bật
- Chặn quảng cáo toàn mạng: Bạn chỉ cần cài AdGuard Home một nơi, nhưng nó chặn quảng cáo cho TV thông minh (Smart TV), điện thoại, máy tính bảng, tủ lạnh thông minh, v.v. (Những thiết bị mà bạn không thể cài App chặn quảng cáo).
- Bảo vệ quyền riêng tư: Chặn các hệ thống theo dõi hành vi người dùng (tracking) từ các công ty lớn.
- Mã hóa DNS: Hỗ trợ các chuẩn bảo mật hiện đại như DNS-over-HTTPS (DoH) và DNS-over-TLS (DoT) giúp ngăn nhà mạng (ISP) biết bạn đang truy cập trang web nào.
- Kiểm soát phụ huynh (Parental Control): Tích hợp sẵn tính năng chặn các trang web người lớn, bạo lực hoặc cờ bạc để bảo vệ trẻ em.
- Giao diện quản lý trực quan: Có biểu đồ thống kê xem thiết bị nào truy cập nhiều nhất, trang web nào bị chặn nhiều nhất.
Ưu và nhược điểm
Ưu điểm:
- Miễn phí và Mã nguồn mở: Bạn hoàn toàn kiểm soát dữ liệu của mình.
- Nhẹ và nhanh: Có thể chạy trên các thiết bị cấu hình thấp.
- Dễ cài đặt: Dễ cài đặt hơn đối thủ cạnh tranh chính là Pi-hole, vì nó đóng gói tất cả tính năng vào một file chạy duy nhất.
- Không làm chậm mạng: Thậm chí có thể làm mạng nhanh hơn vì không phải tải hình ảnh/video quảng cáo nặng.
Nhược điểm:
- Không chặn được quảng cáo YouTube: Đây là hạn chế chung của phương pháp chặn qua DNS. Quảng cáo YouTube được phát từ cùng tên miền với video chính, nên nếu chặn quảng cáo thì video cũng không xem được. (Cần dùng App YouTube Premium hoặc Vanced/ReVanced để xử lý việc này).
- Khoảng trắng: Trên một số trang web, quảng cáo biến mất nhưng khung hình chữ nhật chứa quảng cáo vẫn còn (trống trơn).
- Cần thiết bị chạy 24/7: Bạn cần một thiết bị luôn bật để chạy phần mềm này (ví dụ: Raspberry Pi, NAS, hoặc một máy tính cũ)

Hướng dẫn cài Adguard Home
Cách đơn giản, chuyên nghiệp, dễ bảo trì và nâng cấp nhất chính là cài thông qua Docker Compose.
Bước 1: Chuẩn bị thư mục
Đầu tiên, bạn nên tạo một thư mục riêng để chứa file cấu hình và dữ liệu của AdGuard Home để chúng không bị mất khi bạn xóa container.
Mở Terminal (hoặc SSH vào server) và chạy:
mkdir -p ~/adguardhome && cd ~/adguardhome
Bước 2: Tạo file docker-compose.yml
Tạo một file tên là docker-compose.yml trong thư mục vừa tạo:
nano docker-compose.yml
Dán nội dung sau vào file vừa tạo:
services:
adguardhome:
image: adguard/adguardhome:latest
container_name: adguardhome
ports:
- 53:53/tcp # DNS TCP
- 53:53/udp # DNS UDP
- 8080:80/tcp # Web UI HTTP
- 3131:3000/tcp # Port Setup Ban Dau
volumes:
- ./workdir:/opt/adguardhome/work
- ./confdir:/opt/adguardhome/conf
restart: unless-stopped
Lưu lại file bằng cách ấn Ctrl + X, sau đó nhập Y rồi ấn Enter.
Bước 3: Giải phóng cổng 53
Adguard Home sau khi khởi chạy sẽ lắng nghe DNS thông qua cổng 53. Tuy nhiên trên Linux (đặc biệt là Ubuntu), cổng 53 thường bị chiếm bởi systemd-resolved. Vì thế chúng ta cần phải giải phóng cổng này để cho adguard home sử dụng.
Chạy lệnh sau:
sudo mkdir -p /etc/systemd/resolved.conf.d/
sudo nano /etc/systemd/resolved.conf.d/adguardhome.conf
Nhập vào nội dung:
[Resolve]
DNS=127.0.0.1
DNSStubListener=no
Lưu lại file bằng cách ấn Ctrl + X, sau đó nhập Y rồi ấn Enter.
chạy lệnh sau để áp dụng thay đổi:
sudo mv /etc/resolv.conf /etc/resolv.conf.backup
sudo ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf
sudo systemctl restart systemd-resolved
Kiểm tra xem cổng 53 còn bị chiếm dụng bởi dịch vụ nào khác không:
sudo lsof -i :53
Nếu không thấy kết quả nào trả lại nghĩa là port 53 đã sẵn sàng để Adguard Home sử dụng.
Bước 4: Chạy AdGuard Home
Chạy lệnh sau để khởi động:
docker compose up -d
Bước 5: Cài đặt ban đầu
1. Mở trình duyệt web và truy cập vào địa chỉ IP của máy chủ cài Docker kèm cổng 3131. Ví dụ địa chỉ IP của máy chủ là 192.168.1.15 thì truy cập:
http://192.168.88.11:3131
2. Bấm “Get Started”

3. Bước tiếp theo để mặc định như trong hình.

4. Authentication chúng ta sẽ nhập tên đăng nhập và mật khẩu mong muốn (bạn đặt theo ý thích của bạn nhé).

Các bước còn lại cứ để mặc định và chọn Next. Đến bước cuối cùng, bạn sẽ không thể mở Dashboard do chúng ta đặt port cho nó là 8080. Vậy nên bây giờ chúng ta sẽ truy cập vào Adguard Home với địa chỉ dạng IP:8080

Giờ chúng ta đăng nhập bằng thông tin đã tạo để vào trang quản lý cấu hình thôi!
Cấu Hình Adguard Home
DNS settings
Upstream DNS servers
Upstream DNS servers (Máy chủ DNS thượng nguồn) là nơi mà AdGuard Home sẽ “hỏi” địa chỉ IP của trang web khi bạn truy cập một tên miền không bị chặn.
AdGuard Home thực chất là một bộ lọc trung gian. Quy trình hoạt động như sau:
- Thiết bị của bạn (điện thoại, PC) khi truy cập một trang web, nó sẽ gửi yêu cầu DNS đến AdGuard Home.
- AdGuard Home kiểm tra danh sách đen (Blacklist). Nếu tên miền nằm trong danh sách chặn (ví dụ: ads.tamcongnghe.com), nó sẽ chặn ngay lập tức.
- Nếu tên miền không bị chặn, AdGuard Home sẽ chuyển tiếp (forward) yêu cầu đó đến Upstream DNS servers để lấy địa chỉ IP thực của tên miền đó.
Upstream DNS lại được chia thành 2 loại cơ bản:
- DNS thông thường (IP Address): Tốc độ nhanh nhất nhưng không mã hóa (ISP có thể biết bạn truy cập trang nào). Ví dụ 1.1.1.1 và 1.0.0.1 của Cloudflare, hoặc là 8.8.8.8 và 8.8.4.4 của Google.
- DNS mã hóa (DoH/DoT): Chậm hơn một chút ở lần đầu kết nối nhưng bảo mật cao, nhà mạng không thể nhìn thấy hoặc sửa đổi gói tin DNS của bạn. AdGuard Home hỗ trợ rất tốt loại này. Ví dụ:
https://dns.google/dns-query
Hoặc:
https://cloudflare-dns.com/dns-query
tls://dns.google
Mình đã tinh chỉnh cấu hình và bạn có thể copy nội dung sau để cho vào mục Upstream DNS servers trên Adguard Home.
https://dns.cloudflare.com/dns-query
tls://one.one.one.one
https://dns.google/dns-query
tls://dns.google
[/google.com/googleusercontent.com/googlevideo.com/youtube.com/youtu.be/googleapis.com/ytimg.com/gstatic.com/gvt1.com/gvt2.com/]tls://dns.google
[/facebook.com/fbcdn.net/fbsbx.com/messenger.com/instagram.com/cdninstagram.com/]tls://dns.google
[/tiktok.com/tiktokv.com/tiktokcdn.com/byteoversea.com/ibyteimg.com/]tls://dns.google
[/apple.com/icloud.com/mzstatic.com/aaplimg.com/]tls://dns.google
[/microsoft.com/windowsupdate.com/azure.com/office.com/live.com/]tls://dns.google
[/shopee.vn/shopeemobile.com/lazada.vn/alicdn.com/tiki.vn/]tls://dns.google
Ngay bên dưới phần nhập Upstream DNS, bạn sẽ thấy các tùy chọn về cách AdGuard Home gửi yêu cầu đi. Đây là phần quan trọng để tối ưu tốc độ:
- Load-balancing: Adguard Home sẽ tự chọn 1 upstream DNS trong danh sách mà chúng ta đã nhập mà nó cho rằng phù hợp nhất theo cơ chế: DNS server nào có điểm số tốt hơn → có trọng số cao hơn → được chọn thường xuyên hơn. Điểm số được tính dựa trên 2 tiêu chí: Số lượng truy vấn thành công và thời gian phản hồi trung bình. Tuỳ chọn này giúp chúng ta giảm số lượng truy vấn, nhưng không phải phương án tốt nhất nếu chúng ta muốn tối ưu tốc độ truy cập.
- Parallel Requests: Gửi yêu cầu đến tất cả các Upstream DNS cùng lúc. Máy chủ nào trả lời nhanh nhất sẽ được chọn. Cách này giúp mạng luôn nhanh nhất nhưng tốn băng thông xử lý hơn một chút (tốn tài nguyên không đáng kể, vô tư mà chọn). Trong cấu hình của mình cung cấp phía trên đang có 4 upstream DNS, khi bạn truy cập 1 tên miền hợp lệ thì yêu cầu đó sẽ được adguard home mang qua hỏi cùng lúc cả 4 ông kia kiểu “ê mày có biết tên miền tamcongnghe.com nó đang trỏ tới địa chỉ ip nào không”, ông nào trả kết quả về nhanh nhất thì dùng luôn ông đó, bỏ qua 3 ông còn lại -> nên luôn có được tốc độ nhanh nhất.
- Fastest IP address: Hầu như không ai chọn chế độ này, nó nó phải chờ tất cả DNS upstream trả lời → đo tốc độ → chọn IP server phản hồi nhanh nhất. Nếu một trong các Upstream DNS chậm hoặc timeout thì toàn bộ query bị delay.
Chọn Parallel Requests nhé anh em!

Fallback DNS servers
AdGuard Home sẽ chỉ dùng đến Fallback DNS nếu tất cả các server trong mục Upstream DNS đều bị lỗi, quá tải, hoặc không thể kết nối được.
Điều này là cực kì hiếm gặp do Upstream DNS chúng ta đang sử dụng là của Google và Cloudflare – hai ông lớn trong thế giới internet, rất khó để cả 2 đều sập cùng lúc. Nhưng nếu có tình huống đó sảy ra, chúng ta sẽ cung cấp cho adguard home một máy chủ DNS khác để dự phòng.
Ở mục này, bạn nhập vào như sau nếu vị trí máy cài adguard home của bạn gần Hà Nội:
https://lightnode-han-1.edge.nextdns.io
https://greencloud-han-1.edge.nextdns.io
hoặc nhập như sau nếu vị trí của bạn gần TP.HCM:
https://lightnode-sgn-1.edge.nextdns.io
https://greencloud-sgn-1.edge.nextdns.io
Đây là hai máy chủ của NextDNS đặt ngay tại Việt Nam luôn nên sẽ cho tốc độ phản hồi rất tốt. Thậm chí là họ còn có máy chủ đặt tại Hà Nội lẫn TP. Hồ Chí Minh nên bạn gần nơi nào hơn thì chọn tương ứng nhé.
Bootstrap DNS servers
Khi upstream DNS chúng ta đã khai báo ở dạng tên miền, AdGuard Home cần Bootstrap DNS để phân giải tên miền dns.cloudflare.com và dns.google trước khi sử dụng được chúng.
Chúng ta sẽ dùng luôn DNS dạng không mã hoá của Google và Cloudflare cho mục này:
1.1.1.1
8.8.8.8
Chỉ nên để tối đa 2 dòng ở mục này vì AdGuard phải thử từng dòng 1 khi khởi động → lâu hơn.
Upstream timeout
Đây là khoảng thời gian tối đa (tính bằng giây) mà AdGuard Home sẽ chờ phản hồi từ Upstream DNS server trước khi hủy bỏ yêu cầu đó và coi là thất bại.
Nếu Upstream chính bị timeout, hệ thống sẽ tự động chuyển sang Fallback DNS servers mà chúng ta đã cấu hình ở mục trước. Cho nên ở đây bạn để timeout 3 giây là hợp lý => Quá thời gian này thì Adguard Home sẽ tự động chuyển qua Fallback DNS của NextDNS luôn để người dùng không phải đợi quá lâu.

Các mục khác anh em để nguyên hoặc bỏ trống như hình nhé!
Sau đó ấn vào nút “Test upstreams” để kiểm tra, nếu thấy thông báo “Specified DNS servers are working correctly” là nó đang hoạt động tốt. Ấn Apply để lưu lại cấu hình.
DNS server configuration
- Rate limit: Số lượng yêu cầu DNS tối đa mà một thiết bị (client) được phép gửi trong 1 giây. Nếu vượt quá, AdGuard Home sẽ chặn bớt để tránh bị tấn công DDoS hoặc thiết bị bị lỗi gửi request điên cuồng làm treo hệ thống. Để tầm 30 là hợp lý.
- Subnet prefix length: Trừ khi bạn là chuyên gia mạng và có setup chia VLAN phức tạp thì mới cần đến mục này, nếu không thì cứ để mặc định là 24 cho IPv4 và 56 cho IPv6.
- Rate limiting allowlist: Các địa chỉ IP máy khách nhập vào đây sẽ bỏ qua giới hạn số lượng truy vấn trong 1 giây được quy định bởi Rate limit. Tức nó có thể gửi request không giới hạn và không có sự ràng buộc nào. Thường thì với mạng gia đình chúng ta sẽ để trống mục này.
- Enable EDNS client subnet: (Quan trọng) Gửi một phần địa chỉ IP của bạn cho máy chủ DNS đích để họ biết bạn đang ở khu vực nào (ví dụ: Việt Nam) nhằm trả về IP server (CDN) gần bạn nhất (giúp tải Facebook, Google, Netflix nhanh hơn). Nên bật tuỳ chọn này.
- Use custom IP for EDNS: Không nên bật, do mặc định AdGuard Home đã sử dụng đúng IP mạng nhà bạn để gửi yêu cầu, nên các máy chủ DNS (như Google) đã tự biết bạn ở Việt Nam để trả về server gần nhất rồi. Nếu bạn điền IP vào mục này vô tình sẽ làm sai lệch vị trí thực tế của bạn, khiến các dịch vụ hiểu nhầm bạn đang ở nơi khác -> tải nội dung chậm hơn thay vì nhanh hơn.
- Enable DNSSEC: Nên bật. Nó sẽ xác thực bảo mật, đảm bảo dữ liệu DNS không bị giả mạo trên đường truyền. Nó giống như “chữ ký số” cho gói tin DNS. Điều này giúp bảo mật tốt hơn mà không ảnh hưởng đáng kể đến tốc độ.
- Disable resolving of IPv6 addresses: Chặn hoàn toàn việc phân giải tên miền ra địa chỉ IPv6. Nếu mạng nhà bạn KHÔNG dùng IPv6 (chỉ dùng IPv4): Nên BẬT (Tick chọn). Điều này giúp hệ thống đỡ tốn thời gian hỏi IPv6 vô ích, làm mạng nhanh hơn. Mục này thì tuỳ mạng nhà bạn thôi, mạng nhà mình thì không dùng tới IPv6 nên mình bật lên để chặn luôn.
Blocking mode: Cách AdGuard Home trả lời khi một tên miền bị chặn.
- Default: Trả về IP 0.0.0.0. Đây là cách chuẩn nhất.
- NXDOMAIN: Báo “Tên miền không tồn tại”. Nếu chọn tuỳ chọn này, nhiều khi trình duyệt vẫn cố gắng load lại trang.
- Null IP: Tương tự Default.
- Custom IP: Trả về một IP cụ thể (dùng để hiển thị trang thông báo chặn, nhưng cần setup web server riêng).
“Null IP” (0.0.0.0) thường tương thích tốt nhất với mọi thiết bị, giúp quảng cáo biến mất nhanh chóng mà không gây lỗi chờ đợi (timeout) trên trình duyệt.
Blocked response TTL: Thời gian (giây) mà thiết bị của bạn sẽ “nhớ” việc tên miền đó bị chặn. Để 10 giây là hợp lý.

Sau đó ấn Save để lưu cấu hình nhé anh em!
DNS cache configuration
- Enable cache: Nên bật, khi bạn vào một trang web từ lần thứ 2 trở đi, AdGuard Home sẽ lấy IP từ kho này thay vì phải đi hỏi lại Google/Cloudflare, giúp quá trình xử lý DNS gần như tức thì.
- Cache size: Dung lượng bộ nhớ (tính bằng bytes) dành để lưu trữ các kết quả DNS đã truy vấn, mặc định 4194304 bytes (tương đương 4MB). Bạn nên thêm số 0 vào cuối để thành 41943040 (tương đương 40MB) để lưu trữ tốt hơn.
- Override minimum TTL & Override maximum TTL để mặc định 60 và 300 là mức hợp lý. Nếu trong quá trình hoạt động, 1 tên miền bỗng nhiên thay đổi địa chỉ IP máy chủ của họ (ví dụ mình đang tự host web tamcongnghe.com bằng ip động tại nhà). Adguard Home sẽ can thiệp để đảm bảo đối với mỗi tên miền, thời gian cập nhật để lấy địa chỉ IP mới tối thiểu là 1 phút (60 giây) và tối đa là 5 phút (300 giây).
- Optimistic caching: Đây là tính năng “thông minh” rất hay. Bình thường, khi một bản ghi DNS hết hạn (hết TTL), AdGuard Home phải bắt bạn chờ để nó đi hỏi IP mới rồi mới trả lời. Khi bật tính năng này: Nếu bản ghi vừa hết hạn, AdGuard Home vẫn trả lời ngay lập tức bằng IP cũ cho bạn (để bạn vào web ngay không phải chờ), đồng thời nó sẽ âm thầm đi hỏi Server DNS xem có sự thay đổi IP nào không, nếu có thay đổi thì nó tự động cập nhật IP mới vào bộ nhớ để trả về kết quả cho bạn vào lần truy cập tiếp theo. Đây là chìa khóa để mạng của bạn luôn phản hồi siêu nhanh, cảm giác như không có độ trễ.

Ấn Save để lưu lại cấu hình.
Mục Access settings để trống vì không cần thiết phải cấu hình gì thêm.
DNS blocklists
Đây chính là “trái tim” của AdGuard Home. Mục này tập hợp những danh sách chứa hàng ngàn, thậm chí hàng triệu tên miền mà chúng ta muốn chặn (quảng cáo, theo dõi, lừa đảo, virus).
Nó giống như một cuốn sổ đen. Khi bạn truy cập vào một tên miền nào đó, AdGuard Home sẽ tra cứu trong cuốn sổ này để xem nó có trong danh sách chặn hay không => nếu tra cứu thấy có trong danh sách thì chặn luôn (trả về IP 0.0.0.0 như bước Blocking mode chúng ta đã thiết lập).
Có rất nhiều cá nhân và tổ chức trên thế giới tạo ra các danh sách chặn và duy trì cập nhật nó đều đặn. Và đa số chúng đều được chia sẻ miễn phí.
Nhiều anh em mới tìm hiểu thường cố cài thật nhiều danh sách chặn khác nhau nhưng theo mình cách làm đó chưa hẳn đã tốt. Có những danh sách chặn nhầm khá nhiều tên miền sạch mà hàng ngày chúng ta thường truy cập, dẫn đến không thể vào trang web đó được nữa. Cho nên đối với mình thì mình chỉ sử dụng 2 danh sách chặn sau đây:
- AdGuard DNS filter: Đây là danh sách chặn được cung cấp bởi chính AdGuard, được toàn bộ cộng đồng đánh giá là ổn định – ít gây lỗi – hiệu quả cao.
- ABPVN List: Một danh sách chặn chuyên dụng cho các website tại Việt Nam.
Với 2 danh sách trên, mình đã thấy giảm được 90% quảng cáo và gần như không bao giờ gây ra lỗi, không chặn nhầm những trang web hữu ích.
Để thêm 2 danh sách giống mình, bạn ấn vào Menu Filters -> DNS blocklists -> Add blocklist, một popup sẽ hiện lên. Ấn tiếp vào Choose from the list.
Tìm dòng AdGuard DNS filter và tích chọn.

Tiếp tục cuộn chuột xuống gần cuối danh sách sẽ thấy ở phần Regional có tuỳ chọn của danh sách VNM: ABPVN List. Tích chọn thêm mục này.

Ấn Save để lưu lại. Danh sách cuối cùng của mình sẽ hiển thị thế này là đã chuẩn rồi:

DNS allowlists
DNS allowlists hoạt động theo nguyên tắc “miễn trừ đặc biệt”. Khi một tên miền được thêm vào Allowlist, AdGuard Home sẽ bỏ qua mọi quy tắc chặn và cho phép tên miền đó đi qua, bất kể nó có nằm trong Blocklist hay không.
Sử dụng danh sách này sẽ tránh việc một website bị chặn nhầm, trong khi nó rất hữu ích với bạn và bạn không hề muốn chặn nó.
Ví dụ: Bạn cài list chặn mạnh tay và phát hiện không vào được Shopee hoặc ứng dụng ngân hàng VCB không hoạt động. Lý do là list chặn đã nhầm lẫn chặn luôn các domain cần thiết của những dịch vụ này. Bạn chỉ cần thêm domain đó vào Allowlist, vấn đề được giải quyết ngay lập tức mà không cần phải tắt toàn bộ list chặn.
Mình thường thêm list như sau: Ấn chuột vào tab Filters -> DNS allowlists -> Add allowlist.
Mục Enter Name bạn có thể đặt tên cho danh sách theo ý muốn.
Mục Enter a URL… có thể sử dụng danh sách sau của mình:
https://raw.githubusercontent.com/8technologia/adguardhome/refs/heads/main/allowlists.txt

Ấn Save để lưu lại.

Danh sách hiện tại có 141 tên miền được cho phép. Chủ yếu là các tên miền từ dịch vụ công, ngân hàng, ví điện tử, mạng xã hội, các hệ thống CDN…
Như vậy là đã xong phần cấu hình cho Adguard Home. Bây giờ chúng ta còn bước cuối cùng để nó hoạt động chính là truy cập vào router để trỏ DNS servers thành địa chỉ IP LAN của thiết bị đang cài Adguard Home.
