5 Level cấu hình Adguard Home – Level 1
Loạt bài viết này mình sẽ chia sẻ 5 level thiết lập AdguardHome (AGH) khi self-host từ dễ đến khó. 5 cấp độ này là do mình tự đặt ra trong quá trình mình sử dụng để giải quyết các nhu cầu thực tế, đồng thời đưa ra nhiều giải pháp để ứng dụng trong self-host nói chung và sử dụng AGH nói riêng
Nếu các bạn chưa biết thì AGH là một phần mềm chặn quảng cáo dựa trên DNS, hay AGH chính là một DNS server có chứ năng chặn quảng cáo. Thay vì sử dụng trực tiếp các DNS công cộng như Google (8.8.8.8) hay Cloudflare (1.1.1.1), chúng ta sẽ truy vấn DNS thông qua AGH để áp dụng các bộ lọc quảng cáo.
Tuy nhiên, AGH không chỉ có mỗi chức năng đó, mà còn hỗ trợ thêm một vài tính năng nâng cao rất thú vị mà sẽ phát huy được sức mạnh khi chúng ta self-host và kết hợp với các ứng dụng khác, mình cũng chia sẻ những điều đó thông qua 5 cấp độ, từ cơ bản đến nâng cao tương ứng với từ dễ đến phức tạp.
- Level 1: Cài đặt và cấu hình cơ bản – [cấp độ: dễ]
- Level 2: Host 2 Server AGH và đồng bộ qua AGH Sync – [dễ]
- Level 3: Dùng AGH ở bất cứ đâu – [trung bình]
- Level 4: Dùng AGH với Cloudflare Tunnel cấu hình server DoH https, kích hoạt Encryption Clien Hello cho trình duyệt – [bắt đầu hơi phức tạp]
- Level 5: Kết hợp DNS Rewrite + Reverse Proxy + Cloudflare Tunnel để có hệ thống DoH Split Horizontal DNS – [rất là phức tạp]
Nội dung chính
Video
Level 1: Cài đặt và cấu hình cơ bản
Để bắt đầu sử dụng, các bạn sẽ cần 1 phần cứng để chạy AGH dưới dạng DNS Server, phần cứng này có thể chính là router của các bạn (nếu router hỗ trợ cài đặt ứng dụng ngoài), hoặc một mini server chạy Linux như Rasberry Pi, một chiếc TV Box cũ (đã flash OS Armbian), một chiếc NAS, hay bất cứ thiết bị nào chạy được Docker và có thể bật 24/7.
Trong bài này mình sẽ giới thiệu 2 cách cài đặt cho Docker và Linux. Nếu bạn nào sử dụng NAS Synology, có thể xem thêm bài hướng dẫn cài AGH cho Synology. Trước khi cài đặt, các bạn nên đặt IP tĩnh cho thiết bị mà các bạn muốn sử dụng, vì IP của AGH sau này sẽ dùng để cấu hình cấp cho mọi thiết bị trong mạng nên sẽ cần IP tĩnh
Cài đặt cho Linux, hoặc thông qua Docker
Đối với Linux (và các hệ điều hành khác như: Unix/MacOS/FreeBSD/OpenBSD), có một lệnh để cài đặt tự động từ chính nhà phát triển, các bạn chỉ cần ssh vào thiết bị và sử dụng 1 trong 3 lệnh dưới đây:
curl -s -S -L https://raw.githubusercontent.com/AdguardTeam/AdGuardHome/master/scripts/install.sh | sh -s -- -v
wget --no-verbose -O - https://raw.githubusercontent.com/AdguardTeam/AdGuardHome/master/scripts/install.sh | sh -s -- -v
fetch -o - https://raw.githubusercontent.com/AdguardTeam/AdGuardHome/master/scripts/install.sh | sh -s -- -v
Sau khi chạy lệnh xong, sẽ có một dòng trạng thái thông báo đi kèm với IP + Port để vào cấu hình. IP sẽ chính là IP tĩnh mà các bạn đã đặt cho thiết bị, còn port mặc định để cấu hình là port 3000.
Ngoài ra, khi chạy lệnh này, AGH sẽ được cài mặc định vào thư mục /opt/AdguardHome của Linux, các bạn hãy nhớ thư mục này vì đến phần 4 chúng ta sẽ dùng đến.
Đối với Docker, các bạn có thể tham khảo file docker composer sau:
services:
adguardhome:
image: adguard/adguardhome:latest
container_name: adguardhome
network_mode: host
restart: always
volumes:
- /thu_muc_cua_ban/config:/opt/adguardhome/conf
- /thu_muc_cua_ban/data:/opt/adguardhome/work
environment:
- TZ=Asia/Ho_Chi_Minh
command: --no-check-update -c /opt/adguardhome/conf/AdGuardHome.yaml -w /opt/adguardhome/work
cap_add:
- NET_ADMIN
Một số lưu ý khi cài với Docker:
- Trong đó mục network_mode mình dùng thường dùng dạng host để tránh phải đi qua thêm 1 lớp mạng của Docker, đỡ phải cấu hình port của docker. Nếu dùng dạng bridge thì các bạn nhớ cấu hình các port 3000, 80, 433
- Mục volume các bạn mount đường dẫn folder của các bạn để sau này có thể tìm và cấu hình file yaml dễ hơn
Thiết lập ban đầu
Các bạn truy cập địa chỉ IP bằng port 3000 sẽ thấy màn hình chào mừng và thiết lập ban đầu của Adguard Home, đây là port mặc định để setup, sau khi setup xong, port này cũng sẽ không còn cần thiết nữa và cũng không hoạt động nữa. Các bạn ấn Bắt đầu.

