DNSの基礎 2
ドメイン名の命名規則
DNSの勉強をするにあたり、ドメイン名の命名規則を正確に知っておく必要がある。
ドメイン名は各ラベルをドット.で区切って、以下のように記述される。
レジストリによっては登録ルールが別途設定されているが、ドメイン名の各ラベルに対して、一般的に以下の制約がある。
- アルファベットa~z、数字0~9、および、ハイフン-が使える。
- ハイフン-は文字列の最初と最後には使えない。
- ラベルの長さは63文字までとなっている。
- 非アスキー文字(日本語文字やアラビア文字など)のドメイン名も認可されるようになったが、一般的ではない。(実用上、検索エンジンで検索されない場合があるので、あまり推奨されない。)
その他にも、レジストリによって、ラベルの長さ3文字以上、3文字目と4文字目に連続してハイフン-の使用不可、などが規定されている。
相対ドメイン名と絶対ドメイン名およびFQDN
上の例のドメイン名はルートからの相対ドメイン名である。
図5.DNSの階層構造
上図のように、ルートは長さ0の空白 " " で表されることになっている。それゆえ、ラベルの間はドット(.)で区切られるので、
が、ルートを含めた絶対ドメイン名(absolute domain name)になる。最後は長さ0の空白になるので、右端の最後は「.」で終わることになる。
この絶対ドメイン名をfully qualified domain name(FQDN)と呼ばれることもある。日本語では完全修飾ドメイン名または完全に限定されたドメイン名と訳されるが、完全に記述されたドメイン名という意味であり、最後に . を付けても省略しても、FQDNと一般的に呼ばれている。
つまり、
www.sample.co.jp.
は、両方ともFQDNであり、DNSの設定においては後者が用いられ、その他の一般的な設定では、前者が用いられている。
ドメイン名の解釈の多様性
ドメイン名は利用状況により多様に解釈される。たとえは、hp.com にSSH接続する場合、対応するIPアドレスを持つマシンに接続され、Webページを開く場合は稼働しているWebサーバを示したり、メールを送る場合は対応するメールサーバにデータが送信される。
また、サブドメインが指定されれば、サブドメインで指定される別のコンピュータもしくはDNSサーバなどが割り当てられる。
つまり、ドメイン名は利用状況により変化する多様性を持っている。DNSの設定においてはこの多様性の問題を意識する必要がある。
BINDにおけるホスト名の命名ルール
ホスト名はコンピュータを識別するための名前であり、www.sample.co.jpのようにFQDNで表す場合もあるが、wwwの部分を特にホスト名と言う場合もある。
ここでは後者に限って、話をすることにする。
上のサンプルドメイン名www.sample.co.jpのwwwはホスト名を表し、DNSサーバとして世界的に幅広く利用されているBINDを利用している場合、さらに、特別に規定されている。
最後にドットを記述する絶対ドメイン名は、BINDを使ったDNSの設定において非常に重要である。
- アルファベットa~z、数字0~9、および、ハイフン-が使える。しかし、それ以外の文字は使えない
- ハイフン-は文字列の最初と最後には使えない。
ドメイン名の命名規則と被っているが、ドメイン名の命名規則が上位ルールであるので、それが適用されることを考えると、理解できると思われる。しかし、ドメイン名の命名規則4の非アスキー文字は利用できないので、より厳しい制限が課せられていると考えるべきだろう。
しかし、古いシステムの場合、ホスト名www_1などのように、アンダースコア_を使っている場合があり、必ずしもアンダースコアが使えないということはないらしい。比較的新しいバージョンのBINDの場合、マスターゾーンデータにアンダースコア_が使われていた場合、初期設定では失敗failとなる。また、スレーブゾーンデータの場合、警告warnし、レスポンスの場合、無視ignoreするよう設定されている。(2008年の資料[4]なので、最新BINDは異なっているかもしれない。)
スタブリゾルバとetc/hostsとの関係
スタブリゾルバは利用者PCなどで動作するドメイン名名前解決プログラムである。Webブラウザやtelnetなどで直接IPアドレスを指定する場合もあるが、ドメイン名を指定することの方がより一般的である。
スタブリゾルバがDNSサーバに問い合わせを行うことの解説は1.1.5で行なったが、etc/hostsファイルとの関係は述べていなかった。ここでは、スタブリゾルバのもう一つの役割について述べることにする。
元々、etc/hostsファイルはインターネット初期の時代は主流として使われていた。しかし、DNSシステムがネットワークの主要な地位を占めるようになり、etc/hostsファイルはローカルなマシンの管理のみに利用されるようになり、さらにその管理もDNSでできるようになったため、ほとんど無用の長物となりつつある現状がある。
しかしながら、etc/hostsファイルは現在も利用され、効果的運用のために活用されている。
スタブリゾルバはまず初めにetc/hostsファイルを参照し、そこに目的のものがあれば対応するIPアドレスを返し、DNSサーバへの問い合わせを行わないことにより、効率的運用を行うようになっている。それゆえ、よく使うマシンのIPアドレスとニックネームを登録しておけば、telnet taro などのようにニックネームで他コンピュータに接続することができる。このように、職場内の連絡やデータ送信などに活用できるなどの様々な活用法がある。
その他の利用としては、Webサーバの属するプライベートLAN内の利用者PCからWebサーバのドメイン名指定がetc/hostsファイルの設定で可能になる。通常、同じプライベートLANからWebサーバを見に行く場合、ドメイン名指定では見ることができない場合がある。ルータの問題ではあるが、低機能ルータには一旦ローカルLANから外に出て舞い戻る機能が無いものがあり、表示不能となる場合が発生する。高機能ルータの場合は、その機能が付いているものが多いので問題は発生しないが、低機能ルータも多く市場に出回っているので、問題発生が起こることが多い。高機能ルータに買い替えれば済む話であるが、全く費用の掛からない解決策があるので、それを使うことになる。Webサーバのプライベートアドレスとドメイン名をetc/hostsファイルに登録するだけで解決する。
etc/hostsの役割はさほど大きくはないが、便利なので十分活用できる。
参考文献
次は、dnsの基礎3である。