Amazon Route 53を利用したDynamic DNSを構築
自宅のフレッツ光で固定IPを取得しようとすると月額4725円(wakwak)かかるので、開発サーバはAmazon Route 53を利用したDynamic DNSを構築することにした。
環境: CentOS 5.9
参考にしたのは下記ブログ
1.Amazon Route 53でドメイン名を追加
Route 53にアクセス。
Hosted Zones → Create Hosted Zone
ネームサーバの変更はRecord Setを編集してからにする。
2.Record Setの編集(移行)
Name Serverの変更がインターネットに伝搬するまで時間が掛かる(1時間ぐらいで反映された)ので、Record Setの登録をしておく。
この辺はExampleを見れば大して移行は難しくない。
Google Apps用のtxtレコードはダブルクオーテーションで囲む必要がある。spfとDKIMは改行して登録する。
3.確認。ネームサーバの変更
LinuxまたはMacでnslookupを打って確認してみる。
# nslookup -type=ANY -timeout=10 hoge.net ns-295.awsdns-36.com
下記サイトでも確認できる。
ドメインを選択して表示される「Delegation Set」をレジストラに登録する。
ちなみに私はvalue-domainを使っている。既存のName Serverは全て削除して登録。だいたい反映されるまで1時間ぐらい掛かった。
4.認証ツールのインストール
今度はLAN内の開発用サーバで作業。ちなみにこのサーバはVMware Fusion上のCentOS5。
Amazon Route 53にアクセスするために認証ツールをダウンロードする。ここから。
# wget http://awsmedia.s3.amazonaws.com/catalog/attachments/dnscurl.pl
# chmod +x dnscurl.pl
# mkdir /opt/software/route53
# mv dnscurl.pl /opt/software/route53/
AWSのアカウントコンソールでアクセスキーを生成。アクセスキーIDとシークレットアクセスキーを設定ファイルに記述。
# vi ~/.aws-secrets
%awsSecretAccessKeys = (
"my-aws-account" => {
id => "0F1V9UKMN23IEXAMPLE2",
key => "lkTwZRalREYSU7lbSS5VoUhdYREcwsasEXAMPLEQ",
}
# chmod 600 ~/.aws-secrets
動作に必要なモジュールをインストールする。
# yum install perl-Digest-HMAC perl-XML-XPath
試しに動かしてみる。
# /opt/software/route53/dnscurl.pl --keyfile ~/.aws-secrets --keyname my-aws-acc-- -v -H "Content-Type: text/xml; charset=UTF-8" https://route53.amazonaws.com/2010-10-01/hostedzone
なんとかく動けば成功。
5.DNSレコードを更新するスクリプト設置
「*.dev」のようなワイルドカードにも対応するスクリプトをForkして修正した。ここから。
# wget https://gist.github.com/DaikiSuganuma/5308558/raw/e077eb3ffd1d877d5ef952039a28f32cb75c06d6/route53DynDNS.bash
# chmod +x route53DynDNS.bash
# mv route53DynDNS.bash /opt/software/route53/
設定する
# cd /opt/software/route53/
# vi route53DynDNS.bash
## Location of the dnscurl.pl script
DNSCurl="/opt/software/route53/dnscurl.pl"
## The host name you wish to update/create
myHostName="*.dev"
## Zone/domain in which host (will) reside(s)
myDomainName="hoge.net"
「*.dev」を適当な値に変えておいて、正常に更新されるか試してみる。
# route53DynDNS.bash
6.cronに登録
とりあえず30分間隔で更新するよう設定
# vi /etc/cron.d/route53
#
# cron-jobs for amazon route 53
#MAILTO=""
*/30 * * * * root /opt/software/route53/route53DynDNS.bash
ルータのNAT(NAPT)設定も忘れずに。
利用料金はまだ無料期間のため、1年後ぐらいに更新予定。
< Related Posts >