屏蔽广告?从源头入手(自建公网DNS"指北")

发布于 2022-07-31  6923 次阅读


引言:在如今的网络环境下,特别是中国各个大厂”流氓式“广告投放以及隐私追踪横行霸道的情况下,想必各位的家里老人或者对电子产品比较生疏的人的手机上没有合理的控制措施,即使是旗舰机(特指安卓,iOS相对封闭)都能卡成🐕,我自建DNS的想法便来自于自己家里几个老人手机上五毒俱全时 想出的解决方案。 || 使用公网的目的出于当家人出门后本地DNS解析器便不再起作用。

一、自建DNS解析器 adguard home

1.材料准备(公网):灵活的思维能力 充足的动手能力 境内公网服务器 SSL证书(本地搭建可以使用树莓派或者一些NAS所携带的DOCKER功能,本地搭建不需要SSL证书,本地搭建可参考CSDN相关文章)

2.先介绍一下公网DNS解析适用的类型:分别是TLS(DOT)和 https(DOH)

因国家法律规定,未取得DNS解析相关证明禁止使用53端口进行DNS解析,本文不对传统DNS公网搭建进行解释

概述

DoT 全称是 DNS over TLS,它使用 TLS 协议来传输 DNS 协议。TLS 协议是目前互联网最常用的安全加密协议之一,我们访问 HTTPS 的安全基础就是基于 TLS 协议的。相比于之前使用无连接无加密的 UDP 模式, TLS 本身已经实现了保密性与完整性。

DoH 全称是 DNS over HTTPS,它使用 HTTPS 来传输 DNS 协议。DoH 的安全原理与 DoT 一样,他们之间的区别只在于:DoH 有了 HTTPS 格式封装,更加通用。

DoT 在专用端口上通过 TLS 连接 DNS 服务器,而 DoH 是基于使用 HTTPS 应用层协议,将查询发送到 HTTPS 端口上的特定 HTTP 端点,这里造成的外界感知就是端口号的不同,DoT 的端口号是 853,DoH 端口号 443。

由上文可得知我们需要用到两个端口,分别是853443端口,为正常访问web管理端口,您还需要放行3000端口,所以使用前请确认在服务器的防火墙已经放行相关端口。

3.开始

将以两种搭建方式进行介绍a.传统程序运行 b.Docker方式部署(请确认你所熟悉的搭建方式,不熟悉Docker推荐传统方式部署)

a.传统程序运行方式

Linux服务器(windows服务器可直接去adguard官网下载Windows版本):

wget https://static.adguard.com/adguardhome/release/AdGuardHome_linux_amd64.tar.gz   #请确认您的服务器类型,通常情况下不需要更改

tar xvf AdGuardHome_linux_amd64.tar.gz

cd AdGuardHome

sudo ./AdGuardHome -s install

./AdGuardHome -s status

启动成功后使用浏览器访问http://你的公网IP:3000以启用您的DNS控制面板

可能遇到的问题:无法正常启动,这种情况下多半是由于相关端口被占用,请注意查看控制台被占用端口并前往你进入的安装目录下/AdGuardHome/AdGuardHome.yaml对应的端口,例如我的服务器443端口被占用打开文件修改port_https: 443 为442,修改后记得绑定域名后开启Nginx反向代理仍为443

控制命令

AdGuardHome -s uninstall#卸载AdGuard Home服务。
AdGuardHome -s start    #启动服务。
AdGuardHome -s stop     #停止服务。
AdGuardHome -s restart  #重新启动服务。
AdGuardHome -s status   #显示当前的服务状态。

Docker方式搭建(不推荐)

拉取 Docker 镜像

docker pull adguard/adguardhome
网络为bridge创建一个新容器并运行 AdGuard Home:

docker run -itd \
--name adguardhome\
--restart=always \
-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

docker部署引用原文链接:https://blog.csdn.net/qq_43209384/article/details/121333818

3.绑定域名和SSL证书

