在有些时候,我们自己并不需要进行域名解析操作。但是,需要协助其他人解析,这就要用到转发DNS服务了。转发DNS主要是通过forwarder功能实现,这是一种转发机制,当本地DNS服务器被设置为转发时,所有非本域的域名查询,或者是在缓存中无法找到的域名查询都将转发到指定的DNS服务器上,有这台指定的DNS服务器来完成域名解析工作,而转发DNS将存贮查询到的信息到本地缓存中,在缓存生命周期内,如果有相同的域名再次查询就直接从本地缓存中获得数据,不需要去指定的DNS查询了,这样就降低了网络流量,提高了查询效率。
named.conf的配置大致如下:
key "rndc-key" {
algorithm hmac-md5;
secret "MUJbEnY6WFnkUg1waSD3lQ==";
};
controls {
inet 127.0.0.1 port 953
allow { 127.0.0.1; } keys { "rndc-key"; };
};
options {
forwarders { 202.106.0.20;202.106.46.151; };
};
如上就是配置DNS转发服务器的全部配置,我们使用的机器的DNS可以设置为这台转发DNS服务器的IP,但所有的DNS查询都将转发到forwarders指定的两个DNS上。这台转发DNS只帮助反悔结果给用户。因此它的所有查询都不是权威的。
当转发DNS与forwarders指定的DNS之间无法通信时,它将采取其它方式解析,如果我们并希望它那么做,就必须在options中指定出来。
配置信息如下:
options {
forwarders { 202.106.0.20;202.106.46.151; };
forward only;
};
在比较高的bind版本中,我们还可以实现只针对某个域名查询进行转发,其它的使用本地查询。
配置如下:
key "rndc-key" {
algorithm hmac-md5;
secret "MUJbEnY6WFnkUg1waSD3lQ==";
};
controls {
inet 127.0.0.1 port 953
allow { 127.0.0.1; } keys { "rndc-key"; };
};
options {
directory "/usr/local/named/dns/zone";
pid-file "/usr/local/named/dns/named.pid";
};
zone "." IN {
type hint;
file "named.root";
};
zone "localhost" IN {
type master;
file "localhost.zone";
allow-update { none; };
};
zone "0.0.127.in-addr.arpa" IN {
type master;
file "localhost.rev";
allow-update { none; };
};
zone "xiaocui.com" {
type forward;
forwarders { 202.106.46.151;202.106.0.20; };
};
那么当我们查询xiaocui.com的时候,DNS就会转发给forwarders指定的DNS来进行查询。其它的域名查询都将在本地进行。