いますぐ実践! Linuxシステム管理

[バックナンバーのトップへ] [Linux システム管理のトップへ]


いますぐ実践! Linux システム管理 / Vol.148 / 読者数:1291名

こんばんは、うすだです。

当サイトはレンタルサーバを利用しているのですが、コスト削減のため、 安いところに乗り換えることにしました。

いままでは、ちゃんとしたマシンだった(と思われる)のですが、今度は、 いま流行の VPS(Virtual Private Server) というやつにしました。

とはいっても、ご存じのかたはご存じだと思いますが、 普通に使う分にはまったく遜色ありません。昨今の PC パワー万歳! といった感じです。

…と思っていましたが、メモリには気をつけたほうがよいようです。

いままでと同様、1台でなんでもかんでもやらせるつもりでいましたが、 先日、named を動かしていたら、メモリ不足になり、 SSH でログインすることすらできなくなってしまいました。
(幸い、WWW を介して再起動が行えましたので、ことなきを得ましたが。)

そんなわけで、極力メモリを使わないようにしつつ、 移行作業を進めようとしております。しかし、 現サーバの契約を11月までにしてしまいましたので、 そろそろ慌てて移行しないとまずそうです。

…はい、オチはありません。今回も、はりきってまいりましょう!

今回のお題 - BIND じゃないネームサーバ - NSD を使ってみる

さて、冒頭の続きです。

メモリに制約があるとはいえ、named は必要なのです。

しかし、BIND を使うと、思った以上にメモリを必要としますので、 BIND しか動かせなくなってしまいます。

どうしようと思っていたところ、NSD というネームサーバの存在を、 偶然知りました。
(実は、前回のあとがきでご紹介した Unbound と同じ開発元です。)

Name Server Domain (NSD)
http://www.nlnetlabs.nl/projects/nsd/

BIND は、DNS キャッシュサーバの機能も備わっていますが、 NSD は DNS コンテンツサーバの機能だけに限られます。
ということは、その分、BIND よりメモリ使用量が少ないのではないか、 という推測をしても、バチは当たらないように思います。

というわけで今回は、NSD をインストールし、 設定して使うための方法をご紹介したいと思います。


まずは、インストールから始めてみましょう。

Fedora 9 の場合、パッケージがありますので、下記手順で完了です。

  # yum install nsd

それ以外のバージョンは未確認ですが、 たとえば以下に Fedora 7〜9 の RPM パッケージがありました。 yum コマンドで見つからなければ、 以下で入手して rpm -i などとすればよいと思います。

RPM resource nsd
http://rpmfind.net/linux/rpm2html/search.php?query=nsd&submit=Search+...

Ubuntu 8.04 の場合、nsd3 というパッケージがありますので、 下記手順でインストールできます。
(それ以前のバージョンでは、未確認です。すみません…。)

  $ sudo apt-get install nsd3

そのほか…たとえば Vine Linux 4.2 や CentOS 5.2 には、 パッケージは見当たりませんでした。
ですが、ソースコードに spec ファイルがありますので、 RPM パッケージを作成することは可能です。
わたしが試した限りでは、一部変更が必要だったり、 足りないファイルがあったりしました。念のため、変更したものを、 以下に置いておきます。
(nsd-3.1.1 用です。)

NSD-3.1.1 用 spec ファイルなど
http://www.usupi.org/sysad/148-nsd-3.1.1.tgz

ちなみに、RPM パッケージの作り方は、変化球な説明が以下にあります。

Vol.130 - RPM パッケージを作成する
http://www.usupi.org/sysad/130.html


インストールが終わりましたら、次は初期設定です。

以下では、kuri.info というドメインを扱っていきたいと思います。
そのまま kuri.info で試しても構いませんが、できれば、kuri.info のところを、 別のドメインに置き換えて試してみてください。

さて、まずは、設定ファイルを書いていきましょう。

設定ファイルは、/etc/nsd/nsd.conf です。
ただし、Ubuntu の場合は、/etc/nsd3/nsd.conf です。