绑定域名应该不需要对有服务器的读者进行解释了,子域名解析到对应的IP即可(前面提到的端口被占用情况请确认您已开启反向代理,注意反向代理是http://127.0.0.1:修改后端口)

SSL证书申请建议使用亚洲诚信,经测试let's encrypt 安卓系统TLS不认。申请亚洲诚信证书可参考(1条消息) 如何免费申请亚洲诚信TrustAsia通配符证书并部署到宝塔面板_zuantou1的博客-CSDN博客_trustasia免费证书

获取到证书后复制pem

证书内容处粘贴含-----BEGIN CERTIFICATE-----的文本,另一个则填含key的文本

确认后保存

4.配置上游DNS和相关配置

223.5.5.5
119.29.29.29
https://doh.pub/dns-query
tls://dot.pub
223.5.5.5
223.6.6.6
tls://dns.alidns.com


推荐性能较好的服务器使用并行请求,性能一般使用负载均衡

此配置仅供参考

5.使用DNS屏蔽规则

Adguardhome规则
EasyList —— 去除国际网页中大多数广告,包括不需要的框架、图像和对象

链接:https://easylist-downloads.adblockplus.org/easylist.txt

EasyList China —— EasyList针对国内的补充规则

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

EasyPrivacy —— 从网络上上完全删除所有形式的跟踪,包括Web错误、跟踪脚本和信息收集,从而保护您的个人数据

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

EasyList Cookie List —— 阻止Cookie标语,GDPR覆盖窗口和其他与隐私相关的通知

链接:https://easylist-downloads.adblockplus.org/easylist-cookie.txt

乘风去广告

广告规则:https://raw.githubusercontent.com/xinggsf/Adblock-Plus-Rule/master/rule.txt

Anti-AD —— 目前中文区命中率最高的广告过滤列表,实现了精确的广告屏蔽和隐私保护。屏蔽广告域名、电视盒子广告、APP内置广告,同时屏蔽了一些日志收集、大数据统计等涉及个人隐私信息的站点,能够保护个人隐私不被偷偷上传

github链接:https://raw.githubusercontent.com/privacy-protection-tools/anti-AD/master/anti-ad-easylist.txt

官网链接:https://anti-ad.net/easylist.txt

Adbyby

链接:https://raw.githubusercontent.com/adbyby/xwhyc-rules/master/lazy.txt

链接:https://raw.githubusercontent.com/adbyby/xwhyc-rules/master/video.txt

过滤自我推广并补充 EasyPrivacy 隐私规则 —— CJX’s Annoyance List (去自推列表)

链接:https://gitee.com/cjx82630/cjxlist/raw/master/cjx-annoyance.txt

ADgk —— 适用于 AdGuard for Android 的去广告规则(不保证在其他软件使用的效果)

链接:https://raw.githubusercontent.com/banbendalao/ADgk/master/ADgk.txt

百度搜索结果内屏蔽百家号

链接:https://raw.githubusercontent.com/banbendalao/ADgk/master/kill-baidu-ad.txt

屏蔽网站的 cookies 相关的警告

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

知乎过滤器 —— 去除开屏、时间轴、首页推荐、回答列表、回答底部及评论区广告,个人中心VIP横幅

标准版:https://raw.githubusercontent.com/zsakvo/AdGuard-Custom-Rule/master/rule/zhihu.txt

严格版:https://raw.githubusercontent.com/zsakvo/AdGuard-Custom-Rule/master/rule/zhihu-strict.txt

广告终结者使用的拦截规则,基于ChinaList+EasyList修正维护

链接:http://sub.adtchrome.com/adt-chinalist-easylist.txt

EasylistChina+EasylistLite+CJX’sAnnoyance —— 由 halflife 维护的拦截规则 ,合并了 EasylistChina、EasylistLite、CJX’sAnnoyance,以及补充的一些规则,每日更新。

链接:https://gitee.com/halflife/list/raw/master/ad.txt

大圣净化 - 针对国内视频网站

链接:https://raw.githubusercontent.com/jdlingyu/ad-wars/master/hosts

请挑选合适屏蔽规则添加到

二、在手机上启用DNS(以我的dns.tianli0.top为例)

DNS 隐私

DNS-over-TLS: 使用 tls://dns.tianli0.top 字符串。

DNS-over-HTTPS: 使用 https://dns.tianli0.top/dns-query 字符串。

以下是您可以使用软件的列表

Android

  • Android 9 原生支持 DNS-over-TLS。 要进行配置,请转到 设置 → 网络和互联网 → 高级 → 私有 DNS,然后在那里输入您的域名。
  • AdGuard for Android 支持 DNS-over-HTTPS 和 DNS-over-TLS
  • Intra 为 Android 提供了 DNS-over-HTTPS 的支持。

iOS

  • AdGuard for iOS 支持 DNS-over-HTTPS 和 DNS-over-TLS
  • DNSCloak 支持 DNS-over-HTTPS ,但为了设置使用您自己的服务器,您需要为了它生成一个 DNS Stamp 。

其他实施方案

  • AdGuard Home 本身可以作为任何平台上的安全 DNS 客户端。
  • dnsproxy 支持所有已知的安全 DNS 协议。
  • dnscrypt-proxy 支持 DNS-over-HTTPS
  • Mozilla Firefox 支持 DNS-over-HTTPS
  • 您可以从 这里 和 这里 找到更多的实施方案。

三、常见问题

Q:使用DNS后部分网站无法使用
A:正常情况,可以自行去控制面板开启白名单

Q:为什么我没法上传一些日志,如miui

A:可能被屏蔽规则屏蔽了相关追踪

本文同步发布于hexo wp 酷安

文章有勘误欢迎指正