Zone Lin
文章33
標籤32
分類7
AdGuard Home 擋廣告工具

AdGuard Home 擋廣告工具

一般檔廣告大家都會使用瀏覽器插,例如 AD Bolck。這邊推薦可以從 DNS 下手

DNS 檔廣告原理

DNS原理簡介

一般瀏覽網站時,我們常會使用網域名稱 domain,代替只有數字的 IP 作為連線地址

DNS
舉個例子🌰,要去 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 GitHub repo

附上 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 系統的自動安裝腳本

# 可以用 wget, curl 等工具下載腳本
wget --no-verbose -O - https://raw.githubusercontent.com/AdguardTeam/AdGuardHome/master/scripts/install.sh | sh -s -- -v

腳本參數:

  • -c <channel> 使用特定的安裝渠道,預設是從 release 安裝,可用 development edge beta release
  • -r 重新安裝 AdGuard Home (不可與 -u 一起用)
  • -u 移除 AdGuard Home (不可與 -r 一起用)
  • -v 查看更多安裝時訊息

或是手動下載、安裝
GitHub Release 下載對應 OS 的安裝檔
例如安裝 Linux x64 版本

tar zxvf AdGuardHome_linux_amd64.tar.gz

./AdGuardHome -s install

建議使用剛裝好系統的 VM 來裝 AdGuard Home,方便備份或是避免 port 衝突

Windows

跟 Linux 手動安裝步驟相同,到 GitHub Release 下載 windows 版本後執行

Docker

AdGuard Home Docker Hub

docker 指令:

docker run --name adguardhome\
--restart unless-stopped\
-v /my/own/workdir:/opt/adguardhome/work\
-v /my/own/confdir:/opt/adguardhome/conf\
-p 53:53/tcp -p 53:53/udp\
-p 67:67/udp -p 68:68/udp\
-p 80:80/tcp -p 443:443/tcp -p 443:443/udp -p 3000:3000/tcp\
-p 853:853/tcp\
-p 784:784/udp -p 853:853/udp -p 8853:8853/udp\
-p 5443:5443/tcp -p 5443:5443/udp\
-d adguard/adguardhome

其中的 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 run --name adguardhome\
--restart unless-stopped\
-v /my/own/workdir:/opt/adguardhome/work\
...
--network host
-d adguard/adguardhome

設定

這邊我是在自己的電腦上用 docker 展示,連線會用 localhost 去連
實際使用建議獨立裝在其他不常關的電腦或樹梅派,連線就使用 IP 連

初次設定

adguard init

網路設定

接下來設定監聽的網卡(透過哪張網卡能存取),用 Docker 執行建議可以用所有介面
管理員的監聽介面如果在 docker 沒有使用 80,記得設定成 3000,避免設定完就連不到
adguard init
DNS 伺服器監聽介面同上,建議保留預設的 53 Port
adguard init

管理帳號設定

設定管理員帳號密碼,建議不要用 root, admin, administor 等常見的管理帳號
adguard init

用戶端設定

初次設定完成,這邊可以看一下不同種類客戶端該怎麼設定使用這個 DNS 伺服器
基本上只要將網路設定裡的 DNS 伺服器,改成這邊監聽的網卡的IP,就可以用 Adguard 過濾網站
路由器也要套用的話,是去修改路由器的 DHCP 設定,讓子網段自動分配的 DNS 都使用我們架的 Adguard IP
adguard init
adguard init

初次設定完成🎉

adguard init

接著可以用設定好的管理員帳號登入
adguard login

設定上游 DNS 伺服器

在 Adguard Home 中並不會紀錄設定之外的網域及IP的對應
其他網域就需要去其他的 DNS 伺服器(上游 DNS 伺服器)查詢
adguard upstream 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 blocklist

預設黑名單

Adguard Home 預設使用 Adguard 的過濾黑名單
新增黑名單也很方便
adguard blocklist new
把想套用的黑名單加進去啟用
adguard blocklist new

第三方黑名單

要使用第三方黑名單只要有網址也可以匯入
adguard blocklist new
adguard blocklist new

這邊介紹一款專為臺灣人設計的廣告阻擋規則 LowTechFilter
提供阻擋台灣常見的簡訊詐騙、釣魚網站和農場文

手動過濾規則

可以從主頁到 DNS 查詢紀錄裡去增加封鎖名單,不過缺點是之前要先查詢過

還沒有用戶端用這個 DNS 伺服器之前,紀錄會是空的
adguard dashboard
adguard record

其他

家長管控

adguard blocklist new

本文作者:Zone Lin
本文連結:https://zonego.tw/2023/02/21/adguardhome/
版權宣告:本文採用 創用CC BY 4.0 協議進行許可
貼文內使用的封面圖大部分來自unsplash,個別圖片的連結請看封面圖來源
×