前几日发现公司部分网站打不开,部分网站有时候能解析,有时候又不能,一开始以为是方正的DNS不稳定,后来独立接了一根线到笔记本电脑上,IP设为59.108.65.57/255.255.255.240,网关设为59.108.65.49,DNS用方正给的219.232.48.61和219.232.48.62,访问 [url]www.xplus.com.cn[/url],却一切正常。
但是用RH9做代理的机器却无法打开这个网站,分析应该是做代理的机器上的DNS有问题。
 
登录到proxy,检查设置,原来这台机器是安装了DNS服务,分析了/etc/named.conf发现只有本地解析的内容。
controls {
        inet 127.0.0.1 allow { localhost; } keys { rndckey; };
};
include "/etc/named.custom";
include "/etc/rndc.key"; 
zone  "0.0.127.in-addr.arpa" {
        type master;
        file  "0.0.127.in-addr.arpa.zone";
};
zone  "0.168.192.in-addr.arpa" {
        type master;
        file  "0.168.192.in-addr.arpa.zone";
};

zone  "localhost" {
        type master;
        file  "localhost.zone";
这些内容都只是对本地局域网做的正向和反向解析记录
那么对外网的DNS解析是如何实现的呢,仔细搜索配置文件,发现在文件头部有
include "/etc/named.custom";
原来这里引用了一个外部的配置文件。
接下来打开这个文件
zone  "." {
       type hint;
       file  "named.ca";
};
options {
        directory "/var/named/";
};
根据DNS的定义,这里是让服务器将本地无法处理的查询请求转到根DNS服务器进行,named.ca文件包含了互联网的13个根DNS的地址。
为了速度更加快,通常我们采用DNS转发,也就是将proxy的DNS指向ISP提供的DNS服务器,由上一级DNS来提供解析服务。这里需要修改/etc/named.custom文件(也可以把相关内容直接放在/etc/named.conf里面)
#zone  "." {
#       type hint;
#       file  "named.ca";
#};
options {
        directory "/var/named/";
        forward only;
        forwarders {
        219.232.48.61;
        219.232.48.62;
        202.106.0.20;
        };
};
forward only,只使用转发,下面填写转发地址。然后保存,需要重启DNS服务
这里注意是service named reload 而不是restart.或者rndc reload
然后我们在客户机上用nslookup查询,我们发现,可以正常解析原来不能访问的网址了。
到这里认识到,虽然以前proxy可以提供代理功能,由IPTABLES实现了地址转换,由RH9自带的bind9实现了DNS解析,但是默认的配置并不是最优的,虽然递归查询根服务器可以解析大部分网址,但是可能在国内ISP的DNS上做的解析有可能就解析不到。用DNS转发既能减少流量,又能加快速度。
对DNS的理解不够。所以出现上诉问题。