找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
广告投放联系QQ68610888
查看: 19164|回复: 508

[openwrt(x86)] 单个adguardhome实现傻瓜式的DNS分流/防污染/防DNS泄漏/教程

 火... [复制链接]
发表于 2023-8-22 17:54 | 显示全部楼层 |阅读模式
迅雷TV
本帖最后由 丶企鹅未婚夫 于 2023-8-22 22:29 编辑

pve7用了2年,挺稳定的,最近看PVE升级到8.0了,把我的小玩具也升级了一下,升级后运行的也挺好,没啥问题,但是心里有点不爽啊,其实就是想折腾一下,玩具嘛。所以全部重装了一下,这里把dns的设置给大家分享一下,也当作是自己的一个记录吧。

这里使用的是alpine的LXC容器作为底层。alpine非常小,很节省资源,用起来也比较简单。大部分docker也是用alpine实现的。我对其算是情有独钟。

为什么和论坛其他人各种套娃方式不一样呢?因为单个adguardhome本身是可以实现dns分流效果的,因为功能隐藏的有些深,没人发现罢了。我们能用一个软件实现的功能为什么要用多层套娃呢。

原理:这里利用adg的上游服务器配置文件,实现国内白名单列表由阿里的doh来解析,其他的都用另外填入的国外doh服务器来解析,实现国内外分流。

国内用阿里实现速度快,国外用其他实现防污染。也可以国外白名单,国外列表指定某个doh解析,国内用其他的上游解析。也可以实现国内指定一个doh解析,需要代理的指定一个doh解析,剩下的用其他doh来解析。总之算是比较灵活。

这里再添加一点说明,adg支持[/265.com/]https://dns.alidns.com/dns-query 这种形式为某个的域名指定dns服务器解析。

上面的语句就是265.com这个域名极其子域名都由阿里的doh来解析。其实可以把这种都填在上游服务器列表里面,但是几万条的话你复制进去会卡死的,所以用配置文件的方法来实现。

这里实现的方法就是用脚本自动下载Loyalsoldier/“师夷长技以制夷”-rules-dat这个项目下面的直连域名列表,可直连的苹果域名列表,可直连的谷歌域名列表,然后把下载的所有列表都转换成adg可以识别的格式,并且拼接在一个文件中,提供adg来使用。

所以你要是不嫌麻烦的话,也可以修改我提供的sh文件,把需要代理的域名列表也下载下来,然后指定他们用谷歌和opendns的doh来解析。然后关闭adg设置里面的EDNS客户端子网,让/科/学/路由代理谷歌和opendns的doh域名,这样就实现了需要代理的网站直接用你的“师夷长技以制夷”来解析,国内的继续用阿里doh来解析。我在sh里面也提供了相关的语句,取消注释添,在最上面加下载网址网址即可。

其他的漏网之鱼就用df.up里面的上游来解析。

感谢Loyalsoldier大神提供的域名列表!

这里说一下我的网络架构。

①一个极简的openwrt虚拟机,作为主路由使用,功能是拨号,提供DHCP服务,发射WIFI信号。

②一个极简的openwrt旁路由,用LXC的方式安装,只用来番/羽/土/蔷。

③一个dns服务器,就现在教程里面的这个。

建议:

①建议大家不要执着于ipv6,如果你番/羽/土/蔷的话,那么最好关掉ipv6。使用ddns的话只打开主路由的ipv6就行,可以用socat端口转发实现联通内网其他没有ipv6的设备,如果要链接ipv6下载的话,建议需要的机器设置静态内网ipv6地址使用。

②和我一样玩all in one的人,建议尽可能的把各种功能分开到不同的虚拟机或者LXC容器里面部署。这样你折腾的时候其它服务不容易崩。PVE本身还是非常稳定的,只要你保持PVE母机的环境不被污染,不要乱安装其他服务,一般没啥事。

好了,教程开始了。都是傻瓜式的,大家直接照着做就行,几分钟搞定。

1.下载alpine的ct模板。

01下载lxc摸板.png

2.创建alpine的ct

02创建ct.png

03使用alpine3.18.png

04网关和防火墙.png

这里主意一下,防火墙关闭,没啥用,一个主路由防火墙就够了,ipv4那里自己填吧。网关那里要填写能番/羽/土/蔷的路由器ip,因为下载adguardhome是从github上面拉取的。