Kế tiếp là bạn chọn port cho giao diện quản trị web của Adguard Home. Bạn chọn một cổng mà bạn muốn.

Đối với cổng máy chủ DNS, bạn để mặc định là 53. Nếu nhìn thấy thông báo port 53 đã bị sử dụng, các bạn kiểm tra lại thiết bị xem có bất cứ phần mềm DNS Server nào đang hoạt động hay không. Nếu có các bạn phải tắt hoặc đổi port cho phần mềm DNS đó trước tránh xung đột với AGH.

Sau đó sang đến bước 3/5 sẽ là bước tạo tài khoản quản trị, các bạn tự chọn username và password.

Sau khi hoàn thành bước 4, sẽ có hướng dẫn để các bạn thiết lập Adguard Home cho Router của mình. Tuy nhiên, chưa cần làm điều này ngay, có thể bỏ qua để setup Adguard Home xong xuôi rồi mới thiết lập cho Router.

Khi nhìn thấy màn hình bên dưới, là các bạn đã cấu hình ban đầu xong cho Adguard Home.

Các bạn ấn mở bảng điều khiển sẽ thấy giao diện như hình là đã cấu hình ban đầu xong xuôi.

Cấu hình DNS Upstream
Ở giao diện chính, các bạn ấn Cài đặt -> Cài đặt DNS và sau đó điền các máy chủ DNS mà bạn muốn sử dụng vào ô Máy chủ DNS tìm kiếm. Đây là nơi mà bình thường chúng ta hay điền 8.8.8.8 hay 1.1.1.1. Tuy nhiên với Adguard Home, chúng ta có thể sử dụng các giao thức an toàn hơn như DNS over HTTPS (DoH), DNS over TLS (DoT), DNS over QUIC (DoQ), bằng cách điền các server như hình.

Mình sử dụng một số server DoH, DoT nhanh đến từ các nhà cung cấp có tiếng như Google, Cloudflare hay OpenDNS, các bạn có thể tham khảo, hoặc có thể tự chọn trong danh sách của Adguard Home gợi ý. Nếu không muốn sử dụng DNS bảo mật, các bạn có thể điền thẳng IP của DNS Server (ví dụ như 2 dòng cuối)
tls://dns.google
tls://one.one.one.one
tls://dns.opendns.com
https://dns.google/dns-query
https://dns.cloudflare.com/dns-query
https://doh.opendns.com/dns-query
8.8.8.8
1.1.1.1
Khi sử dụng nhiều server khác nhau, các bạn cũng có thể chọn chế độ Yêu cầu song song, sẽ gửi query đến mọi server và sử dụng server có phản hồi nhanh nhất.
Và đừng để chế độ địa chỉ IP nhanh nhất làm bạn nhầm lẫn, vì chế độ đó sẽ gửi phản hồi đến mọi server nhưng sẽ chờ tất cả server phản hồi rồi mới chọn server có IP nhanh nhất, chế độ này chỉ phù hợp nếu bạn muốn so sánh công bằng các server mà thôi.

