NSDを使ってみる

DNSコンテンツサーバをNSDにしてみましたw

ただ、Ubuntu14.04LTS(だけ?)の場合、
APTでインストールする際にエラーが出るので、
その対応も含めて・・・

正直DNS難しいです。。。
OS・・・ubuntu14.04LTS
DNS・・・NSD 4.0.1


さくっとインストール
nsdとnsd3がありますが、今回はnsd3を。

# apt-get install nsd3
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following extra packages will be installed:
  libevent-2.0-5 nsd
The following NEW packages will be installed:
  libevent-2.0-5 nsd nsd3
0 upgraded, 3 newly installed, 0 to remove and 0 not upgraded.
Need to get 0 B/782 kB of archives.
After this operation, 1,568 kB of additional disk space will be used.
Do you want to continue? [Y/n] y
Preconfiguring packages ...
dpkg: unrecoverable fatal error, aborting:
 syntax error: unknown user 'nsd' in statoverride file
E: Sub-process /usr/bin/dpkg returned an error code (2)

はい。エラーw

どうやら、ユーザ「nsd」がないため失敗するみたいです。
syntax error: unknown user ‘nsd’ in statoverride file
ユーザを追加するだけ

# useradd nsd

またNSDをremoveしてもユーザは消えないので、

# userdel nsd

再度インストール。

# apt-get install nsd3
# nsd -v
NSD version 4.0.1
Written by NLnet Labs.

Copyright (C) 2001-2006 NLnet Labs.  This is free software.
There is NO warranty; not even for MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE.

すればOK。

NSDの設定は、
http://unbound.jp/nsd4/nsd-conf/
ここを参考に

# vi /etc/nsd/nsd.conf
server:

logfile: "/var/log/nsd.log"

zone:
    name: "neko6.info"
    zonefile: "neko6.info.zone"

こんな感じでゾーンE毎に書く感じ。

で、ゾーンファイルは
こんな感じ・・・
BINDのZONEファイルと同じ。
(詳しくないのでググってください。。。)

# vi /etc/nsd/neko6.info.zone

$TTL    120

@ IN  SOA ns.neko6.info. root.neko6.info. (
        2014100417  ; serial number
        10800   ; Refresh
        3600    ; Retry
        604800  ; Expire
        120   ; Min TTL
)

        IN      NS      ns.neko6.info.
        IN      A       49.212.202.116
;       IN      AAAA    2403:3a00:202:1126:49:212:202:116

www     IN      A       49.212.202.116
www     IN      AAAA    2403:3a00:202:1126:49:212:202:116
ns      IN      A       49.212.202.116

TTL短すぎるけどw

で、ここからなのですが、
どうやら環境変数が違うため、
/etc/init.d/nsd」からではうまく起動してくれません。
@くりゅうさん
ありがとうございました!

参考URL
デーモンの起動・終了にはserviceコマンドを利用しよう
http://heartbeats.jp/hbblog/2013/06/service-start-stop.html

なので、
service nsd」を使います。

NSDの場合、データベースを読み込むので、
ゾーンを編集すると作り直しが必要となります。

# service nsd rebuild
# service nsd restart
nsd stop/waiting
nsd start/running, process 26357
#
# tail -f /var/log/nsd.log
Oct  4 19:04:53 hogehoge nsd[26121]: nsd started (NSD 4.0.1), pid 26119

ちなみに、データベースは

# ll /var/lib/nsd/
total 24
drwxr-xr-x  2 nsd  nsd   4096 Oct  4 18:18 ./
drwxr-xr-x 42 root root  4096 Oct  4 18:09 ../
-rw-------  1 nsd  nsd  12288 Oct  4 19:18 nsd.db
-rw-r--r--  1 nsd  nsd    817 Oct  4 19:40 xfrd.state

ここに作られるようです。

あとはiptablesで

iptables -A INPUT -p udp --dport 53 -j ACCEPT

でUDP53を空けてあげる。

上手く通信できるかクライアントから

$ dig neko6.info +trace

などで、解決できるかチェック。

余談。。。
DOTTKだと、NSサーバを自前に向けることができますが、
ネームサーバが2つ以上必要となるみたいです。
また、そのままだと自分のネームサーバ(ns.neko6.info)の
解決が出来ない(当たり前ですよねぇ。。orz)ので、
Management Tools」の「Register glue records」から
グルーレコードにNSサーバのIPを指定しないといつまでたっても名前解決できません。。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

Enter code * Time limit is exhausted. Please reload CAPTCHA.

This site uses Akismet to reduce spam. Learn how your comment data is processed.