更新word教程:Adguard Home和smartdns方案已经进化的几乎完美了,再来分享一下。
本帖最后由 yyysuo 于 2023-3-22 14:58 编辑20230322更新,更改了一下架构,有2个方案,大差不差,供大家参考:
1:运行几天之后,所有的dns查询,响应时间都在1ms以下,可以说在dns查询上,基本不消耗时间。
2:缓存在路由重启后不消失(借用smartdns的永久缓存功能)。
3:封禁网站方便,直接在Adguard Home日志界面点拦截按钮就行。
4:Adguard Home的日志界面非常漂亮实用,可以清晰的看到局域网内所有设备的dns查询记录及统计,还可以按国内国外分别统计(多个adgh)
5:mosdns可以做到让国外域名有ipv4地址的情况下,不返回ipv6地址,如果网站只有ipv6地址,则返回ipv6地址。
6:mosdns按geosite分流,解决某些science插件dns只有gfwlist分流的尴尬。
7:可以只开启国内域名的edns,国内域名针对cdn进行优化(国外Adguard Home启用edns,国外域名不用启用edns,谷歌dns自带edns)。
20221122:无聊更新个效果图
20220922更新:
添加了一个终极版的流程图,添加了mosdns,方案1和方案2可以单独部署,通过Adguard Home 1来切换,此流程图与word版本已经不太一样,建议小白看懂word版本教程后再根据流程图自行部署。被水印遮住的端口号为5336
20220815更新:
把教程详细化,增加了大量截图和配置,供小白入坑,记得关闭dns劫持和IPV6
word教程,请重新下载word文件并搜索20220815修正,更新了一些内容:
**** Hidden Message *****
20220814更新:
自己去贡献者的分支下载最新版本吧,最新版本应该都修复了。
https://github.com/PikuZheng/smartdns/releases
20220811更新:
不管是不是采用了我的dns方案,都建议更新一下smartdns到server-group分支版本,master分支目前有dns泄露的问题。
v37.1_server-group 安装
cd /tmp
wget https://github.com/PikuZheng/sma ... 05.all-luci-all.ipk
wget https://github.com/PikuZheng/sma ... _64-openwrt-all.ipk
opkg remove luci-app-smartdns
opkg remove smartdns
opkg install smartdns.1.2022.08.11-1205.x86_64-openwrt-all.ipk
opkg install luci-app-smartdns.1.2022.08.11-1205.all-luci-all.ipk
**************************原帖********************************
发现还是隐藏回复的帖子比较火,把帖子隐藏一小部分吧。
整体DNS流程如下图,涉及到3个Adguard Home,嫌麻烦只部署第1个即可
一、涉及到的软件如下:
Adguard Home luci
https://github.com/rufengsuixing ... home_1.8-11_all.ipk
Adguard Home主程序,先放入路径 /usr/bin/AdGuardHome/ 给予7777权限,luci界面配置的下载地址已经不可用,不能直接更新核心。
Smartdns
luci
https://github.com/pymumu/smartd ... 46.all-luci-all.ipk
主程序
https://github.com/pymumu/smartd ... _64-openwrt-all.ipk
二、软件安装
在:系统-软件包-上传软件包 位置上传ipk文件安装相应的软件,卸载也可以在此处卸载。
三、软件配置
1:openwrt-网络-DHCP/DNS-高级设置-DNS服务器端口改为55,DNS 查询缓存的大小设置为1,HOSTS和解析文件中,勾选忽略解析文件,
常规设置中,DNS 转发填10.10.10.1#8055,转发国内的dns请求到smartdns的国内组,保存并应用设置。
解析:dnsmasq的dns转发,如果不开启science插件,客户端发送dns请求至Adguard Home,Adguard Home转发请求至dnsmasq,dnsmasq会
转发所有dns请求至10.10.10.1#8055,开启science插件后,此处设置就会失效,science插件会读取此处的配置,转发国内dns请求至此处配置的dns地址。
2:主Adguard Home
Adguard Home主程序放入指定路径并赋予权限后,luci所有选项不需要更改,勾选启用后保存并应用,等待几秒后即可点击luci界面的AdGuardHome Web:3000
按钮打开web配置页面,web管理端口填3001,配置完毕后会自动改回3000,dns监控接口选lan,端口选53,输入用户名密码后点2次下一步,就到了登陆界面,
其它不需要动,设置-DNS设置 里面上游DNS服务器填127.0.0.1:55(dnsmasq端口),由Adguard Home接收局域网内所有dns请求,传递给dnsmasq,开启乐观
缓存优化dns响应速度。
3:配置smartdns
smartdns常规设置中:tcp服务器、域名预加载、缓存过期服务打开,重定向为无,TTL相关都设置为10,缓存大小100000000
第二DNS服务器启用,服务器组foreign,勾选跳过测速,勾选跳过双栈优选,勾选停用IPV6地址解析,其它不动。
自定义设置中,添加以下3行,开启第三DNS服务器domestic用于国内域名解析,端口8055
speed-check-mode tcp:443,tcp:80
bind :8055 -group domestic -force-aaaa-soa
bind-tcp :8055 -group domestic -force-aaaa-soa
smartdns添加2组上游DNS服务器,第一组国内服务器8055 119.29.29.29 类型udp 高级设置中 服务器组domestic 额外的服务器参数 -exclude-default-group
第二组国外服务器7053,8.8.8.8类型tls,高级设置中 服务器组foreign 额外的服务器参数 -exclude-default-group
不要用default默认组6053,否则国外dns会同时进入7053和6053进行解析,容易dns污染。
4:science插件的设置,其它设置不变,远程dns/访问国外域名DNS服务器 填写10.10.10.1:7053(smartdns国外组)。
5:修改openwrt wan lan部分的dns为主路由的dns。
**** Hidden Message *****
yyysuo 发表于 2022-10-29 23:40
AD里面直接转发到Smartdns是不是就在控制面板里面把127.0.0.0:55这个改成192.168.2.1:8055就可以了呀
-- ...
AD里面直接转发到Smartdns是不是就在控制面板里面把127.0.0.0:55这个改成192.168.2.1:8055就可以了呀
-----是的,你原来Adguard Home里面是转发到127.0.0.0:55,不应该是127.0.0.1:55么
-----是的,我打错了,之前设置的是127.0.0.1:55
其实看了你这个我还想问的是既然AD可以直接转发到Smartdns里面,那教程为什么还要在AD里面设置上游服务器为dnsmasq呀
----- 很多插件都是基于dnsmasq的,我一开始发帖的时候不想抛弃它,觉得可能有不可预知的问题。后来我帖子更新,把mosdns也加进去了,实际上也抛弃了dnsmasq的dns功能,实测下来确实也没什么问题。
----- 好的,明白了,也就是说dnsmasq提供的主要是HDCP和DNS查询功能,理论上只要找到替代的插件就可以了哦
加入Adguard Home就不能上网,说明大概率还是Adguard Home并没有把dns转发到dnsmasq,需要排查一下。
----- 但是,我外网是可以上的,如果说是Adguard home没有转发出去的话,按理外网应该也上不了啊。我现在回想下可能是和Turbo ACC冲突了,我昨天弄的时候忘记关闭这个里面的DNS加速了,等我明后天有空再重新设置改回去看看是不是确实是因为这个冲突造成的
yyysuo 发表于 2022-10-29 20:47
1:你可以看看Adguard Home里面的dns解析记录,国内的dns是否返回了正确的IP地址,如果没有的话,可以直 ...
1:你可以看看Adguard Home里面的dns解析记录,国内的dns是否返回了正确的IP地址,如果没有的话,可以直接Adguard Home转发到smartdns的8055,忽略掉dnsmasq测试一下也是可以的,把smartdns的日志打开,看看smartdns是否正确接收和解析了地址。
------ 嗯,这个我回头测试下看看,AD里面直接转发到Smartdns是不是就在控制面板里面把127.0.0.0:55这个改成192.168.2.1:8055就可以了呀;其实看了你这个我还想问的是既然AD可以直接转发到Smartdns里面,那教程为什么还要在AD里面设置上游服务器为dnsmasq呀,为什么不直接就像你说的转发给Smartdns就好了?
2:要确认dhcp中设置了dns转发,因为有些插件会改动dhcp转发设置,你设置之后可能也会被再次改动。--这各我发现了,Smartdns里面要把自动配置dnsmasq关闭掉
3:我不记得教程里面是否有写可以把 dhcp-host和解析文件-忽略解析文件勾选上,你可以勾上试试。-->教程里有写的,我也是勾上的 yyysuo 发表于 2022-10-29 17:57
国内打不开肯定就是国内dns不通呀,你可以先弄最简单的,只用Adguard Home,等能上网上再往上加,慢慢确 ...
但是,我都是按照你文档的教程一步一步来的呀,感觉就像国内的DNS没有192.168.2.1#8055转发到smartdns那边没有被正确接收和解析
ADguardhome里面我看了日志,显示国内的网站都处理了的,并没有显示被屏蔽;
还有就是我按照教程来,最后P-S-W没法正常运行,点击应用后可以看到TCP,UDP,NDS启动了,但是过一会TCP,UDP就自动关闭了;只有用S-S-R-P可以正常启动,但就是像我说的国内网站没法打开
我现在是关闭了ADguardhome,然后直接Smartdns里面默认和DNS2分流,HDCP/DNS这里192.168.2.1#6053直接转发到smartdns去的,效果还可以,也可以正常刷新到节点和延迟数据
我是想问下,这个ADguardhome里面会有什么设置会对上面这些产生影响吗? 为什么这么麻烦?单独一个Adguard Home不行么? 本帖最后由 yyysuo 于 2022-8-1 17:46 编辑
kacha2000 发表于 2022-8-1 16:19
为什么这么麻烦?单独一个Adguard Home不行么?
可以啊,但是我想要dns总报表,国内报表和国外报表,还想要smartdns的最快IP功能,虽然adg也有,但是总感觉smartdns的好点,所以就搞得稍稍麻烦一点。
另外管国外的adg可以在过滤规则里面填正则表达式,过滤bt的dns请求,防止机场考核。
/(torrent|\.torrent|peer_id=|info_hash|get_peers|find_node|BitTorrent|announce_peer|announce\.php\?passkey=)/
||xunlei.com^
||sandai.net^
||xunlei.net^
||sandai.com^
||Thunder.com^
这叫路由器里的数据中心 还是有些错误,缓存机制应在ADG上,SMARTDNS和DNSMASQ的CACHE理应都关闭,包括预加载和TTL刷新。 iamyangyi 发表于 2022-8-2 08:08
还是有些错误,缓存机制应在ADG上,SMARTDNS和DNSMASQ的CACHE理应都关闭,包括预加载和TTL刷新。
多层缓存不可以么?反正缓存命中之后都会向上游请求更新的,dnsmasq的缓存没法关,设置成0重启自己会变回去,干脆搞成1,跟0也没什么区别。 iamyangyi 发表于 2022-8-2 08:08
还是有些错误,缓存机制应在ADG上,SMARTDNS和DNSMASQ的CACHE理应都关闭,包括预加载和TTL刷新。
大佬既然点评了,请求个问题,我把wan和lan的dns全指定成10.10.10.1了,现在如果在xxrp中把某域名加入不走代理列表,现在这个方案下,好像不走代理列表的域名就进了dns黑洞了,没有上游的dns对列表里面的域名进行查询了,导致列表中的网站无法访问,是把wan口的dns改回到自动获取运营商的dns就可以了么,可是如果这样的话,主路由本身wan区域的dns解析adg就无法获取到了。 看看咋样 精彩,谢谢:D 看看咋样 入门用户非常需要这样的帖子介绍 谢谢楼主分享 本人小白。赋予权限这部不太会,装完的adg可以更新。但不能用,快速配置就报错
zola8888 发表于 2022-8-2 12:02
本人小白。赋予权限这部不太会,装完的adg可以更新。但不能用,快速配置就报错
用winscp定位到/usr/bin/AdGuardHome/AdGuardHome,右键菜单改权限,如果不会的话,建议还是不要折腾这个方案,遇到问题你解决不了,会很麻烦。 我的恩山、我的无线