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

file

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

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

公衆號做者 Mike,一個月薪 3000 的雜工。從事 IT 相關工做 15+ 年,熱衷於互聯網技術領域,認同開源文化,對運維相關技術有本身獨特的看法。很願意將本身積累的經驗、心得、技能與你們分享交流,篇篇乾貨不要錯過喲。若是你想聯繫到我,可關注公衆號獲取相關信息。github

什麼是 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 HTTPSdocker

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

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

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

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

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

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

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

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

5. 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)。
  • blockedresponsettl : 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
相關文章
相關標籤/搜索