luckyyyyy / blog

William Chan's Blog
https://williamchan.me/
175 stars 28 forks source link

OpenWRT 分流DNS的设置 #57

Open luckyyyyy opened 2 years ago

luckyyyyy commented 2 years ago

目前还是有许多人喜欢设置DNS,虽然会浪费一些转发性能,但如果明白其中的链路关系,合理设置后,还是能起到不错的效果的。同时也把正确的设置方式告诉大家。

此教程基于当前路由是主路由,如果是旁路由虽差不多,但有一些差异,需要格外注意。

同时请注意,删除你电脑,手机上的DNS(不要设置任何DNS)

注意事项

建议小白用户使用 Clash 更稳定且方便 此教程仅针对有特殊需求的用户
建议小白用户使用 Clash 更稳定且方便 此教程仅针对有特殊需求的用户
建议小白用户使用 Clash 更稳定且方便 此教程仅针对有特殊需求的用户
建议小白用户使用 Clash 更稳定且方便 此教程仅针对有特殊需求的用户
建议小白用户使用 Clash 更稳定且方便 此教程仅针对有特殊需求的用户

不是非常了解DNS,请不要设置,避免各种问题,作者本人已更换Clash,非常稳定。
同时作者建议使用 shellclash 如需要x86稳定固件 不喜欢折腾的 可以联系我
telegram: eval0xFFFD20

涉及到的组件

AdGuard Home(可选)

主要是起到记录的作用,对需要查看记录的同学有帮助,至于DNS广告屏蔽,虽然有用但会误伤,慎重选择。 同时由于记录文件较大,请一定要注意把记录时间改小,或者设置到有足够空间的目录中,否则会导致时间久了将磁盘撑满

注意:设置了重定向后,所有DNS结果都将应答非权威记录,如果不了解DNS协议请无视,这条并不会影响什么。

SmartDNS

主要用于分流和DNS查询,国外走 Cloudflare DNS ove TLS/HTTPS ,国内延迟优先(但可能影响P2P下载,实测实际还好)。

Passwall

Dnsmasq

无需任何设置,如果有设置请改回,除了上游服务器是127.0.0.1:6053。

一些配置

smartdns 部分直接 vim 编辑 /etc/config/smartdns 照抄即可,无需手动设置,配置完记得界面上点击保存应用,或者uci命令刷新配置,我里面有杭州电信的DNS服务器,不是杭州的记得自己改掉,否则可能有负面效果。

config smartdns
    option server_name 'smartdns'
    option port '6053'
    option tcp_server '1'
    option seconddns_tcp_server '1'
    option coredump '0'
    option seconddns_server_group 'passwall'
    option seconddns_no_speed_check '1'
    option seconddns_no_dualstack_selection '1'
    option prefetch_domain '1'
    option ipv6_server '0'
    option force_aaaa_soa '1'
    option dualstack_ip_selection '1'
    option serve_expired '1'
    option redirect 'dnsmasq-upstream'
    option rr_ttl_min '300'
    option seconddns_port '7913'
    option seconddns_enabled '1'
    option seconddns_no_rule_nameserver '1'
    option seconddns_no_rule_addr '0'
    option seconddns_no_rule_soa '0'
    option seconddns_no_rule_ipset '0'
    option cache_size '300'
    option seconddns_no_cache '1'
    option enabled '1'
    list old_redirect 'dnsmasq-upstream'
    list old_port '6053'
    list old_enabled '1'

config server
    option name 'aliyun'
    option ip '223.5.5.5'
    option port '53'
    option type 'udp'
    option blacklist_ip '0'
    option server_group 'cn'
    option enabled '1'

config server
    option name '114'
    option ip '114.114.114.114'
    option port '53'
    option type 'udp'
    option blacklist_ip '0'
    option server_group 'cn'
    option enabled '1'

config server
    option enabled '1'
    option type 'udp'
    option name '电信'
    option ip '202.101.172.35'
    option port '53'
    option server_group 'cn'
    option blacklist_ip '0'

