&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占有率....まぁー別に構いはしないけど....