在Ubuntu Server 8.04(amd64)Hardy完美的DjbDNS安装
DjbDNS是域名系统工具的集合。 它包括所有基本DNS操作的软件:
DNS缓存:查找Internet主机的地址。 当浏览器想要联系www.hotwired.com
时,它首先要求DNS缓存,例如djbdns的dnscache,找到www.hotwired.com
的IP地址。 互联网服务供应商运行dnscache来查找客户要求的IP地址。 如果您正在运行家用电脑或工作站,则可以运行自己的dnscache来加快网页浏览速度。
DNS服务器:发布Internet主机的地址。 www.hotwired.com
的IP地址由HotWired的DNS服务器发布。 djbdns包括通用DNS服务器tinydns; 网络管理员运行tinydns发布其计算机的IP地址。 djbdns还包括用于发布DNS墙和RBL的专用服务器。
DNS客户端:与DNS缓存通信。 djbdns包括DNS客户端C库和几个命令行DNS客户端实用程序。 程序员使用这些工具将请求发送到DNS缓存。
DjbDNS还包括几个DNS调试工具,特别是dnstrace,管理员用于诊断配置错误的远程服务器。
安全功能:
- dnscache作为一个专用的非根uid运行在chroot监狱里,所以它不能碰到机器的其余部分。
- tinydns作为另一个专用的非root uid运行在自己的chroot监狱内。
- walldns作为另一个专用的非root uid运行在自己的chroot监狱内。
- dnscache从指定的IP地址列表外部丢弃DNS查询。
- dnscache和dns库为每个查询数据包使用一个新的查询ID和一个新的UDP端口。 他们从除刚刚发送的相应查询之外的任何IP地址中丢弃DNS响应。
- dnscache使用加密生成器来选择不可预测的端口号和ID。
- dnscache免疫缓存中毒。
tinydns从不缓存信息。 它不支持递归。
预安装
apt-get install build-essential
mkdir /tmp/downloads
cd $_
wget -c HYPERLINK "http://www.thedjbway.org/patches/djb_errno_patches.tgz" http://www.thedjbway.org/patches/djb_errno_patches.tgz
tar -zxvf djb_errno_patches.tgz
wget -c HYPERLINK "http://cr.yp.to/daemontools/daemontools-0.76.tar.gz" http://cr.yp.to/daemontools/daemontools-0.76.tar.gz
wget -c HYPERLINK "http://cr.yp.to/ucspi-tcp/ucspi-tcp-0.88.tar.gz" http://cr.yp.to/ucspi-tcp/ucspi-tcp-0.88.tar.gz
wget -c HYPERLINK "http://cr.yp.to/djbdns/djbdns-1.05.tar.gz" http://cr.yp.to/djbdns/djbdns-1.05.tar.gz
安装所有软件包
一个。 安装ucspi-tcp-src:
cd /tmp/downloads
tar -zxvf ucspi-tcp-0.88.tar.gz
cd ucspi-tcp-0.88
patch -p1 < /tmp/downloads/ucspi-tcp-0.88.errno.patch
make
make setup check
b。 守护进程
cd /tmp/downloads
tar -zxvf daemontools-0.76.tar.gz
cd admin/daemontools-0.76/
touch /etc/inittab
patch -p1 < /tmp/downloads/daemontools-0.76.errno.patch
package/install
vi /etc/event.d/svscan
# svscan - daemontools start on runlevel 2 start on runlevel 3 start on runlevel 4 start on runlevel 5 stop on runlevel 0 stop on runlevel 1 stop on runlevel 6 respawn exec /command/svscanboot
这个安装程序只创建到/ command
中的所有svscan命令的链接,所以最好复制这些命令
:
cd /command
rm -rf *
cp /tmp/downloads/admin/daemontools/command/* /command/
那就是...(你可能需要重新启动)...
initctl start svscan
C。 djbdns
cd /tmp/downloads
tar -zxvf djbdns-1.05.tar.gz
cd djbdns-1.05
echo gcc -O2 -include /usr/include/errno.h > conf-cc
make
make setup check
配置包
创建用户(如果尚未自动创建):
adduser --no-create-home --disabled-login --shell /bin/false dnscache
adduser --no-create-home --disabled-login --shell /bin/false dnslog
adduser --no-create-home --disabled-login --shell /bin/false tinydns
配置dnscache:
在我们的情况下,我们需要每个主服务器和从服务器都是“权威”和“缓存”。 因此,了解如何使用djbdns来实现这一点非常重要。 与bind不同,djbdns为各种dns服务使用单独的IP。 默认情况下,每个系统都准备好2个IP => 1个主机IP,而另一个是loopback-IP。 因此,LAN上的任何系统都应该打高速缓存dns,因此缓存dns的主机IP。 我们将在loopback-IP上运行权威,然后将其绑定到caching-dns,因此LAN主机也可以查询权威的主机记录。
mkdir /var/lib/svscan
dnscache-conf dnscache dnslog /var/lib/svscan/dnscache <host-IP>
ln -sf /var/lib/svscan/dnscache /service
检查“supervise”目录是否在/ service / dnscache中创建
要检查它是否正在运行:只需在/etc/resolv.conf中添加像'nameserver <host-IP>'这样的单个条目,并使用'nslookup'或'dig'从命令行检查一些公共网站查询。
现在您需要允许LAN主机从中查询。 所以只需创建一个以您的网络或子网命名的空白文件:
touch /etc/dnscache/root/ip/<subnet>
而已。 现在,您可以从该<subnet>的任何主机查询。 同样,您可以启用多个主机,网络或子网进行查询。
与绑定不同,您可以通过编辑/ etc / dnscache / env / CACHESIZE
文件来调整Nameservers的缓存大小。 此外,您可以通过运行以下命令手动刷新或刷新缓存:
svc -t /service/dnscache
暂时可以使用以下命令停止并启动dnscache:
svc -d /service/dnscache => to down the dnscache service
svc -u /service/dnscache => to up the dnscache service
配置tinydns:
tinydns-conf tinydns dnslog /var/lib/svscan/tinydns <loopback-IP>
ln -sf /var/lib/svscan/tinydns /service
检查在/ service / tinydns中
是否创建了“supervise”目录。
他们还没有包含任何域的任何区域条目,但我们会得到一点。 与绑定完全不同,区域信息被写入单个文件(即使对于多个区域,包括反向区域)也就是/ var / lib / svscan / tinydns / root / data
。 这是一个人类可写的文件,后来使用tinydns命令以二进制格式转换,该二进制文件称为cdb格式,因此二进制文件是/var/lib/svscan/tinydns/root/data.cdb
,其中tinydns全部回答查询 与绑定相比,区域记录的语法非常简短和紧凑。 这里有些例子:
一个。 对于Nameservers输入:
.in.domain.com:10.20.0.10:ns1.in.domain.com
.in.domain.com:10.20.0.12:ns2.in.domain.com
b。 对于以上Nameservers的reverse-dns:
.10.in-addr.arpa::ns1.in.domain.com
.10.in-addr.arpa::ns2.in.domain.com
C。 对于MX记录:
@in.domain.com:165.212.65.113:mx.usa.net:10
@in.domain.com:10.20.0.12:mail.in.domain.com:20
d。 A记录:
=host0001.in.domain.com:10.10.0.101
e。 主机的别名记录
+host01.in.domain.com:10.10.0.101
+mysql01.in.domain.com:10.10.0.101
最后将/ var / lib / svscan / tinydns / root / data
转换为cdb格式
tinydns-data
要么
cd /var/lib/svscan/tinydns/root
make
最后将这些区域信息绑定到caching-dns服务器,在/ var / lib / svscan / dnscache / root
中创建名为10.in-addr.arpa
, in.domain.com
和domain.com
等的文件/ servers /
目录,其内容应为127.0.0.1
(Loopback-IP)。 而已。 全部成立
注意:无论何时对数据进行任何更改并创建已更改的data.cdb
文件,请勿忘记刷新或刷新缓存。
svc -t /services/*
从站服务器设置使用Djbdbs
只需按照http://www.seebq.com/dns-replication-using-rsync ,并对主站和从站的某些文件进行一些调整。
一个。 master / var / lib / svscan / tinydns / root / Makefile上的
更改:将文件编辑为
remote: data.cdb rsync -az -e ssh data.cdb <slave-ip>:/service/tinydns/root/data.cdb ssh <slave-ip> 'svc -t /service/dnscache' data.cdb: data /usr/local/bin/tinydns-data svc -t /service/dnscache
b。 对slave的/ var / libsvscan / tinydns / root / data
文件的更改
# Do not edit data on this computer! data.cdb is copied from MASTER. # The following line protects data.cdb by stopping make. 9
因此,如果任何人在/ etc / tinydns / root /
目录或命令tinydns-data
中键入命令,这将只是闪存缓存,因为在从站没有数据文件。
而且只需要在主机与从机之间进行auto-ssh登录设置,以便上述更改将自动执行进程。 上述更改将仅将data.cdb
文件推送到从站。 因此,Nameservers之间不会有不同的数据,这意味着所有这些数据的一致性。
备份还原
最低限度,我们只需要复制/ var / lib / svscan / tinydns / root / data
文件,或者最多只需要拷贝/ var / lib / svscan / dnscache
和/ var / lib / svscan / tinydns
。 而已。
为了恢复,只需设置dnscache或tinydns,几乎不需要任何时间,并复制备份数据。 最后软链接到/服务
。 而已。