Đồng thời ở phần cài đặt DNS, nếu như Upstream Server các bạn toàn dùng DoH/DoT/DoQ như mình thì mục Bootstrap DNS servers, các bạn cần phải điền thêm DNS dạng IP. Mục đích là để khi AGH vừa khởi động dậy, nó sẽ phải đi truy vấn địa chỉ IP của chính các server Upstream DoH/DoT/DoQ để thực hiện các giao thức kết nối, bảo mật, và sau đó mới có thể bắt đầu hoạt động. Và các bạn có thể dùng IP thuần hoặc thậm chí dùng cả DoT để kể cả việc truy vấn ban đầu cũng được bảo mật.
tls://1.1.1.1
tls://8.8.8.8
Nhớ ấn lưu cài đặt và ấn Test thử xem các server có hoạt động bình thường không nhé.
Tiếp tục kéo xuống dưới và bạn có thể tăng bộ nhớ đệm DNS cache lên nếu nhưng hệ thống mạng nhà bạn có nhiều thiết bị, nhiều người sử dụng cùng lúc. Bộ nhớ cache sẽ giúp lưu lại phản hồi từ server DNS upstream để lần truy cập tiếp theo sẽ lấy thẳng từ bộ nhớ cache ra với tốc độ cao hơn nhiều lần (kiểu 0.5 ms thay vì 25-30ms). TTL thì các bạn không nên thay đổi vì các server upstream đã trả về TTL mặc định được tối ưu cho từng website rồi.
Ngoài ra, các bạn nên tick vào ô bộ nhớ đệm lạc quan (Optimistic Cache). Đây là tính năng tự làm mới cache mỗi khi cache hết hạn TTL. Từ đó giúp tăng tỉ lệ truy vấn từ cache lên cao nhất, giúp tăng thời gian phản hồi DNS Query cho Client, đặc biệt là khi các bạn Host Adguard Home trong mạng nội bộ, thời gian phản hồi DNS Query của AGH thường sẽ giảm chỉ còn 1-5ms, nhanh hơn nhiều so với việc phải Query lên DNS Upstream.
Sau đó nhớ ấn Lưu cho phần này.

Cấu hình các bộ lọc chặn quảng cáo
Các bạn truy cập Bộ lọc -> Danh sách chặn, sau đó ấn nút Thêm danh sách

Một danh sách các danh sách sẽ hiện ra để các bạn chọn, các bạn có thể tìm hiểu về các danh sách này. Còn bản thân mình thì đang sử dụng OISD Blocklist Big và VNM: ABPVN List. OISD Blocklist Big đã chặn được nhiều loại quảng cáo, website lừa đảo, độc hại… còn ABPVN List là để chặn các quảng cáo trên các site của Việt Nam.


Đó là cài đặt cơ bản cho Adguard Home với 2 tính năng quan trọng nhất là làm DNS Server và chặn quảng cáo thông qua DNS. Các bạn có thể tự tìm hiểu sâu hơn để sử dụng thêm các tính năng nâng cao khác ví dụ như quản lý theo từng thiết bị hoặc chặn các dịch vụ không mong muốn sử dụng.
Cấu hình AGH lên Router để áp dụng cho toàn bộ thiết bị trong nhà
Sau khi cài đặt xong AGH, Các bạn có đổi DNS server cho các thiết bị cuối, di động, máy tính. Tuy nhiên, đổi trên Router thì sẽ nhanh hơn vì sau khi kết nối đến Router, các thiết bị cuối sẽ tự động được đẩy cấu hình DNS thông qua DHCP. Các bạn vào Router, tìm mục DHCP, thường sẽ trong cài đặt LAN, sẽ thấy Primary và Secondary DNS. Các bạn điền IP của thiết bị mà các bạn đang cài đặt AGH vào Primary DNS.

