完美的DjbDNS设置在Ubuntu服务器8.04(amd64)哈迪

完美的DjbDNS设置在Ubuntu服务器8.04(amd64)哈迪 DjbDNS是域名系统工具的集合。它包括所有的软件

在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.arpain.domain.comdomain.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,几乎不需要任何时间,并复制备份数据。 最后软链接到/服务 。 而已。