AdGuard Home 擋廣告工具
一般檔廣告大家都會使用瀏覽器插,例如 AD Bolck。這邊推薦可以從 DNS 下手
DNS 檔廣告原理
DNS原理簡介
一般瀏覽網站時,我們常會使用網域名稱 domain,代替只有數字的 IP 作為連線地址
舉個例子🌰,要去 google 首頁 https://www.google.com ,其中 www.google.com 就是網域名稱
瀏覽器會先去 DNS 伺服器用網域名稱查出 Google 的伺服器 IP
知道 IP 後才能連到 Google 的伺服器請求資料
在這中間,Google 也會順便將要顯示的廣告網址一起送回來
瀏覽器再照之前的流程,去廣告商的伺服器去抓廣告回來顯示
想知道更多 DNS 詳細機制,可以參考 Coudflare 寫的說明
DNS沉洞(DNS sinkhole)
看完原理後,反過來說,只要 DNS 伺服器不能正常把網域名稱換成 IP,網路就像斷了,只剩直接給 IP 的方式還能連線
所以只要在 DNS 伺服器動手腳把廣告的網址設定成錯誤的IP(例如:127.0.0.1),廣告就無法正常顯示
這種作法就叫做 DNS沉洞
(DNS sinkhole)
有幾套可以自己架的 DNS 伺服器軟體可以達到這種效果,如 PI-Hole、 AdGuard Home
這邊主要介紹 AdGuard Home
PI-Hole 改天在寫
AdGuard Home
附上 AdGuard Home 提供的功能比對表…
功能 | AdGuard Home | Pi-Hole |
---|---|---|
阻擋廣告與追蹤器 | ✅ | ✅ |
自訂阻擋清單 | ✅ | ✅ |
內建 DHCP server 功能 | ✅ | ✅ |
HTTPS 管理介面 | ✅ | ❌ 需手動設定 lighttpd |
上游 DNS 伺服器加密 (DNS-over-HTTPS, DNS-over-TLS, DNSCrypt) |
✅ | ❌ (需安裝額外插件) |
跨平台支援 | ✅ | ❌ (需透過 Docker) |
支援加密 DNS-over-HTTPS or DNS-over-TLS server |
✅ | ❌ (需安裝額外插件) |
阻擋惡意網域 | ✅ | ❌ (需要使用另外的阻擋清單) |
家長管控 (阻擋成人網站) | ✅ | ❌ (需自行設定阻擋清單) |
強制搜尋引擎啟用安全搜尋 | ✅ | ❌ |
Per-client (device) configuration | ✅ | ✅ |
存取設定 (設定可用 AGH DNS 的名單) | ✅ | ❌ |
[不需 root 權限][wiki-noroot]執行 | ✅ | ❌ |
基本上我們只用擋廣告的功能,AdGuardHome 跟 Pi-Hole 選順手好用的就好
雖說 AdGuard Home 有原生跨平台支援,不過真的要用也是用 Docker 去不同平台執行比較方便
安裝 AdGuard Home
Linux
官方有提供 Linux 系統的自動安裝腳本
|
腳本參數:
-c <channel>
使用特定的安裝渠道,預設是從 release 安裝,可用development
edge
beta
release
-r
重新安裝 AdGuard Home (不可與-u
一起用)-u
移除 AdGuard Home (不可與-r
一起用)-v
查看更多安裝時訊息
或是手動下載、安裝
到 GitHub Release 下載對應 OS 的安裝檔
例如安裝 Linux x64 版本
|
建議使用剛裝好系統的 VM 來裝 AdGuard Home,方便備份或是避免 port 衝突
Windows
跟 Linux 手動安裝步驟相同,到 GitHub Release 下載 windows 版本後執行
Docker
docker 指令:
|
其中的 Port 設定
-p 53:53/tcp -p 53:53/udp
: 預設 DNS 使用 port-p 67:67/udp -p 68:68/tcp -p 68:68/udp
: DHCP 使用 port (如不使用 DHCP 可以跳過)-p 3000:3000/tcp -p 443:443/tcp
: AdGuard Home 的管理介面 (如不需設定 HTTPS 可以不用 443 port)-p 80:80/tcp -p 443:443/tcp -p 443:443/udp
: DNS-over-HTTPS 使用 port-p 853:853/tcp
: DNS-over-TLS 使用 port-p 784:784/udp -p 853:853/udp -p 8853:8853/udp
: DNS-over-QUIC 使用 port (只需要設定其中一個或兩個,不需要全都用)-p 5443:5443/tcp -p 5443:5443/udp
: DNSCrypt 使用 port.
如果要使用 DHCP server 的功能,建議將讓容器使用主機網路 (需注意 port 衝突)
|
設定
這邊我是在自己的電腦上用 docker 展示,連線會用 localhost 去連
實際使用建議獨立裝在其他不常關的電腦或樹梅派,連線就使用 IP 連
初次設定
網路設定
接下來設定監聽的網卡(透過哪張網卡能存取),用 Docker 執行建議可以用所有介面
管理員的監聽介面如果在 docker 沒有使用 80,記得設定成 3000,避免設定完就連不到
DNS 伺服器監聽介面同上,建議保留預設的 53 Port
管理帳號設定
設定管理員帳號密碼,建議不要用 root
, admin
, administor
等常見的管理帳號
用戶端設定
初次設定完成,這邊可以看一下不同種類客戶端該怎麼設定使用這個 DNS 伺服器
基本上只要將網路設定裡的 DNS 伺服器,改成這邊監聽的網卡的IP,就可以用 Adguard 過濾網站
路由器也要套用的話,是去修改路由器的 DHCP 設定,讓子網段自動分配的 DNS 都使用我們架的 Adguard IP
初次設定完成🎉
接著可以用設定好的管理員帳號登入
設定上游 DNS 伺服器
在 Adguard Home 中並不會紀錄設定之外的網域及IP的對應
其他網域就需要去其他的 DNS 伺服器(上游 DNS 伺服器)查詢
Adguard Home 整理了幾個常用的 DNS 伺服器 https://adguard-dns.io/kb/zh-CN/general/dns-providers/
這邊推薦可以用 Google DNS 跟 Cloudflare DNS
Google DNS
協定 | 地址 |
---|---|
DNS, IPv4 | 8.8.8.8 和 8.8.4.4 |
DNS, IPv6 | 2001:4860:4860::8888 和 2001:4860:4860::8844 |
DNS-over-HTTPS | https://dns.google/dns-query |
DNS-over-TLS | tls://dns.google |
Cloudflare DNS
協定 | 地址 |
---|---|
DNS, IPv4 | 1.1.1.1 和 1.0.0.1 |
DNS, IPv6 | 2606:4700:4700::1111 和 2606:4700:4700::1001 |
DNS-over-HTTPS IPv4 | https://dns.cloudflare.com/dns-query |
DNS-over-HTTPS IPv6 | https://dns.cloudflare.com/dns-query |
DNS-over-TLS | tls://1dot1dot1dot1.cloudflare-dns.com |
過濾器設定
過濾黑名單
預設黑名單
Adguard Home 預設使用 Adguard 的過濾黑名單
新增黑名單也很方便
把想套用的黑名單加進去啟用
第三方黑名單
要使用第三方黑名單只要有網址也可以匯入
這邊介紹一款專為臺灣人設計的廣告阻擋規則 LowTechFilter
提供阻擋台灣常見的簡訊詐騙、釣魚網站和農場文
手動過濾規則
可以從主頁到 DNS 查詢紀錄裡去增加封鎖名單,不過缺點是之前要先查詢過
還沒有用戶端用這個 DNS 伺服器之前,紀錄會是空的