Đối với Secondary DNS, các bạn có thể thiết lập thêm 1 server Adguard Home nữa trên một thiết bị khác trong hệ thống mạng, rồi điền IP của thiết bị đó vào đây. Mục đích là để có ít nhất 2 DNS server dự phòng cho lẫn nhau, nếu 1 server có vấn đề, server còn lại vẫn hoạt động. Mình sẽ chia sẻ kĩ hơn về server AGH thứ 2 ở phần level 2.
Trong trường hợp các bạn chưa thể có 2 server AGH, các bạn có 2 lựa chọn sau:
- Để trống Secondary DNS: toàn bộ DNS sẽ đi qua server Primary, giúp các thiết bị trong hệ thống mạng được chặn quảng cáo tốt hơn, nhưng nếu AGH server có vấn đề, các thiết bị có thể sẽ mất kết nối với internet.
- Điền DNS công cộng như Google 8.8.8.8, hay Cloudflare 1.1.1.1: Giúp dự phòng cho DNS server chính, thiết bị sẽ không bị mất kết nối internet nếu AGH sập. Tuy nhiên có thể gặp trường hợp thiết bị sử dụng server phụ này thay vì đi qua AGH và sẽ không lọc được quảng cáo, thường xảy ra với những thiết bị không coi Primary và Secondary DNS là thứ tự ưu tiên, mà luôn query đồng thời cả 2 server (thường thấy ở thiết bị Apple).
Sau đó các bạn lưu lại cấu hình DNS server trên router. Và có thể thực hiện restart router để toàn bộ thiết bị trong mạng sẽ nhận DNS server mới.
Cuối cùng, các bạn vào lại trang quản trị của Adguard Home để kiểm tra, sẽ thấy số liệu bắt đầu xuất hiện, đó chính là vì các thiết bị đang sử dụng Adguard Home làm DNS Server, như vậy là đã thành công.

Lưu ý, đối với một số trình duyệt (như Chrome), có thể đã được bật chức năng DNS bảo mật, và sử dụng DNS server DoH mặc định của Google, hoặc Cloudflare, mà không sử dụng DNS của thiết bị (do router đã cung cấp thông qua DHCP). Khi này các bạn lướt web bằng trình duyệt có thể vẫn thấy có quảng cáo, đó là vì trình duyệt đang dùng DNS công cộng chứ chưa đi qua AGH.
Để khắc phục vấn đề này, các bạn có vài lựa chọn sau:
- Vào DNS bảo mật của trình duyệt và tắt nó đi (mất tính năng DNS bảo mật)
- Đổi sang chế độ OS Default (cũng gần như mất tính năng DNS bảo mật vì OS Default đang dùng IP DNS AGH dạng truy vấn thông thường qua cổng 53)
- Hoặc có thể xem tiếp series này đến phần 4 để tự cấu hình AGH trở thành server DoH.
Như vậy phần này là xong các cấu hình cơ bản tại level 1 của AGH rồi. Tuy nhiên, nếu dừng lại ở đây, chúng ta vẫn sẽ gặp vấn đề đó là hiện chỉ đang có duy nhất 1 server AGH mà chưa có server dự phòng.
Các bạn có thể xem tiếp Level 2: Host 2 Server AGH và đồng bộ qua AGH Sync
Nếu thấy nội dung bài viết hữu ích, hãy chia sẻ cho bạn bè và người thân. Đừng quên theo dõi Ngon Bổ Xẻ qua Facebook và Youtube để luôn cập nhật các nội dung mới nhất. Ngoài ra, mình cũng có lập Group FB chuyên chia sẻ các deal hời cho anh em về công nghệ, điện từ, gia dụng… các bạn cũng có thể tham gia nha. Một lần nữa, chân thành cám ơn các bạn và hẹn gặp lại trong những nội dung kế tiếp ❤️
Chia sẻ bài viết:
