Install ndjbdns on CentOS

  • 6
    Like
  • 0
    Comment
More than 1 year has passed since last update.

Goal

  • DNSソフトとしてdjbdnsが評判いいのでCentOSにインストールする
  • 最終的には、DNSネームサーバとDNSキャッシュサーバを使えるようにする
  • djbdnsのインストールを簡潔にしたn-djbdnsというプロジェクトがあるので、それを使ってinstallする

n-djbdnsとdjbdnsの違い

以下のように書いてある. 機能のコアは変わらない.

  • Make djbdns as much concise & independent as possible.
  • Simplify installation & configuration using GNU auto tools.
  • Drop the various *-conf programs.
  • Follow FHS conventions for all kinds of configuration, data and log files.
  • Write good user manuals and documentation.
  • While doing all of this and more, not to loose track of security and apply all the patches available so far.

Download

sudo su -
cd /usr/local/src

## 
## 以下公式サイトからダウンロード先のリンクを取得
## http://pjp.dgplug.org/ndjbdns/index.html
## 
wget "http://pjp.dgplug.org/ndjbdns/ndjbdns-1.06.tar.gz"
tar zxvf ndjbdns-1.06.tar.gz
ls -l ndjbdns-1.06
cd ndjbdns-1.06

Install

# sudo su -
# cd /usr/local/src/ndjbdns-1.06

./configure --prefix=/usr/local
  # /usr/local/以下にインストールする
make
make install

which dnscache
which tinydns
  # dnscache, tinydnsコマンドへのパスが通ること確認

## 起動スクリプト設定
## (パッケージをダウンロードした/usr/local/src/ndjbdns-1.06以下からコピーしていることに注意!!)
cp -i ./etc/init.d/dnscache /etc/init.d/ 
chmod u+x /etc/init.d/dnscache
  # -rwxr--r-- 1 root root 2036 Jan 24 10:45 /etc/init.d/dnscache

cp -i ./etc/init.d/tinydns /etc/init.d/ 
chmod u+x /etc/init.d/tinydns
  # -rwxr--r-- 1 root root 2036 Jan 24 10:45 /etc/init.d/tinydns

## 
## install directoryを/usr/localに指定すると、
## /usr/local/etc/ndjbdns以下に設定ファイルが保存される.
## だが、起動スクリプトはこれを反映できてないので、手で修正する.
## 

vi /etc/init.d/dnscache
  # configのパスを以下に変更
  # config=/usr/local/etc/ndjbdns/dnscache.conf
vi /etc/init.d/tinydns
  # configのパスを以下に変更
  # config=/usr/local/etc/ndjbdns/tinydns.conf

djbdns Setting

djbdnsはBINDと違って、DNSネームサーバ(権威サーバ)とキャッシュサーバ(再帰検索サーバ)が別デーモンとして分離していて、ネームサーバ=tinydns、キャッシュサーバ=dnscacheとなっている.
DNSの仕様では権威サーバへの問い合わせも再帰検索もポート53を使うため、別のデーモンを同じポートで稼働させるためにそれぞれ別のIPアドレスをバインドして起動させる必要がある.

installディレクトリを/usr/local/にした場合、tinydnsとdnscacheの設定ファイルはそれぞれ以下のファイルとなる.

  • /usr/local/etc/ndjbdns/tinydns.conf
  • /usr/local/etc/ndjbdns/dnscache.conf

それぞれ、127.0.0.1、192.168.2.12にセットする場合は、IP=の部分を以下のように変更する.

/usr/local/etc/ndjbdns/tinydns.conf
IP=127.0.0.1
/usr/local/etc/ndjbdns/dnscache.conf
IP=192.168.2.12

起動

service dnscache start
service tinydns start

## 
## dnscacheはtcp,udp:53で起動するが、tinydnsはudp:53のみで起動する.
## 想定のIPアドレスがバインドされていることを確認
## 
lsof -i:53
  # COMMAND    PID   USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
  # tinydns  23402 daemon    4u  IPv4 373980      0t0  UDP localhost:domain
  # dnscache 28041 daemon    3u  IPv4 406795      0t0  UDP 192.168.2.12:domain
  # dnscache 28041 daemon    4u  IPv4 406796      0t0  TCP 192.168.2.12:domain (LISTEN)

netstat -an | grep :53
  # tcp        0      0 192.168.2.12:53             0.0.0.0:*                   LISTEN
  # udp        0      0 192.168.2.12:53             0.0.0.0:*
  # udp        0      0 127.0.0.1:53                0.0.0.0:*

Environment

uname -a
  # Linux *** 2.6.32-431.el6.x86_64 #1 SMP Fri Nov 22 03:15:09 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux

cat /etc/issue
  # CentOS release 6.5 (Final)
  # Kernel \r on an \m