Linux BIND 第3回

この記事は2015年3月31日に書かれたものです。内容が古い可能性がありますのでご注意ください。


サブドメインの定義のしかたについて

3階層のドメイン構成の設定例

JPドメインの下にさらにサブドメインがあればそこを参照しに行く。
サブドメインの定義に必要なのはサブドメイン用のNSレコードと、それに対するAレコードだけである。

例)JPドメインの下にさらに co.jp と ac.jp というサブドメインを作る場合

JPドメインを管理しているDNSサーバの上のゾーンファイルの記述の例

# vi /var/named/jp
$TTL 3600S
@       IN      SOA     dns     root (
                2013101701
                60S
                120S
                240S
                360S )
        IN      NS      dns
dns     IN      A       192.168.10.173
co      IN      NS      dns.co               //さらにサブドメインを定義する場合
dns.co  IN      A       192.168.10.150      //さらにサブドメインを定義する場合

COドメインを管理しているDNSサーバの上のゾーンファイルの記述の例
さらに sie.co.jp というサブドメインを NSレコードと Aレコードで定義している。

# vi /var/named/co.jp
$TTL 3600S
@               IN      SOA     ns01    root (
                2013101701
                60S
                120S
                360S
                360S )
                IN      NS      ns01
ns01            IN      A       192.168.10.150
sie             IN      NS      ns02
ns02            IN      A       192.168.10.200

SIEドメインを管理しているDNSサーバ上のゾーンファイルの記述例

# vi /var/named/sie.co.jp
$TTL    3600
@       IN      SOA     ns01    root(
                2013102301
                60
                60
                3600
                3600 )
        IN      NS      ns01
        IN		MX		mail01
ns01    IN      A       192.168.10.200
mail01	IN		A		192.168.10.222
host1   IN      A       192.168.10.10
host2   IN      A       192.168.10.11
host3   IN      A       192.168.10.12

DNSサーバ自身の名前解決について

上記の設定をした状態で
Windowsクライアント → jpドメインサーバ(192.168.10.173)→ co.jpドメインサーバ(192.168.10.150)→ sie.co.jpドメインサーバ(192.168.10.200)
のようになっている場合

この状態で sie.co.jpドメインサーバの /etc/resolv.conf で以下のようにするとどうなるか?
# vi /etc/resolv.conf

nameserver 192.168.10.173

この場合
 sie.co.jpドメインサーバ(192.168.10.200) → jpドメインサーバ(192.168.10.173)
になるので、なんだかループが起きそうな気がするが、大丈夫である。

sie.co.jpドメインサーバは自分自身の名前解決に jpドメインサーバを参照しに行くということだが、
 sie.co.jpドメインサーバ(192.168.10.200) → jpドメインサーバ(192.168.10.173)→ co.jpドメインサーバ(192.168.10.150)→ sie.co.jpドメインサーバ(192.168.10.200)
と sie.co.jpドメインサーバにクエリが帰って来た場合には、co.jpドメインサーバ上のリゾルバからのクエリとなるので、
sie.co.jpドメインサーバは /etc/resolv.conf を参照せずに、sie.co.jpドメインサーバ内のBINDのプログラムがゾーンファイルを参照して解答を返す。

なのでループはしない。

サブドメインの名前を引く際の注意点

Windowsクライアント → jpドメインサーバ(192.168.10.173)→ co.jpドメインサーバ(192.168.10.150)のようになっている場合

たとえば上記の設定をして以下のようにして NSレコードを引くとそのドメインを管理しているDNSサーバの名前とIPが帰ってくる。

C:>nslookup
既定のサーバー:  UnKnown
Address:  192.168.10.178

> set type=ns
> co.jp
サーバー:  UnKnown
Address:  192.168.10.173

権限のない回答:
co.jp   nameserver = ns01.co.jp

ns01.co.jp      internet address = 192.168.10.150

これは co.jp を管理しているのは ns01.co.jp というDNSサーバで 192.168.10.150 というIPアドレスを持っています。
という解答を得ているわけですが、
この解答をしているのは jpを管理しているDNSサーバではなくて、co.jp を管理しているDNSサーバなので、 ←ここ重要
そのDNSサーバ上に自分自身に対するNSレコードとAレコードが以下のように登録されていないといけない。

/var/named/co.jp
                IN      NS      ns01
ns01            IN      A       192.168.10.150

もしも上記のように登録されていなかった場合は
いくら上位のjpドメインサーバのサブドメインのレコードで

/var/named/jp
co      IN      NS      dns.co
dns.co  IN      A       192.168.10.150

のように登録されていてもクエリに対する解答は

C:>nslookup
既定のサーバー:  UnKnown
Address:  192.168.10.173

> set type=ns
> co.jp
サーバー:  UnKnown
Address:  192.168.10.173
*** UnKnown が co.jp を見つけられません: Unspecified error

のようになるので注意する。

  • このエントリーをはてなブックマークに追加

PAGE TOP