ダイナミックDNSを利用している。IPアドレスの更新に
Freebsd上でDiCEとPerlを使っている。 ddo!jpはDiCEで niftyはPerlで更新している。 Perlのスクリプト(2008/8/19修正)とcrontabの例です。 なお、このページからのリンクはリンク先の了解を得ていません。 ご都合が悪ければ、消去します。 環境は以下のとおり PC:VersaPro VA70J/WXA (M Pentium3 700MHz,Memory=256MB,HDD=20GB) OS:Freebsd 6.1  :Linux linux_base-8-8.0_14 DiCE:diced01913.tar.gz(Linux 版) Perl:perl-5.8.8 wget:wget-1.10.2 Openssl:OpenSSL 0.9.7e-p1 25 Oct 2004 以下は試行錯誤の経緯です。興味があれば見てください。 もともとパソコン通信時代からniftyを利用していたので、 niftyのDDNSが利用できれば良いと言うことで申し込んだ。 IPアドレスが変わった場合も自動的にnifty側で更新してくれるものと思っていた。 そのためのDDNSだろうと。 ところが、全く違っていて自分で更新しなければならない。 そのために便利な自動更新ソフトDiCEがあることがわかった。 それはWINDOWS版である。WINDOWSは常時立ち上げていない。 私のサーバーは、Freebsdで動いているのでこの上で動くものが欲しい。 DiCEのlinux版があることがわかったのでこれを使わせてもらおう。 Freebsdにlinuxカーネルを導入。これはすんなりいった。 DiCEのlinux版を導入。導入といっても展開するだけ まくいかない!!! googleでいろいろ調べたが、どうもうまく行かない。 linux版DiCEがうまく行ったという事例の報告はあるが、私のように、 Freebsd+DiCE+niftyの例はない。 一時、niftyを使うことをあきらめ、ddo!jpを申し込む。 Freebsd上にlinulカーネルを入れることで DiCEが動いた。ddo!jpのIPアドレスも更新されることを確認した。 これが約2年前(2006年8月頃) その後もgoogleで調べていたが Freebsd(linuxカーネル)+DiCE+nifty以外、はあった。 たとえば Freebsd(Linux)+DiCEだがうまく動かなかったとのこと sasapurinさんのページ Linux+DiCEは Linuxで自宅サーバーさんのページ Freebsd+DiCEでうまく行った例。但しniftyはだめとのこと。 物理おもしログさんのページ niftyにはopensslが必要とのこと。しかもシンボリックリンクをきちんと張ること。でもだめとのこと。 横浜で働くシャカイジンさんのページ これらを参考にいろいろやってみたがやはりFreebsd上のDiCEでniftyのddnsを更新することはできなかった。 ddo!jpはFreebsd上のDiCEでIPアドレスの自動更新ができたのに??。 私もOpensslのシンボリックリンクを確認した。問題はなかった。 あきらめてPerlを使って変更することにした。googleで調べて使えるとおもったのが sous le grand arbreさんのページ しかし、何故かそのままではうまく行かない。 niftyはsslを使ってないのだろうか?結局wgetのオプションに`--no-check-certificate'をつけてうまく更新できるようになった。 Perlのスクリプト −− 以下 2008/8/19に追加 −− その後、--no-check-certificateを付けなかった時のエラーメッセージをふと思い出した。 --no-check-certificateを付けろとのメッセージであり、サーバー認証をやめるよう提案しただけで、 --secure-protocol=autoを取るようにとのメッセージではなかった。そこでIPアドレス変更の際のwget文に--secure-protocol=autoを 追加した。Perlのスクリプト(2008/8/19修正) うまく行った。 −−−−− ここまで(2008/8/19追加) −−−−− コマンドラインからは更新できるようになったが、cronからの自動更新がうまくいかない。 わかったこと その1:crontab内ではpathが通っていないので、必要なものすべてにpathを通す。例:wgetにも必要。 その2:'root: not found'というエラーがでる。これはcrontabのなかのオーナーにrootとかいてあることによる。 オーナー名(whoの欄)であるrootをプログラム名と勘違いしてエラーがでる。 システムが実行するcrontab以外ではたとえrootが実行するcrontab内のプログラムでもオーナー名は不要。 rootを消すことでうまく動いた。crontabそのものがオーナーごとになるようだ。 その3:cronで動かしていると、時々wgetによる新しいIPアドレスの取得がうまく行かないようだ。 新しいIPアドレスにヌルコードが入る。この場合古いIPアドレスと比べて更新されたと 判断されて、ヌルコードを新しいIPアドレスとして更新するように動くようだ。 プログラムを一部修正し、新しIPアドレスがヌルの場合、古いIPアドレスを新しいIPアドレスに 代入するように変更した。 |