*こちらだけなのかも知れないのだが、ddns更新してくれない....

▲ 3/3 13:27 にchaperone の更新の実行に失敗しました
  Error: サーバーに接続できませんでした

と表記される....
windows版DiCEでも同様にエラーが返ってくる有様。唯一更新可能だったのが「お名前.com ダイナミック DNS クライアント」のみ...困った
「お名前.com ダイナミック DNS クライアント」はwindows版のみ......

2013.03.14でも同様に繋がらない....

2013y03m14d_215519362.png

困った....

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

DiCEによるDDNS

自宅鯖を運用するうえで、今割り当てられているグローバルIPと購入したホスト/ドメイン名をDNSに登録するのは必須。
DiCEは、その登録/更新を自動的に行ってくれるデーモン。

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

てっとり早くweb.chaperone.jpにphpスクリプトを配置させて、そこからNEC Aterm装置に問い合わせ、結果を表示させる方式を採用。
NEC Atermでは
2012y06m02d_012553111.png
と画面に表示されるので、

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
<?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: サーバーに接続できませんでした」と表示される)

yum install openssl098e.i686

としてopenssl-0.9.8eをインストールします。加えこのDiCEは、/lib配下にこのライブラリを見るようなので

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を展開して、設定を行った。

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へ登録します。

: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の起動は /etc/rc.local

/opt/DiCE/diced -d -l

と記述して、再起動後にも使えるようにした。-dはデーモンモード。-lはログ記述を可能にしている。
ログの書き出し場所は、この場合 /opt/DiCE/log となる。

自ホスト参照

リモートから自宅鯖を見るには名前を使えば閲覧できるが、自宅内で自宅鯖を見ようとするとエラーになる。
windowsXPとかwindows7のホストファイル(C:\Windows\System32\drivers\etc\hosts)に内部でのIPと外向けの名前を登録すれば解決見たい。

192.168.2.2   web.chaperone.jp

はて

以外にCPUリソースを頂くようで.....

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


トップ   編集 添付 複製 名前変更     ヘルプ   最終更新のRSS
Last-modified: 2014-05-01 (木) 15:26:37 (1177d)