Chuyên mục
Linux Network

Hướng dẫn cài đặt Adguard Home – chặn quảng cáo cho cả nhà

Để loại bỏ quảng cáo trên mọi thiết bị trong nhà, bạn cần phải sử dụng phương pháp chặn quảng cáo bằng DNS.

Bài viết này mình sẽ hướng dẫn cách cài đặt và sử dụng AdGuard Home – một trong những công cụ chặn quảng cáo bằng DNS phổ biến nhất hiện nay. (Ngoài AdGuard Home, bạn còn có thể sử dụng PiHole với những tính năng gần như tương đồng)

I. AdGuard Home hoạt động ra sao?

AdGuard Home là một ứng dụng được cài đặt trên máy tính, đóng vai trong như là một bộ lọc quảng cáo cho mạng nội bộ. Nhờ đó mọi thiết bị trong mạng sẽ được hưởng lợi không bị quảng cáo làm phiền.

Để hiểu cách AdGuard Home hoạt động, bạn cần phải hiểu cách thiết bị truy vấn thông tin trên Internet.

  • Mỗi khi bạn truy cập một website thông qua tên miền (ví dụ https://blntech.asia), thiết bị của bạn (trình duyệt web) cần phải biết chính xác địa chỉ IP của tên miền này để có thể tải nội dung về.
  • Để xác định được địa chỉ IP này, trình duyệt sẽ gửi một yêu cầu phân giải tên miền – DNS (Domain name system) đến máy chủ DNS – nơi chứa thông tin địa chỉ IP tương ứng với tất cả tên miền trên thế giới.
  • Máy chủ DNS sẽ phản hồi lại địa chỉ IP của tên miền https://blntech.asia để trình duyệt tải nội dung cần thiết.
  • Mọi kết nối đến tên miền đều phải thực hiện lại thao tác DNS query này.

Địa chỉ DNS Server thường sẽ được cung cấp tự động từ router gửi đến thiết bị trong nhà mỗi khi kết nối vào mạng thông qua giao thức DHCP. Mặc định, Router sẽ sử dụng DNS Server từ nhà mạng. Hoặc bạn có thể đổi qua sử dụng DNS Server của Google (8.8.8.8, 8.8.4.4) hoặc CloudFlare (1.1.1.1 1.0.0.1).

AdGuard Home chặn quảng cáo bằng cách can thiệp vào kết nối giữa thiết bị đến DNS Server. Nó sẽ đóng vài trò là một máy chủ DNS trung gian, loại bỏ tất cả các truy vấn liên quan đến domain quảng cáo dựa vào bộ lọc có sẵn, và chỉ chuyển tiếp các truy vấn hợp lệ đến DNS Server để phân giải tên miền.

Lưu ý: AdGuard Home sẽ không chặn đc quảng cáo Youtube do các quảng cáo được đặt trên cùng Server với video chính (nên sẽ có cùng IP). Nếu chặn quảng cáo là sẽ chặn luôn video, không xem được.

II. Chuẩn bị đồ nghề

Bạn cần chuẩn bị các mục dưới đây trước khi cài đặt Adguard Home

  • Một máy tính có thể hoạt động liên tục 24/7: PC / Laptop / Máy ảo / Raspberry Pi hoặc Cloud VPS (Digital Ocean / UpCloud / Vultr / Oracle).
  • Máy tính / máy ảo hoặc Cloud VPS cần phải được cài đặt Linux (Ubuntu, CentOS, Debian). Nếu dùng Raspberry Pi thì có thể cài Raspberry Pi OS Lite.
  • Máy tính cài AdGuard Home cần phải được thiết lập sử dụng IP tĩnh (static IP). Nếu bạn dùng Cloud VPS thì không phải bận tâm do VPS đã có sẵn Public IP, còn nếu dùng trên máy tính / máy ảo ở nhà thì phải cần thiết lập IP tĩnh cho thiết bị. Xem hướng dẫn: Ubuntu 20.04, Raspberry Pi.
  • Kiến thức căn bản về Linux, cài đặt mạng gia đình. Nếu không rành thì làm theo đúng từng bước mình hướng dẫn là ổn cả thôi.

Mình cài đặt AdGuard Home trên Raspberry Pi Model B+ (phiên bản Pi 1 ra mắt năm 2014) thấy chạy vô tư. Nên bạn không cần phải lo lắng về cấu hình của máy cài đặt AdGuard Home.

III. Cài đặt AdGuard Home

Có 2 cách để cài đặt AdGuard Home: cài đặt trực tiếp lên OS hoặc cài đặt thông qua Docker. Bài viết này mình sẽ hướng dẫn cả hai cách, tuỳ bạn chọn cách nào tiện lợi hơn cho mình.

1. Cài đặt trực tiếp lên OS

Bạn có thể cài đặt AdGuard Home chỉ bằng 1 dòng lệnh như sau:

curl -s -S -L <https://raw.githubusercontent.com/AdguardTeam/AdGuardHome/master/scripts/install.sh> | sh -s -- -v

Chờ vài phút cho script xử lý và cài đặt

starting AdGuard Home installation script
channel: release
operating system: linux
cpu type: amd64
AdGuard Home will be installed into /opt/AdGuardHome
checking curl
checking tar
script is executed with root privileges
no need to uninstall
downloading package from <https://static.adguard.com/adguardhome/release/AdGuardHome_linux_amd64.tar.gz> -> AdGuardHome_linux_amd64.tar.gz
unpacking package from AdGuardHome_linux_amd64.tar.gz into /opt
2021/08/18 14:40:05 [info] Service control action: install
2021/08/18 14:40:06 [info] Service has been started
2021/08/18 14:40:06 [info] Almost ready!
AdGuard Home is successfully installed and will automatically start on boot.
There are a few more things that must be configured before you can use it.
Click on the link below and follow the Installation Wizard steps to finish setup.
2021/08/18 14:40:06 [info] AdGuard Home is available on the following addresses:
2021/08/18 14:40:06 [info] Go to <http://127.0.0.1:3000>
2021/08/18 14:40:06 [info] Go to http://[::1]:3000
2021/08/18 14:40:06 [info] Go to <http://xxx.xxx.xxx.xxx:3000>
2021/08/18 14:40:06 [info] Action install has been done successfully on linux-systemd
AdGuard Home is now installed and running
you can control the service status with the following commands:
sudo /opt/AdGuardHome/AdGuardHome -s start|stop|restart|status|install|uninstall

Vậy là xong. Bạn có thể truy cập theo URL được ghi trong phần log (Go to http://xxx.xxx.xxx.xxx:3000) để bắt đầu cấu hình AdGuard Home

<http://xxx.xxx.xxx.xxx:3000>

Cách này yêu cầu máy của bạn chưa được cài bất kỳ web server nào như Apache, Nginx, Caddy vì AdGuard Home sẽ cần sử dụng Port 80 để truy cập vào giao diện quản lý.

2. Cài đặt bằng Docker

Cách này sẽ tiện lợi hơn trong việc quản lý và xử lý sự cố phát sinh. Ngoài ra bạn còn có thể kết sử dụng AdGuard Home chung với các web server Nginx / Apache.

Bạn cần phải cài đặt Docker trước khi tiếp tục. Xem lại bài viết dưới đây để biết cách cài đặt Docker và Docker-Compose:

Hướng dẫn cài đặt Docker, Docker Compose trên Linux (Ubuntu / Arch / Debian …)

Bạn có thể cài đặt ứng dụng thông qua Docker bằng 2 cách: sử dụng command-line hoặc dùng Portainer.

Sử dụng command-line

Tạo file docker-compose.yml thư mục adguardhome để cấu hình dịch vụ

cd ~
mkdir adguardhome
cd adguardhome
nano docker-compose.yml

Nhập nội dung này vào file và lưu lại

version: "2"
services:
  adguardhome:
    image: adguard/adguardhome
    container_name: adguardhome
    ports:
      - 53:53/tcp
      - 53:53/udp
      - 784:784/udp
      - 853:853/tcp
      - 3000:3000/tcp
      - 8080:80/tcp
    volumes:
      - ./workdir:/opt/adguardhome/work
      - ./confdir:/opt/adguardhome/conf
    restart: unless-stopped

Kích hoạt AdGuard Home bằng lệnh docker-compose up

sudo docker-compose up -d

Nếu không bị báo lỗi nào khi chạy, AdGuard Home đã khởi tạo thành công. Xem tiếp mục IV. Cấu hình Adguard Home bên dưới để thao tác tiếp.

Nếu bị báo lỗi fail to bind on port 53, hãy kéo xuống xem cách sửa lỗi.

Sử dụng Portainer

Nếu bạn không quen gõ dòng lệnh, hãy sử dụng Portainer để triển khai AdGuard Home trên Docker cho dễ hiểu và trực quan.

Quản lý Docker trực quan và hiệu quả hơn với Portainer

Truy cập vào Portainer Dashboard, tab Stacks và tạo Stack mới với thông tin

  • Name: AdGuard Home
  • Web editor: điền thông tin như dưới đây
version: "2"
services:
  adguardhome:
    image: adguard/adguardhome
    container_name: adguardhome
    ports:
      - 53:53/tcp
      - 53:53/udp
      - 784:784/udp
      - 853:853/tcp
      - 3000:3000/tcp
      - 8080:80/tcp
    volumes:
      - ./workdir:/opt/adguardhome/work
      - ./confdir:/opt/adguardhome/conf
    restart: unless-stopped

Sau đó bấm Deploy the stack, chờ vài phút là xong.

Theo file cấu hình này, mình dùng port 8080 của Host để truy cập vào port 80 của AdGuard Home. Cách này nhằm tránh xung đột với container Nginx Proxy Manager đã sử dụng cổng 80 của Host. Bạn có thể đổi port 8080 thành bất kỳ port nào chưa sử dụng trên Host.

3. Sửa lỗi fail to bind on port 53

Nhiều khả năng khi thiết lập AdGuard Home trên Ubuntu, bạn sẽ bị báo lỗi fail to bind on port 53. Lý do là vì đã có dịch vụ systemd-resolved đang sử dụng port 53 này. Bạn tắt dịch vụ này đi và deploy lại là được.

sudo mkdir -p /etc/systemd/resolved.conf.d/
sudo nano /etc/systemd/resolved.conf.d/adguardhome.conf

Điền vào nội dung sau

[Resolve]
DNS=127.0.0.1
DNSStubListener=no

Bấm CTRL + O để lưu lại và bấm CTRL + X để thoát ra

Tiếp theo chạy lệnh này để cập nhật thông số và khởi động lại systemd-resolved

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

Port 53 giờ đã được trả tự do để AdGuard Home sử dụng. Bạn có thể kiểm tra lại bằng lệnh

sudo lsof -i :53

Nếu không thấy kết quả nào trả lại nghĩa là port 53 đã được tự do.

IV. Cấu hình AdGuard Home

Đầu tiên, bạn cần truy cập vào trang cài đặt AdGuard Home theo địa chỉ http://xxx.xxx.xxx.xxx:3000 trong đó xxx.xxx.xxx.xxx là địa chỉ IP của máy.

1. Thiết lập ban đầu

Bấm Bắt Đầu
Mặc định AdGuard Home sẽ chọn port 80 cho trang Dashboard. Bấm Tiếp
Thiết lập tên đăng nhập và mật khẩu
Bấm Tiếp

Sau khi hoàn thành bước cài đặt này, bạn đổi qua truy cập trực tiếp Dashboard theo port http 80 mặc định

<meta charset="utf-8">http://xxx.xxx.xxx.xxx
Đăng nhập vào AdGuard Home
Giao diện chính của AdGuard Home

AdGuard Home có rất nhiều tính năng cho bạn khám phá. Nhưng với mục đích chặn quảng cáo bạn chỉ cần thiết lập thêm 2 bước nữa là xong.

2. Thêm danh sách chặn

Mặc định AdGuard Home đã có sẵn 1 list chặn có tên gọi AdGuard DNS Filter. Bạn có thể truy cập vào mục Filters –> DNS Blocklists để bổ sung thêm các list khác.

AdGuard Home có sẵn 1 số danh sách chặn mặc định khi bấm vào nút Add blocklist để bạn chọn. Ngoài ra, bạn nên bổ sung thêm blocklist này vào (không có sẵn trên AdGuard Home).

https://dbl.oisd.nl/

List này có đến hơn 1 triệu dòng, tập hợp đầy đủ mọi danh sách chặn. Yên tâm chặn quảng cáo hiệu quả.

3. Cấu hình upstream DNS

Mặc định, AdGuard sẽ dùng DNS Server từ Quad9. Bạn có thể đổi qua dùng DNS của CloudFlare hoặc Google bằng cách truy cập Settings –> DNS Setting. Sau đó thêm địa chỉ 1.1.1.18.8.8.8 vào danh sách Upstream DNS Servers

Vậy là xong. AdGuard Home đã sàng phục vụ.

V. Thay đổi DNS Server trên Router

Bước cuối cùng bạn cần làm là truy cập vào trang cấu hình Router để thay đổi DNS Server mặc định sang địa chỉ IP của AdGuard Home. Mỗi loại router có cách cấu hình khác nhau nên phần này mình chỉ hướng dẫn trên router mình đang dùng.

Dưới đây là cách thay đổi DNS Server trên Router Mikortik chạy RouterOS v6

  • Kết nối vào Router Mikrotik bằng Winbox
  • Truy cập mục DHCP Server: IP –> DHCP Server
  • Bấm vào mục Networks, double click vào phần địa chỉ
  • Ở mục DNS Servers, đổi lại thành IP Address của máy đang cài AdGuard Home
  • Bấm OK để lưu lại là xong.
Thay đổi DNS Server trên Router Mikrotik

Chúc bạn cài đặt thành công!

Tham khảo: thuanbui.me