2013年10月19日土曜日

RouterBOARD + No-IP.com

うちでは DynamicDNS に No-IP.com を利用しているんだけど、これの更新が RouterBOARD でできたら便利かなーと思って、スクリプトを書いてみたよ。

とりあえず更新のみ、あらかじめホスト名の登録を済ませておく必要があるよ。RouterOS 6.5 で動作確認済み。

{
:local user "username"
:local pass "password"
:local host "host.example.com"
:global lastIP
/tool fetch url="http://app.be-grace.co.jp/ip.php" dst-path="ip.txt"
:local ip [/file get "ip.txt" contents]
:if ($ip != $lastIP) do={
    :local url "http://dynupdate.no-ip.com/nic/update\3Fhostname=$host&myip=$ip&hostname=$host"
    /tool fetch url=$url user=$user password=$pass dst-path="No-IP.txt"
    :set lastIP $ip
}
}

user と pass と host を自分のアカウントの情報に書きかえたら、あとは Scheduler に登録しておくといい感じ。


こんな感じで、On Event のところにスクリプトをそのまま書く。

Start Time を startup にすると、RouterBOARD が起動したら自動的に実行されるようになる。Start Date は初期値のままで大丈夫。Interval は適当に。Policy のところは read, write, policy, test をチェックする必要があって、どこかを外すと何かが動かなくなるんだけど、細かいことはよくわからない。

あ、画像では Enabled のチェックが外れているけど、これはチェックしておかないと実行されないよ。

動作としては、RouterBOARD にグローバルIPが割り当てられていなくても動くように、サーバー側のスクリプトでIPアドレスを返すようにしているよ。http://app.be-grace.co.jp/ip.php というのがそのスクリプトで、中身は以下の通り。

<?php
    echo $_SERVER['REMOTE_ADDR'];
?>

ちょっと工夫すると色々できるのが RouterBOARD のいいところだね。