用上這個神器后,廣告從此去無憂!(全平台免費支持,無需安裝任何客戶端軟件)


file


本文首發於:微信公眾號「運維之美」,公眾號 ID:Hi-Linux。

「運維之美」是一個有情懷、有態度,專注於 Linux 運維相關技術文章分享的公眾號。公眾號致力於為廣大運維工作者分享各類技術文章和發布最前沿的科技信息。公眾號的核心理念是:分享,我們認為只有分享才能使我們的團體更強大。如果你想第一時間獲取最新技術文章,歡迎關注我們!

公眾號作者 Mike,一個月薪 3000 的雜工。從事 IT 相關工作 15+ 年,熱衷於互聯網技術領域,認同開源文化,對運維相關技術有自己獨特的見解。很願意將自己積累的經驗、心得、技能與大家分享交流,篇篇干貨不要錯過喲。如果你想聯系到我,可關注公眾號獲取相關信息。


什么是 AdGuard Home

AdGuard Home 是一款全網廣告攔截與反跟蹤軟件,AdGuard Home 項目是著名廣告攔截器提供商 AdGuard 開源的一個 DNS Server 版本。AdGuard Home 可以將廣告與追蹤相關的域名屏蔽,同時你不再需要安裝任何客戶端軟件。AdGuard Home 的工作原理是在 DNS 的域名解析過程里攔截網頁上的廣告。

簡單來說 AdGuard Home 是一個支持廣告過濾和家長控制的開源公共 DNS 服務,如同 Google 的公共 DNS 服務 8.8.8.8。AdGuard Home 同時也支持 DNS over TLSDNS over HTTPS

項目地址:https://github.com/AdguardTeam/AdGuardHome

AdGuard Home 的主要功能介紹

  • 攔截隨處可見的廣告
  • 注重隱私保護
  • 家庭保護模式
  • 自定義過濾規則

在繼續講解前,我們先來看一看 AdGuard Home 強大的功能演示和管理后台。

安裝 AdGuard Home

AdGuard Home 使用 Golang 開發,具有良好的原生跨平台性。它可以部署在 X86 架構的各種操作系統上,也可以部署在樹莓派上,甚至你還可以借助 Docker 部署在群暉 NAS 上。

使用預編譯的二進制版本安裝

這里我們以 Linux 系統為例,其它系統可參考官方幫助文檔:https://github.com/AdguardTeam/AdGuardHome/wiki/Getting-Started#installation

# 下載並解壓 AdGuard Home
$ wget https://github.com/AdguardTeam/AdGuardHome/releases/download/v0.98.1/AdGuardHome_linux_amd64.tar.gz
$ tar -zxvf AdGuardHome_linux_amd64.tar.gz

# 為了方便使用,我們將二進制文件拷貝到 PATH 所包含的位置
$ cd AdGuardHome_linux_amd64
$ cp ./AdGuardHome /usr/local/bin/

# 啟動 AdGuard Home
$ AdGuardHome

上面的方法,很顯然是在前台運行的。前台運行必然還是存在一些弊端的,比如:當前 SHELL 中斷必然會引起程序中斷等。如果你想長期穩定的運行 AdGuard Home,最后好方法必然是將 AdGuard Home 運行成一個服務。要想將 AdGuard Home 在各平台部署為服務也是很簡單的,只需運行下面這一條命令就可實現。

# Linux 下使用的服務管理器是 systemd 、Upstart 或 SysV,macOS 下使用的服務管理器是 Launchd。
$ AdGuardHome -s install

AdGuard Home 服務安裝后好,你可以使用以下命令來管理它。

# 啟動 AdGuardHome 服務
$ AdGuardHome -s start

# 停止 AdGuardHome 服務
$ AdGuardHome -s stop

# 重啟 AdGuardHome 服務
$ AdGuardHome -s restart

# 查看 AdGuardHome 服務狀態
$ AdGuardHome -s status

# 卸載 AdGuardHome 服務
$ AdGuardHome -s uninstall

使用 Docker 來安裝

如果你會一點點 Docker 知識的話,我們當然還是建議你直接使用 Docker 來安裝。雖然通過預編譯的二進制版本安裝已經很簡單了,但如果使用 Docker 來安裝,你會發現僅僅只需一條指令就可以搞定了。

$ docker pull adguard/adguardhome
# -v 參數后面指定的宿主機上的目錄主要用作永久保存 AdGuard Home 的數據文件和配置文件,可自行根據實際情況修改。
$ docker run --name adguardhome -v /home/mike/workdir:/opt/adguardhome/work -v /home/mike/confdir:/opt/adguardhome/conf -p 53:53/tcp -p 53:53/udp -p 67:67/udp -p 68:68/tcp -p 68:68/udp -p 80:80/tcp -p 443:443/tcp -p 853:853/tcp -p 3000:3000/tcp -d adguard/adguardhome

