連載
» 2003年06月03日 00時00分 公開

実用 BIND 9で作るDNSサーバ(6):サブドメインの運用と委任 (2/3)

[鶴長鎮一,@IT]

委任しないサブドメイン運用

 サブドメインの運用に当たって、すべてのサブドメインに委任先となるDNSを立てる必要はありません。組織の規模や管理手法によっては委任を利用せず、親ドメイン内で完結させることもできます。サブドメインが管理するゾーン情報の更新頻度が比較的低い場合や、サブドメインを運用できる担当者やサーバなどの資源に恵まれない場合は、この方法が有効的です。

図3 サブドメインは委任することもしないことも可能 図3 サブドメインは委任することもしないことも可能

 例として、example.jpドメインにサブドメインとして「secretary.example.jp」を新設してみましょう。secretary.example.jpに属するホスト情報は次のとおりです。

pc1.secretary.example.jp 192.168.10.50
pc2.secretary.example.jp 192.168.10.51
mail.secretary.example.jp 192.168.10.52 secretary.example.jpドメインのメールサーバ
www.secretary.example.jp pc1.secretary.example.jpの別名 secretary.example.jpドメインのwwwサーバ

 第2回で紹介したexample.zoneファイルを基に、追加設定を施します。

基本的なサブドメインの設定

 最も簡単な方法は、親(example.jp)のゾーンファイルに子(secretary.example.jp)のホスト情報を持たせることです。

$TTL 86400
@            IN      SOA dns.example.jp. root.example.jp. (
                     2003052001 ; serial
                     3600       ; refresh 1hr
                     900        ; retry 15min
                     604800     ; expire 1w
                     86400      ; min 24hr
)
                 IN      NS     dns.example.jp.
dns              IN      A      192.168.10.1
pc1              IN      A      192.168.10.11
pc2              IN      A      192.168.10.12
pc3              IN      A      192.168.10.13
pc4              IN      A      192.168.10.14
pc5              IN      A      192.168.10.15
(ここから追加分)
pc1.secretary    IN      A      192.168.10.50
pc2.secretary    IN      A      192.168.10.51
mail.secretary   IN      A      192.168.10.52
secretary        IN      MX     10 mail.secretary
www.secretary    IN      CNAME  pc1.secretary
親の/var/named/example.zoneファイル

 ホスト名の最後の「.」を省略すると、ゾーンファイルの起点名が補完されます。例ではnamed.confで「example.jp」を起点名に指定()しているため、下記のようにFQDNで指定した場合と同じように振る舞います。特に、MXレコードの指定ではドメイン名そのものをレコードの左辺に指定しています。

(省略)
pc4.example.jp.            IN    A     192.168.10.14
pc5.example.jp.            IN    A     192.168.10.15
(ここから変更分)
pc1.secretary.example.jp.  IN    A     192.168.10.50
pc2.secretary.example.jp.  IN    A     192.168.10.51
mail.secretary.example.jp. IN    A     192.168.10.52
secretary.example.jp.      IN    MX    10 mail.secretary.example.jp.
www.secretary.example.jp.  IN    CNAME pc1.secretary.example.jp.
親の/var/named/example.zoneファイル

注:/etc/named.confで、

zone "example.jp" {
        type master;
        file "example.zone";
};

と指定されています。

 設定は、親ゾーン(example.jp)のNSとして登録されている全DNSサーバ(図3のA、B)に必要です。ゾーン転送やゾーンファイルの自動更新を用いてゾーン情報の同期を行っているのでなければ、ここで紹介した設定を全サーバに施します。設定完了後、BINDを再起動して変更を有効化し、digなどで動作を確認します。

$ dig www.secretary.example.jp
(省略)
;; ANSWER SECTION:
www.secretary.example.jp.  86400  IN      CNAME   
pc1.secretary.example.jp.
pc1.secretary.example.jp. 86400 IN      A       192.168.10.50

 同様の手順で、MXやNSレコードの確認も行います。うまくいかないときは、/var/log/messagesのエラーを参考に、ゾーンファイルに問題がないか確認します。

$ORIGINを使用したサブドメインの設定

 named.confで指定したデフォルトの起点名を意図的に変更するには、$ORIGINステートメントを用います。$ORIGINステートメント以降は、ホスト名の最後の「.」を省略した際に補完されるドメイン名が、$ORIGINの右辺(secretary.example.jp.)に変更されます。ただし、MXはFQDNを指定する必要があります。

 また、$ORIGINで起点名を変更すると、再度$ORIGINで起点名を定義し直さない限り、行末まで指定した起点名が有効になります。

