今日はちょっとした実験の元ネタです。
Windows Azureのホステッドサービスは通常「xxx.cloudapp.net」なホスト名で提供されますが、ドメイン名は独自のでサービス提供したい!とか要望あるかと思います。
cloudapp.netのドメインの管理はマイクロソフト。独自ドメインのドメインの管理はそれぞれの企業または移管しているDNS側ですね。
じゃぁどうするんだというと、独自ドメインに登録する際にDNSのAレコード(ホスト名に対するIPアドレス)ではなく、CNAME(あるホスト名に対する別名、ポインタ)レコードを使います。
例えば、yourhostedservice.cloudapp.net のIPアドレスはなんだ?とDNSに問い合わせると 65.52.176.206 (例)なIPアドレスが返ってきます。
※ホスト名からIPアドレスを問い合わせることを正引き、IPアドレスからホスト名を問い合わせることを逆引き、と言います。
ではCNAME登録したホスト名をDNSに問い合わせるとどうなるかというと、xxxなホスト名は実は yourhostedservice.cloudapp.net だよ、と帰ってきます。でクライアントは再度 yourhostedservice.cloudapp.net の名前解決を行って最終的に接続するIPアドレスを取得することができます。
Windows Azure側ではCNAMEがどう登録されているか感知してないので、自由に設定できますね。
さて、本題。実験する際にわざわざ管理してるDNSに登録したりするのは面倒です。もっと手っ取り早くテストできないか?という方はHOSTSファイルを弄ることで同じようなことが出来ます。
HOSTSファイルはIPアドレスを正引きする際に参照されますが、優先度がDNS等に比べて一番高いので、こちらを弄ることでDNSに行く前に名前解決を行えます。
※ちなみにHOSTSファイルの仕組みはWindowsに限った話じゃなくごく一般的な話です。
Windows OSの場合、HOSTSファイルは c:\windows\system32\drivers\etc フォルダにあります。(HOSTSファイルは拡張子無しで hosts とまんまなファイル名であります)
HOSTSファイルには IPアドレス 対応するホスト名 という形式で記述します。
実際に弄ってみた例は以下の通り。
Windows Azureホステッドサービスで提供されているIPアドレスをNSLookupコマンドで調べ、HOSTSにそのIPアドレスに別名を設定しています。
※Vista以降だとUACのおかげで?Hostsファイルは管理者として実行しないと保存できませんので注意。
管理者として実行されたコマンドプロンプトで以下のコマンド実行するのが手っ取り早いです。
notepad c:\windows\system32\drivers\etc\hosts
ブラウザで見てみた結果は以下の通り。
ちゃんとどちらのホスト名(FQDN)でもアクセスできました。
この手の話はWindows AzureだけじゃなくADFSがらみとか、いろんな場面で応用できると思うので知っておいて損はないです。
とまぁこんな感じ。


ピンバック: Tweets that mention Windows Azure のホステッドサービスに別名つけてみる « ブチザッキ -- Topsy.com