ttl值设置多少才合适

之前,公司用户的手机app用户出现了手机无法联网,移动、联通、电信。就是因为ttl值设置的问题。

服务器 阿里云 centos 6.5 

我们在解析域名时经常出现 TTL 这个字段,里面默认写的是10分钟。

另外,有时候我们PING某域名或IP的时候,会出现TTL= XXX。今天就这个问题细说如下:

一、什么是域名的TTL值?

TTL(Time-To-Live),就是一条域名解析记录在DNS服务器中的存留时间。当各地的DNS服务器接受到解析请求时,就会向域名指定的NS服务器发出解析请求从而获得解析记录;在获得这个记录之后,记录会在DNS服务器中保存一段时间,这段时间内如果再接到这个域名的解析请求,DNS服务器将不再向NS服务器发出请求,而是直接返回刚才获得的记录;而这个记录在DNS服务器上保留的时间,就是TTL值。

二、TTL值设置的应用:

1.增大TTL值,以节约域名解析时间,给网站访问加速。

一般情况下,域名的各种记录是极少更改的,很可能几个月、几年内都不会有什么变化。我们完全可以增大域名记录的TTL值让记录在各地DNS服务器中缓存的时间加长,这样在更长的一段时间内,我们访问这个网站时,本地ISP的DNS服务器就不需要向域名的NS服务器发出解析请求,而直接从缓存中返回域名解析记录。

国内和国际上很多平台的TTL值都是以秒为单位的,很多的默认值都是3600,也就是默认缓存1小时,这个值实在有点小了,难道会有人一个小时就改一次域名记录吗?您可以根据自己的需要把这个值适当的扩大,例如要缓存一天就设置成86400。Godaddy的TTL设置比较直观,但总共只有5个值可以选定,即时切换到高级设置模式也是如此,有点死板了。网站赢利环境所迫,LifeTyper.com的TTL值是设置成了最大值1周,设置成更大的值可能会有写不必要的麻烦,例如当您要更换空间时,这些旧的记录要很久才过期并被更新。

2.减小TTL值,以减少更换空间时的不可访问时间。

更换空间99.9%会有DNS记录更改的问题,因为缓存的问题,新的域名记录在有的地方可能生效了,但在有的地方可能等上一两天甚至更久才生效。结果就是有的人可能访问到了新服务器,有的人访问到了旧服务器。仅仅是访问的话,这也不是什么大问题,但如果涉及到了邮件发送,这个就有点麻烦了,说不定哪封重要信件就被发送到了那已经停掉的旧服务器上。

为了尽可能的减小这个各地的解析时间差,合理的做法是:

1)先查看域名当前的TTL值,我们假定是1天。

2)修改TTL值为可设定的最小值,可能的话,建议为1分钟,就是60。

3)等待一天,保证各地的DNS服务器缓存都过期并更新了记录。

4)设置修改新记录,这个时候各地的DNS就能以最快的速度更新到新的记录。

5)确认各地的DNS已经更新完成后,把TTL值设置成您想要的值,TTL=60还是太小了点。

记住,这一切都能起作用的前提,是那些DNS服务器完全遵守这些标准和规范,否则NS服务器上怎么设置TTL都是白搭,但目前来看还没发现这么不讲规矩的DNS服务器。

问题是,没有真正意义上的高速NS和DNS服务器。就像这里提到的,Dodaddy在国外评测拿到最高分,而在国内使用时速度比万网快不了多少;万网在国内速度表现突出,在国外的评测网站中得分却可能很低。如果您有钱像Google、微软那样在全世界部署大量的CDN加速服务器和NS服务器,那当然没问题,问题是这对绝大部分网站来说都不可能,国内国外不是不可兼得,而是很难。

也许有人以为可以通过给域名指定两个NS记录(一个国内一个国外)来提高解析速度,但这也是不可能的,因为只有在DNS服务器从第一个NS服务器那里获取记录失败时才会向第二个NS服务器发送解析请求。我所知道的一个最廉价和有效的提速方法,就是修改刚才上面说的域名记录的TTL值。

三、返回结果PING命令,修改其TTL值来防护安全:

