&color(red){結局、DiCEは諦めて、自宅鯖にQEMUで仮想マシンを作りwindowsを常時稼働させて「お名前.com謹製ダイナミック DNS クライアント」を動かしている};
------

&color(red){*};こちらだけなのかも知れないのだが、ddns更新してくれない....
 ▲ 3/3 13:27 にchaperone の更新の実行に失敗しました
   Error: サーバーに接続できませんでした
と表記される....
windows版DiCEでも同様にエラーが返ってくる有様。唯一更新可能だったのが「お名前.com ダイナミック DNS クライアント」のみ...困った
「お名前.com ダイナミック DNS クライアント」はwindows版のみ......

2013.03.14でも同様に繋がらない....
#ref(2013y03m14d_215519362.png,nolink);
困った....

現在仕方ないので、仮想化したwindows7にてお名前.com謹製ダイナミック DNS クライアントを動かしている。
.NET Framework互換の[[Mono>http://www.mono-project.com/Main_Page]]を使えば、Linuxで賄えるかな?取敢えずは仮想マシンでDDNS更新中


***DiCEによるDDNS [#xa88a3f5]
自宅鯖を運用するうえで、今割り当てられている&color(green){''グローバルIP''};と購入した&color(blue){''ホスト/ドメイン名''};をDNSに登録するのは必須。
[[DiCE>http://www.hi-ho.ne.jp/yoshihiro_e/dice/]]は、その登録/更新を自動的に行ってくれるデーモン。

ここでは自分に割り当てられたIPアドレスをどうやって取得するかを記述。
外部サイトで自分のIPを知る事は簡単だが、外に行かなくても分かる方法がほしかった。
自宅のルータはNEC Aterm。「現在の状態」が示されているページがあり、そこに割り当てられたグローバルIPが記述されている。
この部分を取得してDiCE経由でDDNSへ反映させたいと思った。

てっとり早くweb.chaperone.jpにphpスクリプトを配置させて、そこからNEC Aterm装置に問い合わせ、結果を表示させる方式を採用。
NEC Atermでは
&ref(2012y06m02d_012553111.png);
と画面に表示されるので、
#code(php){{
<?xml version="1.0" encoding="UTF-8"?>
<?php
$fp = fopen('http://admin:xxxxxx@192.168.0.1/info_main.html','r');  /* Basic認証を経由するので */
$i = 0;
while(!feof($fp)){
   $line = mb_convert_encoding ( fgetss($fp) , 'UTF-8' , 'sjis-win');
   $pos = strpos( $line, 'WAN側 IPアドレス' );
   if ( $i ){
      $ip = trim($line);
      $ip = preg_replace("/^[  ]+/u", "" , $ip);
      $ip = preg_replace("/[  ]+$/u", "" , $ip);
      break;
   }
   if ( $pos !== false ){
      $i = 1;
   }
}
fclose($fp);
print "IPV4:".$ip;
?>
}}

これでIPアドレスが取得できる。
次に、DiCEを準備するのだが、このDiCEを経由してのDDNSデータの更新にはopenssl-0.9.8eが必要なようで
(一部のDDNSサービスに対してのみ?「Error: サーバーに接続できませんでした」と表示される)
#code(nonumber){{
yum install openssl098e.i686
}}
としてopenssl-0.9.8eをインストールします。加えこのDiCEは、/lib配下にこのライブラリを見るようなので
#code(nonumber){{
ln -s /usr/lib/libcrypto.so.0.9.8e /lib/libcrypto.so
ln -s /usr/lib/libssl.so.0.9.8e    /lib/libssl.so
}}
と調整を加えます。
この後、DiCEを展開して、設定を行った。
#code(nonumber){{
cd /opt
tar xzf diced01914.tar.gz
cd ./DiCE
./diced
(中略)
:setup    (DiCEの環境設定)
IPアドレスの検出方法を指定してください   --> 「(2) 外部のスクリプトから検出」を選択
スクリプトのURLを入力してください        --> 「http://xxxx.xxx.xxx.xxx/GlobalIP/index.php」と指定
プライベートIPアドレスも検出対象ですか? --> 「n」
IPアドレスの検出をテストしますか?       --> 「y IPアドレス」        (IPアドレスが正しく検出されたかを確認)
IPアドレスの検出をテストしますか?       --> 「n」
IPアドレスをチェックする間隔を指定してください(分)        --> 「5」   (5分ごとに先のスクリプトURLへアクセスします)
前回の更新から一定時間DNS更新処理を行わないように保護時間 --> 「60」
設定を保存しますか? (Y/N)                --> 「y」
}}
これでDiCEの環境設定が完了して、次にドメイン名と結びつけてDDNSへ登録します。
#code(nonumber){{
:add    (イベントの追加)
DynamicDNSサービス名を入力してください     --> xxxxx              (使用するDDNSサイトを選択します)
ドメイン名を入力してください               --> 「chaperone.jp」
ホスト名を入力してください                 --> 「web」
ログインユーザ名を入力してください         --> 「xxxxxxxxx」           (DDNSサイトで発行しているログイン名)
ログインパスワードを入力してください       --> 「oooooooo」
登録するIPアドレスを入力してください       --> 「(空白のまま)」
このイベントに題名を付けてください         --> なんでもいい
実行する頻度を指定してください (番号入力)  --> 「(5)IPアドレス変化時」
IPアドレスの変化が無い時に実行する間隔を指定してください --> 「(0)7日毎」
詳細オプションを設定します
[ オフライン ]                             --> 「(0)No」
このイベントを有効にしますか? (Y/N)        --> 「y」
イベントを保存しますか? (Y/N)              --> 「y」
}}
このDiCEの起動は &color(green){''/etc/rc.local''};に
#code(nonumber){{
/opt/DiCE/diced -d -l
}}
と記述して、再起動後にも使えるようにした。-dはデーモンモード。-lはログ記述を可能にしている。
ログの書き出し場所は、この場合 ''/opt/DiCE/log'' となる。


***自ホスト参照 [#ie9a1319]
リモートから自宅鯖を見るには名前を使えば閲覧できるが、自宅内で自宅鯖を見ようとするとエラーになる。
windowsXPとかwindows7のホストファイル(&color(green){C:\Windows\System32\drivers\etc\''hosts''};)に内部でのIPと外向けの名前を登録すれば解決見たい。
#code(nonumber){{
192.168.2.2   web.chaperone.jp
}}


***はて [#b4ca85b6]
以外にCPUリソースを頂くようで.....
#code(nonumber){{
  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
 1457 root      20   0  5628  308  248 S  6.3  0.0   2538:35 diced
 1425 root      20   0  265m  10m 6212 S  0.3  0.7   1:46.85 httpd
}}
何もしていなくても、このcpu占有率....まぁー別に構いはしないけど....
1

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS