サブドメインの定義のしかたについて
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
のようになるので注意する。