我这里硬盘给了256M。内存给了512M。

然后打开容器的自动开机自启动。

到这里lxc的alpine安装完成。

3.打开刚刚创建好的容器。

进行初始化设置。

输入以下命令。

  1. sed -i 's/dl-cdn.alpinelinux.org/mirrors.ustc.edu.cn/g' /etc/apk/repositories
复制代码

更换国内源

  1. apk add --no-cache tzdata
  2. ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
  3. echo "Asia/Shanghai" > /etc/timezone
复制代码

设置国内时区,因为后面要用到定时器实现自动更新文件,所以这一步是必要的。

  1. apk add --no-cache curl
复制代码

安装curl工具。安装adguardhome要使用,后面有个自动运行脚本也要使用。

  1. apk add --no-cache bash
复制代码

安装bash工具,执行脚本的时候要使用到。

初始化alpine

初始化alpine

4.现在开始安装adguardhome了,我这里选择的是beta版本安装。

  1. curl -s -S -L https://raw.githubusercontent.com/AdguardTeam/AdGuardHome/master/scripts/install.sh | sh -s -- -c beta
复制代码

你也可以安装最新的稳定版

  1. curl -s -S -L https://raw.githubusercontent.com/AdguardTeam/AdGuardHome/master/scripts/install.sh | sh -s -- -v
复制代码

安装adg

安装adg

出现这样的页面安装成功。

现在网页打开192.168.1.249:3000进入到adg的初始化页面。

首次网页adg

首次网页adg

需要注意的就是这里,因为我们是单独的dns服务器,所以不用改这里,默认就行。注意的是,下次打开的时候直接输入192.168.1.249即可,不用后面添加3000的端口号。

  1. reboot
复制代码

然后重启,浏览器输入192.168.1.249 看看服务是否能够正常启动。没问题的话,就继续往下。

5.重启之后登陆,现在因该在默认的/root目录下

依次执行以下三条命令

  1. mkdir list
复制代码

在/root下创建list文件夹

进入list文件夹

在list文件夹下面创建list.up文件

这个list.up文件填不填内容都无所谓。

英文输入法状态下

按esc键

然后保存退出即可

  1. :wq
复制代码

主意,wq前面有个冒号。

创建默认上游服务器文件df.up

  1. vi df.up
复制代码

英文状态下按 “ i ” 键进入插入模式。

粘贴以下内容

  1. # https://doh.360.cn/dns-query
  2. # https://dns.google/dns-query
  3. https://doh.opendns.com/dns-query
  4. https://doh.dns.sb/dns-query
  5. https://dns.cloudflare.com/dns-query
  6. https://dns.quad9.net/dns-query
  7. # https://dns-unfiltered.adguard.com/dns-query
  8. # https://77.88.8.8:443/dns-query
复制代码

这里是默认的上游服务器。推荐大家都使用这种doh的服务器,加密防泄漏。除了提供dns服务的公司知道你访问什么网站,运营商都不知道。

然后保存退出

  1. :wq
复制代码

那现在主意一下我们的/root/list/目录下存在以下两个文件

list.up  df.up

可以用命令ls来查看当前文件夹下的文件。

可以用命令pwd来查看当前所在目录。

好了 现在我们写脚本。创建list.sh文件。

  1. vi list.sh
复制代码

按i键进入插入模式。粘贴我在后面提供的脚本文件进去。

  1. :wq
复制代码

保存并退出。

  1. chmod +x list.sh
复制代码

给脚本可执行权限。

  1. ./list.sh
复制代码

初次执行脚本。

鉴于有人执行出现问题,这里贴一个我个人执行的结果(单独给脚本设置了重试次数2和最大限制时间10秒)你们要设置的话改一下这一句即可。

