今天遇到一个问题,是客户系统为linux(centos 5.6),但是对外网的域名全部无法解析出来,下面是排查记录。
1.首先检查系统负责解析域名文件及相关文件配置是否正确。下面是与域名解析文件相关的说明。
/etc/host.conf
当系统中同时存在DNS域名解析和/etc/hosts主机表机制时,由该/etc/host.conf确定主机名解释顺序。示例:
order hosts,bind #名称解释顺序
multi on #允许主机拥有多个IP地址
nospoof on #禁止IP地址欺骗
order是关键字,定义先用本机hosts主机表进行名称解释,如果不能解释,再搜索bind名称服务器(DNS)。
/etc/resolv.conf
该文件是DNS域名解析的配置文件,它的格式很简单,每行以一个关键字开头,后接配置参数。resolv.conf的关键字主要有四个,分别是:
nameserver #定义DNS服务器的IP地址
domain #定义本地域名
search #定义域名的搜索列表
sortlist #对返回的域名进行排序
/etc/resolv.conf的一个示例:
domain v01.cn
search www.v01.cn v01.cn.com
nameserver 202.96.128.86
nameserver 202.96.128.166
最主要是nameserver关键字,如果没指定nameserver就找不到DNS服务器,其它关键字是可选的。
/etc/hosts
设置IP地址与主机名对应表,可用该文件来进行主机名称解释。如:
#格式:IP地址 主机名 别名
127.0.0.1 localhost localhost.localdomain
192.168.1.1 debian debian
192.168.0.2 t02 t02.tiger
192.168.0.4 t04 t04.tiger
2.上一步检查后发现客户系统域名相关文件配置都是正确的,在检查其防火墙是否拦截了53端口,因为服务器需要域名解析要向外界dns服务器请求53端口。
linux下的iptables 检查策略请见 --http://tech.v01.cn/Linuxchangjianwenti/ruhezuohaoanquancelue/2012/0120/80.html
3.检查后防火墙全部允许通过,最后检查服务器网关发现服务器有两个网关,原来这台服务器是双线的,有两个IP分别是电信与网通,在域名解析的时候发现域名解析数据包在两个网关间相互发送,没有回包,所以造成了服务器对外解析域名不成功,即将服务器指向网通的网关删除后解析正常。
先用netstat -r 命令打印出网关列表
然后route del 删除另一个默认网关即可。
例如:route del default gw 网关IP