config server
    option enabled '1'
    option type 'udp'
    option name '电信'
    option ip '202.101.172.47'
    option port '53'
    option server_group 'cn'
    option blacklist_ip '0'

config server
    option type 'udp'
    option port '53'
    option name 'DNSPod'
    option ip '119.29.29.29'
    option blacklist_ip '0'
    option server_group 'cn'
    option enabled '1'

config server
    option enabled '1'
    option name 'cloud'
    option ip '1.1.1.1'
    option port '853'
    option type 'tls'
    option server_group 'passwall'
    option blacklist_ip '0'
    option addition_arg ' -exclude-default-group'

config server
    option enabled '1'
    option type 'udp'
    option name 'CNNIC SDNS'
    option ip '1.2.4.8'
    option port '53'
    option server_group 'cn'
    option blacklist_ip '0'

如何验证?

登录路由器 使用 dig 或者 nslookup 检查下各端口的DNS以及分流情况

nslookup www.taobao.com 127.0.0.1:7913 返回的是节点对应淘宝最快的IP
nslookup www.taobao.com 127.0.0.1:6053 返回的是国内最快的IP
nslookup www.taobao.com 应该是国内

注:如果手动查询规则列表内的域名,使用端口6053,然后匹配规则,转发给7913,然后被缓存住。(国外因为跳过测速,所以多个域名是正确的)

Xnip2022-04-15_20-06-42
cike-567 commented 1 year ago

我按照这个方案进行设置,外网不能访问,显示找不到 dns 服务器。我把 smartdns 不设置为 dnsmasq 上游服务器,就能够正常访问外网。

111413 commented 1 year ago

应该是插件版本问题,作者的教程好像有点过期。 passwall的分流选为smartdns后,会把smartdns的7913顶掉,造成smartdns未运行

Pacio commented 1 year ago

我按照这个方案进行设置,外网不能访问,显示找不到 dns 服务器。我把 smartdns 不设置为 dnsmasq 上游服务器,就能够正常访问外网。

最近smdns已经大更新,此教程已经不需要了,现在直接默认设置不用动,自己填上dns服务器直接开启就行了

cike-567 commented 1 year ago

@Pacio 谢谢你的回答

111413 commented 1 year ago

我按照这个方案进行设置,外网不能访问,显示找不到 dns 服务器。我把 smartdns 不设置为 dnsmasq 上游服务器,就能够正常访问外网。

最近smdns已经大更新,此教程已经不需要了,现在直接默认设置不用动,自己填上dns服务器直接开启就行了

请问这个这是什么原因吗? Q:passwall的分流选为smartdns后,会把smartdns的7913顶掉,造成smartdns未运行

myrisc commented 1 year ago

按照这个方案设置,就是看不了油管的视频,列表都能刷出了,搜索也没问题,莫名其妙,然后退而求其次找个方法,在外网的vps上装adhome,然后远程dns指向外网的vps,测试非常完美,正好国内不用过滤广告,视频开了好多会员,开过滤器有很多问题,然而外网很多钓鱼网站和广告浏览器倒是直接装插件屏蔽,手机就难受了,所以规则随便撸,反正分流了,即便有国内的规则也不生效,实测速度4m,相当爽

yaya131 commented 1 year ago

smartdns+ADG+passwall正确的操作!我的SMART分组!国内是CN6053 国外是USA6553 注意实际操作是smartdns定向为53端口,ADG作为dnsmasq 上游,ADG上游DNS设置为smartdns:127.0.0.1:6053 127.0.0.1:6553 !passwall的分流选为smartdns 填写CN!然后过滤模式 通过UDP请求DNS 127.0.0.1:6553。设置完成后重启。一切正常。配置也合理!IP全部经过ADG分发给客户端!

yaya131 commented 1 year ago

按照这个方案设置,就是看不了油管的视频,列表都能刷出了,搜索也没问题,莫名其妙,然后退而求其次找个方法,在外网的vps上装adhome,然后远程dns指向外网的vps,测试非常完美,正好国内不用过滤广告,视频开了好多会员,开过滤器有很多问题,然而外网很多钓鱼网站和广告浏览器倒是直接装插件屏蔽,手机就难受了,所以规则随便撸,反正分流了,即便有国内的规则也不生效,实测速度4m,相当爽

