ようこそNICのホームページへ(なが〜い試運転中)    あなたは2001/5/12以来 人目の来訪者です。
HP パソコン 健康 落語 海外 思うまま 電子工作

Freebsd上でniftyのダイナミックDNSを自動更新する
niftyのddnsリニューアルに伴うperlの修正(2008/12/11修正)
Last update:2009/03/01  build:2008/12/10





最初のddns自動更新のページは−> ここ

2008(H20)年12月3日に何故か外部から自分のHPに繋がらなくなった。
もう一つのダイナミックdnsであるddo!jpからは繋がる。
どうもniftyのダイナミックdnsがおかしいようだ。
perlで書いたプログラムは何もさわっていないので
nifty側で何かあったに違いないと思い、過去にもddnsが不調で何人かの人がトラブルメモを
書き込んでいたページがあったことを思い出した。
googleで探しに行くがうまくヒットせず、変わりにniftyのddnsのお知らせのページにヒット



読んでみると、12月3日にHPはもとより ddnsのシステムもリニューアル(PDF)されたとある。
3日の日はその移行日で夕方まで使えなかったようだ。
お知らせの中に、DiCEのplug−inの変更が示されていた。


それをもとにperlの修正する。
一応httpsでconnectできた。
その時のwgetのログが以下の通り
--18:53:11--  https://domain.nifty.com/cp/ddns/DdnsIpChangeAdd.do?
           => `-'
Resolving domain.nifty.com... 202.248.236.10
Connecting to domain.nifty.com|202.248.236.10|:443... connected.
WARNING: Certificate verification error for domain.nifty.com: self signed certificate in certificate chain
HTTP request sent, awaiting response... 200 OK
Length: unspecified [text/html]

    [ <=>                                 ] 17,418        --.--K/s             

18:53:12 (389.03 KB/s) - `-' saved [17418]


これでうまく行ったと思っていたが、外部から繋がらない。
何かがおかしい????
googleで色々調べたり、niftyのddnsのページも調べたがわからない。
wgetのオプション部分をいろいろ変えて試行錯誤したがわからない。


niftyのddnsの 「よくある質問」の最下段に 「 よくある質問を読んでも解決できなかった場合は?」 というページがあり、
「ダイナミックDNSに関するお問い合わせ」 という質問ページのフォームがあり、
FAQに無いものは質問できるようになっている。
perlを使っているのでサービス対象外だが、質問することにした。藁にもすがる気持ち!!


ところが、「ただいまシステムが大変混み合っております。恐れ入りますが、しばらくしてからご利用ください。」(PDF)
とのメッセージ。丸3日、朝に夕にメールを送ろうとしたが、全く同じ上のメッセージが繰り返されるだけで
メールが送れない。 
混雑しているだけとは思えない。反応である。
初めから断りのメッセージを出すcgiが組んであるように思えてならないような反応。

 受け付ける気が無いなら、初めからこんなページを作るな!!!


その後、googleでいろいろ調べていて、「futomi's cgi cafe」さんのページを見つけ
うまく行くかもしれないと思い試すと、うまく行った!!!

違いはここ。?以下のこの部分「?change_type=ip」
うまく行かなかったケース:
 $wget=`wget --secure-protocol=auto --no-check-certificate -O- -q --http-user=$niftyid
--http-passwd=$niftypass https://domain.nifty.com/cp/ddns/DdnsIpChangeAdd.do` ;
うまく行った   ケース:
 $wget=`wget --secure-protocol=auto --no-check-certificate -O- -q --http-user=$niftyid
--http-passwd=$niftypass https://domain.nifty.com/cp/ddns/DdnsIpChangeAdd.do?change_type=ip` ;
なんとか更新できたようだ。
うまく行ったときのwgetのログです。うまく行かなかった場合と比較して下から2行目に「ok」が出ています。
--19:30:05--  https://domain.nifty.com/cp/ddns/DdnsIpChangeAdd.do?change_type=ip
           => `-'
Resolving domain.nifty.com... 202.248.236.10
Connecting to domain.nifty.com|202.248.236.10|:443... connected.
WARNING: Certificate verification error for domain.nifty.com: self signed certificate in certificate chain
HTTP request sent, awaiting response... 200 OK
Length: unspecified [text/html]

    0K .......... .......                                       95.54 KB/s

19:30:14 (95.54 KB/s) - `-' saved [17460]

IPアドレス更新時のwgetのログをip-change-log.txtに書き込み、記録を残すようにした。

修正したperlのスクリプトを載せておきます。crontabはそのままです。
Perlのスクリプト(2008/12/11修正)crontabの例です。
Perlのスクリプト(2009/03/01修正)
Perlのスクリプト(2009/03/03修正)
Perlのスクリプト(2009/03/10修正)
Perlのスクリプト(2009/03/18修正)

なお、サーバーの環境は以下のとおり(2008/12/11現在変わっていません。)
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



パソコンのことへ     HomePage     このページのトップ