今天在linux服务器下遇到一个奇怪的问题:内网域名的ping结果居然和nslookup结果不一致,特将解决过程记录如下。
确认/etc/resolv.conf配置是否正确:没问题;
确认/etc/hosts中是否添加了额外域名:没问题;
确认域名服务器中正确的内网域名对应的IP,并和同事确认发现内网域名更新过,ping的结果指向了旧的IP,nslookup的解析结果正确;
确认本地域名缓存服务nscd状态:处于运行中,重启没有解决问题,看起来缓存还是很顽固的;
# service nscd status
nscd (pid 30993) is running...
# service nscd restart
Stopping nscd: [ OK ]
Starting nscd: [ OK ]
经google发现nscd的缓存文件清理可以用以下命令清理,运行,问题得以解决。
# ls /var/db/nscd/
hosts
# nscd --invalidate=hosts
# service nscd restart
具体请参考https://stijn.tintel.eu/blog/2012/05/10/how-to-really-flush-the-various-nscd-caches
总结:
linux服务器本地会有域名缓存以加快域名解析,centos下用的是nscd
ping一般会直接使用缓存的域名,nslookup会直接到域名服务器查询
本文出自 “真的自我” 博客,请务必保留此出处http://trueray.blog.51cto.com/5818481/1707575
解决linux下内网域名的ping结果和nslookup结果不一致
原文地址:http://trueray.blog.51cto.com/5818481/1707575