if curl --connect-timeout 3 -m 10 --retry 2 --output "/root/list/$filename" "$url" ; then

  1. alpine-adg:~/list# ./list.sh
  2. Start downloading from github...
  3.   % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
  4.                                  Dload  Upload   Total   Spent    Left  Speed
  5.   0     0    0     0    0     0      0      0 --:--:--  0:00:03 --:--:--     0
  6. curl: (28) Failed to connect to raw.githubusercontent.com port 443 after 3000 ms: Timeout was reached
  7. Warning: Problem : timeout. Will retry in 1 seconds. 2 retries left.
  8.   0     0    0     0    0     0      0      0 --:--:--  0:00:03 --:--:--     0
  9. curl: (28) Failed to connect to raw.githubusercontent.com port 443 after 3000 ms: Timeout was reached
  10. Warning: Problem : timeout. Will retry in 2 seconds. 1 retries left.
  11.   0     0    0     0    0     0      0      0 --:--:--  0:00:02 --:--:--     0
  12. curl: (28) Connection timeout after 3000 ms
  13. direct-list.txt download failed!!!,Removing direct-list.txt ......
  14.   % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
  15.                                  Dload  Upload   Total   Spent    Left  Speed
  16.   0     0    0     0    0     0      0      0 --:--:--  0:00:03 --:--:--     0
  17. curl: (28) Failed to connect to raw.githubusercontent.com port 443 after 3000 ms: Timeout was reached
  18. Warning: Problem : timeout. Will retry in 1 seconds. 2 retries left.
  19.   0     0    0     0    0     0      0      0 --:--:--  0:00:03 --:--:--     0
  20. curl: (28) Failed to connect to raw.githubusercontent.com port 443 after 3000 ms: Timeout was reached
  21. Warning: Problem : timeout. Will retry in 2 seconds. 1 retries left.
  22.   0     0    0     0    0     0      0      0 --:--:--  0:00:03 --:--:--     0
  23. curl: (28) Failed to connect to raw.githubusercontent.com port 443 after 3000 ms: Timeout was reached
  24. apple-cn.txt download failed!!!,Removing apple-cn.txt ......
  25.   % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
  26.                                  Dload  Upload   Total   Spent    Left  Speed
  27.   0     0    0     0    0     0      0      0 --:--:--  0:00:03 --:--:--     0
  28. curl: (28) Failed to connect to raw.githubusercontent.com port 443 after 3000 ms: Timeout was reached
  29. Warning: Problem : timeout. Will retry in 1 seconds. 2 retries left.
  30.   0     0    0     0    0     0      0      0 --:--:--  0:00:03 --:--:--     0
  31. curl: (28) Failed to connect to raw.githubusercontent.com port 443 after 3000 ms: Timeout was reached
  32. Warning: Problem : timeout. Will retry in 2 seconds. 1 retries left.
  33.   0     0    0     0    0     0      0      0 --:--:--  0:00:02 --:--:--     0
  34. curl: (28) Connection timeout after 3000 ms
  35. google-cn.txt download failed!!!,Removing google-cn.txt ......
  36. 1.Check that all files are downloaded...
  37. Find some files not downloaded successfully, remove all downloaded files, and try to download from the CDN agent site. .
  38. Removal successful
  39. Start downloading files from the CDN proxy site...
  40.   % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
  41.                                  Dload  Upload   Total   Spent    Left  Speed
  42. 100  797k    0  797k    0     0   123k      0 --:--:--  0:00:06 --:--:--  143k
  43. direct-list.txt downloaded successfully!!!
  44.   % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
  45.                                  Dload  Upload   Total   Spent    Left  Speed
  46. 100  4167    0  4167    0     0   1537      0 --:--:--  0:00:02 --:--:--  1537
  47. apple-cn.txt downloaded successfully!!!
  48.   % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
  49.                                  Dload  Upload   Total   Spent    Left  Speed
  50. 100  4265    0  4265    0     0   2499      0 --:--:--  0:00:01 --:--:--  2501
  51. google-cn.txt downloaded successfully!!!
  52. 2.Check that all files are downloaded...
  53. 3.Check that the files are stored in a local directory...
  54. direct-list.txt exists!!!
  55. apple-cn.txt exists!!!
  56. google-cn.txt exists!!!
  57. cp list.up to list.up.bak...
  58. The backup is complete
  59. ......txt to adg......
  60. !!!!!......OK......!!!!!
  61. Cleaning......
  62. Restart the ADG service......
  63. * Stopping AdGuardHome ... [ ok ]
  64. * Starting AdGuardHome ... [ ok ]
  65. ......ojbk enjoy......
  66. alpine-adg:~/list#
复制代码

说明一下,我现在dns服务器是用的主路由网关,没有用/科/学/网关,所以执行输出上面显示github下载文件失败。从cdn代理网站上下载成功。


重点主意:以下是实现分流的核心内容


游客,如果您要查看本帖隐藏内容请回复




adg脚本新.rar

1.08 KB, 下载次数: 254