smartdns+ADG+passwall正确的操作!我的SMART分组!国内是CN6053 国外是USA6553 注意实际操作是smartdns定向为53端口,ADG作为dnsmasq 上游,ADG上游DNS设置为smartdns:127.0.0.1:6053 127.0.0.1:6553 !passwall的分流选为smartdns 填写CN!然后过滤模式 通过UDP请求DNS 127.0.0.1:6553。设置完成后重启。一切正常。配置也合理!IP全部经过ADG分发给客户端!

yaya131 commented 1 year ago

我按照这个方案进行设置,外网不能访问,显示找不到 dns 服务器。我把 smartdns 不设置为 dnsmasq 上游服务器,就能够正常访问外网。

最近smdns已经大更新,此教程已经不需要了,现在直接默认设置不用动,自己填上dns服务器直接开启就行了

请问这个这是什么原因吗? Q:passwall的分流选为smartdns后,会把smartdns的7913顶掉,造成smartdns未运行

smartdns+ADG+passwall正确的操作!我的SMART分组!国内是CN6053 国外是USA6553 注意实际操作是smartdns定向为53端口,ADG作为dnsmasq 上游,ADG上游DNS设置为smartdns:127.0.0.1:6053 127.0.0.1:6553 !passwall的分流选为smartdns 填写CN!然后过滤模式 通过UDP请求DNS 127.0.0.1:6553。设置完成后重启。一切正常。配置也合理!IP全部经过ADG分发给客户端!

yaya131 commented 1 year ago

我按照这个方案进行设置,外网不能访问,显示找不到 dns 服务器。我把 smartdns 不设置为 dnsmasq 上游服务器,就能够正常访问外网。

按照这个方案确实不行!但是实际操作需要这样设置smartdns+ADG+passwall正确的操作!我的SMART分组!国内是CN6053 国外是USA6553 注意实际操作是smartdns定向为53端口,ADG作为dnsmasq 上游,ADG上游DNS设置为smartdns:127.0.0.1:6053 127.0.0.1:6553 !passwall的分流选为smartdns 填写CN!然后过滤模式 通过UDP请求DNS 127.0.0.1:6553。设置完成后重启。一切正常。配置也合理!IP全部经过ADG分发给客户端!

frankilla1987 commented 1 year ago

我按照这个方案进行设置,外网不能访问,显示找不到 dns 服务器。我把 smartdns 不设置为 dnsmasq 上游服务器,就能够正常访问外网。

按照这个方案确实不行!但是实际操作需要这样设置smartdns+ADG+passwall正确的操作!我的SMART分组!国内是CN6053 国外是USA6553 注意实际操作是smartdns定向为53端口,ADG作为dnsmasq 上游,ADG上游DNS设置为smartdns:127.0.0.1:6053 127.0.0.1:6553 !passwall的分流选为smartdns 填写CN!然后过滤模式 通过UDP请求DNS 127.0.0.1:6553。设置完成后重启。一切正常。配置也合理!IP全部经过ADG分发给客户端!

你行了吧,能不能不刷屏。

sjkhsl commented 1 year ago

这个方案确实不行了,过滤改tcp还能上,但是有不少问题,还是dnsmasq好用~

wtfr-dot commented 1 year ago

这个方案确实不行了,过滤改tcp还能上,但是有不少问题,还是dnsmasq好用~

不是不行,而是要把国外的上游服务器分组里填passwall_proxy,否则会死循环

qian9008 commented 1 year ago

passwall 全局代理了 自己不能解析吗 为什么要smartdns ,passwall 代理域名可以直接解析也可以让smart 解析,这说明smart 有点多余。我觉得 应该adg 53 上游是passwall ,然后让passwall 再分流解析,但实际不能这样。。实际 上游是 6053 这不是所有域名都smart解析了吗,然后再经过passwall ,最后passwall 再让代理域名经过一个国外dns ,有点绕,国外域名经过2次解析 ?

