聊聊DNS,HTTPDNS

聊聊DNS,HTTPDNS,第1张

DNS域名解析就是将我们熟知的域名转换为ip的服务。如将 www.baidu.com 转换为 61.135.169.125 这样的ip地址

想要记住域名比较容易,但是想要记住ip就不容易了,由此可见dns服务是多么的重要。

dns不仅仅可以对域名解析出ip。它还能根据客户端的所在地理位置解析出对客户端最优质的ip。这个怎么理解呢,比如我在深圳访问 baidu.com ,那么dns服务器会将解析成就近的机房的ip地址,而不会让我去访问位于北京的机房。

这就是 全局负载均衡(GSLB,Global Server Load Balance) 。因为,为了保证服务应用的高可用性,往往会部署多个机房,每个地方都会有自己的IP地址。当用户访问某个域名的时候,这些IP地址可以轮询这些机房。另外尽可能希望,北京的用户访问北京的机房,上海的用户访问上海的机房。这样客户体验就会非常好,访问速度也会非常快。

看似十分完美的 GSLB 和 SLB。实则有很多的问题。

既然传统 DNS 问题这么多,那怎么解决呢?

有,那就是HTTPDNS

HTTPDNS不走传统的DNS解析,而是自己搭建基于HTTP协议的DNS服务器集群,分布多个地点和多地运营商,当客户端需要DNS解析的时候,就通过HTTP协议进行请求这个服务器集群。到就近的地址。

而使用HTTPDNS的往往是手机应用,需要在手机端嵌入支持HTTPDNS的客户端SDK。

在客户端的SDK里动态请求服务端,获取HTTPDNS的服务器列表。缓存到本地,随着不断域名解析,SDK也会在本地缓存DNS域名解析的结果。

当应用要访问一个地址时,先看下是否有缓存(这个缓存时手机应用自己做的,不走运营商的缓存,所以如何更新,合适更新全在自己的掌控之中)如果本地没有缓存,那就请求 HTTPDNS的服务器吧。而手机客户端当然知道收集在哪个运营商,在哪个地址,由于是直接的HTTP通信,HTTPDNS也能更好的返回结果信息,更好的做到全局负载均衡。

客户端 ,可以知道确切的地理位置信息,运营商。HTTPDNS可以根据这些信息返回最佳的服务节点。

如果有多个节点,还会考虑错误率,请求时间,服务器压力,网络状况等,进行综合选择。而非仅仅考虑地理位置。当有一个节点宕机或者性能下降时,尽快切换。

服务端 ,服务端可以配置不同的服务质量的权重,优先级,对客户端上报的错误率,请求时间,请求质量等数据,统计,分析,聚合,以此查看不同的IP的服务质量。

为了不让调度失真,客户端可以根据,不同的移动网络运营商的WIFI的SSID分维度缓存,不同的运营商或者WIFI解析出来的结果会不同。

2016.4.1日,Google正式启用了 DNS-Over-HTTPS 域名安全查询服务

该服务支持以下参数:

edns_client_subnet 这里有个坑,比如你有海外需求,需要将 域名cname到海外著名的cdn厂商,比如fastly,akamai等,你需要确定cdn厂商认不认edns扩展,比如 akamai 的权威是不认 阿里httpdns ,腾讯httpdns 的edns 扩展的,也就是你用 ali,tencent 的httpdns 解析akamai 的是会调度错误的。

怎么测试权威是否支持我们的edns 扩展呢?

以 www.qq.com 为例

找到域名的权威。

对权威发起 subnet 查询, www.qq.com 被 cname 到 腾讯云上去了,看来权威在腾讯云上

看看是否有解析结果。

参考 1. 刘超老师的极客时间

2. https://blog.csdn.net/windyf2013/article/details/79727348

DNS解析是将域名指向解析成可由计算机直接识别的IP地址,从而完成服务器的访问。DNS解析出现错误,就是无法解析域名,或者将域名指向一个错误的IP地址,导致用户无法通过域名正常访问相应站点。出现DNS解析故障最大的症状就是访问站点对应的IP地址没有问题,然而访问他的域名就会出现错误。导致DNS解析出现故障的原因有很多种,如解析设置错误,解析尚未生效,DNS遭遇劫持,缓存污染等,都可能导致域名解析出现错误。

