12月7日晚,Zitian Li同学报告freeshell访问异常。经初步检查得知是DNS服务器出现故障。通过网上的检测工具可以看出,从国内大部分DNS缓存服务器中都查不到我们的域名。

登陆服务器抓包,可以看出bind会给国内的DNS请求返回ServFail,但在本地通过环回地址可以正常得到DNS解析结果。使用ip addr列出服务器IP地址,可见之前手动添加的IP地址消失不见了。再看服务器uptime只有2天,故找到故障原因。

故障原因是服务器启动时没有添加额外的IP地址,BIND的不同view的同步需要这些额外的IP。所以说自启动以来,国内view中的slave zone一直处于同步失败的状态。在经过一个超时时间(约1天)后,BIND认为数据已过期,故对DNS请求返回ServFail,导致故障。

故障处理:

在/etc/network/interfaces中加入相应的规则。添加IP地址。重启BIND服务。

经验教训:

对待网络问题一定要慎重啊……除了确保配置能工作外,还要确保配置能够经过重启的考验。