如何解决域名解析不生效问题?

本文涉及的产品
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: 文中对域名解析不生效的原因进行了分析,并针对最常见的本地递归域名服务器缓存不生效的问题提出了解决方案,尤其移动域名解析HTTPDNS对无线场景下的应用特别有效。

一、前言

域名解析不生效产生的原因很多,除了网络不可用, 域名劫持(已有成熟解决办法)等因素之外, 按照排查链路先后顺序列举如下:

1.1 域名状态是否正常

先检查域名的状态,可以查看注册服务商提供的 whois 域名信息,如果域名状态为 clienthold 或 serverhold 状态,说明域名是被禁止解析的。这种状态下,即使设置了域名解析,也无法生效,域名无法被访问到,需要联系域名注册商取消这个状态。

1.2 权威修改是否已经修改生效

请确认权威DNS的域名解析记录已修改成功。

1.3 递归DNS缓存记录是否已更新

修改域名解析后,还取决于各运营商递归DNS的缓存是否生效。

1.4 客户端DNS缓存记录是否已更新

客户端在老的解析记录TTL过期前无法更新。

其中1.3,1.4是常见不生效原因,长时间无法生效大多由于1.3导致。

二、域名解析不生效解决办法

2.1 通过递归DNS解决

2.1.1 方法一:使用HTTPDNS

(1) HTTPDNS简介

HTTPDNS使用HTTP协议进行域名解析,代替现有基于UDP的DNS协议,域名解析请求直接发送到HTTPDNS服务器,从而绕过运营商的Local DNS,能够解决Local DNS造成的域名劫持调度不准确域名解析不生效三方面问题,并且能够提升域名解析效率。

(2) HTTPDNS原理

HTTPDNS与传统的域名解析流程对比如下图所示。

screenshot

                          图一  HTTPDNS与传统DNS对比图

(3) HTTPDNS如何使用

参见文档如何使用HTTPDNS

(4)使用HTTPDNS有什么限制?

HTTPDNS需要修改应用的DNS解析过程,因此主要适用于C/S架构的场景。

对于无法修改域名解析过程的场景,如PC浏览器访问、微信H5页面访问都无法使用HTTPDNS。

2.1.2 方法二:使用公共DNS

上面提到,由于ISP提供的递归域名服务器质量参差不齐,导致比较容易出现解析失败、解析不生效等问题,因此部分厂商提供了公共DNS解决这个问题。

常见的公共dns有:

DNS 服务器 IP 提供方名称 提供方国家
8.8.8.8 google 美国
4.4.4.4 google 美国
223.5.5.5 阿里巴巴 中国
223.6.6.6 阿里巴巴 中国
114.114.114.114 114dns 中国
114.114.115.115 114dns 中国
2.1.3 两种方法优劣对比
方法名 实现简便程度 通用性 合计
HTTPDNS 7 7 14
公共DNS 9 1 10

备注:满分10分,分数越高说明方法优势越大

对上面对比做一个说明:

(1)HTTPDNS使用时需要开发者修改DNS解析流程,因此只适用于C/S架构的应用,对于PC浏览器、微信H5等场景不适用,程序编写也有一定的工作量,好在国内的HTTPDNS厂商都提供了封装好的SDK和示例代码供开发者使用和参考,大大降低了实现难度。

(2)使用public dns的方法通用性很低,因为需要每个客户都对自己终端的DNS服务器配置进行修改,由于需要面向庞大的、水平参差不齐的终端用户,这种方式对于开发者而言实施难度非常大。

2.2 通过客户端自身解决

对于客户端缓存结果不能更新的问题,可以通过强制刷新系统DNS缓存来删除老的解析结果。以windows系统为例,方法如下:

打开windows命令行,执行ipconfig/flushdns命令清空DNS缓存

screenshot

                        图二 Windows系统情况DNS缓存方法示意图

三、悲催的域名解析不生效问题

尽管权威DNS系统属于变更相对较少的一个底层服务,但系统管理员可能还会在以下几种情况下变更DNS服务器的域名解析记录:

(1)域名对应IP变更(替换、增加、减少等情况)

(2)接入CDN系统,增加域名的CNAME记录

(3)系统受到攻击时切换IP躲避攻击!!!

(4)其他需要变更的情形

修改解析记录后常见难题是:不生效

screenshot

                                   图三   域名解析不生效示意图

下面首先看看域名解析的流程。

四、域名解析过程分析

以常见的递归解析方式为例,说明解析流程

screenshot

                                图四  域名解析流程示意图

上图是相对完整的域名解析流程(假设各个环节的缓存没有命中):

1) 用户终端发起域名解析请求www.abc.com

2)本地递归域名服务器向根域名服务器(.)请求并得到.com域名服务器的IP地址

3)本地递归域名服务器向.com域名服务器请求并得到abc.com权威域名服务器的地址

4)本地递归域名服务器向abc.com发出www.abc.com的解析请求并得到返回结果

5)用户终端从本地递归域名服务器得到最终的解析结果

五、域名解析不生效根源

5.1 域名结果缓存环节分析

域名解析不生效(生效慢)是由于域名解析结果被缓存住,并且缓存结果短时间无法更新导致的。

域名解析可能在访问终端系统、本地递归域名解析服务器两个环节被缓存住,如下图所示。

screenshot

                               图五 域名解析结果缓存环节分析示意图

5.2 终端缓存特征

