美文网首页服务器方面
修改linux 本地DNS缓存

修改linux 本地DNS缓存

作者: 我是你军哥 | 来源:发表于2017-12-08 00:46 被阅读7次

    DNS的工作原理

    DNS提供的服务是用来将域名转换为IP地址的工作。TCP/IP协议详解中给的定义是:它是一种用于TCP/IP应用程序的分布式数据库,它提供主机名字和IP地址之间的转换及有关电子邮件的选路信息。属于应用层协议。

    DNS工作流程

    DNSProcess.png

    在浏览器中输入www.qq.com域名,操作系统DNS进程会检查自己的本地dns缓存,如果存在对应ip,直接告诉浏览器,没有缓存进入下一步

    • 检查本地的hosts文件是否有这个网址映射关系,如果有,就先调用这个IP地址映射,完成域名解析。

    • 如果hosts里没有这个域名的映射,则查找本地DNS服务器(TCP/IP参数中设置的首选DNS服务器,在此我们叫它本地DNS服务器)配置,得到dns server 10.10.10.10,发送消息给本地dns,让dns查找, 如果要查询的域名,不由本地DNS服务器区域解析,但该服务器已缓存了此网址映射关系,则调用这个IP地址映射,完成域名解析,此解析不具有权威性,如果缓存列表没有,下一步

    • 如果本地DNS服务器本地区域文件与缓存解析都失效,则根据本地DNS服务器的设置(是否设置转发器)进行查询,如果未用转发模式,本地DNS就把请求发至13台根DNS,根DNS服务器收到请求后会判断这个域名(.com)是谁来授权管理,并会返回一个负责该顶级域名服务器的一个IP。本地DNS服务器收到IP信息后,将会联系负责.com域的这台服务器。这台负责.com域的服务器收到请求后,如果自己无法解析,它就会找一个管理.com域的下一级DNS服务器地址(qq.com)给本地DNS服务器。当本地DNS服务器收到这个地址后,就会找qq.com域服务器,重复上面的动作,进行查询,直至找到www.qq.com主机。

    • 如果用的是转发模式,此DNS服务器就会把请求转发至上一级DNS服务器,由上一级服务器进行解析,上一级服务器如果不能解析,或找根DNS或把转请求转至上上级,以此循环。不管是本地DNS服务器用的是转发,还是根提示,最后都是把结果返回给本地DNS服务器,由此DNS服务器再返回给客户机。

    DNS缓存 nscd

    ubuntu服务器一般默认安装nscd,nscd(Name Service Cache Daemon)是一种能够缓存 passwd、group、hosts 的本地缓存服务,分别对应三个源 /etc/passwd、/etc/hosts、/etc/resolv.conf。其最为明显的作用就是加快 DNS 解析速度,在接口调用频繁的内网环境建议开启。

    首先查看nscd服务是否开启

    ps -e |grep nscd
    

    nscd 默认配置文件位置 /etc/nscd.conf

    # 日志文件
    #logfile        /var/log/nscd.log
    # 调试级别
    debug-level     5
    # 等待请求的线程数
    threads         6
    # 最大线程数
    max-threads     128
    # 运行用户
    server-user     nscd
    paranoia        no
    # 禁用passwd缓存
    enable-cache    passwd      no
    # 禁用group缓存
    enable-cache    group       no
    # 启用hosts缓存
    enable-cache    hosts       yes
    # 指定缓存命中项的TTL,单位为s
    positive-time-to-live   hosts   5
    # 指定缓存未命中项的TTL,单位为s
    negative-time-to-live   hosts       20
    # 散列表大小
    suggested-size  hosts       211
    # 启用hosts文件的修改情况检查
    check-files     hosts       yes
    persistent      hosts       yes
    shared          hosts       yes
    # 最大缓存库大小
    max-db-size     hosts       33554432
    

    通过service nscd start开启
    查看nscd dns缓存列表
    想添加dns缓存,可以修改本地hosts 在/etc/hosts,保存
    通过下面命令查询,是否缓存到本地dns列表

    nscd -f hosts
    

    相关文章

      网友评论

        本文标题:修改linux 本地DNS缓存

        本文链接:https://www.haomeiwen.com/subject/ntesixtx.html