Aquarela (Plan 9 CIFS サーバ)
H3: 履歴- 2005/05/24 改訂
- 2005/05/01 改訂
- 2004/12/31 改訂
- 2003/10/03 改訂
- 2003/10/01 改訂
- 2003/06/07
Aquarela とは
Aquarela は Nigel Roles による Plan 9 用の CIFS(Common Internet File System) サーバである。UNIX で使用されている samba を参考にし、Plan9 用に書き直したものらしい。Plan 9 には UNIX のソフトウェアを取り込むための APE 環境が存在するが、コードは完全に Plan 9 のスタイルで書かれているので APE 環境は利用しなかったらしい。
Web の記事を読むと CIFS は SMB over IP の名称変更のような印象を受けるが、cifs は TCP/445 ポートを使用するのに対して SMB は TCP/139 を使用している。単なる名称変更であればポート番号を変更する必要はないので、基本的な違いが存在するのであろう。
筆者は以下のクライアントから動作を試した。
OS | 結果 |
---|---|
WinXP | OK |
Win2000 | OK |
Win98 | NG |
MacOSX | NG |
Aquarela は http://www.zen34585.zen.co.uk/dist/aquarela/ から取り寄せる事ができる。
Aquarela のインストール
Aquarela のインストール
Aquarela の mkfile が置かれているディレクトリで mk を実行する。コンパイルに失敗したら mkfile のCFLAGS=$INC $CFLAGS $XCFLAGS
CFLAGS=$CFLAGS $XCFLAGS
mk install
/lib/ndb/common
/lib/ndb/common にtcp=cifs port=445
実行
ディレクトリ/n/local
を作成しておく。Aquarela は aquarela.log をカレントディレクトリに作成する。最初の実験は
cd /tmp aquarela -p
-p
は標準出力にもログを出すオプションである。うまく行かない場合には
aquarela -p -d allcmds
認証
CIFS クライアントとCIFS サーバ(Aquarela)の間は MSCHAP が使用されているはずである。他方 Aquarela と Plan 9 の認証サーバとの間は POP3 認証が使用されている。従って認証サーバに POP3 の登録がない場合にはパスワードを登録する必要がある。
WinXP, Win2000 からの利用
筆者は自宅の Plan 9 端末で Aquarela を走らせて自宅のパソコンからアクセスする実験を行ってみた。Nigel に教えてもらったメールでは3つの方法があるといいう。
You can 1. type \\server\local into a browser window 2. type start \\server\local into a command shell 3. type net use z: \\server\local into a command shell
server
はサーバの名称であり、local
は共有名であるが、共有名は aquarela では local
や dump
などが指定できる。サーバの名前登録
サーバの名前は前もって Windows のC:\WINNT\system32\drivers\etc\hosts
に登録しておくのがよいであろう。(以下ではこのファイルを単に
hosts
と言う。) 筆者の場合には筆者の運営するサーバを登録している。(192 で始まる IP は家庭内 LAN におけるサーバである。)
127.0.0.1 localhost 202.250.160.40 ar 202.250.160.71 hera 202.250.160.122 plan9 192.168.1.1 nx 192.168.1.2 pc 192.168.1.4 mac
特に、家庭環境では登録しないとサーバ名が使えないことに注意すべきである。
コマンドによる接続
aquarela の接続実験には、最初はコマンドシェルからマウントするのがよいであろう。(その方が診断しやすい)筆者の Aquarela サーバの名称は pc である。その場合には
start \\pc\local
net use z: \\pc\local
後者で "z:" を "*" とすると適当に空きドライブを割り当ててくれる。(net コマンドに関しては http://www.computerhope.com/nethlp.htm に解説がある )
柔軟性から言えば後者の方が良い。以下では後者を基に解説する。
接続時のサーバからの応答は、クライアントが Win2000 と WinXP とでは異なる。
Win2000 では「\\pc\local
のパスワードを入力してください:」
と言われる。どうやらユーザ名はクライアントとサーバ側で共通であると考えられているらしい。(これは大変使いにくい)
WinXP ではユーザ名とパスワードの入力が求められる。インターネットレベルでのクライアントとサーバの関係は、ユーザ名の共通化をはかれない場合が多いのであるから、XP の方がまともである。
成功すれば \\pc\local
には サーバ上の /
以下のディレクトリが見えるはずである。
Aquarela の付加機能
Aquarela には次のような工夫がある。(Nigel の言葉をそのまま引用すると)The dynamic stuff will add in things which 9fs adds in. For example c> net use z: \\cpu\dump c> z: z> dir/w 2000 2001 2002 2003
local
以外(例えば dump
)を指定した場合には Aquarela はサーバ上で(例えば)9fs dump
筆者の自宅の Plan 9 端末ではこのままではエラーになった。(そのことは端末上で直接
9fs dump
を実行してみればわかる。) fossil の archive が見えるように /rc/bin/9fs
を次のように書き換えることとした。case dump mount /srv/fossil /n/dump main/archive # mount /srv/boot /n/dump dump >[2]/dev/null || # mount /srv/boot /n/dump main/archive || # mount /srv/boot /n/dump dump # again to print error
ブラウザからの接続
Nigel が示した最初の方法は初心者好みであるが柔軟性を持っていない。次に示すのは Win2000 の画面である。「ネットワークプレスの追加ウィザード」を起動する。これは「マイネットワーク」に置かれている。「マイネットワーク」のデザインは WinXP と Win2000 では異なる。
ネットワークプレスの追加ウィザードの場所(Win2000)
ネットワークプレスの追加ウィザード場所(WinXP)
「ネットワークプレスの追加ウィザード」を起動すると次の画面が表示される。ネットワークプレスの追加ウィザード(Win2000)。WinXP も同じ。
このやり方では、ネットワークプレースをあらかじめ指定しておかねばならないのがつらい。「ネットワークプレスの追加ウィザード」を使用しないやりかたもある。「コンピュータの検索」を利用する方法である。(WinXP と Win2000 共に使用できる)
しかしこの方法ではコンピューター名しか指定できない。
LAN を越えた CIFS の利用
以上の実験は私の家庭内 LAN の中でのものである。家庭から大学の研究室にあるマシン(ar.aichi-u.ac.jp) へのアクセスは以前にはやれていたのだが、今回(2003/10/01)に実験をしたところなぜか、なかなか接続しなかった。夜になってようやく接続できた。原因は不明である。以下は WinXP の画面であるが、Win2000 も基本的に同じである。
「マイネットワーク」の「探索」アイコン
WinXP の「探索」アイコン
をクリックすると「コンピュータ名」の入力を求められ、探索に成功するとさらに「ユーザ名」と「パスワード」の入力を求められる。(下図)家庭から大学の ar への接続1 (WinXP)
もちろん、hosts
に ar
が登録されていれば単に ar
で構わない。
hosts
に ar
が登録されている場合のコンピュータ名の指定
家庭から大学の ar への接続2 (WinXP)
接続に要する時間はイライラするほど長い。Plan 9 の軽快なネットワークになれた筆者にとっては苦痛である。昼に接続しなかったのは大学のネットワークが混み合っていたからか?
Win2000 も WinXP も一旦接続を行うと、ユーザ名もパスワードも改めて聞かれることはない。他のユーザ名で接続を行う場合には一旦ログオフをするか NET
コマンドで /DELETE
の指定をしなくてはならない。次の図は NET
コマンドを用いた接続の取り消しの例である。
C:\>net use * /delete これらのリモート接続が存在します: \\Pc\local \\ar\IPC$ 続行すると、接続は取り消されます。 この操作を続行しますか? (Y/N) [N]: C:\>net use \\pc\local /delete \\pc\local が削除されました。
MacOSX からの利用
筆者は MacOSX から使用したいのであるが、残念ながらうまく行きそうにない。http://www.obdev.at/products/sharity/
も試してみたがポートアドレスが 139 固定のようだ。
トラブルシューティング
ネットワーク パスが見つかりません。
C:>net use z: \\pc\local システム エラー 53 が発生しました。 ネットワーク パスが見つかりません。原因: そもそも相手のポートに届かない時にこのエラーがでるらしい。例えば
pc
がhosts
に登録されていない。
pc
の cifs ポートが塞がっている
Aquarela の安全な運転のために
ユーザ none による aquarela の実行
2005/05/01 追加
不思議な事に aquarela は ユーザ none のデモンを生成するオプシヨンを持っていない。hostowner の権限での aquarela の実行は危険が伴うので none としてサービスを実行すべきであろう。ユーザ none の権限でサービスを行うには
@{cd /tmp; auth/none aquarela&}とでもすればよい。
不正アクセス
2005/05/24 追加
cifs ポートには多数の、時には凄まじい数の不正アクセスが発生する。例えば昨日(2005/05/23)の不正アクセス件数は 385 件であり、つぎのようなものもある。
ar May 23 02:03:30 445 220.170.56.209 ar May 23 02:03:31 445 220.170.56.209 ar May 23 02:03:31 445 220.170.56.209 ar May 23 02:03:31 445 220.170.56.209 ar May 23 02:03:32 445 220.170.56.209 ar May 23 02:03:32 445 220.170.56.209 ar May 23 02:03:33 445 220.170.56.209 ar May 23 02:03:33 445 220.170.56.209 ar May 23 02:03:34 445 220.170.56.209 ar May 23 02:03:34 445 220.170.56.209 ar May 23 02:03:34 445 220.170.56.209 ar May 23 02:03:35 445 220.170.56.209 ar May 23 02:03:35 445 220.170.56.209 ar May 23 02:03:36 445 220.170.56.209 ar May 23 02:03:36 445 220.170.56.209 ar May 23 02:03:37 445 220.170.56.209 ar May 23 02:03:37 445 220.170.56.209 ar May 23 02:03:37 445 220.170.56.209 ar May 23 02:03:38 445 220.170.56.209 ar May 23 02:03:38 445 220.170.56.209筆者の場合には IP アドレスのレベルでも保護が掛かっているのでサーバは保っているが、そうでなければサーバが保たないかもしれない。
おわりに
Aquarela は -n オプションを持っている。このオプションによって TCP/139 へのアクセスも監視しているので、旧来の SMB over IP がサポートされている事になる。しかし Nigel が言うように、このオプションはまだうまく働いていない。
Windows のコマンド net は外部コマンドであり、ファイル名は net.exe である。従って OS とは独立に作成する事ができる。誰かが CIFS 対応の Win98 用の net.exe を作っていてもよさそうであるが、今のところ見つかっていない。