一、DNS解析的背景
由于DNS域名在计算机处理比较麻烦,所以要把它解析成标准的ip,比较ip格式是固定的,计算机处理起来比较方便。
二、DNS解析的过程
- 首先,会在本地hosts表解析;
- 如果hosts表找不到,就会到本地域名服务器解析,本地域名服务器具体是哪个,可以从配置中看到。如果是windows,可以用ipconfig查看,DNS服务器这一项就是本地域名服务器,如果是linux,可以查看/etc/resolv.conf文件中的相应配置;
- 本地域名服务器如果找不到,就会向根域名服务器发起解析,这个过程是迭代解析的过程;(如果是局域网,一般就没有这个过程,只是到本地域名服务器解析就结束了);
三、DNS域名相关linux命令
- dig(不走本地hosts表)
- nslookup(不会先走本地hosts表)
- ping会走本地hosts表
四、named服务相关配置
- 主配置文件 named.conf
- options中directory指定了zone文件存放位置,also-notify指定了通知更新的(master需要填),allow-transfer(master需要)可以指定那些slave可以来获取zone文件。zone标签里面可以指定master(slave需要)
- zone文件(真正的解析规则文件)
五、DNS缓存清除(linux本身是没有dns缓存的,要缓存得使用nscd等服务实现)
- linux环境下, /etc/init.d/nscd restart(前提是OS端有nscd缓存服务启动,常用的dns缓存服务有nscd,bind)
- windows环境下, ipconfig/flushdns
六、dig服务返回详解
- answer section中返回端数字是秒,60即60秒;
- dig -x ip,可以根据ip查到对应的域名
七、linux下resolv.conf文件详解
resolv.conf的关键字主要有四个,分别是:
- nameserver //定义DNS服务器的IP地址
- domain //定义本地域名
- search //定义域名的搜索列表
- sortlist //对返回的域名进行排序
search和domain表示当我们请求解析的域名写的不完整时,比如我们想要请求解析www.sohu.com,但我们只使用www(nslookup www),这时domain和search就会将其补齐为www.sohu.com。另外,domain和search同时配置时,谁在后面谁就生效。通常可以用来配置后缀,比如sznsh-op.com,这时候ping xxx,就会自动补全为ping xxx.sznsh-op.com。(经测试,发现nslookup也会补全,dig则不会。)
options关键字可以添加一些参数,场景如下
- options timeout:1,如果出现长时间域名查找问题,可以定义一个超时时间,超过之后会使用备用域名服务器;
- otions attempts:1 重试次数,超过次数则使用备用域名服务器
以上两个参数,默认情况下前者是5s后者是2次。
八、关于dns缓存时间的小结
-
1、浏览器DNS缓存的时间跟DNS服务器返回的TTL值无关。
-
2、Java的网络应用程序的DNS缓存是由JVM的缓存策略控制的
-
3、OS缓存会参考DNS服务器响应的TTL值,但是不完全等于TTL值。