搭建Nginx+AdGuard Home | 防止DNS劫持 | 过滤广告

2023-10-07 01:59

本文主要是介绍搭建Nginx+AdGuard Home | 防止DNS劫持 | 过滤广告,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

本教程转自我的博客搭建Nginx+AdGuard Home | 防止DNS劫持 | 过滤广告 - GoodBoyboy 's Blog|惬意小屋-点滴记忆

前言

DNS运营商劫持我相信大家都不陌生了,利用AdGuard Home我们不仅可以自建加密DNS来防止运营商劫持,还可以用来过滤那些垃圾的广告

开始

准备

首先你需要准备一下东西

  • 一台用于挂AdGuard Home的设备

  • 域名一枚

  • SSL证书一个

  • 脑子

开始

这里我们使用docker安装(貌似docker安装会导致无法正确获取到客户端IP),简单方便

下面是官方的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

下面是端口的解释

  • -p 53:53/tcp -p 53:53/udp:纯 DNS。

  • -p 67:67/udp -p 68:68/tcp -p 68:68/udp:如果您打算使用 AdGuard 则添加 主页作为 DHCP 服务器。

  • -p 80:80/tcp -p 443:443/tcp -p 443:443/udp -p 3000:3000/tcp:添加,如果您 将使用AdGuard Home的管理面板以及运行AdGuard Home作为 HTTPS/DNS-over-HTTPS 服务器。

  • -p 853:853/tcp:如果您打算将 AdGuard Home 运行为 TLS 上的 DNS 服务器。

  • -p 784:784/udp -p 853:853/udp -p 8853:8853/udp:如果要添加 将 AdGuard Home 作为 DNS-over-QUIC 服务器运行。您只能留下一个 或其中两个。

  • -p 5443:5443/tcp -p 5443:5443/udp:如果要运行 AdGuard 添加 Home 作为 DNSCrypt 服务器。

然鹅我们根本不需要开放那么多端口

实际上Windows11目前原生支持DOH,Android原生只支持DOT,但是国内服务器是不能架设DNS服务的,国外服务器则DOT端口被秒封。DHCP服务器用路由器上的就可以了,所以我们这里仅保留DOH以及面板所需的端口

我们将443映射到宿主机随便一个端口,这里是55556,下面是docker命令

docker run --name adguardhome\

--restart unless-stopped\

-v /my/own/workdir:/opt/adguardhome/work\

-v /my/own/confdir:/opt/adguardhome/conf\

-p 127.0.0.1:55555:3000/tcp\

-p 127.0.0.1:55556:443/tcp -p 127.0.0.1:55556:443/udp\

-d adguard/adguardhome

启动容器后利用Nginx代理本地55555端口,访问Adguard home,监听端口保持3000,配置管理员信息,完成后进入主界面

然后我们进入设置,在加密设置里配置好自己的SSL证书,然后勾选启用加密,保存。

最后更改Nginx反向代理端口,代理我们之前开的55556端口

访问即可进入主界面

配置DNS

点击设置中的DNS设置,设置上游DNS服务器

这是我配置的上游DNS

https://dns10.quad9.net/dns-query

tls://8.8.8.8

tls://8.8.4.4

tls://1.1.1.1

tls://1.0.0.1

https://doh.opendns.com/dns-query

https://doh.pub/dns-query

https://dns-unfiltered.adguard.com/dns-query

https://1.12.12.12/dns-query

https://223.5.5.5/dns-query

然后选择并发请求来提高解析速度

下面是我的Bootstrap DNS 服务器

1.1.1.1:53

1.0.0.1:53

9.9.9.10

149.112.112.10

2620:fe::10

2620:fe::fe:10

保存即可

后面的一些设置根据自己的实际需求设置即可,如果不知道也可以去网上搜索,下面的配置仅供参考

广告拦截

然后就是我们的重头戏!!!

点击“过滤器”-->“DNS黑名单”

在里面添加广告拦截规则

下面是我在网上收集的好用的集合

  • Xinggsf 乘风过滤 https://github.com/xinggsf/Adblock-Plus-Rule/blob/master/rule.txt

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

  • easylistchina https://easylist-downloads.adblockplus.org/easylistchina.txt

  • easyprivacy https://easylist-downloads.adblockplus.org/easyprivacy.txt

  • anti-AD-adguard https://anti-ad.net/adguard.txt

并不是添加的越多越好,过多规则只会减慢解析速度

上面的规则已经能屏蔽掉大部分广告了(包括Android恶心的开屏广告)

使用

一切配置完后我们就需要部署客户端这边了

