Windows Azure のサイトへのDNS解決を A レコードで行う

通常の手順では CNAME レコードで Azure のアプリケーションへ向かわせるが、CNAMEが使えない場合もある。

FreeBSD (Linux でもよい) 上の bind を利用してDNSを提供しているマシンにおいて、ドメインを動的更新可能とし、以下のようなスクリプトをメンテナンス時、および、定期的に実行することで対応している。

#!/bin/sh ddnshost=example.cloudapp.net updatehost=azureapp.example.com dnsserver=ns.example.com nsupdatekey=/local/named/Kexample.com.+***+*****.private ttl=60 # arguments are result of 'host' command gethostip() { case "$2 $3" in "has address") ;; *) exit 1 ;; esac REMOTE_ADDR=$4 } # PATH=/usr/bin:/usr/local/bin export PATH echo Content-Type: text/plain echo gethostip `host -t A $ddnshost` SSL_CLIENT_S_DN_CN=$updatehost nsupdate -k $nsupdatekey << __EOF__ server $dnsserver update delete $SSL_CLIENT_S_DN_CN IN A update add $SSL_CLIENT_S_DN_CN $ttl IN A $REMOTE_ADDR show send __EOF__

元々CGIスクリプトだったので、CGIとして動作させるための名残が残っているが、利用上問題ないのでそのまま。Bourne Shell にしたのは、Unix系マシンならどこでも動く、を目指した結果。

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。