yangchenlarkin commented 1 year ago

我这边开启了smartDNS之后,像right.com.cn、qpic.cn这些域名,用nslookup解析结果都是127.0.0.1,从而导致一部分网页打不开,或者图裂了。这种问题一般从哪里入手查看?

sxml commented 1 year ago

.cn

这个坑我刚踩过 折腾两天 知道是DNS出问题 吐血 没想到 是服务器名称 当成分组 写 cn 结果 cn域名都解析不了 www.189.cn, cloud.189.cn
换成默认就好smartdns

这个陷阱 不知道有多少人掉进

200392033-99f82c66-3d97-4fe9-ac55-ad7a6270efa7

wtfr-dot commented 1 year ago

.cn

这个坑我刚踩过 折腾两天 知道是DNS出问题 吐血 没想到 是服务器名称 当成分组 写 cn 结果 cn域名都解析不了 www.189.cn, cloud.189.cn 换成默认就好smartdns

这个陷阱 不知道有多少人掉进

200392033-99f82c66-3d97-4fe9-ac55-ad7a6270efa7

不是这儿的问题,是你其它地方没设置对,只是改了这儿撞对了

sxml commented 1 year ago

.cn

这个坑我刚踩过 折腾两天 知道是DNS出问题 吐血 没想到 是服务器名称 当成分组 写 cn 结果 cn域名都解析不了 www.189.cn, cloud.189.cn 换成默认就好smartdns 这个陷阱 不知道有多少人掉进 200392033-99f82c66-3d97-4fe9-ac55-ad7a6270efa7

不是这儿的问题,是你其它地方没设置对,只是改了这儿撞对了

修改其他立马修复 其他地方没设置对 哪里???

我这写cn 很久了 以前都没事 最新才这样 写cn cn域名都解析到本地 写com 所有com都打不开

wtfr-dot commented 1 year ago

.cn

这个坑我刚踩过 折腾两天 知道是DNS出问题 吐血 没想到 是服务器名称 当成分组 写 cn 结果 cn域名都解析不了 www.189.cn, cloud.189.cn 换成默认就好smartdns 这个陷阱 不知道有多少人掉进 200392033-99f82c66-3d97-4fe9-ac55-ad7a6270efa7

不是这儿的问题,是你其它地方没设置对,只是改了这儿撞对了

修改其他立马修复 其他地方没设置对 哪里???

我这写cn 很久了 以前都没事 最新才这样 写cn cn域名都解析到本地 写com 所有com都打不开

这是smartdns本身服务器名称,是一个身份识别标识,跟国内外服务器分组名称一点关系都没有,关键是你上游服务器国内分组名称要与passwall那里国内分组名称一致,并不限于写cn

sxml commented 1 year ago

服务器名称,是一个身份识别标识。他有必要自定义身份? 关键 要与passwall那里国内分组名称一致?你这乱扯 smartdns依赖passwall?

wj-xx commented 1 year ago

请问我想国内能走ipv6,国外禁止IPV6,按你的配置可以吗?

wtfr-dot commented 1 year ago

服务器名称,是一个身份识别标识。他有必要自定义身份? 关键 要与passwall那里国内分组名称一致?你这乱扯 smartdns依赖passwall?

你首先把smartdns搞懂了再说,passwall里国内分流选smartdns那smartdns肯定与passwall相关呀,自己琢磨清楚了来,别自己没搞懂瞎扯

wzy105 commented 1 year ago

luck老师我全套按着你来设置,就是adguardhome这边出问题了,填127.0.0.1或者openwrt的ip地址都用不了,只有填上smartdns国内外两个端口才能正常。

qianfendou commented 1 year ago

科学网络似乎无法屏蔽广告

dragonfivechen commented 1 year ago

想知道,能在smartdns里将国内的DNS全部设置为DoH的吗?我这样设置完了以后好像不能正常上网。

设置成doh(ip),例如:https://223.6.6.6/dns-query,然后高级设置添加doh对应的http主机名:dns.alidns.com

