グローバルIPアドレスの変更を確認する方法

ルータのグローバルアドレスの変更を自動的に知る方法として、現在使っている方法は「指定したイベントを電子メールで知らせる」というブロードバンド・ルータの機能を使っている。イベントとしてグローバルアドレスの設定を指定しておけば、その内容が電子メールで送られ来る。

ただ、この方法の難点はこういった電子メールによるお知らせ機能を持ったルータが限られてしまうことだ。今回、使っているのはフレッツ光のサービスであり、ルータはNTTから割当てられたRV-230SEという住友電工製ルータで、こういった気の利いた機能はない。

仕方ないので、定期的にRV-230SEの状況を確認するプログラムをPC上で動かして、もしグローバルアドレスに変更があればメールで送るようにするしかない。では、どのようなアプローチにするか?

  1. 24/365稼動させるアクセスサーバ(Linux仮想マシン)があるので、このマシン上で動作させる。
  2. RV-230SEはログを外部のログサーバに吐けないので、cronで定期的にプローブする必要がある。
  3. コマンドライン・インタフェースが無いのでWebアクセスしてHTLMを解析する。
  4. どのLinuxマシンでも使えるようにシェルスクリプトで実現する。

といったところだろう。

Shell scriptで作るが、利用するコマンドもごく一般的なもので構成する。Webページの取得にはwgetコマンドを使う。HTMLの解析にはsedawkで十分だろう。(Perlは嫌いなわけではないのだが、sedとかawkで問題解決するところがUNIXの醍醐味かと思う。)メールは通常の平文テキストで送るのはちょっと抵抗がある、といってPGPまで実装する程の内容ではないので、zipで暗号化してMIME形式で送る。MIMEフォーマットで添付ファイルを扱うためにmuttというメイラを使った。(最初はmailやmailx、procmailなどで何とかならないかと思ったのだが、きちんとMIMEフォーマットにしないとメールを受け取った側でワンクリック再生できないので、探したところmuttというコマンドラインベースでも使えるメイラを見つけた。Fedoraでは標準構成に入っていた。)