售价: 1 nb恩山币  [记录]

list.sh脚本

点评

何必呢?少说几句吧,网络这么大,聚到一起也不容易!: 5.0
何必呢?少说几句吧,网络这么大,聚到一起也不容易!: 5
最后的DHCP里面填的6,192.168.1.249里的6是什么意思,望大神解答一下  发表于 2023-9-5 21:27
我的恩山、我的无线 The best wifi forum is right here.
发表于 2023-8-29 09:36 | 显示全部楼层
看看帖子里藏了啥好东西~~~
我的恩山、我的无线 The best wifi forum is right here.
回复 支持 0 反对 1

使用道具 举报

发表于 2023-8-26 08:32 来自手机 | 显示全部楼层
好东西,学习一下
我的恩山、我的无线 The best wifi forum is right here.
回复 支持 0 反对 1

使用道具 举报

发表于 2023-8-23 15:39 | 显示全部楼层
谢谢分享!!!
我的恩山、我的无线 The best wifi forum is right here.
回复 支持 0 反对 1

使用道具 举报

 楼主| 发表于 2023-8-22 22:21 | 显示全部楼层
yexusky 发表于 2023-8-22 22:00
直接执行出来是这个你看下,还有我的adm不能解析啊
alpine-adg-home:~# /root/list/list.sh
date: unrecog ...

对不起,我打包错脚本了,,,,这个脚本是我在lxc的debian上面试验的时候弄的,,alpine有些语句不支持,现在我上传了新的脚本。你可以试一下,如果不想重新下载的话删除这两行
set -e
DATE=`date --rfc-3339 sec`
不过有可能有其他bug。但是执行的话问题应该不大,如果不想下载新的附件,那你删除这两句后,执行脚本有任何不对的地方可以发上来,我给你看看。

点评

好的谢谢大佬哈我重新试试  详情 回复 发表于 2023-8-22 22:27
我的恩山、我的无线 The best wifi forum is right here.
回复 支持 0 反对 1

使用道具 举报

发表于 2023-8-22 18:08 | 显示全部楼层
我现在ADG 改MOSDNS了 速度比ADG快 但是感觉稳定性不那好

点评

那去广告和也用mosdns吗?其他的软件去广告误杀的时候不好排查啊。adg就很容易找到误杀放行。像我这样用lxc搭建的话,应该是比较省资源的。感觉不会比mosdns慢。  详情 回复 发表于 2023-8-22 19:23
我的恩山、我的无线 The best wifi forum is right here.
回复 支持 反对

使用道具 举报

发表于 2023-8-22 18:31 来自手机 | 显示全部楼层
ADG有点卡顿

点评

LXC不会卡,基本等于裸机安装。J4105,给了2核 长期在0.几波动。RAM占用100M+ ROM算上缓存也才100M出头,很省资源,不至于卡吧。  详情 回复 发表于 2023-8-22 19:25
我的恩山、我的无线 The best wifi forum is right here.
回复 支持 反对

使用道具 举报

发表于 2023-8-22 19:18 | 显示全部楼层
学习一下,谢谢分享!!!
我的恩山、我的无线 The best wifi forum is right here.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-8-22 19:23 | 显示全部楼层
iamyangyi 发表于 2023-8-22 18:08
我现在ADG 改MOSDNS了 速度比ADG快 但是感觉稳定性不那好

那去广告和也用mosdns吗?其他的软件去广告误杀的时候不好排查啊。adg就很容易找到误杀放行。像我这样用lxc搭建的话,应该是比较省资源的。感觉不会比mosdns慢。
我的恩山、我的无线 The best wifi forum is right here.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-8-22 19:25 | 显示全部楼层

LXC不会卡,基本等于裸机安装。J4105,给了2核 长期在0.几波动。RAM占用100M+  ROM算上缓存也才100M出头,很省资源,不至于卡吧。

点评

我说的 是ADG 机制卡  详情 回复 发表于 2023-8-22 21:24
我的恩山、我的无线 The best wifi forum is right here.
回复 支持 反对

使用道具 举报

发表于 2023-8-22 20:40 | 显示全部楼层
学习一下学习一下
我的恩山、我的无线 The best wifi forum is right here.
回复 支持 反对

使用道具 举报

发表于 2023-8-22 20:42 | 显示全部楼层
谢谢你的分享啊
我的恩山、我的无线 The best wifi forum is right here.
回复 支持 反对