你可能會發現上面一共是兩條指令,前面不是說好了是一條指令的嗎?是不是發現被騙了,我怎么可能騙你呢,這絕對是不可能的!其實這兩條指令,你只需直接執行第 2 條指令就可以完成所有安裝操作了。這里分開寫出來僅僅是為了完整演示 Docker 整個運行過程,能讓一些還不會 Docker 的同學能更容易理解一些。前面既然啰嗦了這么多,這里就再延伸說一點 Docker 容器的基本管理操作。

# 啟動 AdGuard Home 容器
$ docker start adguardhome
# 停止 AdGuard Home 容器
$ docker stop adguardhome
# 刪除 AdGuard Home 容器
$ docker rm adguardhome

使用 AdGuard Home

使用默認配置來設置 AdGuard Home

運行 AdGuard Home 后,我們需要通過瀏覽器打開 http://IP:3000AdGuard Home 進行初始化設置。首次初始化會要求設置服務運行端口、賬號、密碼等信息,配置過程中設置的密碼一定請牢記,下次登錄管理后台時需要使用。

首先,我們點擊 “開始配置” ,來設定網頁管理界面和 DNS 服務的端口。

其次,點擊 “下一步” 后,為 AdGuard Home 網頁管理界面設置一個用戶名和密碼。

最后,點擊 “下一步” 后,AdGuard Home 會展示以上配置的匯總信息。

至此,使用 AdGuard Home 默認配置的設置就算大功告成了。

使用 AdGuard Home 默認配置設置完成后,我們可以在「儀表盤」上看到 DNS 查詢次數、被過濾器封鎖的網站、查詢 DNS 請求的客戶端 IP 地址等等信息。

AdGuard Home 配置進階

AdGuard Home 默認的配置比較簡單,為了更強力地攔截廣告,我們可以對 AdGuard Home 配置進行一些優化。

  1. 常規設置

AdGuard Home 默認配置的情況下只勾選了「使用過濾器和 Hosts 文件以攔截指定域名」這一個選項,你可以根據自身情況決定是否啟用「使用 AdGuard 瀏覽安全網頁服務」、「使用 AdGuard 家長控制服務」和「強制安全搜索」等特性。

不僅如此,你還可以很方便的屏蔽一些比較流行的網站。當然這些網站本來對我們都是不可用的,也就不用多此一舉進行設置了,哈哈!

  1. 設置上游 DNS

AdGuard Home 默認使用 CloudflareDNS over HTTPS 作為上游服務器。如果你在國內使用 Cloudflare DNS 做為上游 DNS,可能延遲會比較高。

我們可以設置為國內的公共 DNS,如:騰訊的 119.29.29.29、阿里的 223.5.5.5114.114.114.114 等,但壞處是這些國內公共 DNS 暫時不支持 DNS over TLS

這里有一個比較折中的解決方法就是通過啟用 「通過同時查詢所有上游服務器以使用並行查詢加速解析」選項來在每次查詢的時候對所有的上游 DNS 同時查詢,以加速解析速度。

  1. 過濾器

雖然 AdGuard Home 本身內置了比較知名的 AdGuardAdAway 廣告過濾規則,但這些規則在國內顯然有點水土不服。如果你想要更完美的實現廣告屏蔽還需要自己添加規則,比較幸運的是 AdGuard Home 是可以兼容 Adblock 過濾規則語法的。這樣,你就可以很方便的使用一些比較知名的 Adblock 過濾規則,比如:由 Adblock Plus 團隊維護的 EasyList

目前好用的廣告過濾規則還是有很多的,它們都針對不同的用途。下面推薦一些比較常用的:

  1. EasyList China : 國內網站廣告過濾的主規則。

鏈接:https://easylist-downloads.adblockplus.org/easylistchina.txt

  1. EasyPrivacy : EasyPrivacy 是隱私保護,不被跟蹤。

鏈接:https://easylist-downloads.adblockplus.org/easyprivacy.txt

  1. CJX's Annoyance List : 過濾煩人的自我推廣,並補充 EasyPrivacy 隱私規則。

鏈接:https://raw.githubusercontent.com/cjx82630/cjxlist/master/cjx-annoyance.txt

  1. 廣告凈化器規則 : 支持國內大部分視頻網站的廣告過濾。

鏈接:http://tools.yiclear.com/ChinaList2.0.txt

  1. I don't care about cookies : 我不關心 Cookie 的問題,屏蔽網站的 cookies 相關的警告。

鏈接:https://www.i-dont-care-about-cookies.eu/abp/

除了使用已有的過濾規則外,當然你也可以根據自己的需求自定義過濾規則,要自定義過濾規則其實也很簡單。

下面是自定義過濾規則的一些語法說明。

||example.org^ – 攔截 example.org 域名及其所有子域名
@@||example.org^ – 放行 example.org 及其所有子域名
127.0.0.1 example.org – 將會把 example.org(但不包括它的子域名)解析到 127.0.0.1。
! 注釋符號,表示這是一行注釋
# 這也是注釋符號,同樣表示這是一行注釋
/REGEX/ – 正則表達式模式

