openwrt上安装smartdns加速访问

原创
2020/05/27 19:18
阅读数 10.6W
网上看了一圈没见几个能说清openwrt上smartdns怎么用的帖子,将一点浅薄理解贴出来供用的人参考,从原理啰嗦一下:
1,web基础
我们平时浏览网页的时候,会打开浏览器,输入网址后按下回车键,然后就会显示出你想要浏览的内容。在这个看似简单的行为背后,到底是怎样的过程呢?
一个普通的上网过程是这样的:浏览器本身是一个客户端,当你输入URL(网址)的时候,首先浏览器会去请求DNS服务器,通过DNS获取域名对应的IP,然后通过IP地址找到对应的服务器,随后即要求建立TCP连接,等浏览器发送完HTTP Request(请求)包后,服务器接收到请求包之后才开始处理请求,服务器调用自身web服务,返回HTTP Response(响应)包;客户端(浏览器)收到来自服务器的响应后开始渲染这个Response包里的主体(body)并显示,等收到全部的内容后,断开与该服务器之间的TCP连接。
 
2,DNS原理
DNS(Domain Name System)是“域名系统”的英文缩写,是一种组织成层次结构的计算机和网络服务命名系统,用于TCP/IP网络,它从事把主机名或域名转换为实际IP地址的工作,就像一位“翻译官”。
 
为便于你理解,更详细的DNS解析的过程如下:
  1. 在浏览器中输入www.qq.com域名,操作系统会先检查自己本地的hosts文件是否有这个网址映射关系,如果有,就先调用这个IP地址映射,完成域名解析。
  2. 如果hosts里没有这个域名的映射,则查找本地DNS解析器缓存,是否有这个网址映射关系,如果有,直接返回,完成域名解析。
  3. 如果hosts与本地DNS解析器缓存都没有相应的网址映射关系,首先会找TCP/IP参数中设置的首选DNS服务器,在此我们叫它本地DNS服务器,此服务器收到查询时,如果要查询的域名包含在本地配置区域资源中,则返回解析结果给客户机,完成域名解析,此解析具有权威性。
  4. 如果要查询的域名,不由本地DNS服务器区域解析,但该服务器已缓存了此网址映射关系,则调用这个IP地址映射,完成域名解析,此解析不具有权威性。
  5. 如果本地DNS服务器本地区域文件与缓存解析都失效,则根据本地DNS服务器的设置(是否设置转发器)进行查询,如果未用转发模式,本地DNS就把请求发至上游的 “根DNS服务器”,“根DNS服务器”收到请求后会判断这个域名(.com)是谁来授权管理,并会返回一个负责该顶级域名服务器的一个IP。本地DNS服务器收到IP信息后,将会联系负责.com域的这台服务器。这台负责.com域的服务器收到请求后,如果自己无法解析,它就会找一个管理.com域的下一级DNS服务器地址(qq.com)给本地DNS服务器。当本地DNS服务器收到这个地址后,就会找qq.com域服务器,重复上面的动作,进行查询,直至找到www.qq.com主机。
  6. 如果用的是转发模式,此DNS服务器就会把请求转发至上一级DNS服务器,由上一级服务器进行解析,上一级服务器如果不能解析,或找根DNS或把转请求转至上上级,以此循环。不管本地DNS服务器用的是转发,还是根提示,最后都是把结果返回给本地DNS服务器,由此DNS服务器再返回给客户端。
DNS解析过程就是这样一个递归迭代过程。所谓递归查询过程就是 “查询的对象” 更替,而迭代查询过程则是 “查询的对象”不变。
 
举个例子来说,你想知道某个一起上课的女孩的电话,并且你偷偷拍了她的照片,回到寝室告诉一个很仗义的哥们儿,这个哥们儿二话没说,拍着胸脯告诉你,甭急,我替你查(此处完成了一次递归查询,即,问询者的角色更替)。然后他拿着照片问了学院大四学长,学长告诉他,这姑娘是xx系的;然后这哥们儿马不停蹄又问了xx系的办公室主任助理同学,助理同学说是xx系yy班的,然后很仗义的哥们儿去xx系yy班的班长那里取到了该女孩儿电话。(此处完成若干次迭代查询,即,问询者角色不变,但反复更替问询对象)   最后,他把号码交到了你手里,完成整个查询过程。
 
3,什么是SmartDNS
作者说的炒鸡清楚,详见: https://github.com/pymumu/smartdns
SmartDNS一个运行在本地的DNS服务器,SmartDNS接受本地客户端的DNS查询请求,从多个上游DNS服务器获取DNS查询结果,并将访问速度最快的结果返回给客户端,提高网络访问速度。
 
架构图:
 
(1)SmartDNS是怎么做的呢?
  1. SmartDNS接收本地网络设备的DNS查询请求,如PC,手机的查询请求。
  2. SmartDNS将查询请求发送到多个上游DNS服务器,可采用标准UDP查询,非标准端口UDP查询,及TCP查询。
  3. 上游DNS服务器返回域名对应的Server IP地址列表。SmartDNS检测与本地网络访问速度最快的Server IP并缓存。
  4. 将访问速度最快的Server IP返回给本地客户端PC或手机。
 
(2)SmartDNS怎么用?
官方说是“SmartDNS服务生效方法有两种,一种是直接作为主DNS服务;另一种是作为dnsmasq的上游”。也就是说我们是在家用路由器openwrt上安装SmartDNS,即路由器上起了个所谓的本地DNS服务。取代了默认运营商的DNS服务做解析。这是第一种方式。另一种是配合其他dns服务如dnsmasq一起做解析,即作为dnsmasq的上游,用于梯子上的分流,你懂的。
 
个人觉得SmartDNS的优势,就是优选从多个上游解析的结果来加速访问。当然不一定比你直接用运营商的DNS解析快,若是快个几毫秒,你也不太能感觉到(没别的,玩openwrt就是爱折腾)。据说在梯子上分流用感觉明显一些。这里讲下直接作为主DNS,在openwrt上的安装配置,仅供参考。
 
(3)openwrt上安装过程:
1),从smartdns的github主页 https://github.com/pymumu/smartdns下载ipk,注意不要下错了。PS,路由器是K3
2),登录路由器,到系统--文件传输 上传这个两个文件
3),按顺序安装主程序和luci登录界面,注意顺序不要错
4),安装完成可在 服务--smartdns看到
5),配置,勾选启用,添加上游服务器,国内公共DNS
保存应用就能看到状态运行,停止使用就勾掉启用,在保存并应用
PS, 无需修改网络--DHCP/DNS
6),检查是否生效
用默认的运营商DNS解析结果:
可看到结果都返回了两个IP
 
用SmartDNS解析的结果:
可清楚看到显示服务器是smartdns,返回的结果就一个IP
 
that all ...

 

展开阅读全文
打赏
0
1 收藏
分享
加载中
更多评论
打赏
0 评论
1 收藏
0
分享
返回顶部
顶部