找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
广告投放联系QQ68610888
查看: 45883|回复: 772

openwrt中的DNS设置及富强插件配合去广告等设置原理心得

 火... [复制链接]
发表于 2022-2-4 01:47 | 显示全部楼层 |阅读模式
本帖最后由 whave 于 2022-2-5 19:47 编辑

对于经常在海洋中遨游的人们来说,搭建一艘坚固和舒适的大船是很有必要的。在经过踩了无数次坑的经验以后,总算是搞明白了其中的原理,现在就将本人的一些心得和经验分享各位,本方适合初学的小白,也适合拥有了一定经验的非网络专业的专业人士

一、前言
DNS和网关,是OP(OPENWRT)设置上网中必不可少的东西,网关就像是高速公路的入口,只有进去了才能到达目的地,而DNS的话就像高速公路上的各种指标牌,指引你到达目的地。而只要明白了这两个基本概念,那就可说你应该已经学会一半了,而另一半就是,这两样东西都要求必须畅通,就是要求你设置的这两个值要能直通你的运营商,就像你上了高速,可以根据指示牌到达任何通高速的地方,如果有地方修路或断路,那你就去不了,也就不通了,也就不能上网了,明白这两点,基本原理你就全懂了,接下来就是实操部分。

二、设置方法

1,对于OP来说,DNS的设置方法有两种,一是在LAN口设置的地方使用自定义DNS(不同固件,有的能填写端口,有的不能,本人都遇到过,不设置的情况下系统是默认使用53端口),修改了这里,那就是相当于修改了DHCP/DNS中的解析文件,也就是图中的/TMP/XXXX文件。二是在DHCP/DNS的转发处填写,这里就可以填写带端口的解析地址(127.0.0.1#1234),一般用带#号隔开,设置错误了是保存不了的。设置DNS转发端口的,就相当于启用了XXX插件中的“做为dnsmasq的上游服务器”的选项,两者是等价的。


2,无论你如何设置DNS,最终的DNS一定是要能通过网关,而你设置的网关地址是一定要能连接到运营商,下面实操说明;


三、实操部分

1,对于干净新装的OP系统,先设置好IP地址,要求和主路由或光猫的LAN口IP地址同一网段(也就是IP的前三组数xxx.xxx.xxx.abc字要完全一样),接下来就是设置DNS了,先用方法一,直接在LAN设置自定义,你可以设置成任何公开的DNS地址,也可不设置(主路由拨号上网的可自动获得),还可以设置为主路由的IP地址(旁路由模式),设置完保存出退,就能正常上网了。方法二,直接在端口转发处填上想设置的DNS地址,保存后就能正常上网了,切记,两者不要同时设置。这里要强调的是,不同的固件有的用第一种方法设置端口后不能保存,所以建设直接用第二种方法。


2,使用smartdns插件,它的本质其实就是增加几DNS服务器,同时还拥有dnsmasq没有的一些功能,它本身启用不会对系统的dnsmasq做任何的修改(不启用重定向),假设启用两组服务器,并设置好国内国外的上游服务器。主端口号是6053,二组为6553(为了配合XXXplus,你可以自行改成5335或其他),再用bind :6054 -group cn,bind :6554 -group en,绑定两个端口并指定服务器组。接着我用上述的第二种方法设置路由器本身的DNS,这时,无论你设置成主路由IP地址(可不带端口号),还是设置成127.0.0.1#(6053/6054),都能正常上网,其实,第二组en服务器也能正常上网的,也就是用国外的DNS解析国内的网站地址,但是因为有些地址禁止了,所以解析不了。而更简单的是,假设你的smartdns国内的上游服务器只设一个,且设置成光猫或主路由的IP地址(192.168.2.1),也一样能正常上网,现在,聪明的小伙伴应该明白其中的原理了吧,是的,其实本质上smartdns就是一个DNS转发插件,只要你设置的DNS 的IP能通过网关最终通过运营商,你就能正常上网。

DNS的请求流程如下,系统dnsmasq通过默认的53端口查询----------转发端口或自定义地址查询(smartdns或自定义的其他插件)-------网关---光猫---运营商,用IP地址表示  127.0.0.1#53-----127.0.0.1#6053/6054-----192.168.2.1(223.5.5.5等其他事先设置好的上游dns)-----营运商,注意,再次强调下,能上网的前提一定是设置了正确的网关。因为DNS本身也只是一组IP地址,数据最终是要通过网关连接到外网的。


3,使用adguardhome+XXXX插件,基本原理和上面的完全一样,想要adguardhome正确的显示访问的客户端IP,要求所有的客户必须直接通过adguardhome进行DNS解析;所以,把adguardhome设置为dnsmasq的上游服务的,只能显示127.0.0.1,因为所有的dns解析请求都是首先通过dnsmasq来申请的。但是如果你直接用重定向或替换端口的方法,又会导致XXXX失效,我猜测,应该是XXX插件劫持了系统的dnsmasq解析工作;所以,难点就在这里了,而我们要做的就是在dnsmasq解析之前先通过adguardhome接管解析,再让adguardhome通过dnsmasq解析。而这个方法其实非常的简单,第一,修改dhcp/dns的DNS服务器端口(高级设置里面,假设改为5321),第二,配置adguardhome监听53端口,并设置它的上游服务器地址为修改后的DHCP/DNS的地址端口,它本身的bootstrap服务器地址设为127.0.0.1,然后就没有然后了,完美了,是不是很简单?只要理解了原理,其实就是这么简单。

DNS的请求流程如下,adguardhome接管系统默认的53端口查询-----XXX插件使用dnsmasq查询(5321)-----转发端口或自定义地址查询(smartdns或自定义的其他插件)-----网关---光猫---运营商。用IP地址表示  127.0.0.1#53-----127.0.0.1#5321-----127.0.0.1#6053/6054-----192.168.2.1(223.5.5.5等其他服务器组的dns)-----光猫-----营运商。


四、常见问题

1,为什么我按照教程修改后还是不行呢?注销OP自带防火墙自带的自定义规则(所有涉及到53端口和你上述设置中使用到的端口,规则前面加#)以及你网络中的其他设备中的涉及到上述端口的防火墙规则(如果有多台OP系统的情况);刷新DNS缓存,刷新DNS缓存,刷新DNS缓存。WINDOWS平台,ipconfig /flushdns和浏览器清空缓存。openwrt平台,service dnsmasq restart,手机平台,开关WIFI,AP,重起一次。

2,adguardhome已经初始化过了,还能修改吗?当然可以,一是用WINSCP之类的SSH软件,登录上后台,找到该文件就可以修改了,文件路径在主界面的“配置文件路径”,二是直接在路由器后台的命令行模式修改,用nano或vi命令修改。记得修改文件之前,停止运行adguardhome。

3,怎么确定完美呢?实现正常上网后,重启路由器后,仍然能正常访问,防止因为DNS缓存或插件冲突等原因导致的无法上网,如果还是不行,请确认你使用的插件中所有的重定向都选了“”;忽略解析文件的这项要选吗?随意,你高兴就好。

4,smartdns用bind绑定的两个端口有什么作用?这个参数的功能就是增加两组监听的端口号,再配合你设置的端口转发,实现国内外的DNS解析分流。具体的差异请看下面的差异测试。

5,终极故障排查方法,在设置完以后,想要测试设置的端口是否生效,可以使用nslookup和dig命令进行测试,直接在OP的命令行模式下(也可以使用其他的SSH软件,手机上的也有,叫JuiceSSh)运行,可以指定端口,格式如下:nslookup www.google.com 127.0.0.1:6053,dig @127.0.0.1 -p 5053 www.google.com,如果你运行出错,那说明你的固件没有安装该命令,在OP软件包中搜索安装就行。你也可以每设置一步,就测试一次,这样就能马上验证设置的正确与否。

6,为什么adguardhome客户端中还有127.0.0.1(::1)显示?这个127.0.0.1的客户端其实就是你路由器本身的DNS解析请求,::1是本地的IPV6地址。比如说XXX插件更新数据啊,路由器升级软件包啊之类的访问请求。

7,能正常上网了,可是为什么上XXX网站看视频很慢或者根本就打不开呢?简单的做法就是在smartdns和adguarhome中禁用IPV6解析,又或者你的光猫或拨号的主路由关闭IPV6 DNS服务器。


   

五、smartdns差异测试


1,看图说话,adguardhome中的日志可以看购物外广告测试网站checkadblock.ru,记录中有四分钟的间隔时间,这是因为在DHCP/DNS处转发端口填写的是smartdns的主端口6053,则adguardhome过滤的是所有的网站解析广告,如果填写的是国内端口6554,则只能过滤6554端口的解析网站数据。

2,通过用nslookup对不同端口的解析测试,可以看出:

baidu网站用主端口6053和国内6054端口解析,返回的IP是一样的,用国外6553和绑定国外6554解析,6553的有两个IP,且两个IP都有效(因为6553端口设置了跳过测速等参数),6554和国内的一样。

google网站用主端口6053和国外6553端口解析,返回结果不一样,用绑定国内6054和绑定国外6554解析,返回的IP一样,且和主端口的解析结果一样。说明如果用主端口解析国外网站,存在DNS污染的情况。而绑定国外6554和国外6553的返回值不一样,是因为6553端口中的设置参数,绑定端口6554解析应该是默认使用自定义设置中的参数。一个有返回IPV6地址,一个没有。自定义设置的参数对所有端口生效,具体的参数作用,大家可以去大神的网站查询:https://github.com/pymumu/smartdns


六、结语

断断续续写了两三天,总算是写完了,不容易啊,以前是网上看各种教程教你怎么设置,总是不明白为什么,实际使用中一但更换固件或插件,总是遇到各种各样的问题,现在总算是弄明白了,不过本人水平有限,欢迎各位吐槽。因为有太多的大神曾经说过,不要去弄DNS,用系统或插件自带的就好,对于国内网站,DNS的最优解就是运营商自己的DNS,0.001秒和0.01秒虽然说是10倍差异,但也已经超过了人类的感知范围了。附上测试图一张;


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×

评分

参与人数 7恩山币 +7 收起 理由
雨*** + 1 强大的恩山!(以下重复1万次)
11732*** + 1 感谢你的分享,无论怎样,你都是最无私的人.
vvx*** + 1 强大的恩山!(以下重复1万次)
wk*** + 1 不要怂、就是干!
m32*** + 1 一看就是觉得高端、大气、上档次!
ar*** + 1 感谢你的分享,无论怎样,你都是最无私的人!来,说说,你E盘上还有啥一起给我吧!
SkyT*** + 1 风清云淡、飘逸悠然……极爽!

查看全部评分

发表于 2022-2-4 10:04 | 显示全部楼层
谢谢楼主分享,信息量还是挺大的,慢慢消化了。
回复 支持 反对

使用道具 举报

发表于 2022-2-4 19:50 | 显示全部楼层
感觉是好文,等待作者更新。
回复 支持 反对

使用道具 举报

发表于 2022-2-4 20:57 来自手机 | 显示全部楼层
说得很清楚了
回复 支持 反对

使用道具 举报

发表于 2022-2-4 23:54 | 显示全部楼层
OPENWRT的DNS详解,收藏~
回复 支持 反对

使用道具 举报

发表于 2022-2-5 00:06 | 显示全部楼层
感觉smartdns里的端口和后面介绍的端口没有对应

点评

已经修改,感谢提醒  详情 回复 发表于 2022-2-5 16:11
回复 支持 反对

使用道具 举报

发表于 2022-2-5 09:24 | 显示全部楼层
好文,感谢分享!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-2-5 16:11 | 显示全部楼层
funison 发表于 2022-2-5 00:06
感觉smartdns里的端口和后面介绍的端口没有对应

已经修改,感谢提醒
回复 支持 反对

使用道具 举报

发表于 2022-2-6 07:53 | 显示全部楼层
通俗简洁的基础教程,感谢
回复 支持 反对

使用道具 举报

发表于 2022-2-6 10:48 | 显示全部楼层
dns设置是一个很复杂的内容,你搞得那么清楚。牛!
回复 支持 反对

使用道具 举报

发表于 2022-2-6 10:55 | 显示全部楼层
说得很清楚了
回复 支持 反对

使用道具 举报

发表于 2022-2-6 10:57 来自手机 | 显示全部楼层
我一直用默认的
回复 支持 反对

使用道具 举报

发表于 2022-2-6 11:06 | 显示全部楼层
谢谢分享了
回复 支持 反对

使用道具 举报

发表于 2022-2-6 12:15 | 显示全部楼层
思考一下,谢谢分享。
回复 支持 反对

使用道具 举报

发表于 2022-2-6 16:48 | 显示全部楼层
这种教科书式的帖子正是我需要思考内容,谢谢lz无私的分享
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭

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

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

GMT+8, 2024-6-3 02:30

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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

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