使用道具 举报

发表于 2023-8-22 20:47 | 显示全部楼层
好东西啊
我的恩山、我的无线 The best wifi forum is right here.
回复 支持 反对

使用道具 举报

发表于 2023-8-22 21:01 | 显示全部楼层
谢谢分享
我的恩山、我的无线 The best wifi forum is right here.
回复 支持 反对

使用道具 举报

发表于 2023-8-22 21:24 | 显示全部楼层
本帖最后由 iamyangyi 于 2023-8-22 21:26 编辑
丶企鹅未婚夫 发表于 2023-8-22 19:25
LXC不会卡,基本等于裸机安装。J4105,给了2核 长期在0.几波动。RAM占用100M+  ROM算上缓存也才100M出头 ...

我说的 是ADG 机制卡。你不用 ADG 对比DNSMASQ的CACHE。ADG开有个停顿感
我的恩山、我的无线 The best wifi forum is right here.
回复 支持 反对

使用道具 举报

发表于 2023-8-22 21:47 | 显示全部楼层
按照你的教程一步步来并不能成功,就是感觉sh有问题。现在adg-home 不能解析域名

点评

或者把sh执行的输出贴一下看看也行  详情 回复 发表于 2023-8-22 21:49
可以截图看看sh里面的内容吗?我是直接复制出来到TXT文件的。  详情 回复 发表于 2023-8-22 21:49
我的恩山、我的无线 The best wifi forum is right here.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-8-22 21:49 | 显示全部楼层
yexusky 发表于 2023-8-22 21:47
按照你的教程一步步来并不能成功,就是感觉sh有问题。现在adg-home 不能解析域名 ...

可以截图看看sh里面的内容吗?我是直接复制出来到TXT文件的。
我的恩山、我的无线 The best wifi forum is right here.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-8-22 21:49 | 显示全部楼层
yexusky 发表于 2023-8-22 21:47
按照你的教程一步步来并不能成功,就是感觉sh有问题。现在adg-home 不能解析域名 ...

或者把sh执行的输出贴一下看看也行
我的恩山、我的无线 The best wifi forum is right here.
回复 支持 反对

使用道具 举报

发表于 2023-8-22 22:00 | 显示全部楼层
直接执行出来是这个你看下,还有我的adm不能解析啊
alpine-adg-home:~# /root/list/list.sh
date: unrecognized option: rfc-3339
BusyBox v1.36.1 (2023-06-02 00:42:02 UTC) multi-call binary.

Usage: date [OPTIONS] [+FMT] [[-s] TIME]

Display time (using +FMT), or set time

        -u              Work in UTC (don't convert to local time)
        [-s] TIME       Set time to TIME
        -d TIME         Display TIME, not 'now'
        -D FMT          FMT (strptime format) for -s/-d TIME conversion
        -r FILE         Display last modification time of FILE
        -R              Output RFC-2822 date
        -I[SPEC]        Output ISO-8601 date
                        SPEC=date (default), hours, minutes, seconds or ns

Recognized TIME formats:
        @seconds_since_1970
        hh:mm[:ss]
        [YYYY.]MM.DD-hh:mm[:ss]
        YYYY-MM-DD hh:mm[:ss]
        [[[[[YY]YY]MM]DD]hh]mm[.ss]
        'date TIME' form accepts MMDDhhmm[[YY]YY][.ss] instead

点评

对不起,我打包错脚本了,,,,这个脚本是我在lxc的debian上面试验的时候弄的,,alpine有些语句不支持,现在我上传了新的脚本。你可以试一下,如果不想重新下载的话删除这两行 set -e DATE=`date --rfc-3339 sec`  详情 回复 发表于 2023-8-22 22:21
我的恩山、我的无线 The best wifi forum is right here.
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

欢迎大家光临恩山无线论坛上一条 /1 下一条

有疑问请添加管理员QQ86788181|手机版|小黑屋|Archiver|恩山无线论坛(常州市恩山计算机开发有限公司版权所有) ( 苏ICP备05084872号 )|网站地图

GMT+8, 2023-12-4 21:23

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

| 江苏省互联网有害信息举报中心 举报信箱:js12377 | @jischina.com.cn 举报电话:025-88802724 本站不良内容举报信箱:68610888@qq.com 举报电话:0519-86695797

快速回复 返回顶部 返回列表