(省略)
pc4                    IN      A      192.168.10.14
pc5                    IN      A      192.168.10.15
(ここから変更分)
$ORIGIN secretary.example.jp.
pc1                    IN      A      192.168.10.50
pc2                    IN      A      192.168.10.51
mail                   IN      A      192.168.10.52
secretary.example.jp.  IN      MX     10 mail (注)
www                    IN      CNAME  pc1
親の/var/named/example.zoneファイル

注:@表記を用いて、

@                     IN      MX     10 mail

とすることもできます。FQDNと起点名が同じ場合は「@」で代替します。

$ORIGINに$INCLUDEを併用した設定

 $INCLUDEステートメントを利用することで、サブドメイン「secretary.example.jp」の情報を別ファイルに分離し、親のゾーンファイルに挿入させることができます。サブドメインのゾーンファイルはexample.zoneと同じディレクトリ(ここでは/var/named)に保存し、記述する内容は「$ORIGINを使用したサブドメインの設定」と同じにします。サブドメイン情報を別ファイルとすることで、ゾーンファイルの編集中に親ドメインとサブドメインの整理がつかなくなるなどの煩わしさがなくなります。

(省略)
pc4                    IN      A      192.168.10.14
pc5                    IN      A      192.168.10.15
(ここから変更分)
$ORIGIN secretary.example.jp.
$INCLUDE secretary.example.zone
親の/var/named/example.zoneファイル

pc1                    IN      A      192.168.10.50
pc2                    IN      A      192.168.10.51
mail                   IN      A      192.168.10.52
secretary.example.jp.  IN      MX     10 mail (注)
www                    IN      CNAME  pc1
親の/var/named/secretary.example.zoneファイル

注:@表記を用いた、

@                     IN      MX     10 mail

と同等です。

$INCLUDEで起点名を変更した設定

 $INCLUDEの2番目の引数に起点名を指定することで、記述をさらに簡潔にできます。簡素化とともに、起点名の変更がその1行(読み込むファイルに対してのみ)に限定できるため、$INCLUDEの次の行はデフォルトの起点名(例ではexample.jp)のままにすることが可能です。

(省略)
pc4                    IN      A      192.168.10.14
pc5                    IN      A      192.168.10.15
(ここから変更分)
$INCLUDE secretary.example.zone secretary.example.jp.
注:/var/named/secretary.example.zoneは「$ORIGINに$INCLUDEを併用した設定」と同じように用意しておきます。

専用のゾーンファイルを用意する方法

 BIND 9では、サブドメイン専用のゾーンファイルを定義できます。これまでの方法は、親のSOAをそのまま引き継ぎますが、専用のゾーンファイルを用意すればサブドメイン専用のSOAを定義できます。

zone "secretary.example.jp" {
        type master;
        file "secretary.example.zone";
};
親の/etc/named.confに追加

$ttl 38400
@       IN      SOA     dns01.secretary.example.jp. root.secretary.
example.jp.  (
                        2003052001
                        10800
                        3600
                        604800
                        38400 )
        IN      NS      dns01.example.jp.
        IN      NS      dns02.example.jp.
        IN      MX      10 mail.secretary.example.jp.
pc1     IN      A       192.168.10.50
pc2     IN      A       192.168.10.51
mail    IN      A       192.168.10.52
www     IN      CNAME   pc1.secretary.example.jp.
親に/var/named/secretary.example.zoneファイルを用意

 ゾーン転送やゾーンファイルの自動更新でゾーン情報を同期している場合、サブドメイン専用にゾーンファイルを定義すると、サブドメイン分はスレーブ側に反映されません。ゾーン転送を使用している場合は、スレーブサーバ側に以下のような設定を追加します。

zone "secretary.example.jp" {
        type slave;
        masters {
                マスター・サーバのIPアドレス;
        };
        file "secretary.example.zone.bak";
};
親(スレーブ)の/etc/named.confに追加

 以上が、委任せずに親ドメイン内でサブドメインの設定を完結させる手法です。ここでは正引きのみ説明しましたが、逆引きも通常どおり行いましょう。

$TTL 86400
@            IN      SOA    dns.example.jp. root.example.jp.  (
                     2003052001      ; Serial
                     3600            ; Refresh
                     900             ; Retry
                     604800          ; Expire
                     3600 )          ; Minimum
             IN      NS    dns.example.jp.
1            IN      PTR   dns.example.jp.
11           IN      PTR   pc1.example.jp.
12           IN      PTR   pc2.example.jp.
13           IN      PTR   pc3.example.jp.
14           IN      PTR   pc4.example.jp.
15           IN      PTR   pc5.example.jp.
(追加分)
50           IN      PTR   pc1.secretary.example.jp.
51           IN      PTR   pc2.secretary.example.jp.
52           IN      PTR   mail.secretary.example.jp.
第2回のexample.revに記述を加えた場合

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。