DNRD是什么
DNRD是一种缓存,转发DNS代理服务器。在vpn或拨号防火墙上最有用,但对于次要网络和工作站来说,它也是一个不错的DNS缓存。
特征
- 缓存DNS请求。
- 支持备份DNS服务器。
- 使用随机源端口和随机查询ID来防止 缓存中毒。
- 支持简单路由 - 为不同的域指定不同的转发DNS服务器。
- 强制指定域的授权或非口头答案。
- 通过网络共享/ etc / hosts。
- 支持openbsd,freebsd和linux。
- TCP支持
- DNS黑名单支持
DNRD下载:
https://zh-tw.osdn.net/projects/sfnet_dnrd/downloads/dnrd/2.20.2/dnrd-2.20.2.tar.gz/ (国外下载地址)
https://pan.baidu.com/s/1IWCc5aNikfhKsX5Oc1lgNA 提取码:ew1n
使用过dnrd-2.20.4,但是编译的时候失败了,然后转 dnrd-2.20.2 成功了。
下载好DNRD以后,解压到/opt 目录下
cd /opt
tar zxvf dnrd-2.20.2.tar.gz
进入相关代码目录
cd dnrd-2.10/
安装、编译
aclocal
autoheader
automake -a
autoconf
./configure
make
make install
配置域名服务器设置,启动Dnrd服务:
dnrd -m off -s 192.168.84.216 -s 192.168.84.210
由于对于我们本地来说我只希望Dnrd做转发功能,所以使用-m off参数关闭master file,在接收到DNS query包后不会在本地master file中进行查询功能,而只是用户的DNS query包转发到forward DNS server(-s参数后的地址所指向的服务器)去。如果本地存在master,可忽略-m off参数。
此时dnrd服务已经运行。
配置客户端信息:
将客户端的DNS server指向这个安装了Dnrd服务的Linux主机。
测试:
最简单的测试方法,在客户端使用ping命令去ping一个域名(如www.163.com),如果能够ping通,则说明测试成功。
其他参数功能说明:
dnrd -a 输入为一IP地址,用于仅仅绑定端口到指定的IP上。
dnrd -b 设置此项,则打开load-balance功能。所有指定的server将会在轮询机制中负载平衡。
dnrd -c (off|[low:]high)
设置cache off,可用来关闭缓存DNS responses的功能,默认值为on。
设置cache [low:]high,可用来改变high、low的watermarks,默认值:low:800,high:1000。
dnrd -d LEVEL此项设置debug的级别。级别越高,打印的信息越多。level为1,则强迫DNRD在后台运行,并且将log信息打印到syslog中。
dnrd -h 打印帮助信息。
dnrd -i 设置此项,用来忽略缓存来自于不活跃的服务器(deactived server)信息。
dnrd -k 此项设置用来终止正在运行中的DNRD服务进程。
dnrd -l 将所有消息发送到syslog中。
dnrd -m (off|hosts) 通过此项,可以打开或者关闭DNRD的primary name server功能。
dnrd -M N 设置N为最大允许的socket,默认值为200.
dnrd -r N 设置N为重试的间隔时间。默认值为10。如果设置的值为0,则DNRD从不deactive server。
dnrd -s ipaddr(:domain) 添加一个forward DNS server。如果一行输入了多个server,则指定第一个为primary DNS server。
例如:dnrd –s 192.168.84.216 –s 192.168.84.210,就是指将192.168.84.216作为primary forward DNS server,将192.168.84.210作为其他forward DNS server。
dnrd -t N 设置N为forward DNS server的超时时间。如果在这段时间内没有回复一个请求,则此server为deactive。默认值为12.
dnrd -v 打印DNRD的版本号。
dnrd -p设置DNRD的根目录。
参考原文: