Hướng dẫn cài đặt, cấu hình và tối ưu Pi-hole chặn quảng cáo toàn mạng chi tiết từ A-Z
Nếu bạn là một người đam mê Home Lab và quản trị mạng, chắc chắn bạn không còn xa lạ với Pi-hole — tượng đài chặn quảng cáo nguồn mở nổi tiếng nhất thế giới. Được phát triển ban đầu dành cho máy tính nhúng Raspberry Pi, ngày nay Pi-hole đã trở thành một hệ thống DNS Sinkhole cực kỳ mạnh mẽ nhờ trái tim FTL Engine (Faster Than Light) viết bằng ngôn ngữ C.
Trong bài viết này, mình sẽ hướng dẫn các bạn cách triển khai Pi-hole bằng Docker Compose, cấu hình danh sách chặn Gravity, thiết lập các quy tắc Regex chặn quảng cáo nâng cao và tích hợp Unbound để biến Pi-hole thành một Recursive DNS Server bảo mật độc lập hoàn toàn.
1. Pi-hole là gì và tại sao lại cực kỳ được ưa chuộng?
Pi-hole đóng vai trò như một màng lọc DNS cho toàn bộ mạng nội bộ. Bằng cách hoạt động ở cấp độ DNS (Layer 7), Pi-hole ngăn chặn quảng cáo và các trình theo dõi trước khi chúng có cơ hội tải về máy tính hay điện thoại của bạn.

Tại sao nên chọn Pi-hole?
- Hiệu năng cực cao nhờ FTL Engine: FTL engine được tối ưu bằng C, xử lý hàng trăm nghìn truy vấn DNS mỗi giây với mức sử dụng CPU/RAM gần như bằng 0.
- Cơ chế Gravity Database: Cơ sở dữ liệu SQLite siêu nhẹ giúp tìm kiếm và chặn tên miền độc hại trong vài microsecond.
- Hỗ trợ Regex Blocking: Cho phép viết các biểu thức chính quy (Regular Expressions) để chặn linh hoạt theo mẫu tên miền (ví dụ chặn toàn bộ tên miền quảng cáo chứa chữ
analytics,telemetry,adservice). - Cộng đồng khổng lồ: Rất nhiều bộ danh sách Adlist được cộng đồng duy trì và cập nhật hàng ngày.
2. Chuẩn bị trước khi cài đặt
- Máy chủ Linux (Ubuntu, Debian, Raspbian) hoặc Raspberry Pi / Mini PC.
- Đã cài sẵn Docker và Docker Compose.
- Xử lý xung đột Port 53 nếu máy chủ dùng Ubuntu/Debian (tắt
systemd-resolvedstub listener tương tự như khi cài AdGuard).
sudo sed -i 's/#DNSStubListener=yes/DNSStubListener=no/' /etc/systemd/resolved.conf
sudo systemctl restart systemd-resolved
3. Triển khai Pi-hole bằng Docker Compose
Tạo thư mục làm việc:
mkdir -p ~/pihole && cd ~/pihole
nano docker-compose.yml
Dán nội dung docker-compose.yml chuẩn dưới đây vào:
version: "3.8"
services:
pihole:
container_name: pihole
image: pihole/pihole:latest
ports:
- "53:53/tcp"
- "53:53/udp"
- "8080:80/tcp" # Đổi port Web Admin thành 8080 để tránh đụng độ
environment:
TZ: 'Asia/Ho_Chi_Minh'
WEBPASSWORD: 'PasswordCuaBanAtHere123' # Đặt mật khẩu đăng nhập Admin
FTLCONF_LOCAL_IPV4: '192.168.1.100' # IP tĩnh của máy chủ Pi-hole
volumes:
- './etc-pihole:/etc/pihole'
- './etc-dnsmasq.d:/etc/dnsmasq.d'
restart: unless-stopped
Khởi chạy container:
docker compose up -d
Sau khi chạy xong, hãy truy cập vào giao diện Web Admin tại địa chỉ:
http://<IP-MAY-CHU>:8080/admin và nhập mật khẩu đã cấu hình ở mục WEBPASSWORD.

4. Cấu hình Upstream DNS Servers cho Pi-hole

