前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >OpenWrt配置双AdGuard实现DNS国内外分流

OpenWrt配置双AdGuard实现DNS国内外分流

作者头像
Lcry
发布2023-06-14 11:35:11
12.5K0
发布2023-06-14 11:35:11
举报
文章被收录于专栏:Lcry个人博客Lcry个人博客

从去年改造了家里的网络到现在都很稳定,但是最近自建的出墙偶尔抽风,我一直使用的Hysteria协议,发现有版本升级,于是升级了服务端,最后发现还是不丝滑,发现是我现在用的openwrt中的passwall插件不支持端口跳跃功能, 所以在恩山论坛找了个最新的OpenWrt固件进行安装,前段时间刷到了一个利用双AdguardHome分流国内外DNS解析,说这样可以防DNS污染,反正这次要升级OpenWrt,所以就折腾了一下,为了保持以前服务正常使用,我直接重新启动了一个OpenWrt,等觉得没问题再销毁全部切换过来,本篇记录自己踩的坑,当水篇文章了~。

前提准备

1、 下载合适的Op固件:我使用的是恩山bleach1991高大全/精简版 Openwrt x86 6.1内核 软路由固件

2、 转换ESXI虚拟机磁盘软件:StarWind V2V Image Converter

开始配置

关于安装OpenWrt就不在这里列图了,安装好后建议先参考我另外的一篇文章扩容磁盘,OpenWrt 扩容磁盘方案及实操

我采用的是直接docker里面安装双AdguargHome,网上很多方案都是一个使用Op插件自带的AdguargHome,直接接管国内的DNS解析,为了维护方便,我直接全部使用docker启动。

规划如下:

  • 国内组:udp:15335(DNS解析)、tcp:3001(Ad管理端)
  • 国外组:udp:15336(DNS解析)、tcp:3002(Ad管理端)

安装国内组

  1. 进入OP管理端,依次点击:系统 -> TTYD 终端,进入shell窗口,直接运行下面docke命令启动国内组AdguardHome:
代码语言:javascript
复制
docker run --name adguardhome1 \
    --restart unless-stopped\
    -v /opt/adguardhome1/work:/opt/adguardhome/work\
    -v /opt/adguardhome1/conf:/opt/adguardhome/conf\
    -p 15335:53/udp\
    -p 15335:53/tcp\
    -p 3001:3000/tcp\
    -d adguard/adguardhome:latest

启动成功后访问http://{OpenWrt地址}:3001,设置帐号密码,注意安装的时候网页管理端口保持3000、DNS服务保持53,因为容器映射的是这2个端口

安装好登录AdguardHome,依次点击顶部导航设置 -> DNS设置 :

上游DNS服务填下面的:

代码语言:javascript
复制
tls://dns.pub
tls://dns.alidns.com
https://doh.pub/dns-query
https://dns.pub/dns-query
https://dns.alidns.com/dns-query

勾选并行请求

Bootstrap DNS 服务器填下面的:

代码语言:javascript
复制
你本地默认的运营商DNS(比如四川电信是:61.139.2.69)
114.114.114.114

如果没有使用Ipv6,勾选禁用Ipv6地址的解析

DNS缓存配置根据自己分配的空间自行设置,我这里直接保持默认配置是4194304字节

点击保存即可

依次点击顶部导航 过滤器设置 -> DNS黑名单:

添加一些自己网上找的,这里列几个我用的,根据自己需要的选择:

代码语言:javascript
复制
easylistchina:https://easylist-downloads.adblockplus.org/easylistchina.txt
adgk手机去广告:https://raw.githubusercontent.com/banbendalao/ADgk/master/ADgk.txt
anti-ad-easylis:https://anti-ad.net/easylist.txt
1024_hosts:https://raw.githubusercontent.com/Goooler/1024_hosts/master/hosts
easyprivacy:https://easylist-downloads.adblockplus.org/easyprivacy.txt
ad-wars:https://raw.githubusercontent.com/jdlingyu/ad-wars/master/hosts

