首先以我个人的理解吐槽一下网上的各种教程。花了两天时间想实现标题所说的功能,csdn、恩山、红色图标视频网站等,看了很多的文章和视频都没达到想要的结果,同时在配置过程中往往出现断网等情况并且不少文章相同功能配置起来区别却很大根本搞不明白其中的流程。今早稍微测试了整理了一下openwrt使用上述几个服务时的dns流转情况,理清楚了情况自然就知道该在哪一步入手配置。下面正文开始。
能够实现的效果:
1.远程dns使用smartdns配置的第二服务器
2.直连dns使用smartdns配置的服务器
3.直连dns达到dns过滤效果(去广告等),远程dns达不到dns过滤(除非配置两个adguardhome)
自己试出来的dns解析流程
1.客户端请求(所属网络网关指向openwrt) 客户端本机host 请求openwrt:53passwall2劫持流量到passwall2内部passwall2将dns查询流量内部转至passwall2监听的15353端口(实际监听端口建议再在passwall2的日志中确认好)passwall的15353端口根据passwall配置的规则把dns查询分流为直连dns和远程dns直连dns和远程dns个配置了dns解析服务器直连dns指向openwrt本机53端口走正常dns解析流程。远程dns走配置的远程dns服务器
以上是个人测试出来的dns解析流程,通过流程可以明确我们需要改动的地方。
1.上图是passwall2的dns配置页面,直连dns自动时走系统配置的dns解析流程。
2.远程dns是符合passwall2规则文件后分流的dns查询
配置开始
1.smartdns,这类配置多如牛毛,主要是选择dns服务器,网上搜一下即可。
2.adguardhome首页监听选择【无】,进入3000端口的配置页面【dns设置】中的【上游dns服务器】填写smartdns两个dns服务的ip:端口(直连dns解析),并行请求(国内dns既可以用国内的dns解析服务器也可以用国外dns解析服务器,所以配置两个)。【Bootstrap DNS 服务器】填写smartdns两个dns服务的ip:端口。页面往下【DNS缓存配置】全部为空(不缓存dns,由smartdns管理缓存)。dns过滤在网上搜一下即可,多如牛毛啊。
3.passwall2,除了dns这里其他默认即可。dns配置【直连DNS协议】选择UDP,自定义地址输入adguardhome的ip:1745端口(最终会通过adguardhome和smartdns),【远程DNS协议】选择UDP,【远程DNS】填写smartdns第二DNS服务器和端口。
至此,dns实现了内外分流。国内dns经过了adguardhome,smartdns实现了dns过滤和缓存。远程dns经过了smartdns实现了缓存。
缺陷:国外dns没有经过adguardhome过滤会有广告等垃圾东西,一种解决办法是再部署一个adguardhome,dns设置中的【上游dns服务器】值填写smartdns的第二服务器这样就会使用国外dns解析服务器了。
还有其他好办法的话欢迎留言。