前几日发现公司部分网站打不开,部分网站有时候能解析,有时候又不能,一开始以为是方正的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; };
};
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";
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";
};
type hint;
file "named.ca";
};
options {
directory "/var/named/";
};
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";
#};
# type hint;
# file "named.ca";
#};
options {
directory "/var/named/";
forward only;
forwarders {
219.232.48.61;
219.232.48.62;
202.106.0.20;
};
};
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的理解不够。所以出现上诉问题。
转载于:https://blog.51cto.com/coolerfeng/76440