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

来源:https://www.cnblogs.com/hi-linux/archive/2019/09/30/11611480.html
-Advertisement-
Play Games

本文首發於:微信公眾號「運維之美」,公眾號 ID:Hi Linux。 「運維之美」是一個有情懷、有態度,專註於 Linux 運維相關技術文章分享的公眾號。公眾號致力於為廣大運維工作者分享各類技術文章和發佈最前沿的科技信息。公眾號的核心理念是:分享,我們認為只有分享才能使我們的團體更強大。如果你想第一 ...


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




您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1 段寄存器 1 1 段寄存器的結構 圖示: 結構體表示: 1 2 段寄存器的屬性探測 可以通過MOV指令進行讀寫(LDTR和TR除外) 段寄存器成員簡介 探測Attribute是否存在 探測Base是否存在 探測Limit是否存在 1 3 段描述符與段選擇子 段寄存器的值是通過段描述符填充的。 1 ...
  • Linux組的基本介紹 在Linux中的每個用戶必須屬於一個組,不能獨立於組外。在Linux中每個文件有所有者,所在組,其他組的概念。 1)所有者 2)所在組 3)其他組 4)改變用戶所在的組 文件/目錄所有者 一般為文件的創建者,誰創建了該文件,就自然地成為該文件的所有者。 查看文件的所有者 1) ...
  • 1. 前言 power supply class為編寫供電設備(power supply,後面簡稱PSY)的驅動提供了統一的框架,功能包括: 1)抽象PSY設備的共性,向用戶空間提供統一的API。 2)為底層PSY驅動的編寫,提供簡單、統一的方式。同時封裝並實現公共邏輯,驅動工程師只需把精力集中在和 ...
  • cd ~ vim .vimrc colorscheme desert ...
  • 在伺服器中添加定期執行的任務,在很多情況下是非常必要的。比如,每天清理一次/tmp目錄下的文件;沒幾分鐘檢查某一守護進程是否正常等等。這樣計劃任務就顯得尤為方便。 ...
  • Vim 文本編輯器 1、Vim 和 Vi: 兩者都是多模式編輯器; Vim 是 Vi 升級版,再相容 Vi 所有指令的同時增加了一些新功能支持; 特點: 語法加亮:使用不同的顏色加亮代碼; 多級撤銷:Vi 只能撤銷一次操作,Vim 可以無限次撤銷; 可視化操作:可以在終端模式運行,也可以在 Xwin ...
  • 按鍵實驗和前面的跑馬燈、蜂鳴器主要的區別就是這個是讀取外部的輸入信號,之前的實驗都是對外部輸出信號。 一、硬體設計 本實驗的硬體為三個按鍵、兩個lED(LED0、LED1)、一個蜂鳴器(BEEP)。 KEY0控制LED0和LED1開,KEY1控制LED0和LED1關,按鍵WK_UP控制BEEP。 二 ...
  • Redis系列---redis簡介01 本章我們將用簡短的幾句話來幫助你快速的瞭解什麼是redis,初學者不必深究 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...