さいころ

今日、外出先から当サーバーのVPNを通して家のネットワークに入っていたら、急にプツリン。再度接続しようとしたらPPTPサーバーが応答しなくなった。あれ?と思いとりあえずブラウザからこのブログにつなげてみても応答無し。SSHでログインしようとしても反応無し。ならばとpingを打ってみても応答無し。カーネルレベルでハングアップしたかな?と思い、電話して家族にサーバーの電源を落としてもらい、再度起動してもらってもダメ。
家に帰ってから調べてみた結果、家の回線の動的IPが変わってドメイン名から家のネットワークに繋がらなくなっただけでした。IPが変わったら自動的にDDNSを更新するように設定をするべきだったんですけど、ルーターを再起動する予定も無いし、今度気が向いたらでいいやと設定を怠っていました。その矢先、しかも外出中になんらかの理由でルーターのグローバルIPが変わってしまったようです。

DDNSの自動更新のサービスを立ち上げくなてはと思い、WindowsでもおなじみのDiCEのLinux版を導入することに。ところが、全然一筋縄ではいきませんでした。

自分用にメモがてら、 作業の工程を書いていきます。

あらかじめ書いておきますと、当サーバーは CentOS 6.3 64bit で稼働しています。それを、 OS X Mountain Lion の Terminal.app からリモートで操作しています。

早速以下のコマンドで作者さんのホームページから本体をダウンロードして、移動して、展開して、アーカイブを削除して、起動します。

# wget http://www.hi-ho.ne.jp/cgi-bin/user/yoshihiro_e/download.cgi?p=diced019
# mv diced01914.tar.gz /usr/local/bin
# cd /usr/local/bin
# tar zxvf diced01914.tar.gz
# rm diced01914.tar.gz
# ./DiCE/diced

そうしたら、なんか /lib/ld-linux.so.2 がねーよって怒られました。どうも、DiCEが32bitしか対応してないのに、64bitのOSで動かそうとするからこうなるんですね。
ならば、/lib/ld-linux.so.2 を入れればいいじゃない、と以下を実行。

# yum install ld-linux.so.2

今度こそ起動した!と思ったら文字化け。どうもこのDiCEはEUC-JPで書いてあるらしい。Terminal.app の文字コードを変更してやれば対応できた。とりあえず初期設定を…

:setup
IPアドレスの検出方法を指定してください
(0) 自動検出
(1) ローカルのネットワークアダプタから検出
(2) 外部のスクリプトから検出
<現在:0>
(N)変更しない (P)戻る
>n
-------------------------------------------------
プライベートIPアドレスも検出対象ですか? (Y/N)
<現在:いいえ>
(P)戻る
>n
-------------------------------------------------
IPアドレスの検出をテストしますか? (Y/N)
(P)戻る
>y 

・
・
・

あれ、いつまでたっても検出しない。
調べてみたらDiCEは外部のサービスを使って自分のマシンのIPを取得しているらしい。で、そのサービスが軒並み死んでいるみたい。
ならば、IPアドレスの検出方法を自分で決めちゃえばいいじゃないということで、初期設定をやりなおす。検出方法は http://checkip.dyndns.org/ を使うことにしました。

-------------------------------------------------
IPアドレスの検出方法を指定してください
(0) 自動検出
(1) ローカルのネットワークアダプタから検出
(2) 外部のスクリプトから検出
<現在:2>
(N)変更しない (P)戻る
>2
-------------------------------------------------
スクリプトのURLを入力してください
(N)変更しない (P)戻る
>http://checkip.dyndns.org/
-------------------------------------------------
プライベートIPアドレスも検出対象ですか? (Y/N)
<現在:いいえ>
(P)戻る
>n
-------------------------------------------------
IPアドレスの検出をテストしますか? (Y/N)
(P)戻る
>y
検出IPアドレス>27.***.***.***

今度はうまくいきました。
続いて、 :add で自分のDDNSサービスのホスト情報を登録していきます。登録自体は指示通りに勧めていけば特に問題はないと思います。

当サーバーのドメインはお名前.comを使用していますが、実際に更新するところで、思わぬ伏兵が潜んでいました。
実際に0番目のイベントを更新してみようと、 :ex 0  と実行してみたらなんかサーバーに繋がらないよ!と怒られました。あれ?

+ 11/26 21:03 にkoichiii.comの実行に失敗しました
Error: サーバーに接続できませんでした

どうも、お名前.com でIPアドレスを更新する際はSSLの通信を必要とするみたい。でもDiCEはOS付属の64bit版のSSLライブラリを認識しないみたい。っていうか、そもそもライブラリの場所すら違うからね。
ということで、32bit版のSSLライブラリをインストール。

# yum install openssl098e-0.9.8e-17.el6.centos.2.i686

そして、DiCEは /usr/lib/libssl.so.0 と /usr/lib/libcrypto.so.0 じゃないと認識しないわがまま君みたいだから、シンボリックリンクを貼ってパスをごまかしてやります。

# ln -s /usr/lib/libssl.so.0.9.8e /usr/lib/libssl.so.0
# ln -s /usr/lib/libcrypto.so.0.9.8e /usr/lib/libcrypto.so.0

恐る恐るもう一度DiCEに入って更新してみる。

:ex 0
このイベントは 13 分前に実行されています
短時間に何度も実行するとDNSサイトに警告を受けることがあります
実行してもよろしいですか?(Y/N)
>y
+ 11/26 21:14 にkoichiii.comが実行されました
 IPアドレスを更新しました

今度こそうまくいました。

 

余談:
ところで、再起動もしてないのに、家のひかり電話対応のルーターにアサインされているグローバルIPが急に変わったのはなんでだろう?ルーターのログを探ってみると、繋がらなくなった時間帯の障害ログにこんな記録が。

2012/10/26 13:35:55 電話サーバ接続成功

電話サーバー接続成功ってことは、いったん電話サーバーへの接続が切れたってこと。っていうことは再起動なりしてPPPoEのセッションがリセットされた可能性がある。そうすればIPが変わったのもうなずける。でも、通常ならその前に機器再起動って言うログが残るはずなのに何も無いんだよねぇ。なぜセッションが切れたのかは未だに謎です…


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です