Dự án cloudflare-gateway-pihole-scripts (CGPS) của tác giả mrrfv đã được giới thiệu từ trên voz, xưa mình lướt thấy, nhưng không quá ấn tượng, cấu hình quá sức phức tạp cho người sử dụng thông thường (tầm 1-2 năm nay mình biết tới Github, đọc mới hiểu, chứ xưa nhìn vào ngu người luôn), chặn quảng cáo qua DNS không quá triệt để, dùng addon trên trình duyệt vẫn tiện hơn, có điều, nếu nhu cầu tích hợp nó làm DNS mặc định cho 1 số trình duyệt, thiết bị di động như iPhone, iPad … lại rất hợp, vì chặn sẵn 1 số quảng cáo cơ bản, ít tốn pin, lại miễn phí hoàn toàn
Ở thời điểm hiện tại mình rất hài lòng với giải pháp dùng CGPS để tạo bộ lọc để chặn quảng cáo trên Cloudflare Gateway, nó đáp ứng phần lớn các tiêu chí mình đang tìm kiếm
- Miễn phí, không giới hạn số thiết bị và không giới hạn số lượng truy vấn DNS (nhiều dịch vụ khác như NextDNS thường giới hạn 300.000 request mỗi tháng)
- Cloudflare Gateway phân giải DNS nhanh, ổn định cao nhờ chạy trên hạ tầng toàn cầu của Cloudflare
- Cloudflare DNS 1.1.1.1 mặc định không hỗ trợ ECS nhưng Cloudflare Gateway cho phép bật ECS, ở Việt Nam bật ECS có thể giúp một số dịch vụ CDN định tuyến người dùng đến máy chủ tốt hơn
- Hỗ trợ IPv4, IPv6 DoH và DoT, cấu hình trên nhiều thiết bị khác nhau với cách triển khai đơn giản
- Hỗ trợ danh sách chặn và danh sách cho phép, giúp quản lý các bộ lọc đơn giản hơn, Cloudflare cho phép chặn miễn phí tới 300.000 domain, đủ cho tuyệt đại đa số nhu cầu
- Tự động cập nhật bộ lọc theo lịch trình (mặc định là mỗi thứ Hai hàng tuần)
- Có thể mở khóa 1 số domain thông dụng như medium.com bị các nhà mạng chặn nhầm
- Vô số các cấu hình bảo mật khác từ Cloudflare Zero Trust
Các bước cấu hình bên dưới, mình viết lại từ bài giới thiệu gốc trên voz, chỉ sửa lại các tên gọi, đường dẫn cho chính xác theo cách gọi ở thời điểm 10/2025, không khác biệt gì so với bài viết gốc, viết ở mức cơ bản nhất, để bất cứ ai đọc bài này, đều có thể tự làm được
Cấu hình
Để việc cài đặt đơn giản, tránh nhầm lẫn, tạo mới tài khoản Github và Cloudflare, mọi cấu hình liên quan tới chặn quảng cáo, sẽ thông qua 2 tài khoản này
- Fork dự án
cloudflare-gateway-pihole-scripts
- Repository name đặt tên tùy ý, rồi ấn vào
Create fork
- Truy cập vào Cloudflare Zero Trust
- Click chọn tài khoản của bạn
- Đặt 1 tên tùy ý cho team, sau đó ấn
Next
- Chọn gói miễn phí (
Free
)
- Chọn
Cancel and exit
(đỡ công đoạn nhập thẻ xác nhận) - Truy cập lại vào Cloudflare Zero Trust
- Lúc này sẽ thấy màn hình
Welcome aboard!
- Truy cập nhanh vào URL này hoặc click thủ công,
Gateway
->DNS locations
->Add a location
- DNS location details
- Location name: đặt 1 tên tùy ý
- Bật
DNS over HTTPS (DoH)
- Click chọn
Enable EDNS client subnet
- Click chọn
Set as Default DNS Location
- Sau đó
Continue
- Ấn tiếp vào
Continue
- Ấn tiếp vào
Done
- Công đoạn tạo DNS location đã xong, ta đã có cấu hình DNS over HTTPS (DoH), dạng
https://xxxxxxxxx.cloudflare-gateway.com/dns-query
Chặn quảng cáo khi dùng qua Gateway DNS location
- Lấy Cloudflare
Account ID
Truy cập vào trang chủ hoặc click vào icon Cloudflare ở góc trên bên trái, sẽ thấy 1 dãy số 586a12870xxx573bd1cde52b6278970c
, đây là giá trị Account ID
của tài khoản
- Tạo Cloudflare API Token
- Truy cập nhanh vào URL này hoặc click thủ công vào icon góc phải ->
Profile
->API Tokens
->Create Token
- Phần
Create Custom Token
-> clickGet started
Token name
: đặt tên tùy ýPermissions
Account -> Zero Trust -> Read Account -> Zero Trust -> Edit
- Click
Continue to summary
- Click
Create Token
Giá trị 6xfDjxD81Wb5xxxxxxxxx_4tZEJmGLT6a37
là API Token
vừa được tạo ra, click vào Copy
, lưu lại dãy số này, vì khi F5 lại trình duyệt, sẽ không hiện lại nữa
Cấu hình cho dự án trên Github
- Quay lại dự án
cloudflare-gateway-pihole-scripts
ở tài khoản Github của bạn
- Từ menu
Settings
->Secrets and variables
->Actions
->Variables
->New repository variable
- Name:
BLOCKLIST_URLS
(tên gọi của danh sách chặn quảng cáo) - Value: điền vào các đường dẫn bộ lọc, mỗi bộ lọc phân cách bởi
Enter
xuống dòng- Cơ bản
AdGuard DNS filter
,AdGuard DNS Popup Hosts filter
,VNM: ABPVN List
là đủ, cá nhân dùng thêm 1 bộ lọc, khi nào cần chặn domain không có trong danh sách thì tự thêm vào - Tạo đơn giản bộ lọc cá nhân bằng cách vào dự án, tạo ra 1 file
.txt
(cấu trúc mẫu), rồi lấy URL Raw chép vào
- Cơ bản
https://adguardteam.github.io/HostlistsRegistry/assets/filter_1.txt https://adguardteam.github.io/HostlistsRegistry/assets/filter_59.txt https://adguardteam.github.io/HostlistsRegistry/assets/filter_16.txt https://raw.githubusercontent.com/bibicadotnet/AdGuard-Home-blocklists/refs/heads/main/byme.txt
- Click
Add variable
Tạo tiếp 1 New repository variable
mới
- Name:
ALLOWLIST_URLS
(tên gọi của danh sách bỏ chặn) - Value: điền vào các đường dẫn bộ lọc, mỗi bộ lọc phân cách bởi
Enter
xuống dòng- Bộ lọc này dùng để bỏ ra các domain, nếu nó bị các bộ lọc ở
BLOCKLIST_URLS
chặn nhầm - Tạo đơn giản bộ lọc cá nhân bằng cách vào dự án, tạo ra 1 file
.txt
(cấu trúc mẫu), rồi lấy URL Raw chép vào
- Bộ lọc này dùng để bỏ ra các domain, nếu nó bị các bộ lọc ở
- Click
Add variable
- Sang tab
Secrets
->New repository secret
- Phần
Name
vàSecret
thêm lần lượt 4 repository secret theo bảng bên dưới:
Name
|
Secret
|
CLOUDFLARE_API_TOKEN |
Nhập API Token ở bước trên vào |
CLOUDFLARE_ACCOUNT_ID |
Nhập Account ID ở bước trên vào |
CLOUDFLARE_ACCOUNT_EMAIL |
Email đăng kí Cloudflare |
CLOUDFLARE_LIST_ITEM_LIMIT |
Dùng Free plan thì nhập vào 300000 |
- Bật chạy
Github Actions
- Từ tab
Actions
-> clickI understand my workflows, go ahead and enable them
- Bên trong
Actions
, click vàoNew workflow
- Click tiếp vào
set up a workflow yourself
- Copy nội dung phần code tại auto_update_github_action.yml, đưa vào bên trong, sau đó ấn vào
Commit changes...
- Cron mặc định đang chạy vào thứ 2 hàng tuần để tự cập nhập lại các danh sách bộ lọc (có thể đổi nội dung dòng 5, sang
- cron: "0 17 * * *"
, chạy mỗi ngày vào lúc 0h sáng theo giờ Việt Nam)
- Mặc định, sau khi
Commit changes
, workflows sẽ tự chạy lần đầu, bạn sẽ thấy có thêm workflowsUpdate Filter Lists
- Ấn vào xem logs, sẽ thấy các thông tin cơ bản về bộ lọc đang chạy, nếu dùng theo cấu hình bên trên của mình, thì chặn khoảng
228.930
domain, vẫn dưới mốc300.000
mà Cloudflare hỗ trợ miễn phí
- Truy cập lại vào Cloudflare Zero Trust, Gateway -> Firewall policies, sẽ thấy bộ lọc từ Github đã được gửi sang Cloudflare
Cuối cùng 1 số bước râu ria, mở chặn medium.com
khi dùng tại nhà mạng Việt Nam
Gateway
->Firewall policies
, ở tabDNS
, click vàoDNS policies
, tạo thêm 1 rule mới
- STEP 1: Policy name, Description: đặt tên tùy ý
- STEP 2: Traffic
- Selector chọn
Domain
- Operator chọn
matches regex
- Value:
medium.com
- Click vào
Or
để mở thêm tùy chọn mới - Selector chọn
Domain
- Operator chọn
matches regex
- Value:
www.medium.com
- Selector chọn
- STEP 3
- Action chọn
Override
- Override Hostname: điền 1 domain bất kì đang chạy qua
Cloudflare Proxy
, ví dụbibica.net
- Action chọn
- Click
Create policy
Tắt Gateway Logging
Sau khi cài đặt, chạy thử nghiệm ít ngày, nên tắt
Kiểm tra hiệu năng Cloudflare Gateway – DNS Locations
Kiểm tra lại sơ bộ, xem có lỗi hay gì không 😀
- Trên nhà mạng VNPT, DNS sử dụng Cloudflare tại Kong Kong, không có gì đặc biệt
- Để bạn dễ hình dung, dãy DoH này, nó tương tự với DoH của Cloudflare là
https://cloudflare-dns.com/dns-query
, nhưng đã được bậtEDNS Client Subnet
Theo cách giải thích của Cloudflare, trên 1.1.1.1 tiêu đề EDNS Client Subnet mặc định tắt để tăng 1 chút riêng tư cho người dùng, có điều tắt hay bật cũng không có gì đảm bảo, Google DNS 8.8.8.8 mặc định bật EDNS, bao nhiêu năm qua chúng ta vẫn dùng ầm ầm, có thấy ai thắc mắc, phàn nàn gì, cá nhân chỉ hơi tiếc 1 chút, trên mạng VPNT đang dùng, chỉ định tuyến ra Hà Nội, chứ ra server tại Hồ Chí Minh, chắc ping xuống 4ms-8ms được 😀
- dnscheck.tools cho ra tốc độ trung bình ~ 72ms, theo mình là không quá ấn tượng
Hiệu năng phân giải DNS thực tế, khá tương tự 1.1.1.1, tức là nếu có người vào 1 domain trước, cache được lưu lại, người truy cập tiếp theo sẽ nhanh, vì không phải check lại, mà thử sơ sơ thấy Cloudflare clear cache khá nhanh, ~ 300s, nên nếu dãy DNS ít người dùng, hiệu năng sẽ không tối ưu
Còn chuyện khi dùng Cloudflare EDNS, truy cập vào trang sử dụng nhiều dịch vụ của Cloudflare như thèng bibica.net, thì chuyện nhanh là …. hiển nhiên, không có gì tranh luận ở đây hé 😅
Tác giả mrrfv viết lại các rule khi thêm, xóa nhiều bộ lọc, domain trùng sẽ bị bỏ ra, nên danh sách lọc rất tối ưu, mỗi cái chưa rõ lắm vì sao, khi dùng rule ||coccoc.com^
, là chặn mọi domain liên quan tới coccoc.com
, accounts.coccoc.com
chặn tốt, nhưng www.coccoc.com
lại không thấy bị chặn??? không quan trọng lắm, thấy cái gì chặn sót thì thêm vào danh sách là được, tổng thể không có gì phàn nàn, vì sửa lại xíu là được
Về mặt lý thuyết, Adguard Home với VPS tại Singapore hoặc Việt Nam hiệu năng sẽ tốt hơn 1 chút, có điều chi phí đầu tư cho VPS, thời gian cài đặt, bảo trì, bảo dưỡng, nó không đáng, nhất là vấn đề ổn định,
Cấu hình DNS-over-HTTPS cho các trình duyệt
Cấu hình DoH Cloudflare Gateway trong bài này chủ yếu áp dụng cho các trình duyệt di động Chromium, Cốc Cốc, Edge dùng cá nhân … chạy file .reg
đi kèm là được
- Trong trường hợp bạn muốn dùng DoH Cloudflare Gateway chặn sẵn 1 số quảng cáo cơ bản
- Settings → Privacy and security → Security
- Scroll xuống phần “Advanced”
- Tìm “Use secure DNS” → Enable
- Chọn “With Custom”
- Nhập:
https://iabucttpma.cloudflare-gateway.com/dns-query
Có thể lấy thêm rất nhiều endpoint DoH miễn phí khác tại đây
Cấu hình DNS-over-HTTPS cho iOS, iPadOS
Trên iOS, iPadOS download profile làm sẵn, ấn cài đặt tương tự như NextDNS
Thử nghiệm sơ bộ trên iOS, iPadOS hoạt động hiệu quả, tương tự NextDNS mình dùng đó giờ, mà có thể tủy chỉnh thêm bớt các domain cần chặn, cực hợp trên iOS, iPadOS, vì chặn quảng cáo trên iPhone, iPad phiền hơn trên Windows PC nhiều
Cấu hình DNS-over-HTTPS trên Windows
- Hạn chế cấu hình cho toàn bộ hệ thống, ưu điểm của chặn lọc quảng cáo nó không đáng, so với rủi ro chặn nhầm dịch vụ nào đó đang chạy
Muốn chạy DoH cho toàn bộ hệ thống trên Windows, đơn giản nhất là quản lý thông qua YogaDns
- Cài đặt bỏ qua tùy chọn check update và chạy khi khởi động Windows
- Active license:
N2H6F-S2T8V-4SM0Q-UD560-32OFL
, sử dụng tùy chọnAll users on this computer
- Active xong tắt mọi cửa sổ YogaDNS đang chạy (cả dưới taskbar nữa)
- Bật chạy
YogaDNS Service Manager
- Install -> Import from file -> Start
- Thấy các log đang process thì có thể Exit luôn
Mặc định từ lúc này YogaDns sẽ chạy nền dưới Windows, không cần quan tâm tới nó nữa, mặc định các ứng dụng sẽ chạy qua DoH
Kết luận
Cloudflare Gateway kết hợp CGPS là 1 giải pháp bền vững cho vấn đề chặn quảng cáo ở cấp độ DNS, nó nhanh, mạnh, ổn định, miễn phí, có thể tùy chỉnh được bộ lọc, tự động cập nhật bộ lọc theo nhu cầu sử dụng, cấu hình xong có thể tự vận hành nhiều năm, không cần lo lắng vấn đề bảo trì, hay hệ thống tự sập, nó chỉ có 1 điểm là URL sử dụng khó nhớ để nhập thủ công
Về độ ổn định thì từ lúc mình biết tới Cloudflare, chỉ có WARP thi thoảng tốc độ hơi bất ổn, còn DNS 1.1.1.1, chưa bao giờ thấy sập, sử dụng hàng ngày rất tự tin, Cloudflare Gateway gần như dùng cùng 1 hệ thống, độ ổn định sẽ đảm bảo
Bài hơi dài nếu bạn chưa biết gì về Github, Cloudflare, còn có biết sơ sơ thì việc cài đặt sẽ đơn giản cả 😆
Chính sách bình luận: Chúng tôi rất trân trọng các bình luận của bạn và cảm ơn thời gian bạn dành để chia sẻ ý tưởng và phản hồi.
Ghi chú: Những bình luận được xác định là spam hoặc chỉ mang tính quảng cáo sẽ bị xóa.
• Để cải thiện trải nghiệm bình luận, chúng tôi khuyến khích bạn tạo một tài khoản Gravatar. Thêm avatar vào tài khoản Gravatar sẽ giúp bình luận của bạn dễ nhận diện hơn đối với các thành viên khác.
• ✂️ Sao chép và 📋 Dán Emoji 💪 giúp bình luận thêm sinh động và thú vị!