不建议添加太多,越多误杀越严重!

至此国内组安装完毕。

安装国外组

  1. 进入OP管理端,依次点击:系统 -> TTYD 终端,进入shell窗口,直接运行下面docke命令启动国外组AdguardHome:
代码语言:javascript
复制
docker run --name adguardhome2 \
    --restart unless-stopped\
    -v /opt/adguardhome2/work:/opt/adguardhome/work\
    -v /opt/adguardhome2/conf:/opt/adguardhome/conf\
    -p 15336:53/udp\
    -p 15336:53/tcp\
    -p 3002:3000/tcp\
    -d adguard/adguardhome:latest

启动成功后访问http://{OpenWrt地址}:3002,设置帐号密码,注意安装的时候网页管理端口保持3000、DNS服务保持53,因为容器映射的是这2个端口

安装好登录AdguardHome,依次点击顶部导航设置 -> DNS设置 :

上游DNS服务填下面的:

代码语言:javascript
复制
tls://1.1.1.1/dns-query
tls://dns.google
https://dns.google/dns-query
tls://dns11.quad9.net
https://dns11.quad9.net/dns-query

勾选并行请求

Bootstrap DNS 服务器填下面的,如果上游DNS都是设置的加密DNS,这个可以不填:

代码语言:javascript
复制
9.9.9.10
8.8.8.8

如果没有使用Ipv6,勾选禁用Ipv6地址的解析

DNS缓存配置根据自己分配的空间自行设置,我这里直接保持默认配置是4194304字节

点击保存即可

依次点击顶部导航 过滤器设置 -> DNS黑名单:

  • 国外一般DNS不会污染,所以不需要添加其他的,就开启自带的AdGuard DNS filter即可。

至此国外组安装完毕。

配置 OpenWrt

默认openwrt会使用自带的Dnsmasq进行解析,所以我们要直接把自带的DNS转发到我们的国内组,即127.0.0.1#15335

依次点击openwrt左侧导航栏:网络 -> DHCP/DNS,设置下面说的选项:

  1. 基本设置:DNS转发设置为 127.0.0.1#15335 ,取消仅本地服务的√
  2. HOSTS和解析文件:忽略解析文件打√
  3. 高级设置:没有使用Ipv6就把禁止解析Ipv6 DNS记录打√,DNS查询缓存设置为0

配置 Passwall

我使用的passwall,对接其他出墙插件大致差不多的,大概就是把使用DNS的地方使用 127.0.0.1#15536

依次点击passwall -> 基本设置 -> DNS :

  • 过滤模式:通过UDP请求DNS
  • 远程DNS:127.0.0.1#15336

依次点击passwall -> 规则列表 -> 直连列表 :

  • 将国内组使用到的上游DNS的域名IP都加入到直连里面,以免又跑到国外DNS去解析了。

配置主路由(可选)

如果你的OpenWrt只是作为旁路由运行,并且要想内网所有设置都先经过AdGuardHome进行过滤,那么还需要最后一步在分发DHCP的路由器上配置DNS,

我这里主路由是RouterOS,所以我使用winbox登录到RouterOS,将DNS修改为OpenWrt的IP地址,这样就可以让内网分配IP的设备都经过AdGuardHome。

效果一览

国内组:

国外组:

说到最后

其实AdGuardHome现在已经无法屏蔽了PC端的视频广告了,我找了很多规则都无法实现,但是手机端的广告是可以屏蔽的,不要对这个抱有太大的希望,做为一个DNS缓存器确实能达到很好的效果,这样做了国内外分流解析,真能防止DNS污染了吗???

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2023-06-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前提准备
  • 开始配置
    • 安装国内组
      • 安装国外组
        • 配置 OpenWrt
          • 配置 Passwall
          • 配置主路由(可选)
          • 效果一览
          • 说到最后
          相关产品与服务
          容器服务
          腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档