点击开始-〉运行-〉输入CMD后回车,输入“nslookup”回车,在输入你的域名,如果出现DNS request timed out,timeout was 2 seconds的提示信息,则说明DNS确实出问题了,如果DNS解析正常的话,会反馈回正确的IP地址。

1、更换本地DNS的方法

目前部分运营商会通过使用DNS劫持的方法,干扰用户正常上网,使得用户无法访问对应站点,应对这种情况,我们可以通过更改本地DNS的方法,解决因DNS劫持而产生的解析故障问题。

方法:点击开始-设置-网络连接-本地连接-属性-TCP/IP协议-使用下面的DNS服务器地址,在框中输入“8.8.8.8”和“8.8.4.4”断开,重新连接网络即可。

2、修改HOSTS文件的方法

HOSTS文件是操作系统中记录域名与IP地址一一对应关系的本地文件,它的请求优先级要高于全球递归查询。如果我们要访问的域名服务器比较稳定不经常更换,我们可以在HOSTS文件中直接修改或添加域名与IP地址的对应关系,这样就可以避免因DNS解析设置、DNS劫持等造成的域名无法解析以及解析出错的问题。

方法:点击“开始-搜索”,然后查找名叫hosts的文件。或路径为c: windows system32 drivers etc都可。用记事本打开HOSTS文件,在下面加入要解析的IP和域名即可。(修改HOSTS文件则是在实在没有办法的时候在用)每个windows系统都有个HOSTS文件,它的作用是加快域名解析,方便局域网用户,屏蔽网站,顺利连接系统等功能。

3、清除DNS缓存信息的方法

为了节省DNS解析时间,系统会将缓存一段时间上次访问的域名记录,这样当用户在下一次访问时会直接将结果返回,而无需委托本地DNS进行全球查询,这样就提高的解析效率,减少了访问延迟。但这样带来的一个问题是,如果该域名的解析记录发生变更,或者DNS缓存被人为修改,就会将用户指向一个不可达或错误的站点,因此为了保障解析的准确性,我们需要定期对DNS缓存进行清理。

方法:“开始-运行-输入CMD”,在ipconfig/?中有一个名为/flushdns的参数,这个就是清除DNS缓存信息的命令,执行ipconfig/flushdns命令,当出现“successfully flushed the dns resolver cache”的提示时就说明当前计算机的缓存信息已经被成功清除。接下来所有的DNS缓存都会重新加载。

中科三方云解析采用最新服务器集群架构,在全球设置多个解析服务节点,支持高防DNS和智能解析,可有效避免DNS劫持、DNS污染等造成的DNS故障,有效保障域名解析安全。

本次配置的所有服务器均为虚拟机,操作系统为Centos 7.3。

本次部署的LVS是基于DR的工作模式,负载均衡调度方式使用了RR,客户端发起DNS请求是,LVS回轮询发送至每台服务器上。DNS服务器解析请求后直接返回给客户端。

在每台服务器上安装ntpdate,确保时间同步。

yum安装bind-chroot,顾名思义这个是可指定chroot的bind,比较安全。

bind-utils是bind软件提供的一组DNS工具包,里面有一些DNS相关的工具.主要有:dig,host,nslookup,nsupdate.使用这些工具可以进行域名解析和DNS调试工作.

这里开始主DNS的配置,下面是配置named.conf,默认安装的路径为/etc/named.conf

从DNS服务器安装与主DNS安装方法一样,只是在配置文件上有些改动,且不需要配置区域数据文件。

在每台机器的/etc/init.d/目录中创建一个lvsrs文件,如下:

给予文件可执行权限

将脚本设置为开机启动

采用key认证方式配置主从DNS服务

生成如下一段字符串

需要配置几个区域就生成几次。

最终配置文件

主:

主机文件 :/etc/named.rfc1912.lan.zones

主机文件 :/etc/named.rfc1912.zones

备:

备机文件 :/etc/named.rfc1912.lan.zones

备机文件 :/etc/named.rfc1912.zones

配置DNS集群只需要克隆备机,然后把named.conf的监听ip地址重新配置即可。

新DNS Server上线后,在lvs的文件内添加新IP,重启就上线完成了。


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/280048.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-21
下一篇2023-04-21

发表评论

登录后才能评论

评论列表(0条)

    保存