在一般情况下我们通过ping对方让对方返回给您的TTL值大小,粗略的判断目标主机的系统类型是Windows系列还是UNIX/Linux系列,通常Windows系列的系统返回的TTL值在100-130之间,而UNIX/Linux系列的系统返回的TTL值在240-255之间,例如PING
www.ieeye.com返回的TTL是240,对方的系统很可能是Linux,而另外一个目标的TTL是120,那么说明它使用的系统也许是Windows

域名解析设置TTL多少合适?

什么是域名的TTL值?
 
TTL(Time-To-Live),就是一条域名解析记录在DNS服务器中的存留时间。当各地的DNS服务器接受到解析请求时,就会向域名指定的NS服务器(权威域名服务器)发出解析请求从而获得解析记录;在获得这个记录之后,记录会在DNS服务器(各地的缓存服务器,也叫递归域名服务器)中保存一段时间,这段时间内如果再接到这个域名的解析请求,DNS服务器将不再向NS服务器发出请求,而是直接返回刚才获得的记录;而这个记录在DNS服务器上保留的时间,就是TTL值。
 
域名DNS分两种,一种是权威域名服务器,域名注册商的服务器都为权威域名服务器,TTL值只能在权威服务器修改,还有一种域名解析服务器就是缓存DNS服务器,比如各地ISP上网设置的DNS服务器,它的作用主要是把域名解析结果缓存到本地,方便你查询。域名DNS的TTL值实际上就是各地的DNS缓存服务器多久去你的权威域名解析服务器(NS)获取一次你域名的解析IP。
 
那么域名解析的TTL只应该设置为多少合适呢,下面有两个建议,你可以结合自己参考一下:
 
一.增大TTL值,以节约域名解析时间,给网站访问加速。
 
一般情况下,域名的各种记录是极少更改的,很可能几个月、几年内都不会有什么变化。你可以增大域名记录的TTL值让记录在各地DNS服务器中缓存的时间加长,这样在更长的一段时间内,访问这个网站时,本地ISP的DNS服务器就不需要向域名的NS服务器发出解析请求,而直接从缓存中返回域名解析记录。

国内和国际上很多平台的TTL值都是以秒为单位的,很多的默认值都是3600,也就是默认缓存1小时,这个值实在有点小了,难道会有人一个小时就改一次域名记录吗?你可以根据自己的需要把这个值适当的扩大,例如要缓存一天就设置成86400。
 
二.减小TTL值,减少更换空间时的不可访问时间。
 
更换空间因为TTL缓存的问题,新的域名记录,在有的地方可能生效了,有的地方可能等上一两天甚至更久才生效。结果就是有的人访问到了新服务器,有的人访问到了旧服务器。如果原来的域名TTL值设置的小,各地的ISP域名缓存服务器服务器就会很快的访问你域名的权威DNS解析服务器,尽快把你域名的DNS解析IP返回给查询者。
 
这就是说如果想要解析速度,各地ISP的DNS服务器缓存你的域名,你就需要把TTL值设置大一些,如果想让域名更换空间或者IP后能尽快解析到新的IP上,就需要把TTL值设置小一些。
 
对于IP地址相对固定,或短期内不会变更IP地址的用户来说TTL值设置的大些如几个小时或更大些为宜。调大TTL值可以显著的提高域名的解析稳定性和速度。而对于近期有计划变更IP地址的用户需要提前把TTL值改小,以便使缓存在世界各地DNS服务器上的旧域名记录迅速过期,等IP地址固定下来后再把TTL值改大。

1,什么是DNS服务器?   
   互联网是由无数台服务器和PC连接在一起组成的,每个服务器都会有一个唯一的数字标识,叫IP地址,IP地址是数字表示的,比如218.231.156.61服务器,pc之间的通信协议用的是TCP/IP协议,在底层通信里面,通信双方都是凭借IP地址和对方联系的,并没有域名参与。域名是给人记忆用的,为了能够把人记得住的名字转换成机器认识的IP地址,就需要DNS服务器来做这个“翻译”。 
   简单讲,DNS服务器就是个“翻译”,或者说是个“字典”,用来把人容易记忆的域名对照翻译成机器使用的数字格式的IP地址。