dragonfivechen commented 1 year ago

Screenshot_20221128-203533_Browser

lyx32 commented 1 year ago

我有个问题,希望有人能帮我解答一下。 我用adg作为dnsmasq的上游。passwall的dns分流使用dnsmasq分流。国外用8.8.8.8 每次使用1到3天左右,网络就会奇慢无比。后来发现我所有网络全部从vps过了一遍(现象就是ip138,ipip.net显示的ip是VPS的ip)。 重启路由会又好转,但是1到3天左右又会这样。 现在我吧smartdns作为dnsmasq的上游(smartdns不开第二服务器),adg的重定向改为无。smartdns里面上游只填写127.0.0.1:adg端口。passwall使用smartdns分流。这样就能正常使用。 大家有遇到这种情况么,或者我哪里配错了?。

ZiGmaX809 commented 1 year ago

我有个问题,希望有人能帮我解答一下。 我用adg作为dnsmasq的上游。passwall的dns分流使用dnsmasq分流。国外用8.8.8.8 每次使用1到3天左右,网络就会奇慢无比。后来发现我所有网络全部从vps过了一遍(现象就是ip138,ipip.net显示的ip是VPS的ip)。 重启路由会又好转,但是1到3天左右又会这样。 现在我吧smartdns作为dnsmasq的上游(smartdns不开第二服务器),adg的重定向改为无。smartdns里面上游只填写127.0.0.1:adg端口。passwall使用smartdns分流。这样就能正常使用。 大家有遇到这种情况么,或者我哪里配错了?。

可能是缓存爆了重启清理缓存又好了

lyx32 commented 1 year ago

应该不是缓存的原因,我看到我首页的缓存几乎没怎么变。可能固件的问题,我现在换成天灵的固件,目前还是这样的配置,已经正常运行了一周多了。

chancat87 commented 1 year ago

如果嫌弃ssrp分流问题。可以换passwall2 足矣胜任。老是看到这种套娃的所谓教程。都是比尔麦克的学生吗?

XiaoChenMr commented 1 year ago

大佬 Turbo ACC里面的DNS缓存需要关闭吗?

wtfr-dot commented 1 year ago

这个issue可以关闭了,新版smartdns和passwall变化比较大,设置方法已经变了

lyx32 commented 1 year ago

大佬 Turbo ACC里面的DNS缓存需要关闭吗?

如果你启用了其他dns的插件话(如smartdns,mosdns,adg之类的)。这个开不开都无所谓。 如果你没有用其他的dns插件,这个可以打开

sxml commented 1 year ago

smartdns

两个变态 太变态 时不时大改 对小白不友好 设置都乱

uyonger commented 1 year ago

大佬,我这个 每天都 dns转发失效。

zah咋回事,每天都要去 smardns 里面重新保存一次,

微信截图_20230525163233

XiaoChenMr commented 1 year ago

我不是大佬,建议你复制一份别人的文件直接覆盖,这样就省得去设置了/etc/config/smartdns

lyx32 commented 1 year ago

大佬,我这个 每天都 dns转发失效。

zah咋回事,每天都要去 smardns 里面重新保存一次,

微信截图_20230525163233

你可以在路由里面用nslookup 6053试试,看是不是端口出问题了. 如果端口出问题了,可能是你smartdns有问题,升级一下,或者做个定时重启 如果不是端口出问题,那多半固件的问题,最好换一个稳定的固件.(我之前也是经常分流失败,换了个固件就几乎没出过这个问题)

gitbruc commented 1 year ago

大佬,我这个 每天都 dns转发失效。

zah咋回事,每天都要去 smardns 里面重新保存一次,

微信截图_20230525163233

你修改了接口的设置就会这样

uyonger commented 1 year ago

什么意思,,不太明白,详细说一下

gitbruc commented 1 year ago

什么意思,,不太明白,详细说一下

就是你的op接口的设置,比如lan口wan口等,只要一变那里就会还原,一般是重新拨号,重启等会导致这样

