テレホタイムサーバー計画
テレホーダイ時間限定のインターネットサーバーを構築する。
- 理由
プロバイダで CGIが使えない。
ページ容量が全然足んない。(ナニを載せるのかは秘密)
専用線(OCNエコノミー含む)を引くには、貧乏。(涙)
- メリット
テレホタイムなので料金の心配が少ない。固定料金制のプロバイダだと、一層安心できる。
ページ容量は、PCの HDD容量次第。(笑)
CGIでの掲示板も、CGI経由の DBアクセスも思いのまま。
- デメリット
毎回アドレスが変更されるので、何らかの通知方法が必須。
(しかも切断されたことも通知する必要がある...放っておくと、他の客に迷惑がかかって、プロバイダから警告されるかも?!)
DNSに登録されるわけじゃないので、基本的に Mailサーバーにはできません。
ほぼ常時接続しっぱなしになるので、セキュリティには気をつけないといけません。
- 問題点その1
回線を接続したまま 23時をまたいだ時、切断するまでの料金はテレホが効かないかもしれない? (要調査)
また、8時を過ぎても接続したままだと、その回の接続料金はテレホが効かないかもしれない? (要調査)
- 対策案
- 内蔵時計の狂いも考慮し、23:30に接続開始するよう設定する。
また、8:00までには何がなんでも回線を切断しなければいけないので、7:30には、データ通信を行なっている最中でも強制的に回線切断するよう設定する。一瞬でも回線が切断されれば、もし再接続しても被害は最小限に食い止められる。
- 問題点その2
一定間隔で何らかのデータを送受信し続けないと、プロバイダから回線切断される心配がある。
回線切断は IPアドレスの変更につながるため、極力避けねばならない。
対策案1. 一定間隔で pingを打つ。
対策案2. ICQを起動する。
- 問題点その3
サーバーが起動されていることを、IPアドレスとともに知人に通知しないといけない。
- 対策案1. 接続の度に毎回 Mailを送る。
- 毎回 Mailが送られてくる側は鬱陶しくてたまらん。
却下。
- 対策案2. 特定の Webページに IPアドレスを埋め込む。
- 回線切断時は、そのアドレスが埋め込まれた Webページを更新できないことにお気づきかな?
そうとは気付かずにアクセスしてしまうと、他人に迷惑がかかる。そのとき偶然にもアクセスされた側でもサーバーを立ち上げており、偶然にも未知の世界が開ける(笑)かもしれない。
…そのような可能性はごく低く、そうとは知らずにアクセスされた側はたまったもんじゃない。折角の回線帯域が狭くなる。
却下。
- 対策案3. ICQを利用する。
- ICQを利用すれば、通知ならびに一定間隔でのデータ送受信が実現できる。
サーバーの IPアドレスは、ICQの『ホームページへの URL』等に IPアドレスを直接埋め込んでおけばいい。
書き込んだまま回線が切断されても、ICQのステータスが offlineなら回線が切断されているのがわかる。一石二鳥。
採用決定!
- 対象 OS
FreeBSDを対象とする。
Linuxでも、同様なことは充分に可能だと思われる。
(実は Linuxは一度もさわったことがない ^^;)
- 前準備
FreeBSDで動作する ICQソフトである micqをインストール。packagesに含まれているので、簡単。
(ICQソフトには、他に xicqというのもあるけど、このソフトは GUI対応ソフトなので自動運転できるのかどうかわからないため、試してない。)
iij-pppの設定。(on-demand機能を利用してみる)
iij-pppを on-demandで待機するように、起動スクリプトを組む。
今度は pppctlを利用し、起動中の iij-pppを終了させるスクリプトを組む。
ICQを起動して、ステータスが常に onlineに設定されるよう perlスクリプトを組む。また一定間隔でホームページ URLを更新するようにも仕組む。さらに、ICQへの入出力 LOGをファイルへ吐き出すように設定する。(標準出力でもいいかな?) 尚、起動時に自分のプロセス IDを吐くようにしよう。でないと、終了させる時に混乱しそう。
上記の ICQ対話 perlスクリプトを終了させるスクリプトを組む。
- ちょっと休憩 - セキュリティ対策。
inetdで、echo、ftp、telnet、rsh等のサーバーは起動しないようにした方がいい。プレーンテキストの passwordを扱うようなヤツだね。
それ以上に、何度 passwordを間違えても、アクセス不可能にならないヤツ、pop3、imapとかもできれば起動しない方がいいかも?
どうしても telnetや rshが必要なら、ssh等を代わりに使おう。外部からは one time password等を使わないと loginできない設定にしているのなら、そのままの telnetでもいいかもしれない。
iij-pppの入出力 filterも、しっかり設定した方がいい。特に samba/appletalkを利用しているのなら、そのパケットを通さないように設定する。
端的に言えば、filterでしっかり制限すれば、上記 inetd関連は放っておいてもいいのかな? なんて思ってしまうぞ。ヤバいかな?
- 前準備の続き
ICQの『一定間隔でホームページ URLを更新する』の IPアドレスは、『ifconfig tun0』などで拾えると思うし。あと一定間隔は適当に決めちゃいましょう。
本来なら、ppp回線接続イベント(/etc/ppp/ppp.linkup)で更新したいなーなんて思うんだけど、イベントの中から ICQを起動するわけにもいかず。...perlだから socketで通信するようにもできるんじゃないのかなとも思うけど、面倒そう。
- 実行
cronで、iij-ppp起動スクリプトが毎日 23:25に起動されるように設定。
同様に、iij-ppp停止スクリプトを 7:30に起動されるように設定。
ICQ対話 perlスクリプトを 23:30に起動されるように設定。
上記の『ICQ対話 perlスクリプト』を終了させるスクリプトを 07:25に起動されるように設定。
これで、23:30〜07:30の間、接続しっぱなしになるハズ。
途中で回線が切断されても、ICQがデータを送受信し続けてくれるハズなので、on-demandが反応して、再接続を行なう、と。
- 結果
実は、まだスクリプト等を作ってません。手もつけてない。(^^;)
だから、本当に可能なのかどうか。特に、ダイアル時に BUSYが発生した場合にうまくいくのかとか。
今は机上の空論だね。(汗)
でも、実現されればそれなりに便利だと思う。
BACK
alumina from CeraMiX BBS (いつまでたっても準備中!)