設定ファイルといっても、ただ動かすだけなら、nsd.conf に以下を記述するだけです。

  zone:
      name: "kuri.info"
      zonefile: "kuri.info.zone"

もとの nsd.conf には、以下のような記述がありますが、 すべてコメントアウトされていますので、記述がなくても問題はありません。

  server:
      # hide-version: no
      # debug-mode: no
      # ip4-only: no
  ...後略...

ちなみに、コメントアウトされている内容が、デフォルトです。
これと違う設定にしたければ、 コメントを外して別の設定値を記述すればよいと思います。

 

次に、ゾーンファイルを用意します。
BIND と互換性がありますので、すでに BIND で使用しているファイルがあれば、 そのまま流用できます。

上記で、zonefile に "kuri.info.zone" と指定していますので、 これを /etc/nsd (Ubuntu なら /etc/nsd3)に置きます。
(zonesdir で別のディレクトリを指定した場合は、そちらに置きます。)

kuri.info 用のゾーンファイルの例を、以下に示します。
(内容の説明は、すみませんが割愛します。)

  $TTL 86400

  @ IN SOA ns1.kuri.info. postmaster.kuri.info. (
      2008111601 10800 3600 604800 86400)

  @          IN   NS     ns1.kuri.info.
             IN   NS     ns2.kuri.info.
             IN   A      192.168.1.4
             IN   MX 10  mail.kuri.info.
  localhost  IN   A      127.0.0.1
  ns1        IN   A      192.168.1.1
  ns2        IN   A      192.168.1.2
  mail       IN   A      192.168.1.3
  www        IN   A      192.168.1.4

 

ゾーンファイルが用意できましたら、これをデータベース化します。

  # /etc/init.d/nsd rebuild      (Ubuntu 以外の場合)
  # /etc/init.d/nsd3 rebuild     (Ubuntu の場合)

ちなみに、データベースは、以下のパスにあります。

  Fedora: /var/lib/nsd/nsd.db
  Ubuntu: /var/lib/nsd3/nsd.db
  その他: /var/db/nsd/nsd.db

ただ、その他といいますか、自力でパッケージを作成されたなどの場合、 /var/db/nsd がありません。上記を行う前に、作成しておきましょう。

  # mkdir /var/db/nsd
  # chown nsd.nsd /var/db/nsd

ちなみに、NSD は、ゾーンファイルではなく、 データベースの情報をもとに動作しますので、ゾーンファイルを変更したら、 必ずデータベースを更新して、NSD を restart(あるいは reload)してください。
(でないと、いつまでたっても、古い情報しか伝えてくれません。)

 

さて、データベースを作成したら、あとは NSD を起動するだけです。

おっと、現在 BIND の named が動作中でしたら、NSD を起動する前に、 named を止めておく必要があります。

  # /etc/init.d/named stop       (Ubuntu 以外の場合)
  # /etc/init.d/bind9 stop       (Ubuntu の場合)

named がいなくなりましたら、以下の手順で NSD を起動しましょう。

  # /etc/init.d/nsd start        (Ubuntu 以外の場合)
  # /etc/init.d/nsd3 start       (Ubuntu の場合)

NSD を起動したら、きちんと動作しているか確認しましょう。

たとえば、dig コマンドで、以下のように問い合わせます。

  $ dig @nsdを動かしているマシン www.kuri.info a
  ...前略...

  ;; ANSWER SECTION:
  www.kuri.info.          86400   IN      A       192.168.1.4

  ...後略...

ちゃんと動作していれば、たくさんの出力の中に、 答えを見つけることができると思います。

もし、出力の中に答えがなかったり、そもそも応答がなかったリする場合は、 まず、NSD が動作しているかどうか、確認してください。

  $ ps -C nsd
    PID TTY          TIME CMD
   8051 ?        00:00:00 nsd
   8052 ?        00:00:00 nsd
   8053 ?        00:00:00 nsd

