一次DNS配置失效的解决过程
公司搬迁并从机房拉回一批服务器,放在办公司的小机房中做内网研发的机器使用。于是吩咐小弟安装操作系统,并简单的做一些kvm虚拟化。配置完成后,高高兴兴的简单处理下机器,就开始使用了。额哦,突然同事说,怎么不能上外网呀?都ping不通百度。忙碌的我怎么能管得了这些事情,于是交给小弟去处理。半天过去,还是没有结果,小弟也忙啊。于是我就亲自动手,排查过程如下
一、检查是否能能ping通内网和外网;
于是打开一个终端,登录稳定运行很久的机器,ping此次出问题的主机,发现都能ping通,也能通过ssh命令连接进去。进入问题主机后,ping其他内网主机,也都能ping通,表示内网没有问题。
在问题主机中试着“ping www.baidu.com”,提示“ping: unknown host www.baidu.com”,从稳定运行的机器中ping百度,发现能ping通,还能看到解析出来的ip,拿着这个ip在问题主机中ping命令测试下,能ping通这个外网ip。
初步分析,是域名解析出现问题。
二、排查域名解析服务;
网上大神有各种关于“域名是如何解析”这种类似的文章,在此略过不表。现在我的思路就是:1、主机本地dns配置有问题,2、路由器dhcp服务给错了dns服务器地址。不过第二个想法很快就略过了,因为其他稳定的主机用的路由器和问题主机是同一个路由。只剩下主机本地的dns解析配置出现问题了
排查过程如下:
1、网卡配置有问题;
2、有其他的软件作祟,比如“NetworkManager”这个软件。
3、可能还有其他的原因,需要继续排查
解决问题过程:
1、检查网卡的配置;
于是进去网卡配置的目录,检查下网卡配置,静态ip配置,ip、网关、掩码、dns服务器,都没有问题。检查下/etc/resolve.conf(可以指定dns服务器,重启网卡后好像会重新写入获取到的dns服务器地址)这个配置文件,获取到的dns服务器地址也没有问题,于是开心的再进行尝试“ping www.baidu.com”,失望了,还是提示“ping: unknown host www.baidu.com”;啊,为什么会这样,配置的没有问题呀。
2、既然刚刚配置的没用,就先关了“NetworkManager”这个软件吧。使用命令“/etc/init.d/NetworkManager stop ”和“chkconfig NetworkManager off”将此服务关闭。然后重启网卡,继续ping百度进行测试,依然提示是“ping: unknown host www.baidu.com”,要崩溃了,还有什么地方会有问题呢
3、经过上面的一番折腾,发现无论怎么配置,主机都不能通过dns服务器ping通外网。于是在主机中的“/etc/hosts”文件中添加一行 “220.181.57.216 www.baidu.com”,再次尝试ping百度进行测试,这次就能ping通了。恩,暂时的结论是:此问题主机解析域名还是能通过本地的hosts文件进行解析,但是不能通过dns服务器进行解析。
于是百度了一下,这个问题,好多的答案,而且每一个搜索结果中,名字都差不多,查看了很多发现内容都大同小异,终于找到一些不一样的搜索结果,比如这篇文章就比较清新《Linux之nsswitch and pam》 ,很好的一篇文章。在此用到的就是这样一段话:“nsswitch全称为: network service switch,其是一个通用框架,与各种类型存储交互的公共实现,实现名称解析服务. ”,就是这个,然后找到/etc/nsswitch.conf这个文件,打开发现其中一行“hosts: files ”,只写了host,那就明白了,怪不得会出现问题,将其修改为“hosts: files dns”,然后再重启下网卡,删除之前写的hosts文件中自己添加的那行,尝试ping百度进行测试,这次就能ping通了。终于将问题解决。
后记:百度查找文章真的很痛苦,很多文章都是一样一样的。为什么会出现这篇文章的问题。是因为之前在某个文章里面查了到解决ssh连接慢的问题的时候,博主推荐该的配置,推荐的有问题。也怪自己学艺不精,看别人推荐的配置就修改,改出问题了。
- 点赞
- 收藏
- 关注作者
评论(0)