前阵子将服务器改成通过ipfilter+ipnat+dhcp——freebsd5.4下ipfilter+ipnat包过滤、转发和DHCP服务器架构笔记,但最近感觉服务器时常会掉线,就在服务器再开了个dns缓存服务,通过缓存希望能缓解一下目前的状况。
首先介绍在freebsd上如何建立高速dns缓存服务器,引用freebsd中文手册中的话:
缓存域名服务器是对任何域都不提供权威解析的域名服务器。 它自己简单地完成查询, 并记住这些查询以备后续使用。 要建立这样的服务器, 只需像平时一样配置一个域名服务器, 而不配置域就可以了
安装如下:
所使用的软件是BIND,安装完freebsd6.0后BIND是自动安装好的,版本为BIND9,路径一般为/etc/namedb。freebsd5.2及更早版本的用户可以通过到ISC网站上下载BIND9.3。目前, BIND 由 Internet Software Consortium http://www.isc.org/ 维护。
1、创建本地DNS反向解析域文件
proxy4bak# cd /etc/namedb
proxy4bak# sh make-localhost
在/etc/namedb/master目录下会生成localhost.rev文件。
2、编辑dns配置文件/etc/namedb/named.conf
内容如下:
options {
directory "/etc/namedb";
pid-file "/var/run/named/pid";
dump-file "/var/dump/named_dump.db";
statistics-file "/var/stats/named.stats";// forwarders {
// 221.228.255.1; 218.2.135.1;
// };
};zone "." {
type hint;
file "named.root";
};zone "0.0.127.IN-ADDR.ARPA" {
type master;
file "master/localhost.rev";
};
这里我没有用到forwarders(转发),在freebsd中文手册中有这样一段话:
要从上级的缓存中受益, 可以在此处启用 forwarders。 在一般情况下, 域名服务器会逐级地查询 Internet 来找到特定的域名服务器, 直到得到答案为止。 启用这个将让它首先查询上级域名服务器 (或另外提供的域名服务器), 从而从它们的缓存中得到结果。 如果上级域名服务器的负载很重, 在更快的域名服务器上启用它将有助于改善服务品质。
3、更改/etc/resolv.conf
将resolv.conf内容更改为:
nameserver 127.0.0.1
3、使named启动
编辑/etc/rc.conf,加入启动内容,如下:
proxy4bak# cd /etc
proxy4bak# ee rc.conf
加入
named_enable="YES"
添加完成后重启服务器,使用top命令可以查看named进程是否启动。也可以通过nslookup查询一个网址,如果可以,说明缓存已经建立了,显示如下:
proxy4bak# nslookup
> set type=any
> www.google.com
Server: 127.0.0.1
Address: 127.0.0.1#53Non-authoritative answer:
www.google.com canonical name = www.l.google.com.Authoritative answers can be found from:
google.com nameserver = ns4.google.com.
google.com nameserver = ns1.google.com.
google.com nameserver = ns2.google.com.
google.com nameserver = ns3.google.com.
在搜索相关参考资料时还发现了一个dns缓存软件——djbdns,也有朋友已经在用了。我为了方便,就直接用BIND了,因为freebsd安装时就带上了。但在性能上具体还不知道哪个会好些。
第一次建立dns缓存服务器,写的有错误之处请指出。希望这篇笔记能对想要在局域网中建立高速dns缓存服务器的朋友有用。