Mac OS XでDDNSを更新する方法。

AirMac Extremeでパーソナルクラウド(出先からAirMac ExtremeのHDDを利用する)

iPad / iPhoneを使って出先からMacを操作する 実践編

ではDDNSを使っています。問題はDDNSは自動では変動するグローバルIPアドレスを更新してはくれないという事だ。WindowsにはDiCEという便利なソフトがあって実行しておけば勝手にやってくれる。Linix向けにもDiCEがあったり、スクリプトがあったりする。Mac OS X、それもLIONで動作するのは・・・多分だが、無い。

スクリプトが公開されているDDNSサービスならそれを使えば良いが、私の使っているCyberGateには無い。さて。こういう場合にはどうしたら良いのだろうか。。。

完全に発想を転換すればいいのである。光接続で常時接続な今は、昔と違って固定グローバルIPアドレスではないといっても実質そんなには変更はない。Routerが自動ファームウェアアップデートがかかって再起動したとか、家の者が誤ってブレーカーを落としてしまってとかの理由で意図せずに再起動がかかったとか、何かの理由で通信が遮断され再接続になった、とか、そんな感じだ。なので実際にはそういう場合に備えれば良いだけだ。

SyslogをとってWANアドレスを取得するスクリプトを・・・

AutoMatorをつかってRouterの設定画面をだしてWANアドレスをどうにか取得するスクリプトを・・・

いやいや、そんな面倒な事をする必要は実はない。レンタルサーバ等を借りている人はわかるが、WAN側のアドレスはWebサーバにアクセスすればサーバ側では直ぐにわかる。超簡単なスクリプトを置いとけばすむ。ここまで気がつくと、そういうスクリプトを置いてあるような所があるだろうなぁとググると結構あるじゃない!その中から信頼できそうなところを決めてアクセスすりゃ一発でわかる訳だ。
Linux等ではterminalからwgetなんだが、Mac OS X Lionの場合にはwgetは無く、替わりにcurlというコマンドを使う。もう何もかんがえずに、オプションも加えずにterminalに

$ curl http://みつけたサイトのURL

で良い。サイト選びだがテキストだけ返すサイトが望ましい。で、これをローカルにログとして保存するようにちと書き加える。

$ curl http://みつけたサイトのURL > ./abc_log/abclog.txt

一応書いておくと、ユーザ権限で実行しているのでユーザフォルダがカレントディレクトリ(./の部分ね)になるので、そこに「abc_log」というフォルダ(予めつくっておいてね)の中に「abclob.txt」として保存してね、って感じです。さて、「えっ!? ローカルに保存したら、出先でRouterの変更になったWAN側アドレスを知りようが無いじゃん!」って思った貴方、「そうか、それをFTPで自身のレンタルサーバに置くんだな」とか「postfixで自身宛てにメール送るんだな!」とか思った貴方、古いです(笑) それこそ、クラウドがあるじゃない!
そう、上の例で言えばSugarSyncで「abc_log」フォルダを同期フォルダにすれば、iPadだろうがiPhoneだろうがMacだろうが出先で確認出来るんである! 現在のWANアドレスさえ確認出来れば「あれ?!つながらない」となったときにどれどれとみて、DDNSサービス(私ならCyberGate)のサイトにアクセスして手動で変更すりゃ良い。
実際には上のをシェルスクリプトにしておく。テキストエディットを新規で開いて中に

#!/bin/sh
curl http://みつけたサイトのURL > ./abc_log/abclog.txt

と書いて、たとえばabc_log.shとかいうファイル名(.shを付けた方が良いです)で保存。terminalで実行権限つけます。

$ chmod +x /Users/ユーザ名/abc_log.sh

試しにterminalから

$ abc_log.sh

と打ってみてログファイルが生成されるを確認すれば、OK ;-)

あとはcronで(cronniXというFreeウェアを使うと便利です)定期的にシェルスクリプトを実行させれば最新のログがSugarSyncのフォルダに、つまりクラウドに記録されていくという訳です。 ;-)

・・・って、ココまで書いて、お気づきの方もいると思いますが破綻しています。なぜなら、iMacが3hほっておいたらスリープする設定にしているから(^^; iMacを出先からWOLするだとか、その辺の関連エントリーからすると、iMacがスリープしちゃうのでWANアドレスのログが更新されない時間帯が出てきます。なのでどうしてもスリープする前の最新情報までしか取得出来ません。が・・・、先にも書いたように確率的には実際に、あぁダメじゃん!な事はあんまりない訳です。

いや、そんなのは性格的に許せない、な方は、大人しくお金を出してWOL対応・Webサービス対応・DDNS自動更新機能が付いている例えばBuffaloのRouterなり、NASなりに買い替えるか、手軽にWAN側アドレスを更新できる機能があるDDNSサービスプロバイダに切り替えれば一気に解決です(苦笑) (私はこうやってチマチマと手をかけるのが好きなので(笑) )

3 thoughts on “Mac OS XでDDNSを更新する方法。”

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA