Help us understand the problem. What is going on with this article?

Install ndjbdns on CentOS

More than 5 years have 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
metheglin
敷布団カバーと掛布団カバーを逆につけて寝ています
https://metheglin.jp/#logical
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away