2,什么是DNS记录? 
   域名有千千万,怎么样才能知道每个域名对应的IP地址呢?答案当然要到DNS服务器(域名服务器)去找,可是谁知道要到哪个DNS服务器去找啊?这就是DNS记录的作用,DNS记录用来明确指明这个域名与IP地址的对应关系保存在哪台DNS服务器中。 
   每个域名都要有DNS记录,最多可以有六条记录,一般用2条就足够。

3,如何更改DNS记录,或者说如何更改DNS服务器? 
   域名的DNS记录保存在顶级注册机构那里,例如.com .net保存在verisign那里。顶级注册机构一般不直接接受用户注册请求,域名注册要经过他们的“代理”即注册商来购买,修改DNS记录就需要到这些注册商那里修改。

4,修改了DNS,为何没生效? 
   这个问题有点儿复杂,为了说清楚这个问题,我们必须先搞清楚域名的解析过程,就是域名是如何翻译成IP地址的。

   举个例子:   
   当你在浏览器的地址栏输入 www.idcpcw.com 域名解析的过程就开始了:

   第一步:浏览器会查询这个域名与IP的对应关系是不是已经存在于 C:\windows\system32\drivers\etc\hosts 文件中,如果有,直接使用,寻找过程结束。如果没有,进行下一步

   第二步:浏览器询问本机预先设置好的域名服务器,一般用户是由ISP在联网成功后就分配好的。

   第三步:这个域名服务器(称为本地域名服务器)本身并不知道任何域名与IP的对应信息,但是它知道根域服务器的IP地址,所谓根域服务器就是最根源的12个服务器,他们保存了顶级域名的管辖信息,根域服务器会告诉所要查询的域名的IP数据到哪里去找。本地域名服务器就会根据这个线索找到域名的管辖服务器,然后再根据所提供的该域名的DNS记录找到这个域名的真正域名服务器(就是常说的DNS服务器,打个比方:字典),本地域名服务器从这个服务器取得IP信息后,保存在内存中,然后把IP地址返回给浏览器,中间还有很复杂的递归过程,不再赘述。

   在从“字典”取得IP数据的同时,有一个很重要的数据也一同返回,就是这个域名和IP对应关系的有效期,在这个有效期内,如果再有同样的域名请求翻译成IP地址,那这个本地域名服务器就不再到外面去找,而是直接把内存中上次就知道的IP地址返回给浏览器。直到有效期过了,它才会再次到外面去查询。

   同样如果第一次域名查询就失败了,在域名设置的有效期内,该本地域名服务器也不会再去外面找,而是直接告诉你,“这个域名找不到IP地址”。 
好了,域名和IP的查找过程简单讲就是这样,那再来回答问题:修改了DNS,为何没生效? 答案很简单:再等等,就生效了 

   那你要问,要等多久?有两个环节决定了等待的时间有多长。

   第一个环节就是DNS记录的生效时间,因为域名的DNS记录保存在顶级注册机构哪里,更新不会是实时的,以前要几个小时才会更新,现在不用这么久,顶级域名要快些,几分钟即可,国内要慢些。

   第二个环节是关键,就是这个域名的A记录原来的有效期有多长?你知道吗? 可能你自己都不知道。 
   一般的注册商会设置成1小时,有的会几个小时。 
   如果你原来的域名A记录的有效期是几个小时,那你现在的改动,也得几个小时以后才会生效,前面讲了,本地域名服务器有缓存的。不超过有效期,是不会获取最新变动的。 
   所以,看清楚原来的设置,就是TTL的设置是多少(单位是秒,3600秒=1小时) ,你就知道要多久才会生效了。

5,TTL是怎么回事? 
   TTL就是 Time-to-live的缩写,用来表明域名和IP对应关系在多长时间内有效,过了有效期就要重新去查询。 
   TTL时间越长,缓存时间越长,更新越不容易及时生效。 
   TTL设置的小一些,生效时间就会快一些。
 

域名解析的步骤

