bind の料理方法

DNS サービスをおこなうための bind を料理してみましょう。

最終更新日 : 1998 年 11 月 22 日


  1. 材料

    • Solaris[ developper ]以上ががインストールされたコンピュータ。
      今回は Solaris2.6 / Ultra1 と Solaris2.6 / SPARCstation5 を素材にしました。
      本当は primary server と secondary server の 2 台を設置した方がクラッシュなどを考えればいいのですが、 1 台でだけでもできます。その場合は secondary server の話は読み飛ばしてね。

  2. 材料の入手

    Solaris2.6 に付属の bind を使用します。バージョンは named 4.9.4-P1 のようです。
    named のコンパイルは別の機会にしますね。:)

  3. 下拵え

    設定のために以下の項目は決めておきましょう。
    まぁ、ちゃんとして設定なら JPNIC などで IP アドレスやらドメイン名を取得 ( 登録 ) しなくちゃいけないんでしょうけど、今回は閉じたローカルな設定で料理します。適当な例で進めますので、個々を読み替えてください。

    • primary サーバーのホスト名 : pochi
    • primary サーバーの IP アドレス : 192.168.1.26
    • secondary サーバーのホスト名 : tama
    • secondary サーバーの IP アドレス : 192.168.1.27
    • 管理されるコンピュータのホスト名 : shiro, mike
    • 管理されるコンピュータの IP アドレス : 192.168.1.28, 192.168.1.29
    • ドメイン名 : mystery.org
    • named の設定ファイルの格納場所 : /var/named

  4. /etc/named.boot の料理

    /etc/named.boot は基本的なファイルになります。これがあると /etc/rc2.d/S72inetsvc があるので、起動時に読み上げて named が起動するようになります。ファイルにミスがあると起動時にエラーの山を築けます。 :)
    基本的に named の各設定ファイルがどこにあるか記述するファイルのようです。
    コメント行はセミコロン [ ; ] ですよ。

    # vi /etc/named

    ; ; /etc/named.boot ; directory /var/named cache . root.cache primary mystery.org mystery.zone primary 1.168.192.in-addr.arpa mystery.rev primary 0.0.127.in-addr.arpa localhost.rev

    # chmod 644 /etc/named.boot
    # chown root /etc/named.boot
    # chgrp sys /etc/named.boot
    # mkdir /var/named
    # chmod 755 /var/named
    # chown root /var/named
    # chgrp sys /var/named

    各行の説明内容ですが、

    • directory /var/named
      named の各設定ファイルの格納されているディレクトリを指定します。どこでもいいみたいすけど、 /var/named とか /etc/named が多いみたいです。
      まぁ、 /var/named ということでディレクトリを作成しています。
    • cache . root.cache
      ルート・ネームサーバーの情報を収めたデータベースファイルを記述します。
      root.cache がファイル名になります。
      . は、情報が反映されるドメインになります。ルーとネーム・サーバーですので、ドメインはルート . になります。
    • primary mystery.org mystery.zone
      primary server として mystery.org を管理する事を宣言して、その設定ファイルは mystery.zone だよとなります。
    • primary 1.168.192.in-addr.arpa mystery.rev
      primary server として逆引き用のドメインとデータベースファイルを指定しています。
      逆引きなので IP アドレスの表記が逆になっています。 192.168.1.26 のマシンなので、 1.168.192.in-addr.arpa になります。
      ファイル名は mystery.rev ね。
    • 0.0.127.in-addr.arpa localhost.rev
      ローカルホストを管理する事を宣言して、その設定ファイルは localhost.zone だよとなります。127.0.0.1 は、ローカルを示す特殊な IP アドレスだそうで、それを使用します。

  5. /var/named/root.cache の料理

    /var/named ( /etc/named.boot の directory で指定したパスね ) にルート・ネームサーバーのデータベースファイルを作成しましょ。

    # vi /var/named/root.cache

    ; ; /var/named/root.cache ; . 99999999 IN NS pochi.mystery.org. pochi.mystery.org. 99999999 IN A 192.168.1.26

    # chmod 644 /var/named/root.cache
    # chwon root /var/named/root.cache
    # chgrp system /var/named/root.cache

    閉じたネットワークですから上位のルート・サーバーに問い合わせる必要がないので、こんな感じになります。
    もし外につながるような設定の場合は、 ftp://ftp.rs.internic.net/domain/named.root から最新のルート・ネームサーバーの情報を得る事ができます。現在は 11 個程度でしょうか。

  6. ちょっと休憩

    named の各データベースファイルを構成やキーワード (?) ってほぼ同じですので、まとめて書いておきます。たぶんこれでいいと思います。う〜ん。

    キーワード
    A ( Address ) IP アドレス ホスト名から IP アドレスへのマッピングについて定義する。
    PTR ( PointTeR ) 計算機名 IP アドレスからホスト名へのマッピングを定義する。
    SOA ( Start Of Authority ) データのはじまり primary サーバー名や設定ファイルの有効期間とか secondary サーバーのキャッシュ時間などを定義する。
    NS ( Name Server ) ネームサーバー primary サーバー及び secondary サーバー名を定義する。
    CNAME ( Cannonical NAME ) 計算機の別名 あるホスト名が別名である場合にこのレコードを使用する。
    $ORIGIN mystery.org.
    www IN CNAME pochi.mystery.org.
    だと www.mystery.org は pochi.mystery.org のエイリアスとして定義される。 CNAME で定義された名称に対して他の記述をしたり、さらに CNAME したりすると混濁するのでダメですよ。
    MX ( Mail eXchanger ) 電子メール配送先 メールアドレスからメールを受け取るホストへのマッピングを書く。 MX レコードには受信ホストの優先順位に合わせて指定する。小さい値から順番に配送される。
    HINFO ( Host INFOrmation ) 計算機の情報  
    TXT ( TeXT ) 任意の文字列  
    WKWN ( WellKnoWN service ) よく知られたサービス  

    各ファイルとも SOA レコードからはじまります。 SOA レコードの書式は、

    @ IN SOA pochi.mystery.org. root.mystery.org. ( 19981115 ; Serial 10800 ; Refresh 1800 ; Retry 4320000 ; Expire 86400 ) ; Minimum

    になります。各記述子の内容は、
    • @
      データベースの起点を示してます。 mystery.org なんですが、 @ を使用すると /etc/named.boot で指定されたドメイン名が割り当てられます。省略形ですね。
    • IN SOA
      キーワード (?) です。
    • pochi.mystery.org.
      named の各ファイルを管理する計算機名になります。
    • root.mystery.org.
      管理者のメールアドレスを書いておくそうです。あんまり意味はないという話です。
    • 2 ; Serial
      データベースのシリアル番号です。
      primary server しか無い場合はあまり意味が無いみたいです。
      secondary server があるとこの番号を見て更新を自動でするようになるそうです。日付なんてよく使われているようです。 19981115 みたいにね。これはたぶん重複する事はないでしょうから。
    • 10800 ; Refresh
      primary server しか無い場合はあまり意味が無いみたいです。
      secondary server が primary server に問い合わせる間隔を指定します。
      単位は [ 秒 ] です。 10800 だと 3 時間ごとになるんですね。
    • 300 ; Retry
      primary server しか無い場合はあまり意味が無いみたいです。
      secondary server から primary server に問い合わせをし時、落ちていたりして反応が無い時のリトライの時間間隔です。
      単位は [ 秒 ] です。 1800 だと 30 分ですね。
    • 4320000 ; Expire
      primary server しか無い場合はあまり意味が無いみたいです。
      secondary server が primary server から入手したデータの有効期間です。これを超えても primary server に接続できないと、 secondary server 上の設定が消去されます。
      単位は [ 秒 ] です。 4320000 だと 50 日ですね。
    • 3600 ; Minimun
      データベースの各レコードの内容の有効期限です。
      この時間分設定をキャッシュします。
      単位は [ 秒 ] です。 86400 だと 24 時間ですね。
    こんな感じで各設定ファイルを作成していきます。

  7. /var/named/mystey.zone の料理

    /var/named/mystery.zone を書いてみます。

    # vi /var/named/mystery.zone

    ; ; /var/named/mystery.zone ; @ IN SOA pochi.mystery.org. root.mystery.org. ( 19981115 ; 10800 ; 1800 ; 4320000 ; 86400 ) ; IN NS pochi.mystery.org. IN MX 10 pochi localhost IN A 127.0.0.1 mystery-met IN PTR 26.1.168.192.in-addr.arpa. pochi IN A 192.168.1.26 IN MX 10 pochi tama IN A 192.168.1.27 IN MX 10 pochi shiro IN A 192.168.1.28 IN MX 10 pochi mike IN A 192.168.1.29 IN MX 10 pochi

    # chmod 644 /var/named/mystery.zone
    # chown root /var/named/mystery.zone
    # chgrp system /var/named/mystery.zone

  8. /var/named/mystery.rev の料理

    /var/named/mystery.rev を書いてみます。

    # vi /var/named/mystery.zone

    ; ; /var/named/mystery.rev ; @ IN SOA pochi.mystery.org. root.mystery.org. ( 19981115 ; 10800 ; 1800 ; 4320000 ; 86400 ) ; IN NS pochi.mystery.org. 26 IN PTR pochi.mystery.org. 27 IN PTR tama.mystery.org. 28 IN PTR shiro.mystery.org. 29 IN PTR mike.mystery.org.

    # chmod 644 /var/named/mystery.rev
    # chown root /var/named/mystery.rev
    # chgrp system /var/named/mystery.rev

  9. /var/named/localhost.rev の料理

    /var/named/localhost.rev を書いてみます。

    # vi /var/named/localhost.rev

    ; ; /var/named/localhost.rev ; @ IN SOA pochi.mystery.org. root.mystery.org. ( 19981115 ; 10800 ; 1800 ; 4320000 ; 86400 ) ; IN NS pochi.mystery.org. 1 IN PTR localhost.mystery.org.

    # chmod 644 /var/named/localhost.rev
    # chown root /var/named/localhost.rev
    # chgrp system /var/named/localhost.rev

  10. /etc/resolv.conf の料理

    DNS を引くためのクライアント側に設定になる resolv.conf を作成しましょう。
    ドメイン名とネームサーバーの IP アドレスを書いておきます。自分自身の IP アドレスになるので、 127.0.0.1 でもいいし 192.168.1.26 でもいいようです。

    # vi /etc/resolv.conf

    domain mystery.org nameserver 192.168.1.26

    # chmod 644 /etc/resolv.conf
    # chown root /etc/resolv.conf
    # chgrp system /etc/resolv.conf

    もしくは

    # vi /etc/resolv.conf

    domain mystery.org
    nameserver 127.0.01

    # chmod 644 /etc/resolv.conf
    # chown root /etc/resolv.conf
    # chgrp system /etc/resolv.conf

  11. /etc/nsswitch.conf の料理

    DNS をちゃんと見にいくようにします。 DNS で名前が無ければ /etc/hosts ( file ) を見に行く順番にします。

    # vi /etc/nsswitch.conf

    hosts: file → hosts: dns file

    #

  12. 試食 1

    in.named を起動して様子を見てみましょう。
    まず、in.named が動作してるかどう確認してからね。起動していたら死んでもらいましょう。

    # ps -ef | grep in.named
    root 816 742 0 16:30:00 ? 0:00 /usr/sbin/in.named
    # kill -9 816

    in.named を起動 !

    # /usr/sbin/in.named

    エラーの状況を見てみましょう。ウチャウチャとエラーがあったら該当のファイルを修正して、いままでの手順を繰り返してみてくださいな。

    # tail /var/adm/messages

    Nov 15 16:28:16 pochi named[759]: starting. named 4.9.4-P1
    Nov 15 16:28:16 pochi named[760]: Ready to answer queries.

    #

    エラーがあったりすると以下のようになっていると思います。

    # tail /var/adm/messages

    Nov 15 16:22:19 pochi named[742]: starting. named 4.9.4-P1
    Nov 15 16:22:19 pochi named[742]: Zone "0.0.127.in-addr.arpa" (file localhost.r ev): no NS RRs found at zone top
    Nov 15 16:22:19 pochi named[742]: primary zone "0.0.127.in-addr.arpa" rejected due to errors (serial 1)
    Nov 15 16:22:19 pochi named[743]: Ready to answer queries.

    #

  13. 試食 2

    nslookup (1m) で dns のチェックをしてみましょう。
    SOA レコード、 A レコード、 PTR レコード、 MX レコードのチェックをしてみます。
    終わりは [Ctrl]+[D] です。登録した予定のコンピュータに対して試してみましょう。
    これで特にエラーが出なかければ primary サーバーの設定はおしまいね。

    # nslookup Default Server: pochi.mystery.org Address: 192.168.1.26 > set type=soa > mystery.org Server: pochi.mystery.org Address: 192.168.1.26 mystery.org origin = pochi.mystery.org mail addr = root.mystery.org serial = 19981115 refresh = 10800 (3 hours) retry = 1800 (30 mins) expire = 4320000 (50 days) minimum ttl = 86400 (1 day) mystery.org nameserver = pochi.mystery.org pochi.mystery.org internet address = 192.168.1.26 > set type=a > pochi Server: pochi.mystery.org Address: 192.168.1.26 Name: pochi.mystery.org Address: 192.168.1.26 > tama Server: pochi.mystery.org Address: 192.168.1.26 Name: tama.mystery.org Address: 192.168.1.27 > set type=ptr > 26.1.268.192.in-addr.arpa. Server: pochi.mystery.org Address: 192.168.1.26 26.1.168.192.in-addr.arpa name = pochi.mystery.org 1.168.192.in-addr.arpa nameserver = pochi.mystery.org pochi.mystery.org internet address = 192.168.1.26 > 27.1.268.192.in-addr.arpa. Server: pochi.mystery.org Address: 192.168.1.26 27.1.168.192.in-addr.arpa name = tama.mystery.org 1.168.192.in-addr.arpa nameserver = pochi.mystery.org pochi.mystery.org internet address = 192.168.1.26 > set q=mx > pochi Server: pochi.mystery.org Address: 192.168.1.26 pochi.mystery.org preference = 10, mail exchanger = pochi.mystery.org mystery.org nameserver = pochi.mystery.org pochi.mystery.org internet address = 192.168.1.26 > tama Server: pochi.mystery.org Address: 192.168.1.26 tama.mystery.org preference = 10, mail exchanger = pochi.mystery.org mystery.org nameserver = pochi.mystery.org pochi.mystery.org internet address = 192.168.1.26 > #

  14. secondary サーバーの /etc/named.boot の料理

    secondary サーバーにも /etc/named.boot ファイルを作成しましょう。
    secondary サーバーになるマシンで作業しましょう。

    # vi /etc/named.boot

    ; ; /etc/named.boot ; directory /var/named cache . root.cache secondary mystery.org 192.168.1.26 backup/mystery.zone secondary 1.168.192.in-addr.arpa 192.168.1.26 backup/mystery.rev primary 0.0.127.in-addr.arpa localhost.rev

    # chmod 644 /etc/named.boot
    # chown root /etc/named.boot
    # chgrp sys /etc/named.boot
    # mkdir /var/named
    # chmod 755 /var/named
    # chown root /var/named
    # chgrp sys /var/named
    # mkdir /var/named/backup
    # chmod 755 /var/named/backup
    # chown root /var/named/backup
    # chgrp sys /vr/named/backup

    ほとんど同じです。
    secondary ではじまっている行だけが異なっている場所だけの説明をします。

    • secondary mystery.org 192.168.1.26 backup/mystery.zone
      mystery.zone ファイルは 192.168.1.26 のマシンで管理されている mystery.zone を /var/named/backup/mystery.zone にコピーしてきてるよ。
    • secondary 1.168.192.in-addr.arpa 192.168.1.26 backup/mystery.rev
      mystery.rev ファイルは 192.168.1.26 のマシンで管理されている mystery.rev を /var/named/backup/mystery.rev にコピーしてきているよ。

  15. secondary サーバーの /var/named/root.cache と /var/named/localhost.rev ファイルの料理

    primary サーバーとまったく同じものですから、コピーしてきちゃいましょう。

    # cd /var/named
    # ftp pochi
    Connected to pochi. 220 pochi FTP server (SunOS5.6) ready.
    Name (pochi:root) : root
    331 Password required for root.
    Password :
    230 User root logged in.
    ftp> cd /var/named
    250 CWD command succcessful.
    ftp> bin
    200 Type set to I.
    ftp > get root.cache
    200 PORT data connection for root.cache (192.168.1.27,328767) (113 bytes).
    150 Binary Transfer complete.
    local: root.cache remote: root.cache
    113 byte received in 0.0013 seconds (87.93 Kbyte/s)
    ftp > get localhost.rev
    200 PORT data connection for root.cache (192.168.1.27,328767) (196 bytes).
    226 Binary Transfer complete.
    local: localhost.rev remote: localhost.rev
    113 byte received in 0.0013 seconds (144.46 Kbyte/s)
    ftp > quit
    221 Goodbye.
    # chmod 644 root.cache localhost.rev
    # chown root root.cache localhost.rev
    # chown sys root.cache localhost.rev

  16. secondary サーバーの /etc/resolv.conf の料理

    primary サーバーのとおんなじです。サーバが 2 つになったので IP アドレスは 2 つ書いておきましょ。あっ、 primary サーバーの方の /etc/resolv.conf にも secondary サーバーの IP アドレスを書いておいてね。

    # vi /etc/resolv.conf

    domain mystery.org nameserver 192.168.1.26 nameserver 192.168.1.27

    # chmod 644 /etc/resolv.conf
    # chown root /etc/resolv.conf
    # chgrp sys /etc/resolv.conf

  17. sevondary サーバーの /etc/nsswitch.conf の料理

    primary サーバーと同じように DNS をちゃんと見にいくようにします。 DNS で名前が無ければ /etc/hosts ( file ) を見に行く順番にします。

    # vi /etc/nsswitch.conf

    hosts: file → hosts: dns file

    #

  18. 試食 3

    secondary サーバーの in.named を起動して様子を見てみましょう。
    まず、in.named が動作してるかどう確認してからね。起動していたら死んでもらいましょう。

    # ps -ef | grep in.named
    root 816 742 0 16:30:00 ? 0:00 /usr/sbin/in.named
    # kill -9 816

    in.named を起動 !

    # /usr/sbin/in.named

    エラーの状況を見てみましょう。ウチャウチャとエラーがあったら該当のファイルを修正して、いままでの手順を繰り返してみてくださいな。

    # tail /var/adm/messages

    Nov 15 16:28:16 pochi named[759]: starting. named 4.9.4-P1
    Nov 15 16:28:16 pochi named[760]: Ready to answer queries.

    #

    エラーがあったりすると以下のようになっていると思います。

    # tail /var/adm/messages

    Nov 15 16:22:19 pochi named[742]: starting. named 4.9.4-P1
    Nov 15 16:22:19 pochi named[742]: Zone "0.0.127.in-addr.arpa" (file localhost.r ev): no NS RRs found at zone top
    Nov 15 16:22:19 pochi named[742]: primary zone "0.0.127.in-addr.arpa" rejected due to errors (serial 1)
    Nov 15 16:22:19 pochi named[743]: Ready to answer queries.

    #

    ちゃんと動くと /var/named/backup の下に primary サーバーより mystery.rev と mystery.zone ファイルが自動的にコピーさえてきているのが確認できると思います。

    # ls /var/named/backup
    mystery.rev mystery.zone
    #

  19. 試食 4

    secondary サーバーでも nslookup (1m) で dns のチェックをしてみましょう。
    primary サーバーと同様に SOA レコード、 A レコード、 PTR レコード、 MX レコードのチェックをしてみます。
    終わりは [Ctrl]+[D] です。登録した予定のコンピュータに対して試してみましょう。
    これで特にエラーが出なかければ secondary サーバーの設定はおしまいね。

  20. 食事

    /etc/named.boot があると起動時に /etc/rc2.d/S72inetsver で勝手に起動するので、何もしなくていいです。
    おまけですが ... DNS のネームサービスをやめる場合は /etc/named.boot を消してしまえばいいわけですね。だけど、 /etc/named.pid ってファイルが勝手にできていて、これを消しとかないと boot 時にロックしてしまいます。ひぇ〜


[ Solaris 料理コーナー ] [ トップページ ]

BEKKOAME//INTERNET で公開していたページです。
作成: 1998 年 11 月 09 日〜 Copyright (C) 1998 Katsauki Shimizu <katsuaki-s @_nifty.com> All rights reserved.

access counter