Top > MyPage
 

リモートサービスプロジェクト(仮称)調査報告書

リモートサービスプロジェクト(仮称)調査報告書

トリトンさんが目指すシステムを「リモートサービスプロジェクト」とする。これを実現可能かどうかを調査し、ここにそれを報告する。

目指す目標

  1. できる限り、簡単な方法で先生と生徒がインターネットをつなげて、先生が生徒を指導できるようにする。
  2. いろいろと生徒側の情報がインターネット上を行き交うので、セキュリティを考える必要がある。
  3. 生徒と先生の通信中の、生徒側の画面の記録をとる。というのも、遠隔操作というのは、別の見方をすれば、先生が生徒のコンピュータを乗っ取っているのと同じなのであり、先生が生徒のコンピュータに対して、悪さをしたり、あるいは生徒のコンピュータを通じて、その生徒が所属するLAN内のコンピュータに対してなんらかのアタックをする可能性があるからである。そのため、記録をとることにより、その危険性がないことをアピールできる。その上、生徒が希望すれば、そのファイルをメール等にて渡し、復習もできるようになるという、副作用も生む。
  4. RSUPのようにインストールが必要ない、とはいかないが、ユーザーがCDを入れて、ボタンを押すと全てインストールがされるようにする。ただし、どのOSに対応するのかは慎重に考慮する必要がある。対応するOSが多い方が良いだろうが、対応数が増えればその分設定なども用意するインストールディスクなども増えるわけで、手間暇、ひいては費用も格段に増えていくわけである。次の3種類は必須であろう
  • Windows(XPと2000)
  • Mac(OSX,OS9)
  • Linux(RedHat9?)

上記もWindows Me、Mac OS9,OS8、Linux RedHat 8, Fedora,TurboLinuxなど細分していくと際限がない。

いずれにしろ、OSごとにインストールCDを分ける必要があるのわけで、大雑把に言えば

  • windowsではCDのautorun機能を使い、インストールの画面を見せ、setup.exeなどを自作して、インストールする。
  • Linuxではshell scriptを使うかrpm方式にする。
  • Macは全く不明(使ったことすらない)。

上記の目標を達成するための既存のアプリケーションと自作するアプリケーション

VNCを使って、遠隔操作をする。

  • VNCに色々バリエーションがあるようだが、少なくともwindowsやMac、Linuxの3つに関しては、しっかりあるので、問題はない。

MacのOS9に対応したVNCサーバーをWindowsのViewerで見ると、固まるという報告があるので、この辺をさらに調査する必要がある。

  • 通常VNCにおけるクライアントとは見る側であり、サーバーというのが見られる側である。これが、今回の案件では逆転しているので注意が必要だ。そして、そのサーバー側の設定をユーザーにさせるわけにはいかないので、VNCの設定自体を以下に自動で行うかが問題になる。というのもwindowsのVNCは設定ファイルではなく、レジストリで環境を設定しているので、これをjavaアプリケーション等で自動で設定できるようにする必要がある。
  • そのほか、 VNCには画像を残す機能 、中には vnc2swf という操作の状況をFlashのファイルにする機能などのユーティリティが豊富にそろっているので、色々なサービスを付加できる可能性がある。このなかでもvnc2swfはwindows上ではcygwinのXWindowsでないと動かないという欠点はあるものの、試しにコンパイルして使ってみたところ、しっかりFlashのファイルが作成されていたので、これを利用するのが良いであろう。ちなみにvnc2swfはいわゆるVNCViewerで、リモートのコンピュータを見ながら操作する際、同時にFlashのファイルとして、映像を保存してくれるものである。

sshを使ってのセキュアで、しかも、ファイヤーウォール抜け

[<figure src="" alt=""></figure> is illegal in <p>]

white.chikkun.comのVNC viewerからred.syuei.tvのコンピュータ(VNC serverへ)を操作する方法(以下の図を参照)

まずは以下の条件が必要。

  • green.chikkun.comがサーバーでここにsshdが動いている。
  • white.chikkun.comでVNC viewerが起動できる。
  • blue.syuei.tvがファイヤーウォールになっているが、基本的にポートの22番があいてればOK(sshのデフォルトのポート)。
  • red.syuei.tvにはVNC serverが立ち上がっている。
  • red.syuei.tvではssh クライアントが使える。

そして、その手順

  • red.syuei.tvでsshで次のコマンドをたたく。これで接続の待機状態になる。 $ssh -R 5900:localhost:5900 hogehoge@green.chikkun.com
  • 次に、white.chikkun.comの先生が、VNC viewerでgreen.chikkun.comに対して、VNCにとってのデフォルトの5900ポートで接続を試みる。そうすると、white.chikkun.comの先生がred.syuei.tvの生徒のコンピュータをコントロールできるようになる。

利点

  • まずはこの方法をとると、面倒なファイヤーウォール抜けがあっさり出来る(port22が開いていれば)。
  • 通信が暗号化されているので、セキュアな通信になる。

いかにログを残すか

  • これはログイン画面やログアウト画面を作成し、そのタイミングでログを残すという方法がある。
  • 何をやったのかというログは上記の方法では残せないので、先述したvnc2swfを使うことにより、先生は生徒のコンピュータの画面を見たり、操作をしながらその作業の映像を(ビデオのように)ファイルとして保存できる。

