[工具] 使用 AdGuard Home / AdGuard DNS 封鎖廣告 & 保護隱私

CP
5 min readMay 17, 2022

--

AdGuard 有一系列的阻檔廣告的產品,支援 PC/Mac、Mobile、Browser 等不同的平台。在這些產品中比較有趣的是 AdGuard DNS,而開源自架的版本就是 AdGuard Home。

AdGuard Home

需要自架的 GPL 開源專案,他基本上就是一個有 GUI 可以自由設定網址過濾規則的 DNS Server,因為他已經有預設好幾個偵測廣告商的 Rules 來源,所以有辦法直接過濾大部分的廣告,除外,他還能夠用來統計分析你的瀏覽狀況,所以你也可以從 DNS 的角度來觀察被惡意程式感染的裝置有沒有連到 C&C Server 或 Malicious Domain。

使用的時候,你必須把你的電腦的 DNS 指定到自架的 AdGuard Home。

AdGuard DNS

除了自架 AdGuard Home,也可以直接使用官方提供的 DNS
不過這個方法沒辦法統計自己看過什麼網站,也沒辦法客製化的阻擋網址。

使用方式,就是直接設定 DNS 成 94.140.14.14 94.140.15.15 即可。

AdGuard Home settings

因為網路上的教學還蠻多的,這邊就不特別講如何安裝。

基本上就用 docker 點一點就可以快速安裝完成了,
進到「設定 > DNS 設定」我自己是設定:

https://dns10.quad9.net/dns-query
8.8.8.8
1.1.1.1
168.95.1.1

並選擇「並行的要求」,讓他可以一次問 Google、Cloudflare、HiNet 等。

另外,「過濾器 > DNS 封鎖請單」可以勾選很多不同來源的阻擋清單。

DNS sinkhole

AdGuard Home 與 AdGuard DNS 的核心技術就是使用 DNS sinkhole(又稱 Blackhole DNS),當裝置透過 DNS 嘗試詢問廣告商的網址時,AdGuard Home 直接回一個無效的 IP,讓廣告商無法追蹤使用者,保護使用者的隱私。

我們來實驗一下,首先到「過濾器 > 自訂的過濾規則」,加入一條規則

cp-test-sinkhole.com

透過 CmdLine 來下 nslookup 指令,可以看到:

$ nslookup cp-test-sinkhole.com
Server: 127.0.0.1
Address: 127.0.0.1#53
Non-authoritative answer:
Name: cp-test-sinkhole.com
Address: 0.0.0.0

當你嘗試查詢的時候會取得 0.0.0.0 ,即代表他是一個無效的目標。

所以他可以當你載入一個網站後,瀏覽器去詢問 DNS 廣告商的網址時,
AdGuard Home / AdGuard DNS 會讓你直接拿不到 IP。就算廣告商想將你的個人資訊,例如:瀏覽器版本、地址資訊、IP、cookie 之類的傳回去他們的伺服器也無法做到, 因為你的電腦根本沒辦法取得他們的 IP ,大大增加你瀏覽的隱私性。

YouTube Ads 阻擋

不過實際用起來,會發現它不會擋 Youtube 廣告,所以我就嘗試自己寫 Rules 來阻擋。

/r([0-9])+-+sn-+([a-z0-9])+-+([a-z0-9])+\.googlevideo\.com$/

不過經過測試,他會從原本兩個 — 變成,只有一個 — 的網址,這時候改規則繼續阻擋他。

/r([0-9])+-+sn-+([a-z0-9-])+\.googlevideo\.com$/

結果發現這樣只會一直轉:

一直轉,一直轉

查看 DNS 紀錄只會看到他一直切換 Server,每個都被封鎖:

廣告也不會結束,所以單純靠 DNS sinkhole 來阻擋 YouTube 廣告是做不到的。換個角度想 YouTube 廣告是 YouTube 本身功能的一部分,不像其他網站的廣告是由外部引入的。

結論是要阻擋 YouTube Ads,還是要從 Browser 的層面去處理。我自己是使用 uBlock Origin,有看到有人說 AdGuard for Mac / AdGuard Browser Extension 也可以擋 YouTube 廣告。

結語

雖然沒辦法直接阻擋 YouTube 廣告,AdGuard Home 作為一個自架的 DNS Server 依然很優秀,他有簡單好設定的 UI 以及視覺化的統計,最重要的是他預設許多不同來源的廣告阻擋清單,從 DNS 層面大大增加上網的隱私性。

此外,我發現 ASUS Router App 也有內建 AdGuard DNS 的功能可以開啟,如果家中有使用 ASUS Router ,可以直接嘗試 AdGuard DNS 阻擋的效果。

--

--