终端的缓存是由终端应用(如PC浏览器)控制的,一般情况下会遵循域名解析结果的TTL规范,也就是在域名有效期过期后会自动重新请求,因此这个时间是可预期的,也是可控的(通过修改权威TTL)。

5.3 递归域名服务器缓存特征

本地递归域名服务器一般由提供服务的ISP设置,服务器自身也是由ISP维护,公网上存在大量的递归域名服务器不遵循权威的TTL,导致我们的域名解析修改不生效(全球生效时间最长可能有72小时之久)。

由上面的分析可以知道,域名解析不生效最重要的诱因是递归域名服务器不能及时更新解析结果。

六: TIPS

耐心看到这里的读者必须予以奖励,这里提供几个域名解析的几个TIPS。

6.1 域名解析从入门到中级

看完这篇https://yq.aliyun.com/articles/58967就欧了。

6.2 无线场景下的域名服务器设置

Android/iOS在wifi接入场景下可以通过在系统的设置中找到修改DNS服务器的入口,但非wifi的网络制式接入(如2/3/4G网络)无法修改DNS服务器配置,因此当ISP为我们配置的默认递归域名服务器不合理时,就会碰到调度精确性的问题,这个问题可以参考移动场景下如何实现就近接入?

6.3 黑科技:解析实时生效方法

上面通过改进递归DNS设置(使用HTTPDNS或者配置公共DNS),可以确保域名解析结果在TTL过期后生效,但如果TTL设置时间较长(如10分钟),这时候我们仍然需要等待比较久的时间才能看到解析结果生效。

有没有更好的办法? 从第五节的分析来看,域名解析不生效的关键环节之一是递归DNS服务器缓存的域名解析结果需要等待TTL过期才会去权威更新,这个等待时间能否消除掉?

答案是肯定的。如果权威解析记录修改后,能够同步更新递归DNS的缓存记录,就可以实现解析记录的实时生效。

这种特性只能通过递归DNS和权威DNS配合才能实现,阿里云云解析即将发布支持解析记录修改实时生效的版本,敬请期待。

HTTPDNS产品页

HTTPDNS原理介绍

HTTPDNS快速开始

云解析产品页

目录
相关文章
|
6月前
|
域名解析 缓存 网络协议
阿里云DNS常见问题之阿里的域名解析不对如何解决
阿里云DNS(Domain Name System)服务是一个高可用和可扩展的云端DNS服务,用于将域名转换为IP地址,从而让用户能够通过域名访问云端资源。以下是一些关于阿里云DNS服务的常见问题合集:
|
域名解析 存储 缓存
DNS:DNS域名解析过程及原理
DNS:DNS域名解析过程及原理
546 1
|
域名解析 网络协议
教你如何把域名解析到自己的服务器上
今天无事说一说如何把自己的域名解析绑定到自己的服务器上。让访客们可以通过你的域名来访问你的网站。
25629 1
|
6月前
|
域名解析 存储 缓存
【域名解析DNS专栏】DNS缓存机制详解:如何提升域名解析速度
【5月更文挑战第21天】本文探讨了DNS缓存机制的原理及优化方法。DNS缓存是存储已解析域名与IP地址的临时数据库,能减少网络延迟,减轻服务器负担并提升用户体验。优化策略包括增加缓存容量,设置合理过期时间,使用智能DNS服务及定期清理缓存。文中还提供了一个Python示例,展示如何通过缓存提升域名解析速度。
672 2
【域名解析DNS专栏】DNS缓存机制详解:如何提升域名解析速度
|
6月前
|
域名解析 缓存 负载均衡
【域名解析DNS专栏】域名解析在CDN服务中的应用与优化
【5月更文挑战第30天】本文探讨了域名解析在CDN服务中的重要性,强调其对访问速度和稳定性的影响。文中提出了三种优化方法:使用智能解析以动态选择最佳节点,配置负载均衡保证服务稳定,以及利用DNS缓存提升访问速度。通过Python代码示例展示了基本的DNS解析过程,结论指出优化域名解析对于提升网站性能至关重要。
107 1
|
6月前
|
域名解析 缓存 网络协议
阿里云DNS常见问题之二级域名解析不成功如何解决
阿里云DNS(Domain Name System)服务是一个高可用和可扩展的云端DNS服务,用于将域名转换为IP地址,从而让用户能够通过域名访问云端资源。以下是一些关于阿里云DNS服务的常见问题合集:
|
6月前
|
域名解析 缓存 网络协议
阿里云DNS常见问题之DNS域名一直连不上如何解决
阿里云DNS(Domain Name System)服务是一个高可用和可扩展的云端DNS服务,用于将域名转换为IP地址,从而让用户能够通过域名访问云端资源。以下是一些关于阿里云DNS服务的常见问题合集:
|
6月前
|
域名解析 网络协议 CDN
DNS问题之域名解析点不开如何解决
DNS服务器是负责将域名转换为IP地址的服务,它是互联网上实现域名解析的关键基础设施;本合集将探讨DNS服务器的工作原理、配置方法和常见问题处理,帮助用户理解和优化DNS服务的使用。
|
6月前
|
域名解析 网络协议 应用服务中间件
云解析DNS问题之配置域名解析ip地址如何解决
DNS解析是指将人类可读的域名转换成机器可读的IP地址的过程,它是互联网访问中不可或缺的一环;本合集将介绍DNS解析的机制、类型和相关问题的解决策略,以确保域名解析的准确性和高效性。
100 1
|
6月前
|
域名解析 存储 负载均衡
DNS 域名解析系统
DNS 域名解析系统