如何解决域名解析不生效问题?
最近更新时间:2017-06-27 12:00:38
1.域名状态是否正常
先检查域名的状态,可以查看注册服务商提供的 whois 域名信息,如果域名状态为 clienthold 或 serverhold 状态,说明域名是被禁止解析的。这种状态下,即使设置了域名解析,也无法生效,域名无法被访问到,需要联系域名注册商取消这个状态。
2. 权威修改是否已经修改生效
请确认权威DNS的域名解析记录已修改成功。
3.递归DNS缓存记录是否已更新
修改域名解析后,还取决于各运营商递归DNS的缓存是否生效。
4.客户端DNS缓存记录是否已更新
客户端在老的解析记录TTL过期前无法更新。
其中3,4是常见不生效原因,长时间无法生效大多由于3导致。
方法一:使用HTTPDNS
HTTPDNS简介
HTTPDNS使用HTTP协议进行域名解析,代替现有基于UDP的DNS协议,域名解析请求直接发送到HTTPDNS服务器,从而绕过运营商的Local DNS,能够解决Local DNS造成的域名劫持、调度不准确、域名解析不生效三方面问题,并且能够提升域名解析效率。
HTTPDNS原理
HTTPDNS与传统的域名解析流程对比如下图所示。
使用HTTPDNS有什么限制?
HTTPDNS需要修改应用的DNS解析过程,因此主要适用于C/S架构的场景。
对于无法修改域名解析过程的场景,如PC浏览器访问、微信H5页面访问都无法使用HTTPDNS。
方法二:使用公共DNS
上面提到,由于ISP提供的递归域名服务器质量参差不齐,导致比较容易出现解析失败、解析不生效等问题,因此部分厂商提供了公共DNS解决这个问题。
常见的公共dns有:
Windows系统电脑设置公共DNS 请参照 Windows设置使用公共DNS
备注:满分10分,分数越高说明方法优势越大
对上面对比做一个说明:
(1)HTTPDNS使用时需要开发者修改DNS解析流程,因此只适用于C/S架构的应用,对于PC浏览器、微信H5等场景不适用,程序编写也有一定的工作量,好在国内的HTTPDNS厂商都提供了封装好的SDK和示例代码供开发者使用和参考,大大降低了实现难度。
(2)使用public dns的方法通用性很低,因为需要每个客户都对自己终端的DNS服务器配置进行修改,由于需要面向庞大的、水平参差不齐的终端用户,这种方式对于开发者而言实施难度非常大。
通过客户端自身解决
对于客户端缓存结果不能更新的问题,可以通过强制刷新系统DNS缓存来删除老的解析结果。以windows系统为例,方法如下:
打开windows命令行,执行ipconfig/flushdns命令清空DNS缓存