Windows上以管理员身份打开cmd

netsh dns add encryption server=<resolver-IP-address> dohtemplate=<resolver-DoH-template> autoupgrade=yes udpfallback=no

其中<resolver-IP-address>是服务器的IP地址,<resolver-DoH-template>是模板,也就是像https://dns10.quad9.net/dns-query这样的

然后在设置中更改即可,详情可以去网上搜索

Android这边要用第三方软件辅助使用DOH,感觉Intra这款软件就很不错

后记

教程写得有点粗糙,如果有什么不会的地方可以在下方留言哦~

版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GoodBoyboy 's Blog|惬意小屋-点滴记忆!

这篇关于搭建Nginx+AdGuard Home | 防止DNS劫持 | 过滤广告的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/155354

相关文章

利用Python快速搭建Markdown笔记发布系统

《利用Python快速搭建Markdown笔记发布系统》这篇文章主要为大家详细介绍了使用Python生态的成熟工具,在30分钟内搭建一个支持Markdown渲染、分类标签、全文搜索的私有化知识发布系统... 目录引言:为什么要自建知识博客一、技术选型:极简主义开发栈二、系统架构设计三、核心代码实现(分步解析

Nginx中配置HTTP/2协议的详细指南

《Nginx中配置HTTP/2协议的详细指南》HTTP/2是HTTP协议的下一代版本,旨在提高性能、减少延迟并优化现代网络环境中的通信效率,本文将为大家介绍Nginx配置HTTP/2协议想详细步骤,需... 目录一、HTTP/2 协议概述1.HTTP/22. HTTP/2 的核心特性3. HTTP/2 的优

详解nginx 中location和 proxy_pass的匹配规则

《详解nginx中location和proxy_pass的匹配规则》location是Nginx中用来匹配客户端请求URI的指令,决定如何处理特定路径的请求,它定义了请求的路由规则,后续的配置(如... 目录location 的作用语法示例:location /www.chinasem.cntestproxy

使用Python实现快速搭建本地HTTP服务器

《使用Python实现快速搭建本地HTTP服务器》:本文主要介绍如何使用Python快速搭建本地HTTP服务器,轻松实现一键HTTP文件共享,同时结合二维码技术,让访问更简单,感兴趣的小伙伴可以了... 目录1. 概述2. 快速搭建 HTTP 文件共享服务2.1 核心思路2.2 代码实现2.3 代码解读3.

MySQL双主搭建+keepalived高可用的实现

《MySQL双主搭建+keepalived高可用的实现》本文主要介绍了MySQL双主搭建+keepalived高可用的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,... 目录一、测试环境准备二、主从搭建1.创建复制用户2.创建复制关系3.开启复制,确认复制是否成功4.同

SpringIntegration消息路由之Router的条件路由与过滤功能

《SpringIntegration消息路由之Router的条件路由与过滤功能》本文详细介绍了Router的基础概念、条件路由实现、基于消息头的路由、动态路由与路由表、消息过滤与选择性路由以及错误处理... 目录引言一、Router基础概念二、条件路由实现三、基于消息头的路由四、动态路由与路由表五、消息过滤

如何自定义Nginx JSON日志格式配置

《如何自定义NginxJSON日志格式配置》Nginx作为最流行的Web服务器之一,其灵活的日志配置能力允许我们根据需求定制日志格式,本文将详细介绍如何配置Nginx以JSON格式记录访问日志,这种... 目录前言为什么选择jsON格式日志?配置步骤详解1. 安装Nginx服务2. 自定义JSON日志格式各

CentOS 7部署主域名服务器 DNS的方法

《CentOS7部署主域名服务器DNS的方法》文章详细介绍了在CentOS7上部署主域名服务器DNS的步骤,包括安装BIND服务、配置DNS服务、添加域名区域、创建区域文件、配置反向解析、检查配置... 目录1. 安装 BIND 服务和工具2.  配置 BIND 服务3 . 添加你的域名区域配置4.创建区域

Nginx指令add_header和proxy_set_header的区别及说明

《Nginx指令add_header和proxy_set_header的区别及说明》:本文主要介绍Nginx指令add_header和proxy_set_header的区别及说明,具有很好的参考价... 目录Nginx指令add_header和proxy_set_header区别如何理解反向代理?proxy

Linux系统之dns域名解析全过程

《Linux系统之dns域名解析全过程》:本文主要介绍Linux系统之dns域名解析全过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、dns域名解析介绍1、DNS核心概念1.1 区域 zone1.2 记录 record二、DNS服务的配置1、正向解析的配置