zoukankan      html  css  js  c++  java
  • 使用nsswitch控制linux dns解析顺序

    参考:1、DNS原理入门参考:http://www.ruanyifeng.com/blog/2016/06/dns.html

    2、http://cn.linux.vbird.org/linux_server/0350dns.php

    一、

    域名解析与以下四个文件有关:

    /etc/hosts

    /etc/host.conf 

    /etc/resolv.conf

    /etc/nsswitch.conf

    还有

    /etc/hosts.allow 

    /etc/hosts.deny

    其中nsswitch.conf与系统获取解析的顺序有关

      nsswitch全称为: network service switch,其是一个通用框架,是各种类型存储交互的公共实现,实现名称解析服务
      例如: 用户名到ID,或者ID到用户名,再或者IP到域名的查找方式。nsswitch加载了各存储的api接口,并以模块方式装载进nsswitch中,当程序发起nsswitch的api调用时,nswitch会自动完成到各存储中查找内容
      目前观察到的情况是,当nscd服务关闭时,nsswitch可以控制dns(/etc/resolv.conf)和files(/etc/hosts)的解析顺序,顺序考前的优先,一般配置顺序是:hosts:     files dns。但是当开启nscd服务之后,不论nsswitch怎么配置,都是nscd缓存优先。nscd缓存的数据库文件位置:/var/db/nscd/hosts
      
    # more /etc/nsswitch.conf | grep hosts
    # hosts:     db files nisplus nis dns
    # hosts:      dns files db
    hosts:      dns db files

    hosts dns #只使用/etc/resolv.conf查询,不使用/etc/hosts

    hosts files #只使用/etc/hosts查询

     二、getent命令

    从nisswitch库中查找记录:
     getent hosts www.baidu.com

    三、DNS 使用的 port number

    好了,既然 DNS 系统使用的是网络的查询,那么自然需要有监听的 port 啰!没错!很合理!那么 DNS 使用的是那一个 port 呢?那就是 53 这个 port 啦!你可以到你的 Linux 底下的 /etc/services 这个档案看看!搜寻一下 domain 这个关键词,就可以查到 53 这个 port 啦!

    但是这里需要跟大家报告的是,通常 DNS 查询的时候,是以 udp 这个较快速的数据传输协议来查询的, 但是万一没有办法查询到完整的信息时,就会再次的以 tcp 这个协定来重新查询的!所以启动 DNS 的 daemon (就是 named 啦) 时,会同时启动 tcp 及 udp 的 port 53 喔!所以,记得防火墙也要同时放行 tcp, udp port 53 呢!

    参考

    LINUX DNS解析的3种修改方法~

    1.HOST 本地DNS解析

    vi /etc/hosts

    添加规则 例如:

    223.231.234.33 www.baidu.com

    2.网卡配置文件DNS服务地址 

    vi /etc/sysconfig/network-scripts/ifcfg-eth0

    添加规则 例如:

    DSN1='114.114.114.114'

    3.系统默认DNS配置

    vi /etc/resolv.conf

    添加规则 例如:

    nameserver 114.114.114.114

    系统解析的优先级 
    1>2>3

     

    /etc/resolv.conf配置里的search含义

    search local.xx local.yy

    当nslookup www查询失败时,会继续查询www.local.xx,如果仍然失败,继续查询www.local.yy

  • 相关阅读:
    JS使用 popstate 事件监听物理返回键
    JQ判断div是否隐藏
    SQL Server DATEDIFF() 函数
    取消a或input标签聚焦后出现虚线框
    C#定时任务
    C# 保留N位小数
    C#打印单据
    SQL语句创建函数
    SVN检出新项目
    解决jQuery的toggle()的自动触发问题
  • 原文地址:https://www.cnblogs.com/shengulong/p/7019260.html
Copyright © 2011-2022 走看看