また、各種メッセージは、デフォルトでは syslog に出力されます。
/var/log/messages や /var/log/syslog を見て、起動していることを、 下記を参考にして確認してください。

  # grep nsd /var/log/messages
  ...前略...
  日時 マシン名 nsd[PID]: nsd started (NSD 3.1.1), pid PID

それでも応答がない場合、 ファイアーウォールにはねられている可能性があります。
たとえば Fedora 9 の場合、ファイアーウォールの設定を、 GUI から参照および変更することができます。
メニューから、 システム -> 管理 -> ファイアーウォールの設定 を選択して、 「DNS (53/tcp, 53/udp)」「信頼したサービス」になっているかどうか、 確認してください。


以上、NSD のインストールから初期設定の方法までを、ごく簡単にご説明しました。

さて、気になるメモリ使用量ですが、CentOS 5.2 上では、named は以下の通りでした。 VSZ(仮想メモリサイズ)を見ると 100MB を超えています。

  # ps -C named -o pid,vsz,rss,comm
    PID    VSZ   RSS COMMAND
   7939 111120  3296 named

かたや、nsd は以下の通りでした。
3つを合計しても、nsd の方が圧倒的に小さいですね。

  # ps -C nsd -o pid,vsz,rss,comm
    PID    VSZ   RSS COMMAND
   5802   3672   700 nsd
   5803  10536   808 nsd
   5804   3960   500 nsd

まあ、named の方は、recursion no として、nsd と条件を近づけているとはいえ、 もとが多機能ですので、仕方がないと思いますが…。

宿題の答え

前回の宿題は、

  telnet コマンドを用いて、名前ベースのバーチャルホストの動作確認
  をしてみましょう。

でした。

それでは早速答えです。
まずは、www.example.org の確認から。

  $ telnet 192.168.1.225 65080   <= 入力してください
  Trying 192.168.1.225...
  Connected to 192.168.1.225.
  Escape character is '^]'.
  GET / HTTP/1.1                 <= 入力してください
  Host: www.example.org:65080    <= 入力してください
                                 <= 入力してください
  HTTP/1.1 200 OK
  Date: Wed, 05 Nov 2008 17:21:41 GMT
  Server: Apache/2.2.3 (Unix)
  ...中略...
  Content-Type: text/html

  <html><body><p>Hello www.example.org World!</p></body></html>

そして、以下は www.example.net の確認です。

  $ telnet 192.168.1.225 65080   <= 入力してください
  Trying 192.168.1.225...
  Connected to 192.168.1.225.
  Escape character is '^]'.
  GET / HTTP/1.1                 <= 入力してください
  Host: www.example.net:65080    <= 入力してください
                                 <= 入力してください
  HTTP/1.1 200 OK
  Date: Wed, 05 Nov 2008 17:24:14 GMT
  Server: Apache/2.2.3 (Unix)
  ...中略...
  Content-Type: text/html

  <html><body><p>Hello www.example.net World!</p></body></html>

Host というリクエストヘッダのフィールドで、 ホスト名とポート番号を指定するだけでした。
ちなみに、Host にポート番号をつけなくても同じ結果が得られますが、 RFC2068 を確認しますと、省略時は 80番になるようですので、 念のためつけておきました。

HTTP に関しましては、RFC2068 をご覧くださいませ。

RFC2068
http://www.ietf.org/rfc/rfc2068.txt

なんのこっちゃと思われた貴兄は、以下をご覧くださいませ。

Vol.019 - telnet を活用する
http://www.usupi.ort/sysad/019.html
Vol.020 - telnet でメールのチェックをする
http://www.usupi.ort/sysad/020.html

今回の宿題

今回の宿題は、

  キャッシュサーバとコンテンツサーバを同じマシンで動かしましょう。

です。

セキュリティを考慮した場合、キャッシュサーバとコンテンツサーバは、 分けるべきですが、1台のマシンで両立できるかどうか知っておいても、 別に問題はないと思います。