更多規則可以參考官方幫助文檔:https://kb.adguard.com/en/general/dns-filtering-syntax

  1. 查詢日志

AdGuard Home 管理界面中也為我們提供了 DNS 請求日志查詢功能,在這里,我們不但能看見所有設備最近 5000 條的 DNS 請求日志記錄。你還可以根據 DNS 請求日志記錄來針對某個域名進行快速的攔截和放行操作。

  1. 調整配置參數,以提升 QPS 能力

AdGuard Home 所有的配置參數都保存在一個名為 AdGuardHome.yaml 的配置文件中。這個配置文件默認路徑通常為 AdGuard Home 二進制文件 AdGuardHome 所在的目錄,比如:/usr/local/bin/AdGuardHome.yaml

這里我們只需調整以下兩個參數,就是可以明顯提升 AdGuard HomeQPS 能力。

  • ratelimit : DDoS 保護,客戶端每秒接收的數據包數。默認值是 20,建議禁用該參數(將值改為 0)。

  • blocked_response_ttl : TTL 緩存時間,默認值是 10,建議設置為 60 。

這里在把 AdGuard Home 的配置文件完整版本也展示一下,有興趣的同學可以自行研究下其它參數的用途喲!。

$ cat AdGuardHome.yaml

bind_host: 0.0.0.0
bind_port: 80
auth_name: mike
auth_pass: "123456"
language: zh-cn
rlimit_nofile: 0
dns:
  bind_host: 0.0.0.0
  port: 53
  protection_enabled: true
  filtering_enabled: true
  blocking_mode: nxdomain
  blocked_response_ttl: 60
  querylog_enabled: true
  ratelimit: 0
  ratelimit_whitelist: []
  refuse_any: true
  bootstrap_dns:
  - 1.1.1.1:53
  - 1.0.0.1:53
  all_servers: true
  allowed_clients: []
  disallowed_clients: []
  blocked_hosts: []
  parental_block_host: ""
  safebrowsing_block_host: ""
  blocked_services: []
  parental_sensitivity: 13
  parental_enabled: true
  safesearch_enabled: true
  safebrowsing_enabled: true
  resolveraddress: ""
  rewrites: []
  upstream_dns:
  - https://1.1.1.1/dns-query
  - https://1.0.0.1/dns-query
  - 119.29.29.29
  - 223.5.5.5
tls:
  enabled: false
  server_name: ""
  force_https: false
  port_https: 443
  port_dns_over_tls: 853
  certificate_chain: ""
  private_key: ""
filters:
- enabled: true
  url: https://adguardteam.github.io/AdGuardSDNSFilter/Filters/filter.txt
  name: AdGuard Simplified Domain Names filter
  id: 1
- enabled: false
  url: https://adaway.org/hosts.txt
  name: AdAway
  id: 2
- enabled: false
  url: https://hosts-file.net/ad_servers.txt
  name: hpHosts - Ad and Tracking servers only
  id: 3
- enabled: false
  url: https://www.malwaredomainlist.com/hostslist/hosts.txt
  name: MalwareDomainList.com Hosts List
  id: 4
- enabled: true
  url: https://easylist-downloads.adblockplus.org/easylistchina.txt
  name: EasyList China
  id: 1569209532
user_rules:
- '@@mps.ts'
dhcp:
  enabled: false
  interface_name: ""
  gateway_ip: ""
  subnet_mask: ""
  range_start: ""
  range_end: ""
  lease_duration: 86400
  icmp_timeout_msec: 1000
clients: []
log_file: ""
verbose: false
schema_version: 4

設置客戶端 DNS

所有以上設置完成后,最后當然是修改所有客戶端的 DNS 設置,來享用 AdGuard Home 帶來的強大的去廣告功能。

這個其實真的不用寫,我想聰明的你應該都知道這個怎么設置。寫這個標題僅僅是為了保持文檔完整性,如果你真的不會設置,那就請自行使用「一些好用」的搜索引擎搜索相關方法吧!

總結

AdGuard Home 不但支持了 macOSWindowsLinux、樹莓派等多個系統平台,也提供了二進制和 Docker 的部署方式,讓安裝變得非常簡單。AdGuard Home 自身提供的強大和直觀的管理和統計系統,讓它使用起來也是非常方便的。如果你打算自建一個支持去廣告功能的公共 DNSAdGuard Home 是非常值得一試的不二選擇。

參考文檔

  1. https://www.google.com

  2. https://zhuanlan.zhihu.com/p/56804257

  3. https://www.xiaoz.me/archives/12318

  4. https://www.yangcs.net/posts/adguard-home/

  5. https://github.com/AdguardTeam/AdGuardHome#getting-started

![](https://img2018.cnblogs.com/blog/1747538/201909/1747538-20190930104544116-1572868072.jpg)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM