服务器:RedHat Enterprise Linux
版本:5.5
做了双网卡绑定。
最近生产服务器的DNS又不解析了,与第三方系统交互的通知都没发出去,临时把域名用nslookup解析出来,配置在hosts里。但是这样不能解决根本问题,要找到原因,于是开始检查……
服务器上的resolv.conf文件配置如下:
nameserver 114.114.114.114
nameserver 180.76.76.76
Linux下设置DNS已经是熟得不能再熟了,而且这些都是知名的DNS,稳定性久经考验。唯一的解释就是配置文件没有生效。
上网找了一些资料,说redhat每次重启resolv.conf会被网卡的设置覆盖,如果网卡没指定DNS1和DNS2,resolv.conf会被清空。我检查了一下,网卡没设置DNS,但是resolv.conf没被清空。不管这么多,先尝试下。设置后重启网卡,依旧不能解析。
最后没办法了,只有研究Linux下DNS解析原理。经过不断地查找,在etc目录下的nsswitch.conf的配置文件引起我的注意。nsswitch.conf(name service switch configuration,名字服务切换配置)规定通过哪些途径以及按照什么顺序通过这些途径来查找特定类型的信息。还可以指定某个方法奏效或失效时系统将采取什么动作。看了文件说明,发现这么一行:
hosts:files
这不就是说解析域名用hosts文件吗,但是怎么只有指定hosts呢?如是把这一行改为:
hosts:files dns nisplus
保存退出。再ping一下域名,问题解决了!
nsswitch.conf更多说明可见:nsswitch.conf文件详解
发表回复