Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1216957
  • 博文数量: 220
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1769
  • 用 户 组: 普通用户
  • 注册时间: 2015-03-13 16:19
个人简介

努力, 努力, 再努力

文章分类

全部博文(220)

文章存档

2018年(8)

2017年(46)

2016年(75)

2015年(92)

我的朋友

分类: 系统运维

2016-11-23 10:45:18


参考链接:linux开启nscd服务缓存加速

 

. 环境描述

      1. 操作系统: CentOS release 6.5 (Final)

      2. 内核版本:2.6.32-431.el6.x86_64

      3. 应用系统:apache-tomcat-7.0.57

. 故障描述

       1. 发现应用系统apache-tomcat 不能对外发送邮件,catalina.out 总是有异常:

              SendFailedException: Send failure Unknown SMTP host: mail.xxxx.com

   2.  dig mail.xxxx.com 失败,发现/etc/resolv.conf 内容为空,将该文件内容补, 添加nameserver, dig mail.xxx.com , nslookup mail.xxx.com 正常.

              ping telnet ww.baidu.com 80提示名称和服务未知


   3. 故障分析: dig , nslookup命令正常返回域名的IP, 说明该主机与dns之间的通信是正常的。

        但问题是ping , telnet  域名, 这些命令却不能正常解析域名

        说明ping, telnet这些命令对域名解析的过程与dig , nslookup是不一样的。

. 解决步骤

         1. 在另一台CentOS6.5 ping 就是正常的

       2. strace命令可以观察linux下一个命令的详细执行过程,包括打开哪些文件,有哪些系统调用,一目了然

              通过命令strace ping –c 1 分别在故障机与正常机分别执行,对比发现两台主机都去读/var/run/nscd/socket文件,不同的是,正常机找不到这个文件,故障可以找到这个文件。

              百度nscd, 原来这是一个linux下的缓存服务,可以缓存passwd, group, hosts.

 

        3. 至此,猜测可能是由于linux 本地dns缓存导致的故障.

   4. 清除dns缓存: nscd -i hosts, ping, telnet 域名正常
    另一种方法:/etc/init.d/nscd restart 也应该可以,未验证

. 其他

         1. 当发现/etc/resolv.conf 内容为空时,再查该文件的修改时间为零晨3: 32,因此怀疑系统可能是遇到入侵。

            查看当前进程,未发现可疑的进程。

       2. 最近几天启动的进程,查了下相关文件,文件大小与其他centOS6.5上的大小到一致。没有可疑进程,文件又没有被修改过,入侵的可能性不大。

 

       3. 发现故障主机里有一个/sbin/dhclient -1 –q –lf 启动时间为3:32, 正好在故障时间段内,因此怀疑可能是dhclient 启动引起/etc/resolv.conf为空

       4. /var/log/message里有dhcp 客户端信息,只有获取IP,没有获取dns信息

 

         dhclient[17060]: DHCPDISCOVER on usb0 to 255.255.255.255 port 67 interval 9

         dhclient[17060]: DHCPOFFER from 169.254.95.118

         dhclient[17060]: DHCPREQUEST on usb0 to 255.255.255.255 port 67 (xid=0x5a2083cd)

         dhclient[17060]: DHCPACK from 169.254.95.118 (xid=0x5a2083cd)

         dhclient[17060]: bound to 169.254.95.120 -- renewal in 277 seconds

         dhclient[17097]: DHCPREQUEST on usb0 to 169.254.95.118 port 67 (xid=0x5a2083cd)

         dhclient[17097]: DHCPACK from 169.254.95.118 (xid=0x5a2083cd)

         dhclient[17097]: bound to 169.254.95.120 -- renewal in 243 seconds.

         5. 是否是/sbin/dhclient引发的故障,还不能完全确定。

 

. 相关知识:

       1. ps -eo comm,lstart   可以查看进程何时启动的

       2. strace ping –c 1 可以跟踪一个命令的执行过程

3. 查看dhclient 执行后获得哪些信息:

        方法1 ifconfig eth1 # 
        方法2,显示更详细 cat /var/lib/dhclient/dhclient.leases
4. nscd会缓存三种服务passwd group hosts
    所以它会记录三个库,分别对应源/etc/passwd, /etc/hosts  /etc/resolv.conf每个库保存两份缓存,一份是找到记录的,一份是没有找到记录的。每一种缓存都保存有生存时间(TTL)。其作用就是在本当中增加cache ,加快如DNS的解析等的速度
参考链接:
5. linux下清除dns缓存的命令:
        nscd -i hosts
        /etc/init.d/nscd restart
 

 

阅读(9843) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~