あとがき

ここのところ、喜多川泰氏の本に影響を受けています。

最初に読んだのが、「手紙屋」という本です。

これから就職しようとしている「僕」と、「手紙屋」という職業を生業とするかたとの、 10通の手紙のやりとりが記された、心暖まるお話です。

手紙屋〜僕の就職活動を変えた十通の手紙〜
http://www.amazon.co.jp/exec/obidos/ASIN/4887595700/usupiorg06-22

30代後半のわたくしにも、なるほどと思ったり、 ぐさっと心に突き刺さることが書いてあって、いろいろ参考になっています。

で、最近、ふとしたことから、手紙屋さんのブログを発見しました。
ブログでは、本のソムリエ・団長さんというかたと、やりとりされているようです。 (残念ながら、十回のやりとりはすでに終わっています。)

以下が起点となっています。本と同様に、よいことが書いてありますし、 なんたって無料ですので、興味を感じた貴兄は、ぜひご覧ください。

手紙屋ブログ:手紙屋ブログ、スタート!
http://d21.boxerblog.com/tegamiya/2008/05/post-3c7b.html

しかし、ショックを受けたのは、喜多川氏とわたしが同い年だということです。 なんなんでしょうね、この差は…。

 

今回も、ここまで読んでいただき、ありがとうございました。
それでは、次回は 12月7日(日) 頃に、お会いしましょう!

 

「いますぐ実践! Linux システム管理」の解除は、以下からできます。
http://www.usupi.org/sysad/ (まぐまぐ ID:149633)

バックナンバーは、こちらにほぼ全部そろっています。
http://www.usupi.org/sysad/backno.html

「栗日記」−いろんなことがおわって一段落中ですが、栗絵は毎日です。
http://www.usupi.org/kuri/ (まぐまぐ ID:126454)
http://usupi.seesaa.net/ (栗日記ブログ)
http://usupi.org/k/ (モバイル栗日記)


[バックナンバーのトップへ] [Linux システム管理のトップへ]

トップ

バックナンバー
    [日付順] [目的別]

プロフィール

▼ リンク

独学Linux
Linuxデスクトップ環境に関する情報が満載です。 メルマガもありますよ。
Server World
CentOS 6をサーバとしたときの設定例が、これでもかというくらいたくさん載っています。 CentOS以外のディストリビューション(Fedora, Ubuntu)も充実しています。
LINUXで自宅サーバーを構築・導入(Fedora9)
Fedora9のインストールの仕方から管理方法まで、詳しく載っています。 SearchManには情報がもりだくさんです。
マロンくん.NET
〜サーバ管理者への道〜
Linuxをサーバとして使用するための、いろいろな設定方法が載っています。 マロンくんもかわいいです。 なんといっても、マロンくんという名前がいいですね!!
日経Linux
今や数少なくなってしまったLinuxの雑誌。ニュースやガイドもあります。
Linux Square − @IT
@ITが提供する、Linux の情報が満載。 載っていない設定方法はないんじゃないでしょうか。
gihyo.jp…技術評論社
Linuxに限らず様々な技術情報が満載のサイト。 SoftwareDesign誌も、 ソフトウェア技術者は必見です。
SourceForge.JP Magazine
Linux に限らず、オープンソース関連の記事が網羅されています。
ITmediaエンタープライズ:Linux Tips 一覧
Tips というより FAQ 集でしょうか。わからないことがあれば覗きましょう。
IBM developerWorks : Linux
開発者向けですが、勉強になりますよ。
Yahoo!ニュース - Linux
Yahoo!のLinuxに関するニュース一覧です。
栗日記
システム管理とかと全然関係ありませんが、毎日栗の絵を描いています。
システム管理につかれちゃったとき、癒されたいときに、ご覧ください。:-)
WEB RANKING - PC関連
ランキングに参加してみました。押してやってください。

▼ 作ってみました

Add to Google

▼ せんでん




▼ 最近読んだ本

▼ 気に入ってる本