FTPを使って1812jからMyDNSを更新する

最近独自ドメインを取得し直したんですが、
それに合わせてDDNSサービスをDynDNSからMyDNSに変更してみました。

HTTP-BASICで更新ができなかった

1812jからIPを更新をしてる記事もいくつか見つかったので楽勝だと思ってたら問題が発生しました。

最初に設定してたのは以下のようなコンフィグ。

ip ddns update method mydns
 HTTP
  add http://mydnsid:password@www.mydns.jp/login.html
 interval maximum 7 0 0 0

int Di0
 ip ddns update hostname hoge.net
 ip ddns update mydns

debug ip ddnsしてデバッグを有効にしたあと
上のコンフィグで実際に動かしてsh loggingしてみると、
エラーページが取得されており正しく動いていませんでした。

動かない原因

実はまだよくわかってないです。
kdnsでの設定の話になりますが、
バージョンによってddns updateが動かない場合があるようなので、
それかな?と勝手に思っています。

ちなみにうちの1812jのバージョンは12.4(11)T、DRAM/Flashがそれぞれ128MB/32MBです。
バージョンアップしようとしたら、12.4(20)T以上は256MB/64MBが必要でできませんでした……。

とりあえず解決策

MyDNSはHTTP-BASIC以外にもPOPとFTPに対応してるとのことでした。
なので1812jで使えるFTPとEEMを使ってIPの更新を試みます。

EEMはEmbedded Event Managerの略で、
いろんなイベントをトリガとしてコマンドの実行などができる仕組みです。
今回はタイマーをイベントとすることで日曜AM3時に実行しています。

applet名やcronのエントリー名、MyDNSのユーザ/パスワードは適当に変更してください。
syslogへの出力はお好みで。

event manager applet ddns
 event timer cron name ddns-batch cron-entry "0 3 * * 0"
 action 1.0 syslog msg "# DDNS Update Begin"
 action 2.0 cli command "enable"
 action 3.0 cli command "copy ftp://mydnsid:password@www.mydns.jp/login.html null:"
 action 4.0 cli command "exit"
 action 5.0 syslog msg "# DDNS Update End"

デバッグログを見てみるとFTPのエラーが出てると思いますが
自分の環境ではこれで更新に成功しました。

まとめ

とりあえず汚い方法ですが動かすことができました。
IOSのバージョンをいろいろいじれるようHW性能を上げたいです。
まあ早く固定IPにしろって話なんですが。