ようこそゲストさん

ぱらめでぃうす

blogを引っ越しました。以後このblogは更新されません。
引っ越し先

2009/02/10(火) nsd (Name Service Daemon)

はてブ 未分類
先日からのVPSの話の続き。
CPI VPSスケールプランの一番安いやつでbindを起動したらメモリが140MB近くまで消費されてしまい悩ましい、という話を書いた。
そもそも自由に使えるDNS Contents Serverが欲しくてVPSを契約しようとしていたので、これは何とか解決しないといけない。

そのときにも書いたけど、bind以外のDNSサーバとしてnsdという選択肢がある。動くかどうか実験してみた。
ネタ元はこのあたり

個人用途なのでzone数もレコード数もたかがしれてます。
query数も極小であると思われるので、パフォーマンスについては資料を読んで「ふーん、結構良さそうですね」と言う以上は考えないことにします。

今回の実験の条件は以下の通り。(個人向けだよ)
  • primary DNSサーバにしてみる
  • secondary DNSサーバにしてみる
  • 適当なところにchrootする
    • /service/nds あたりに入れる
    • syslogはsocketとかめんどくさいので直説logを書く
  • DNSSECとか考えない。
ざっくりインストール。
# ./configure --prefix=/service/nsd
# make
# make install
# mkdir -p /service/nsd/etc/nsd/p ← primary zone置き場所
# mkdir -p /service/nsd/etc/nsd/s ← secondary zone置き場所
# mkdir -p /service/nsd/var/db/nsd
# mkdir -p /service/nsd/var/log
# chown -R named /service/nsd ← user作るの面倒なので"named"で動かすつもり
/service/nsd/etc/nsd/nsd.conf
server:
        chroot: /service/nsd
        logfile: /service/nsd/var/log/nsd.log
        username: named
        ip-address: ???.???.???.??? ← listenするアドレス
        ip4-only: yes

zone:
        name: example.jp
        zonefile: p/example.jp.zone

zone:
        name: example.net
        zonefile: s/example.net.zone
        allow-notify: 127.0.0.1 NOKEY ← これを書かないと自分でコントロールできないようだ
        allow-notify: ???.???.???.??? NOKEY
        request-xfr: ???.???.???.??? NOKEY ← 転送元
primaryであるexample.jpのzoneは用意しておこう。(基本的にbindと同じ書式でOK)
準備ができたら、zoneをbuild*1してdaemonを起動させる。
# sudo -u named /service/nsd/sbin/nsdc rebuild
# /service/nsd/sbin/nsdc start
なんか動いたっぽい。応答には答える。

secondary側はちょっと変わった挙動をするので一瞬悩む。
詳しい話はこのあたりに頼りましょう。

注意する点は、zoneをbuildしたりする場合は必ずnsdが動作するユーザ権限(ここではnamed)で行うこと。sudoでもsuでもよいけど。
rebuildを実行すると/service/nsd/var/db/nsd/nsd.dbなんかが作られるけど、これはnsdcを起動した権限で作られる。なので、rootのまま作業をするとrootの持ち物になってしまう。*2
ただし、nsdを起動するときはrootで行う必要がある。

同じコマンドだけど実行する内容によって使い方が違うので注意という話ですね。ちょっとわかりにくい。



肝心のメモリ占有率の話ですが、nsdとhttpdが起動した状態でこれぐらい。
privvmpages usage: 32 MB (18% of 175)
nsdを止めるとこのぐらいなので
privvmpages usage: 23 MB (13% of 175)
十分実用になりそうです。

よかったよかった。

*1 : bindと違って明示的にbuildして、バイナリ形式のzone dataを準備しておく必要がある

*2 : あれ、もしかしてそれでも動作に問題ないのか?


1: いとう 2009年04月03日(金) 午後0時21分

リンク先のauthorです。ログのreferral見てのぞきに来させていただきました。ごひいきにありがとうございます。
さて、*2の件ですが、検証していないので断言は避けますけど、ぼくも最近、問題ない、というか、せっかく特権を放棄しているので、むしろnsdのプロセスからは書けないようにrootにすべきなのかな、と思っています。ただ、nsd.dbのオーナだけじゃなくって、ixfr.dbのオーナ、nsdc patchを走らせるユーザと、そこから派生してセカンダリのゾーンデータ(テキスト版)のオーナも関係して来ると思うので、じっくり検討と検証をした方がよさそうですね。

歯切れ悪くてごめんなさい。

  • SEO
  • loading
  • ぱらめでぃうす