2012年03月04日

Amazon Route 53 で Dynamic DNS

自宅サーバーをはじめたので、ダイナミック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認証ツールです。

ダウンロード
    <pre class="shi_pre sh_xml snippet-formatted sh_sourceCode">
    * $ wget http://awsmedia.s3.amazonaws.com/catalog/attachments/dnscurl.pl
    * $ chmod +x dnscurl.pl
    </pre>

    <pre class="snippet-textonly sh_sourceCode" style="display:none;" tabindex="0" contenteditable="">
    $ wget http://awsmedia.s3.amazonaws.com/catalog/attachments/dnscurl.pl
    $ chmod +x dnscurl.pl
    </pre>
</div>
アクセスキーを貼付ける。キーは[ここ](https://aws-portal.amazon.com/gp/aws/securityCredentials)から取ってきます。
    <pre class="shi_pre sh_perl snippet-formatted sh_sourceCode">
    * $ vim <span class="sh_symbol">~/.</span>aws<span class="sh_symbol">-</span>secrets
    * <span class="sh_variable">%awsSecretAccessKeys</span> <span class="sh_symbol">=</span> <span class="sh_symbol">(</span>
    * <span class="sh_string">"my-aws-account"</span> <span class="sh_symbol">=></span> <span class="sh_cbracket">{</span>
    *         id <span class="sh_symbol">=></span> <span class="sh_string">"********"</span><span class="lass=" sh_string"="">"********"</span><span class="lass=" sh_string"="">"********"</span><span class="lass=" sh_string"="">"********"</span><span class="lass=" sh_string"="">"********"</span><span class="lass=" sh_string"="">"********"</span><span class="lass=" sh_string"="">"********"</span><span class="lass=" sh_string"="">"********"</span><span class="lass=" sh_string"="">"********"</span><span class="lass=" sh_string"="">"********"</span><span class="lass=" sh_string"="">"********"</span><span class="lass=" sh_string"="">"********"</span><span class="lass=" sh_string"="">"********"</span><span class="lass=" sh_string"="">"********"</span><span class="lass=" sh_string"="">"********"</span><span class="lass=" sh_string"="">"********"</span><span class="lass=" sh_string"="">"********"</span><span class="lass=" sh_string"="">"********"</span><span class="lass=" sh_string"="">"********"</span><span class="lass=" sh_string"="">"********"

        <pre class="shi_pre sh_perl snippet-formatted sh_sourceCode">
        * $ sudo apt<span class="sh_symbol">-</span>get install libdigest<span class="sh_symbol">-</span>hmac<span class="sh_symbol">-</span>perl
        * $ sudo apt<span class="sh_symbol">-</span>get install libxml<span class="sh_symbol">-</span>xpath<span class="sh_symbol">-</span>perl
        </pre>

        <pre class="snippet-textonly sh_sourceCode" style="display:none;" tabindex="0" contenteditable="">
        $ sudo apt-get install libdigest-hmac-perl
        $ sudo apt-get install libxml-xpath-perl
        </pre></span>

    </pre>
</div>

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

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

    <pre class="shi_pre sh_xml snippet-formatted sh_sourceCode">
    * $ wget https://raw.github.com/gist/1960895/3428523159465cc4f591b3ae3e706dbf3e991205/route53DynDNS.bash
    * $ sudo chmod +x route53DynDNS.bash
    </pre>

    <pre class="snippet-textonly sh_sourceCode" style="display:none;" tabindex="0" contenteditable="">
    $ wget https://raw.github.com/gist/1960895/3428523159465cc4f591b3ae3e706dbf3e991205/route53DynDNS.bash
    $ sudo chmod +x route53DynDNS.bash
    </pre>
</div>
5~10行目に設定を書きます
    <pre class="shi_pre sh_perl snippet-formatted sh_sourceCode">
    * <span class="sh_comment">\## Location of the dnscurl.pl script</span>
    * DNSCurl<span class="sh_symbol">=</span><span class="sh_string">"/path/to/route53DynDNS/dnscurl.pl"</span>
    * <span class="sh_comment">\## The host name you wish to update/create</span>
    * myHostName<span class="sh_symbol">=</span><span class="sh_string">"lokka"</span>
    * <span class="sh_comment">\## Zone/domain in which host (will) reside(s)</span>
    * myDomainName<span class="sh_symbol">=</span><span class="sh_string">"kksg.net"</span>
    </pre>

    <pre class="snippet-textonly sh_sourceCode" style="display:none;" tabindex="0" contenteditable="">
    ## 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"
    </pre>
</div>

cron に登録する

crontabを設定して適当な間隔でさっきのスクリプトを走らせます
    <pre class="shi_pre sh_xml snippet-formatted sh_sourceCode">
    * $ crontab -e
    * \*/15 * * * * /path/to/route53DynDNS.bash
    </pre>

    <pre class="snippet-textonly sh_sourceCode" style="display:none;" tabindex="0" contenteditable="">
    $ crontab -e
    */15 * * * * /path/to/route53DynDNS.bash
    </pre>
</div>

おわり


2012年04月05日

短縮URLっぽい文字列の生成方法3つ

2012年03月11日

正規表現確認ツール RegEx Cafe を作った

2012年02月26日

はじめての自作PCで自宅サーバーをはじめた

2012年01月07日

美容室で働く美容師のシャンプー評価とヘアケアについての独り言のランキングというサイトを作りました