2013年4月4日木曜日

Amazon Route 53を利用したDynamic DNSを構築

amazon_route53_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は改行して登録する。

image

 

 

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 >

コメントを投稿
Related Posts Plugin for WordPress, Blogger...

Blog Archives