« 「ITアーキテクト」誌のインタビュー | メイン | JavaScript で非同期処理 »

2006年11月29日

独自ドメインにおける DNS の設定

 レンタルサーバを使って独自ドメインのウェブサイトを立ち上げる際、悩むのが DNS の設定です。王道としては、レンタルしたサーバでプライマリサーバを立ち上げセカンダリはどこかのサービスのものを使用するというパターンと、まるごと Dynamic DNS のようなサービスに頼るというパターンがあると思います。しかし、他の選択肢も存在します。DNS は学習曲線が長そうなので近づかないようにしてきたのですが、今回、mylingual.net というドメインを取得したので、いろいろ試してみることにしました。

1. DNS サーバは2つ以上必要なのか

 独自ドメインで運用するサーバが一台のみなのであれば、その1台でウェブサーバと DNS サーバを兼用させ、セカンダリ DNS を使用しないという手もあります。一般に DNS サーバを複数台用意すべきとされる理由は、1台の DNS サーバが落ちた際にドメイン全体が使用不可能にならないようにするためです。しかし、ドメイン唯一のサーバであるウェブサーバと同時に DNS サーバが落ちるのであれば、あまり問題がないはずです注1
 全てのドメインで可能なわけではありません注2が、.com や .net といった gTLD ではプライマリ DNS とセカンダリ DNS に同一の IP アドレスを登録することにより、このような運用が可能です。

2. グルーレコードの積極的な活用

 ウェブサーバと DNS サーバが同居するのであれば、さらに最適化ができるのではないかと思って試してみました。dig してみると、gTLD のグルーレコードは ANSWER セクションで返ってくるようです。ということは、ウェブサーバのホスト名を NS として登録してしまえば、gTLD のネームサーバ (?.gtld-servers.net) への参照のみで名前解決が完了してしまうのではないか、と試してみました。

$ dig @g.gtld-servers.net mylingual.net +norecurse

; <<>> DiG 9.2.4 <<>> @g.gtld-servers.net mylingual.net
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 56565
;; flags: qr; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2

;; QUESTION SECTION:
;mylingual.net.                 IN      A

;; ANSWER SECTION:
mylingual.net.          172800  IN      A       202.229.27.152

;; AUTHORITY SECTION:
mylingual.net.          172800  IN      NS      mylingual.net.
mylingual.net.          172800  IN      NS      www.mylingual.net.

;; ADDITIONAL SECTION:
mylingual.net.          172800  IN      A       202.229.27.152
www.mylingual.net.      172800  IN      A       202.229.27.152

 どうもリゾルバによっては (?) レベル毎にクエリを送信したりするらしく注3、完全に gtld-servers.net に頼り切ることはできないようですが、遠隔地からのアクセスが想定される場合は、この手法によって DNS lookup の高速化ができるかと思います。  もちろん、MX レコードの参照等に備えてプライマリサーバをセットアップする必要はありますが、こんなこともできるみたいだ、という話でした。

注1: 名前解決に失敗したという情報が DNS キャッシュサーバにキャッシュされることはありますが、数分程度で再試行が行われるはず
注2: たしか JP ドメインは無理
注3: そのほうが安全な設計だと思う

投稿者 kazuho : 2006年11月29日 10:41 このエントリーを含むはてなブックマーク このエントリーを含むはてなブックマーク

トラックバック

このエントリーのトラックバックURL:
http://labs.cybozu.co.jp/cgi-bin/mt-admin/mt-tbp.cgi/934