在输入网址后,域名解析通常所需步骤如下:

  1. 第一步:客户机提出域名解析请求,查找本地HOST文件后将该请求发送给本地的域名服务器。
  2. 第二步:当本地的域名服务器收到请求后,就先查询本地的缓存,如果有该纪录项,则本地的域名服务器就直接把查询的结果返回。
  3. 第三步:如果本地DNS缓存中没有该纪录,则本地域名服务器就直接把请求发给根域名服务器,然后根域名服务器再返回给本地域名服务器一个所查询域(根的子域)的主域名服务器的地址(例如请求域名为.com域,则返回负责.com域解析的主域名服务器——辅助服务器)。
  4. 第四步:本地服务器再向上一步返回的域名服务器发送请求,然后接受请求的服务器查询自己的缓存,如果没有该纪录,则返回相关的下级的域名服务器的地址。
  5. 第五步:重复第四步,直到找到正确的纪录。
  6. 第六步:本地域名服务器把返回的结果保存到缓存,以备下一次使用,同时还将结果返回给客户机。

文字可能很难理解,网民们是伟大的,看到这张图应该很形象的演示了上述过程:


本地DNS向其他DNS服务器发送的查询请求可能有:递归查询和迭代查询两种,示例如下:

递归查询

迭代查询

DNS TTL值

通过前文的说明,DNS会将最终域名解析的结果缓存至本地。那么当域名对应的解析IP变化时,如何保证用户的缓存快速过期?

这就涉及到一个问题,域名在解析时设置的DNS缓存过期时间是多少——TTL(Time-To-Live)。

TTL(Time-To-Live),简单的说它表示一条域名解析记录在DNS服务器上缓存时间.当各地的DNS服务器接受到解析请求时,就会向域名指定的DNS服务器发出解析请求从而获得解析记录;在获得这个记录之后,记录会在DNS服务器中保存一段时间,这段时间内如果再接到这个域名的解析请求,DNS服务器将不再向DNS服务器发出请求,而是直接返回刚才获得的记录;而这个记录在DNS服务器上保留的时间,就是TTL值。

所以一般更新域名解析的步骤如下:

  1. 先查看域名当前的TTL值。
  2. 修改TTL值为可设定的最小值,建议为60秒。
  3. 等待一天,保证各地的DNS服务器缓存都过期并更新了记录。
  4. 设置修改DNS解析到新的记录,这个时候各地的DNS就能以最快的速度更新到新的记录。
  5. 确认各地的DNS已经更新完成后,再TTL值设置成常用的值(如: TTL=86400)。

不过为毛公司切换域名解析时速度飞快?这个明天得咨询一下孔总!

看一下我这个xiaoxiaozi.com域名,在dnspod后台设置的ttl值示意图:

参考资料:

维基百科——根域名服务器
百度百科——域名解析词条
百度知道——dns域名解析过程
SOSO百科——根域名解析服务器
DNS域名解析过程

TTL值的含义以及与域名DNS
TTL值的区别
 

时间: 2024-10-02 23:58:11

ttl值设置多少才合适的相关文章

NGINX白名单功能,ngx_http_limit_conn_module和ngx_http_limit_req_module值设置多少才合适呀?

要根据不同的应用慢慢学习测试? 我现在设置的10左右,看看再说吧... #增加限制规则,如果不能正常访问,则需要调节这两个值 --20170217 #增加ip白名单功能 geo $whiteiplist { default 1; 127.0.0.1 0; 10.0.0.0/8 0; 11.14.0.16 0; } map $whiteiplist $limit { 1 $binary_remote_addr; 0 ""; } limit_req_zone $limit zone=qps

TTL值最大值和默认值是多少

  一.TTL的默认值是多少? 不同的操作系统,它的TTL值是不相同的.这里和大家谈谈一些常用的操作系统的默认TTL值,默认情况下,Linux系统的TTL值为64或255,Windows NT/2000/XP系统的TTL值为128,Windows 98系统的TTL值为32,UNIX主机的TTL值为255.域名的dns解析默认的TTL值一般是60. 二.操作系统的TTL最大值: TTL最大值为255,如UNIX操作系统的TT值初始默认TTL值就是225.不同的系统最大值也是有所不同,对于实验室环境