色々な設定などを行うjava web start

  • VNCの設定はlinuxやwindowsやMacでだいぶ違うが、いずれにしろVNCを立ち上げる際にそのポート等の設定を「生徒」に任せるわけにはいかず(そんなことが出来ないほどの素人であろうから)、何らかの方法で、たとえば、ボタン一つで設定できなくてはならない。
  • 先述のsshのログインもユーザーにコマンドラインでログインしてもらうわけにもいかないので、やはりボタン一つでログイン出来るようにしなくてはならない。

上記を実現できる方法として、Java Web Startが考えられる。

可能ならIP電話

例えばパケッチャなどを使って、電話を使わないで話をしながら、サポートするというのも手ではないか。もっと言えば、カメラを使って、テレビ電話で話ながらというようなオプションもあっても良いと思われる。と言いながら、VNCの通信中にテレビ電話などは無理かもしれない。

上記を使ったストーリー(理想像)

  1. 生徒はまず用意されたCDをコンピューターにセットして、様々なアプリケーションをインストールする。2回目以降は、もちろん、その必要がない。
  2. 前項でインストールした後、windowsならstartボタンに、こちらで用意したウェブサイトにアクセスするリンクを張ってあるので、これを利用して、生徒はこちらのウェブサイトにアクセスする。
  3. アクセスしたら、ログインボタンがあるので、そのボタンをクリックして、ログインさせる。
  4. ログインすると、今空いている先生のリンク先がボタンでわかるようになっている。
  5. その空いている先生のボタンをクリックすると、先述のJava Web Startが起動して、生徒のローカルでJavaのアプリケーションが立ち上がる。
  6. そのJavaアプリケーションは接続ボタンがあるので、これをクリックする。
  7. そうすると、VNCServerがこちらの指定したポートで立ち上がり、なおかつ、生徒は自動でsshで先生側のサーバにログインする。
  8. 先生はこの段階で、生徒が接続を希望しているという信号を受け取り、生徒に電話した後、Vncで(vnc2swf)でつなげる。
  9. そして、先生が生徒に指導する。
  10. 指導が終了したら、生徒は先ほどのjavaアプリケーションの「切断」ボタンでsshをログアウトさせる。
  11. 先生は電話を切った後に、事後処理(記録した画面のファイルを所定の場所にコピーするなど---これは、自動化することも可能だが)をする。
  12. あとで、ログなどを検索して探せるようにして、さらに、先ほどのflashのファイルなどもそこから辿れるようにする。

課題

  • 今後の課題は、上記にも出てきたように、javaアプリケーションを利用して、生徒のアクセスの仕方等をいかに簡素化すると言うことであろう。と同時に、記録をいかにして残して、さらにその記録をうまくすぐに検索したりできるようにすることであろう。
  • Macについては、Mac自体が手元にないので、検証の方法がないということも課題と言うべきか。
  • 先述したが、どのOSに対応するのかを、市場調査によるニーズの精査、そしてコストの両面から絞り込む必要がある。
  • これはこちらで決めることではないが、料金体系をどうするか、ということがあげられる。それによってログの残し方なども工夫が必要になる。
  • Java Web Startは使ったことはあるが、作ったことはないので、勉強する必要がある。一度ウェブで読んだところによると、結構設定が面倒そうだった。
  • Windows用のVNCの設定自体がレジストリに書き込まれるので、これをJavaから書き換えなくてはならない。それ自体は可能であるが、それによる誤動作による危険も考慮する必要がある(書き換えている途中で、強制終了されたりすると、何が起こるかわからない)。
  • sshでjavaでログインさせる方法はあるが、それも勉強する必要がある。
  • vnc2swfはcygwinのxwindows上では動くが、windowsのネイティブでは動かない。ただ、これは先生側のソフトのなので、問題ないと言えば問題ない。
  • vnc2swfは記録を残すファイルを引数で渡すようになっているので、これだと先生がファイル名を間違えて前のファイルを上書きしてしまった、或いは、意図してファイルを残さない、というようなことも起こりうる。従って、これをどう制御するかも考える必要がある。
  • 生徒側のセキュリティはsshを使うことと、先生の操作を画像として残すことにより確保できるが、反対に、先生のサーバー側のセキュリティをどう確保するかを考える必要がある。というもの、不特定多数のユーザーがsshでログインしてくるわけなので、それなりのセキュリティを確保する必要がある。現在考えている方法としては、sshで本当の意味でログインしなくても良いので、サーバー側のログインする(矛盾した言い方だが)ユーザーはLinuxでnologinユーザーにし、sshでも-Nオプションをつけると実際のログインをしないので(単にsshはport forwardingするだけなので)、安全になるのではないかと考えている。しかし、まだまだセキュリティは考える必要もあるであろう。
  • セキュリティ上好ましくない状況も起こりうるが、それさえ乗り越えられれば、在宅のアルバイトを使って、先生をさせるという方法も考え得る。

結論

上記のような方法をとれば、色々乗り越えるべき課題はあるし、とりうる方法はある程度限定されるが、「リモートサービスプロジェクト(仮称)調査報告書は」実現が可能であると結論できる。