Webサービスやアプリを開発して運営するのが趣味です。



Amazon Route 53 で Dynamic DNS

2012年03月04日 20:53

自宅サーバーをはじめたので、ダイナミックDNSを使う必要があった。無料のダイナミックDNSサービスもけっこうあるみたいだけど、DDNS初心者の僕からしてみるとなんとなく不安な感じがする。AWSみたいなところが安くやってないかなーとググってみたところ、やっていた。Route 53という名前がかっこいいし、API も揃ってるそうなのでDDNSにもできそう。

TwitterでMyDNS.JPが無料で良いという情報も教えてもらったけど、なんとなくRoute 53を使ってみたかったので設定したメモ。

ドメインの設定

http://aws.amazon.com/jp/route53/

Route 53の登録、ネームサーバーの設定、ドメインの設定を適当にやります。普通に Management Console が使えるので、普通にドメイン設定するくらいならあまり迷わないとおもう。

Dynamic DNS の設定

Route 53 API から更新できるようにする。サーバーのグローバルIPが変わっても lokka.kksg.net でアクセス出来るように自動で設定し直すようにすることを目的にします。
このサイトがすでにやっていたので、かなり参考にしました。

流れとしては以下3つ

環境は Linux Mint 12 とか Ubuntu とか

  • Amazon Route 53 Authentication Tool for Curl を使えるようにする
  • Amazon Route 53 Dynamic DNS Updater Script を使えるようにする
  • cron に登録する

Amazon Route 53 Authentication Tool for Curl を使えるようにする

Amazon Route 53 Authentication Tool for Curl(dnscurl.pl)はAmazonが公開してるPerl用のRoute 53認証ツールです。

ダウンロード
        * $ wget http://awsmedia.s3.amazonaws.com/catalog/attachments/dnscurl.pl
        * $ chmod +x dnscurl.pl
        
        $ wget http://awsmedia.s3.amazonaws.com/catalog/attachments/dnscurl.pl
        $ chmod +x dnscurl.pl
        
アクセスキーを貼付ける。キーは[ここ](https://aws-portal.amazon.com/gp/aws/securityCredentials)から取ってきます。
        * $ vim ~/.aws-secrets
        * %awsSecretAccessKeys = (
        * "my-aws-account" => {
        *         id => "********""********""********""********""********""********""********""********""********""********""********""********""********""********""********""********""********""********""********""********"

            
            * $ sudo apt-get install libdigest-hmac-perl
            * $ sudo apt-get install libxml-xpath-perl
            

            
            $ sudo apt-get install libdigest-hmac-perl
            $ sudo apt-get install libxml-xpath-perl
            

        

Amazon Route 53 Dynamic DNS Updater Script を使えるようにする

参考にしてるサイトで公開されてるスクリプトを使うとIPの変更検知、Aレコードの作成/変更をやってくれる。ただしうちの環境ではそのまま使えなかったり、ワイルドカードが使えないという問題があったのでけっこう書き直した気がします。修正版は https://gist.github.com/1960895 に置いたので、そこから落とします。

        * $ wget https://raw.github.com/gist/1960895/3428523159465cc4f591b3ae3e706dbf3e991205/route53DynDNS.bash
        * $ sudo chmod +x route53DynDNS.bash
        
        $ wget https://raw.github.com/gist/1960895/3428523159465cc4f591b3ae3e706dbf3e991205/route53DynDNS.bash
        $ sudo chmod +x route53DynDNS.bash
        
5~10行目に設定を書きます
        * \## Location of the dnscurl.pl script
        * DNSCurl="/path/to/route53DynDNS/dnscurl.pl"
        * \## The host name you wish to update/create
        * myHostName="lokka"
        * \## Zone/domain in which host (will) reside(s)
        * myDomainName="kksg.net"
        
        ## Location of the dnscurl.pl script
        DNSCurl="/path/to/route53DynDNS/dnscurl.pl"
        ## The host name you wish to update/create
        myHostName="lokka"
        ## Zone/domain in which host (will) reside(s)
        myDomainName="kksg.net"
        

cron に登録する

crontabを設定して適当な間隔でさっきのスクリプトを走らせます
        * $ crontab -e
        * \*/15 * * * * /path/to/route53DynDNS.bash
        
        $ crontab -e
        */15 * * * * /path/to/route53DynDNS.bash
        

おわり