微信朋友圈的图片上传,多图上传怎么去撸才合适?我们一起来实现吧!

微信朋友圈的图片上传,多图上传怎么去撸才合适?我们一起来实现吧! 图片上传是非常常见的功能,而多图上传在大多数应用中也是非常常见的,比如微信的朋友圈,微博的动态,都是有九宫格图片的,那这里肯定涉及了多图上传,所以今天我们来一起撸一下,怎么去思考这个实现逻辑! 这里我想到的思路是比较简单的,首先,我们有一个按钮,按钮是上传图片,点击之后弹出某个界面进行图片的选择,一般是九张图片或者十二张,选完之后就直接上传了,大致的流程应该是这个样子,那我们首先来写个按钮 activity_main.xml <?

datagridview根据当前焦点单元格的值设置行格式的问题

问题描述 datagridview根据当前焦点单元格的值设置行格式的问题 如图所示,我需要根据"选中状态"的值来设置该行格式,选中就使整行变绿,我用的是CellValueChanged事件,但只有当该单元格失去焦点后才触发改变格式,怎么样才能在处于编辑时,只要勾选就触发格式改变呢? 解决方案 CurrentCellDirtyStateChangedhttps://msdn.microsoft.com/zh-cn/library/system.windows.forms.datagrid

安卓开发-Android:minsdkversion现在设置多少比较合适?

问题描述 Android:minsdkversion现在设置多少比较合适? 随着安卓不断丰富,Android:minsdkversion现在设置多少比较合适? 解决方案 这个属性的设置具体要看你项目的实际情况. minsdkversion的区别在于,如果设置的值越高,也就是Android SDK越新,你就在代码里能使用更新.更丰富的API:如果项目要求是面向很多的用户,为了适应更多的手机,那么就需要设置低一些. 正如楼上所说,现在手机基本都是4.0(4.0应该对应的版本号是14)以上的安卓系统.

防止黑客用TTL值鉴别你的系统

使用ping命令,通过返回的TTL值可以判断主机的操作系统.如果TTL值为128就可以认为目标主机的操作系统是Windows NT/2000,如果TTL值是32则认为目标主机操作系统是Windows 95/98,如果TTL值是255/64就认为是UNIX操作系统.入侵者很喜欢使用ping命令,既然他们相信TTL值反映的结果,那么我们可以通过修改TTL值来欺骗入侵者. 打开记事本文件,编写批处理文件命令: @echo regedit4>>changeTTL.reg @echo.>>c

网页应该设计为多少像素才合适?

许多的网页设计在进行网页布局设计时,进行界面网页的宽度尺寸设计都比较迷茫,800*600尺寸及1024*768尺寸的分辨率下,网页应该设计为多少像素才合适呢?太宽就会出现水平滚动条了,下面我们就网页设计的标准尺寸进行讲解. 网页设计标准尺寸: 1.800*600下,网页宽度保持在778以内,就不会出现水平滚动条,高度则视版面和内容决定.2.1024*768下,网页宽度保持在1002以内,如果满框显示的话,高度是612-615之间.就不会出现水平滚动条和垂直滚动条.3.在ps里面做网页可以在800

什么是TTL值?

TTL值全称是"生存时间(Time To Live)",简单的说它表示DNS记录在DNS服务器上的缓存时间. 要理解TTL值,请先看下面的一个例子:假设,有这样一个域名myhost.abc.com,对应IP地址为1.1.1.1,把它的TTL设为3600秒,这个域名或称这条记录存储在一台名为dns.abc.com的DNS服务器上. 现在有一个用户在浏览器中键入以下地址(又称URL):http://myhost.abc.com 这时会发生什么呢? 该访问者指定的DNS服务器(或是他的ISP

jquery如何根据值设置默认的选中项

 这篇文章主要介绍了jquery如何根据值设置默认的选中项,需要的朋友可以参考下  代码如下: $("#objtype option[value='{$_GET[objtype]}']").attr("selected",true);  $("#charttype option[value='{$_GET[charttype]}']").attr("selected",true);