« マウスクリック不良の超簡単お手軽修理方法 | トップページ | 自宅ネットワークのマルチホーミング用ルータを更新する »

2020年1月19日 (日)

DiCEからIOBBのDDNSの更新を行ってみる

IODATAのルータでiobb.netのDDNSを使用して外部から自宅LANへアクセスしているが、IODATAのルータはDDNSサーバーへのIPアドレス更新が失敗したことを認識はしても再更新はしてくれない。
このせいで外部からのアクセスが不可能になることがある為ちょっと対策を考えていた。

で、DDNS更新ソフトのDiceで直接iobbのDDNSサーバへIPアドレスの更新出来ないかを調べた。

iobbのDDNSはiodataのルータからしか更新をサポートしていない為、仕様が公開されておらず勿論DiCEのプラグインもない。
しかしかなり昔にiobbのDDNS更新の方法を現物調査したことが有ったので出来そうなことはわかっていた。

で結論から言うとプラグインを作成するとDiCEからでも更新できることが分かった。
ただプラグインの仕様が公開されていないのでプラグイン作成に当たっては同梱されているプラグインからの推測となった。

この為、最初プラグインの[Response]セクションの設定が合っていなかったのでDiCEがエラーを吐いていた。
どうも必ず数字の1の所に正常更新時のレスポンス内容を記載しないとダメであった。
1以外の数字はそれぞれのエラーレスポンスに対応させる様だ。
[Messages]セクションには上記数字に対応するDiCEのイベントログ出力内容を記載する。

取り合えず正常更新と更新IPに変化が無かった場合のレスポンスを設定して更新成功とし、エラーを1個と合計3個のレスポンスを設定した。
作成したプラグイン内容はこんな感じ。
非公開情報が含まれるため、念のため該当部分は伏字に置き換えている。

以下プラグイン内容
;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
;DiCE DynamicDNS Client Plug-in
;Copyright(c) 2020 riku-zen
;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

[DiCE]
Version=3.0

[ServiceInfo]
Name=IOPortal
URL=https://ioportal.iodata.jp/

[Updater]
Method=GET
Script=XXXXXXXXXX.iobb.net/xxxx/xxx/xxx/xxxxx.cgi?xxxxxxxxxxx

[Domains]
iobb.net

[Options]

[Response]
1=”IOBBからのIPアドレス更新成功時のレスポンス内容を記載”
1=”IOBBからのIPアドレス更新の必要が無い場合のレスポンス内容を記載”
71=”IOBBからの認証エラー時のレスポンス内容を記載”

[Command]

[Messages]
1=”IP更新に成功”
71=”認証エラー”

[Help]

プラグイン内容ここまで

上記設定でIPアドレスの更新成功時と更新前とIPアドレスに変化がなかった場合のレスポンスにDiCEのログで”IP更新に成功”と表示され、正しくDNSのIPアドレス情報が更新されていることが確認できた。
認証エラーについては特に確認していないのでちゃんとエラーとなるかは判らない。
それ以外のレスポンスについてはDiceでレスポンスが確認できませんでしたとなると思われる。

取り合えずこれでしばらく動作確認して問題なさそうであればルータのDDNS更新の補助に使用してみようと思う。

2020/10/26追記:
DiCEのIPアドレス確認用サイトにあまり負荷をかけるのも申し訳ない気がしたので自分専用で@niftyのHPサービスであるLaCoocan上にIPアドレス確認用のPerlスクリプトを設置した。
スクリプト自体はすごい簡単な物だけど調べるのに手間だったので参考にアップしておく。
ファイル名:ip_check.cgi
#!/usr/bin/perl

print "Content-type: text/html\n";
print "\n";
print "$ENV{'REMOTE_ADDR'}";

DiCE付属のipcheck.datのURLを上記スクリプトを配置したURLに書き換えるとIPアドレス確認する際に記載したURLへ確認しに行くようになる。
WEBブラウザからアクセスすると単純にアクセスしたIPアドレスだけ表示される。

DiCEでIPアドレス変更があった際の動作LOG
Dicelog
イベントログのメッセージは日本語から英語に替えたので英語になっている。
最初のLOGで認証エラーのメッセージが出ている。
これは設定した認証情報が間違っていたためで、DiCE側で正しく認証エラーのレスポンスを認識している。
その2分後に認証情報を修正してIPアドレス更新に行って成功している。
IPアドレス変更があった場合はIPアドレスが変わりましたとLOGに表示され更新前と更新後のIPアドレスが記載される。

あと余談だが、IODATAのルータがIOBBへ更新に行くときルータモデル名を最後につけて送信しているがDiCEはDiCEを名乗って送信している。
この情報はDiCEでは変更できない。
今の所この付加情報で弾かれることは無いがもし弾かれるようになったらDiCEは使用できない。
一応IOBBに対してDiCEと同じ動作をするperlのスクリプトも書いてテストし正常に動作することは確認している。
Iobbbperl
もしダメになったときはperlスクリプトならこの情報を自由に設定できるのでこちらに切り替える必要がある。

|

« マウスクリック不良の超簡単お手軽修理方法 | トップページ | 自宅ネットワークのマルチホーミング用ルータを更新する »

パソコン・インターネット」カテゴリの記事

日記・コラム・つぶやき」カテゴリの記事

趣味」カテゴリの記事

自宅サーバ関連」カテゴリの記事

ソフトウェア」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)




« マウスクリック不良の超簡単お手軽修理方法 | トップページ | 自宅ネットワークのマルチホーミング用ルータを更新する »