wtfr-dot commented 1 year ago

什么意思,,不太明白,详细说一下

就是你的op接口的设置,比如lan口wan口等,只要一变那里就会还原,一般是重新拨号,重启等会导致这样

应该是其它软件操作了dns造成的,·重新拨号或者重启不会影响这里的设置,如果是用的别人的固件,检查一下是否有另外的跟dns相关的软件

uyonger commented 1 year ago

什么意思,,不太明白,详细说一下

就是你的op接口的设置,比如lan口wan口等,只要改变一下那里就会恢复原状,一般是重新拔号,重新启动等会导向这样

有可能,我检查一下,不行就换 istore,, 现在用的 esir 的

uyonger commented 1 year ago

我其他软件,,,,adg 关闭了啊

wtfr-dot commented 1 year ago

你把不用的软件先禁用依次排查吧,可能不只adg对dns操作

gitbruc commented 1 year ago

那就没跑了,我也用esir的

uyonger commented 1 year ago

那没跑了,我也用esir的

我现在 把多余的接口都删了,确实可以了,几天都没有 恢复了

OwenLinZero commented 8 months ago

我想问一句,Passwall本身不就有DNS分流功能,为何还需要用到Smartdns?

ZacharyRen77 commented 8 months ago

大佬我想问一下对于已经设置过dns解锁流媒体的节点而言,passwall的远程dns意义是什么?

i-Eureka commented 7 months ago

可以来一期,passwall+mosdns(分流)+AdGuardHome(可视化)的DNS教程吗?这样一来所有功能都得到了实现,也没有多余的部分吧。 按我目前的理解的流程和设置方法如下:将所有的客户端dns请求都转发给AdGuardHome(广告屏蔽和DNS可视化,DNS不做任何缓存)→MosDNS(luci MosDNS v5.3.1预设配置运行,实现DNS分流,这里设置DNS缓存)作为AdGuardHome上游服务(也就是设置127.0.0.1:5335为DNS服务器)→passwall自定义远程DNS为AdGuardHome所监听的DNS端口。 综上最关键的是:1.Dnsmasq的转发问题(MosDNS,AdGuardHome应该如何设置需要介入Dnsmasq的转发,因为影响到了passwall的分流规则,这样一来是不是和我前面说的“将所有的客户端dns请求都转发给AdGuardHome”就已经冲突了) 2.在满足上诉功能(可视化和分流以及passwall分流规则有效)AdGuardHome还要正确显示每个请求客户端的正确IP地址而不是只显示localhost 127.0.0.1。 我试过很多种转发模式要么是passwall分流规则失效,要么就是AdGuardHome只显示localhost 127.0.0.1这一个客户端的请求,失去可视化意义。

goodnighteveryone commented 5 months ago

可以来一期,passwall+mosdns(分流)+AdGuardHome(可视化)的DNS教程吗?这样一来所有功能都得到了实现,也没有多余的部分吧。 按我目前的理解的流程和设置方法如下:将所有的客户端dns请求都转发给AdGuardHome(广告屏蔽和DNS可视化,DNS不做任何缓存)→MosDNS(luci MosDNS v5.3.1预设配置运行,实现DNS分流,这里设置DNS缓存)作为AdGuardHome上游服务(也就是设置127.0.0.1:5335为DNS服务器)→passwall自定义远程DNS为AdGuardHome所监听的DNS端口。 综上最关键的是:1.Dnsmasq的转发问题(MosDNS,AdGuardHome应该如何设置需要介入Dnsmasq的转发,因为影响到了passwall的分流规则,这样一来是不是和我前面说的“将所有的客户端dns请求都转发给AdGuardHome”就已经冲突了) 2.在满足上诉功能(可视化和分流以及passwall分流规则有效)AdGuardHome还要正确显示每个请求客户端的正确IP地址而不是只显示localhost 127.0.0.1。 我试过很多种转发模式要么是passwall分流规则失效,要么就是AdGuardHome只显示localhost 127.0.0.1这一个客户端的请求,失去可视化意义。

老哥,你找到可行的方案了吗