Vào Web Admin -> Settings -> Chuyển sang tab DNS:
- Ở cột Upstream DNS Servers, đánh dấu chọn các nhà cung cấp DNS tin cậy:
- Cloudflare (DNSSEC):
1.1.1.1và1.0.0.1 - Quad9 (filtered, DNSSEC):
9.9.9.9
- Cloudflare (DNSSEC):
- Interface settings: Chọn Allow only local requests (hoặc Respond only on interface eth0 tùy cấu hình mạng).
- Advanced DNS settings:
- Đánh dấu chọn Use DNSSEC để xác thực tính toàn vẹn của bản ghi DNS.
- Đánh dấu chọn Never forward non-FQDN A and AAAA queries và Never forward reverse lookups for private IP ranges.
- Bấm Save ở cuối trang để lưu cấu hình.

5. Cập nhật Gravity Database & Thêm Blocklists đỉnh cao
Mặc định Pi-hole chỉ đi kèm danh sách StevenBlack. Để chặn hiệu quả hơn tại Việt Nam và trên các ứng dụng di động, hãy thêm các Adlist sau:
Vào Adlists (trong mục Group Management):
Thêm các đường URL sau vào khung Address:
# ABPVN - Chặn quảng cáo tiếng Việt
https://raw.githubusercontent.com/abpvn/abpvn/master/filter/abpvn-hosts.txt
# OISD Basic / Full
https://big.oisd.nl
# AnudeepND - Chặn Tracking & Telemetry
https://raw.githubusercontent.com/anudeepND/whitelist/master/domains/blacklist.txt
Bấm Add. Sau khi thêm xong, vào mục Tools -> Update Gravity -> Bấm nút Update để Pi-hole tải danh sách về và biên dịch vào cơ sở dữ liệu FTL.

6. Thêm quy tắc RegEx Blocking nâng cao
Regex (Regular Expression) giúp Pi-hole chặn toàn bộ tên miền phụ theo mẫu mà không cần liệt kê từng tên miền một.
Vào Domains -> Chọn tab RegEx filter:
Thêm các mẫu Regex sau:
- Chặn tất cả sub-domain theo dõi telemetry của Microsoft/Windows:
^telemetry\..* - Chặn máy chủ quảng cáo chứa từ khóa
adserverhoặcadservice:^adserver[-_.]^adservice[-_.] - Chặn theo dõi trên Smart TV Samsung / LG / Xiaomi:
^samsungcloudsolution\..*^lgsmartad\..*
7. Combo thần thánh: Pi-hole + Unbound (Recursive DNS Server)
Nếu bạn không muốn gửi bất kỳ truy vấn DNS nào tới Cloudflare, Google hay nhà mạng, hãy biến Pi-hole thành một Recursive DNS Server thực thụ bằng cách kết hợp với Unbound.
Unbound sẽ tự mình làm việc trực tiếp với các Root DNS Servers (.) trên thế giới để phân giải tên miền. Không ai có thể thu thập hay bán lịch sử duyệt web của bạn!
Cài đặt Unbound trên Ubuntu/Debian:
sudo apt update && sudo apt install unbound -y
Tạo file cấu hình tối ưu cho Unbound:
sudo nano /etc/unbound/unbound.conf.d/pi-hole.conf
Dán nội dung cấu hình sau:
server:
verbosity: 1
interface: 127.0.0.1
port: 5335
do-ip4: yes
do-udp: yes
do-tcp: yes
# Cho phép IPv6 nếu mạng bạn hỗ trợ
do-ip6: no
# Tải root hints
root-hints: "/var/lib/unbound/root.hints"
# Tối ưu bảo mật
harden-glue: yes
harden-dnssec-stripped: yes
use-caps-for-id: no
edns-buffer-size: 1232
prefetch: yes
num-threads: 1
# DNS Cache
msg-cache-size: 64m
rrset-cache-size: 128m
infra-cache-numhosts: 10000
Khởi động lại Unbound:
sudo systemctl restart unbound
Trỏ Pi-hole sang Unbound:
Quay lại Pi-hole Web Admin -> Settings -> DNS -> Bỏ chọn Cloudflare/Google -> Ở mục Custom 1 (IPv4), điền:
127.0.0.1#5335 (hoặc IP máy chủ nếu chạy container Unbound riêng).
Bấm Save. Bây giờ Pi-hole của bạn đã trở thành một hệ thống chặn quảng cáo kiêm Server phân giải DNS độc lập 100%!
8. Kết luận
Với Pi-hole, bạn có trong tay một công cụ chặn quảng cáo cực kỳ mạnh mẽ, linh hoạt và nhẹ nhàng. Việc kết hợp giữa FTL Engine, Gravity Database, Regex Rules và Unbound Recursive DNS mang lại cho bạn sự riêng tư tối đa và trải nghiệm lướt web vô cùng mượt mà trên mọi thiết bị trong gia đình.