Linux IPX-HOWTO

Terry Dawson, <94004531@postoffice.csu.edu.au>

v1.2, 14 January 1996

川島浩, <kei@sm.sony.co.jp>

v1.2j, 27 March 1996
このドキュメントでは、Linux カーネルのサポートする IPX プロトコルを 使用しているさまざまなツールを、どうやって入手、インストール、設定 するかについて述べます。

注意: この文書はかなり以前に書かれたものなので、 いまどきの Linux 環境にはあてはまらない箇所があります。 (JF Project)

1. はじめに

2. 免責

3. 関連するドキュメント

4. このドキュメントで使われている主な用語

5. /proc ファイルシステムの下のIPXに関係するファイル

6. Greg Pages の IPX ツール

7. Linux マシンを IPX ルータとして設定するには

8. Linux マシンを NCP クライアントとして設定するには

9. Linux マシンを NCP サーバとして設定する

10. IP 経由の IPX トンネル

11. Novell の Linux 商用サポート

12. 著作権に関するメッセージ

13. その他 && 謝辞

14. 日本語訳について


1. はじめに

これは Linux の IPX-HOWTO です。この他に Linux の NET-2-HOWTO も併せて 読む必要があります。

1.1 前の版からの変更点

追加:

ipxbridge

修正/改定:

ncpfs

1.2 イントロダクション

Linux カーネルは他の Unix ライクなオペレーティングシステムに比べて完全に 新しいネットワークの実装をしています。 カーネルのネットワークソフトの開発に新鮮なアプローチを採用することに よって、TCP/IP 以外のプロトコルをサポートすることが可能になりました。 IPX プロトコルはそういったプロトコルの一つです。

現在のところ、Linux カーネルは IPX プロトコルだけをサポートしています。 このドキュメントの中で触れられている、他のソフトウエアではサポートされている IPX/RIP, SAP, NCP プロトコルは、Linux カーネルではまだサポートされていません。

IPX 機能のオリジナルの開発者は Alan Cox <ialan@iifeak.swan.ac.uk> であり、Greg Page <greg@caldera.com> によって拡張されました。

2. 免責

私は Linux のネットワークソフトウエアの全てに関して知っているわけでは ありませんし、また知ることも不可能です。 このドキュメントが誤りを含んでいる可能性があることを許諾し、念頭に おいてください。より正確で詳細な情報に関しては、このドキュメントに 記されているいろいろなソフトウエアに含まれている README ファイルを 参照してください。私はできる限りこのドキュメントを誤りの無い、 最新のものにし続けるつもりです。また、対象にしているソフトウエアの バージョンは、このドキュメントを書いている時点のものです。

3. 関連するドキュメント

(JF:以下の URL は 2001年10月時点のものに一部変更しています)

このドキュメントではあなたが、正しいネットワークオプションを選択した Linux カーネルの再構築方法、基本的なネットワークツール (ifconfig, route など) の使い方をすでに知っていることを前提にしています。もしこれらについて 十分な知識がない場合には、NET-2-HOWTO を先に読んでください。 このドキュメントは、http://sunsite.unc.edu/mdw/HOWTO/NET-2-HOWTO.html からたどることもできます。

(JF: NET-2-HOWTO は現在 obsolete です。 Net-HOWTOLinux Networking-HOWTO の日本語訳 をご覧ください)

その他の有益な Linux HOWTOドキュメント:

Ethernet-HOWTO

http://www.linuxdoc.org/HOWTO/Ethernet-HOWTO.html ( 日本語訳) は、イーサネットの設定方法について詳しく書かれたドキュメントです。

PPP-HOWTO

http://www.linuxdoc.org/HOWTO/PPP-HOWTO/index.html ( 日本語訳) は、 バージョン 2.2.0d の Linux PPP 機能で利用できる IPX 機能に関して記述されて います。

3.1 このドキュメントの新しいバージョンについて

もしあなたが持っているこのドキュメントが、2ヶ月以上前のバージョン ならば、新しいバージョンを入手することを強くお奨めします。 Linux のネットワークサポートは非常に速い速度で拡張/変化しているため、 このドキュメントも相当頻繁に書き換えられています。このドキュメントの 最新の版は以下の場所から anonymous ftp で入手することができます。

sunsite.unc.edu では /pub/Linux/docs/HOWTO/IPX-HOWTO または: /pub/Linux/docs/HOWTO/other-formats/IPX-HOWTO{-html.tar,ps,dvi}.gz

Linux Document Project の Web サーバから World Wide Web (WWW) でアクセスする 場合には http://www.linuxdoc.org/ のページ: IPX-HOWTO http://www.linuxdoc.org/HOWTO/IPX-HOWTO.html または私のディレクトリ <94004531@postoffice.csu.edu.au>から。

また、次のニュースグループにも時々ポストされています。 newsgroups: comp.os.linux.networking, comp.os.linux.answers and news.answers

3.2 フィードバック

このドキュメントに関するコメントや更新や提案を私宛に送ってください。 <94004531@postoffice.csu.edu.au> すばやくフィードバックをもらえれば、すばやくドキュメントを訂正/更新 することができます。私は最近ほとんどニュースを読んでいませんので、 なにか問題を見つけたら直接私宛に電子メイルを送ってください。

4. このドキュメントで使われている主な用語

このドキュメントの中では「クライアント」と「サーバ」という用語が 頻繁にでてきます。このドキュメントの中ではこれらの用語を通常使われる 特殊な意味ではなく、以下のように、少し一般化した定義をします。

クライアント

いろいろなサービスやデータを得ることを目的として、アクションや 接続の要求をおこなうマシンやプログラム

サーバ

複数のリモートマシンからの接続を受け付け、それらに対して サービスやデータを提供するマシンやプログラム

この定義にしてもたいして信頼できるものではないですが、SLIP や PPP など、 真の意味でのクライアント/サーバの区別がない終端同士を区別することが できます。

その他の用語:

IPX

Internet Packet eXchange の略。Novell によって、Netware(TM) 製品の インターネットサポートのために提供されている。IPX プロトコルは TCP/IP における IP プロトコルと同様の機能を果たす。

IPX network address

特定の IPX ネットワークをユニークに識別するのに使われる番号。 通常 0x23a91002 のように、16進表記で記述される。

IPX インターナルネットワーク

仮想的な IPX ネットワーク。物理的なネットワークに直接対応しないという 意味において仮想的である。 特定の IPX ホストを識別、アドレッシングするために使われる。 一般的には、ファイルサーバのように複数の物理 IPX ネットワークに またがって存在するホストに対して意味がある。 アドレスは物理IPXネットワークと同じ形式。

RIP

Routing Information Protocol の略。 IPX ネットワークにおいて、ネットワーク経路情報を自動的に伝搬させる のに使われるプロトコル。TCP/IP における RIP プロトコルと同様の機能を 果たす。

NCP

NetWare Core Protocol の略。 NetWare 製品のために Novell によって開発されたネットワークファイル システムプロトコル。TCP/IP における NFS と同様の機能。

SAP

Service Advertisement Protocol の略。 Netware 環境において、ネットワークサービスを通知するために Novell が設計したプロトコル。

ハードウエアアドレス

メディアアクセス層において物理ネットワーク中でホストをユニークに 識別するための番号。イーサネットは一般に ':' で区切られた 6個の16進数で表記される。例) 00:60:8C:C3:3C:0F

ルート

パケットが目的地に達するときに通過する経路のこと

5. /proc ファイルシステムの下のIPXに関係するファイル

/proc ファイルシステムの下には、Linux の IPX 機能に関係するファイル類が たくさん存在します。以下の通り:

/proc/net/ipx_interface

このファイルには、そのマシンで設定されている IPX インターフェースに 関する情報がはいっています。コマンドによって手動で設定されたもの と、自動的に検出され設定されたものの両方が含まれます。

/proc/net/ipx_route

このファイルには IPX ルーティングテーブル中に存在するルート情報が はいっています。コマンドによって手動で付加されたものと、 IPX ルーティングデーモンによって自動的に付加されたものの両方が 含まれています。

/proc/net/ipx

このファイルにはそのマシン上で使われるためにオープンされている IPX ソケットのリストがはいっています。

6. Greg Pages の IPX ツール

Caldera Incorporated の Greg Page <greg@caldera.com> は IPX を設定するためのツール一式を書き、Linux カーネルの IPX 機能を拡張しました。

このカーネルの拡張によって、Linux は完全な形での IPX ブリッジまたは IPX ルーターとしての機能をもつことができます。この IPX サポート拡張 機能はすでに主流のカーネルに反映されていますので、恐らくあなたは すでにこの機能を持ったカーネルを使っているでしょう。

このネットワーク設定ツールにを使って、あなたのネットワーク デバイスで IPX を利用できるように設定したり、IPX ルーティングを制御したり することができます。この Linux IPX ネットワークツールは Greg のサイトから 直接ダウンロードできます。 ftp.caldera.com です。 <ftp://ftp.caldera.com/pub/ipx>.

6.1 IPX ツールの詳細

ipx_interface

このコマンドはネットワークデバイスに対して手動で IPX 機能の 付加・削除・チェックをおこなうために使われます。通常、ネットワーク デバイスは eth0 などのイーサネットデバイスでしょう。少なくとも ひとつの IPX インターフェースを -p フラグで primary インターフェース として 指定する必要があります。例えばイーサネットデバイス eth0 で IPX 機能を 使い、IEEE 802.2 フレームタイプで、IPX ネットワークアドレスを 39ab0222 とするならば、以下のような指定になります :

# ipx_interface add -p eth0 802.2 0x39ab0222

ipx_configure

このコマンドはインターフェースの設定/プライマリーインターフェース の設定を自動的におこなうかどうかを指定します。 --auto_interface オプションで新しいネットワークデバイスを自動 設定するかどうかを制御します。--auto_primary オプションでIPX ソフトウエアが自動的に primary インターフェースを選択するかどうか を制御します。 両方とも自動でおこなう際の標準的なコマンドラインの例は:

# ipx_configure --auto_interface=on --auto_primary=on

ipx_internal_net

このコマンドはIPXインターナルネットワークアドレスを設定したり、 解除したりするために使われます。インターナルネットワークアドレスは 省略可能ですが、このコマンドで設定されたインターフェースは常に primary インターフェースとなります。IPX ネットワークアドレス ab000000、 IPX ノード 1 に設定するためのコマンドラインの例は :

# ipx_internal_net add 0xab000000 1

ipx_route

このコマンドは IPX ルーティングテーブルを手動で書き換えるために 使われます。例えば IPX ネットワーク 39ab0222 に到達するために IPX ネットワーク 39ab0108 上のノード番号 00608CC33C0F を経由するルート をテーブルに付加するには以下のコマンドを使います:

# ipx_route add 0x39ab0222 0x39ab0108 0x00608CC33C0F

7. Linux マシンを IPX ルータとして設定するには

たくさんの IPX セグメントが存在し、それらの間をネットワークで接続 しなければならない場合には、ルータが必要になります。Novell 環境では 二つの情報がネットワーク間で伝搬される必要があります。Novell RIP プロトコルで伝搬されるネットワークルーティング情報と、Novell SAP プロトコルで伝搬されるサービス通知情報です。ほとんどの状況において、 使い物になるためにはすべてのルータはこれら両方のプロトコルをサポート しなければなりません。

Linux はこれら両方のプロトコルをサポートしています。また、Novell に準拠した ルータとして機能させる事もとても簡単です。

Linux カーネルの IPX サポート機能は実際には IPX ルーティングテーブルに 記述されたルールに基づいて IPX パケットをインターフェース間でフォワード することで管理しています。IPX ルーティングテーブルを正しく構成するため、 またネットワークの変更のステータスを反映するための情報を周期的に アップデートするために、Linux にも Novell の RIP に相当するものが必要です。

"NCP Server" の章で述べられている lwared パッケージには、Novell の RIP デーモンと、Novell の SAP デーモンを実現したソフトウエアが含まれています。 ftp.ists.pwr.wroc.pl にも同様のものがあります。

<ftp://ftp.ists.pwr.wroc.pl/pub/linux/ipx/> には便利なデーモンが 存在します。

Linux マシンをルータとして機能させるために設定するのはとても簡単です。 以下の手順です:

  1. カーネルを IPX ・イーサネット・/proc 機能をイネーブルして構築します。
  2. IPX と SAP デーモンプログラムを入手して、コンパイル・インストール します。
  3. 新しいカーネルでブートします。それぞれのイーサネットカードが正しく 認識されていることと、ハードウエアコンフリクトがないことを確認して ください。
  4. 上に述べた ipx_interface コマンドを使って、それぞれのインターフェース で IPX プロトコルをイネーブルします。
  5. IPX デーモンと SAP デーモンを起動します。

次のような単純なネットワークを考えます:

 IPX Addr: 0x01000000  802.2
|--------------------------|
              |
              \_________________________
                                        \          Linux Router
 IPX Addr: 0x02000000  802.2             \
|--------------------------|              \   eth0/-----------\
              |                            \--====|           |
              \_________________________          | IPX route |
                                        \     eth1|  Table    |
 IPX Addr: 0x02000000  etherII           \----====|    ^      |
|--------------------------|                      |    |      |
              |                               eth2|  IPXd     |
              \______________________________/====|           |
                                                  |  SAPd     |
 IPX Addr: 0x02000000  etherII                eth3|           |
|--------------------------|                 /====|           |
              |                              |    \___________/
              \______________________________/

上のようなネットワークに対する設定は例えば以下の通りです:

# ipx_interface add eth0 802.2 0x0100000000
# ipx_interface add eth0 802.2 0x0200000000
# ipx_interface add eth0 etherii 0x0300000000
# ipx_interface add eth0 etherii 0x0400000000
# ipxripd
# ipxsapd

しばらく待ってから /proc/net/ipx_route ファイルを見てください。 あなたの設定したネットワーク設定と、 ネットワーク中の他のルータから得られた IPX ルートの情報が入っている はずです。

8. Linux マシンを NCP クライアントとして設定するには

IP と IPX プロトコルが混在するネットワークや、Linux マシンからネットワーク 上の Novell ファイルサーバのデータをアクセスしたい場合にはどうすれば いいでしょうか。このような目的のために Novell は NFS サーバを提供しています が、小さな会社や、ごく少数の人しかこのような目的に興味を示さない場合など には、この商用パッケージのコストが認められるかどうか、難しいものが あります。

Volker Lendecke <lendecke@namu01.gwdg.de> は Novell NCP のサブセットを サポートしたファイルシステムカーネルを書きました。これによって、 別の製品を購入することなしに、Novell の Volume を Linux からマウントする ことができます。このソフトウエアによって、Linux は Novell workstation のファイルサービスをエミュレートできます。また、このソフトは Novell プリントキューに対してプリントするための簡単なユーティリティを 含んでいます。

Volker はこのパッケージを ncpfs と名付けました。開発に必要だった 情報の主なものは、Manfred Hill and Ralf Zessin の "Netzwerkprogrammierung in C" から派生しています。もっと詳細なことに関しては ncpfs パッケージに 含まれている README ファイルを参照してください。また、Greg Page <greg@caldera.com> の書いた IPX tools も使用されています。

8.1 ncpfs を入手するには

ncpfs パッケージはバージョン 1.2.13 カーネルまたは 1.3.53 以降のカーネル で使用するために設計されました。現在、あなたがこれらに該当するカーネルを 使っていないのであれば、それらのカーネルを使う必要があります。 バージョン 1.3.0〜1.3.52 のカーネルではIPX機能がうまく働かないことが 知られています。

ncpfs パッケージは anonymous ftp を使って Volker のホームページから入手する 事ができます: linux01.gwdg.de <ftp://linux01.gwdg.de/pub/ncpfs/> 叉は sunsite.unc.edu <ftp://sunsite.unc.edu/pub/Linux/system/Filesystems/ncpfs> 叉はそのミラーサイト これを書いている時点での最新バージョンは: ncpfs-0.11.tgz です。

8.2 カーネル 1.2.* で ncpfs を構築するには

イーサネットとIPX機能をイネーブルしてカーネルを構築する

まず最初にあなたのカーネルがIPX機能をイネーブルして構築されている ことを確認する必要があります。バージョン 1.2.13 のカーネルでは、 以下に示すように 'The IPX protocol' の質問に対して 'Y' と答えている ことを確認する必要があるだけです:

 ...
 ...
Assume subnets are local (CONFIG_INET_SNARL) [y]
Disable NAGLE algorithm (normally enabled) (CONFIG_TCP_NAGLE_OFF) [n]
The IPX protocol (CONFIG_IPX) [n] y
*
* SCSI support
 ...
 ...

あなたの使用するイーサネットカードに対応したドライバを含んでいること を確認する必要もあります。もしこれについてどうやればいいかを知らなければ Ethernet-HOWTO を読んでください。 <http://sunsite.unc.edu/mdw/HOWTOJ/Ethernet-HOWTO.html>.

カーネルを構築する準備は整いました。構築が完了した後には lilo を 走らせて、新しいカーネルをインストールすることを忘れないでください。

ncpfs ソフトウエアを解凍するには

# cd /usr/src
# tar xvfz ncpfs-0.9.tgz

ncpfs を make する

特になんの設定もせずにきれいにコンパイルできるはずです。

# make

IPX ツールを都合のよいところにコピーする

make が正しく完了したら、すべての必要なツールが ncpfs/bin ディレクトリ にできあがっているはずです。以下のように、これらのツールを /usr/local/sbin ディレクトリにコピーする事をお薦めします:

# cd bin
# for i in ipx* ncp* slist nprint pqlist ; do cp \*(dRi /usr/local/sbin; done

ncpfs.o モジュールを都合のよいところにコピーする

make が正しく完了すれば、ncpfs/bin ディレクトリに ncpfs.o という ファイルもできあがっているはずです。これは ncpfs のカーネルモジュール です。これもどこか都合のよいところにコピーしておきましょう。私の debian システムでは、 /lib/modules/1.2.13/fs ディレクトリに コピーし、ncpfs を /etc/modules ファイルに追加しました。これによって ブート時に ncpfs が自動的に起動されます。 もしあなたが他のパッケージを使っているのならば、どこが適切かを 調べてください。 またはただ単に/etcディレクトリにコピーするするか、です。

手動でモジュールをロードするには次のコマンドを使います:

# insmod ncpfs.o

8.3 1.3.54 以降のカーネルで ncpfs を構築する

1.3.53 版のカーネルの ncp 機能はうまく動作しないので、 もしあなたがバージョン 1.3.53 カーネルを使用しようとした場合には 警告を受けます。1.3.54 以降のカーネルを使用してください。

1.3.54 以降のカーネルを使用する場合には、すでにカーネルのソースの中に ncpfs 機能は含まれています。以下の質問に対して、'Y' と答えるだけです:

 ...
 ...
The IPX protocol ?
 ...
 ...
NCP filesystem support (to mount NetWare volumes) ?
 ...
 ...

IPX ツールを構築するためには、 1.2.* カーネルのための指示にも 従う必要があります。Makefile を少しだけ変更する必要があることに注意して ください。変更点はファイルの中にも記述されていますが、簡単に言って、 以下の変更を Makefile に加える必要があります:

# SUBDIRS += kernel-1.2/src
# INCLUDES = -I$(TOPDIR)/kernel-1.2

これは、1.2.* 版のカーネルの場合にのみ必要な変更です。

8.4 ncpfs の設定と使い方

IPX ネットワークソフトウエアの設定

IPX ネットワークソフトウエアの設定には、二種類の方法があります。 IPX ネットワークの情報について、すべての情報を手動で設定する 方法と、ソフトウエア自身に自動的に適正な情報を決定させる方法です。 ほとんどのインストールの場合、この自動的な方法でうまくいく でしょう。もしこれがうまくいかない場合には、手動設定するために 以下の "IPXツール" の章を読んでください。

# ipx_configure --auto_interface=on --auto_primary=on

設定のテスト

IPX ネットワークの設定が終わったら、slist コマンドを使うこと によって、あなたのネットワーク上にあるすべての Novell ファイルサーバ を見ることができるはずです:

# slist

もし slist コマンドが 'ncp_connect: Invalid argument' などのメッセージを 表示した場合には、恐らくカーネルが IPX をサポートしていないの でしょう。ちゃんと正しいカーネルでブートしたかどうかなどを確認して みましょう。もし slist コマンドがすべてのファイルサーバを表示しない 場合には、手動でネットワークの設定をおこなう必要があるかもしれません。

Novell(TM) のボリュームをマウントする

IPX ネットワークソフトウエアがうまく動作していれば、Novell の ファイルサーバボリュームを Linux ファイルシステムにマウントできる はずです。この目的のために ncpmount コマンドが使われますが、 少なくとも以下の情報を指定する必要があります:

  1. ファイルサーバの名前。
  2. ファイルサーバのログインID。パスワードがついている場合にはそれも必要。
  3. マウントポイント (すなわち、どこにマウントしたいか)

以下の例は、ファイルサーバ ACCT_FS01 にユーザ guest で、 パスワード無しで、/mnt/Accounts ディレクトリにマウントログイン する場合の例です:

# ncpmount -S ACCT_FS01 /mnt/Accounts -U guest -n

この例では、-n オプションによってログインにパスワードが不要なことを 指定しています。 同様のログインでパスワード指定が必要な場合には以下のようになります。

# ncpmount -S ACCT_FS01 /mnt/Accounts -U guest -P secret

-n オプションも -P オプションも指定しなかった場合、パスワードの 入力を促されます。

マウント機能をチェックする

マウントがうまくいけば、マウントポイントの下のディレクトリ として、ログインに使われたユーザ ID でアクセス可能なボリューム が見えるはずです。また、ディレクトリ構造を渡り歩く (traverse) ことが できるはずです。NCP は uid/gid による所有権 (ownership) を提供していない ため、すべてのファイルは、マウントポイントディレクトリの所有権を ひきつぐことになります。Linux ユーザ間でマウントを共有する場合に は、この点について留意してください。

プリント機能をチェックする

プリント機能がうまく動作しているかどうかをチェックするには nprint コマンドを使います。nprint コマンドを使うと、Nerware プリントキュー に対してファイルをプリントすることができます。pqlist を使うと Netware サーバ上で使用できるプリントキューを見る事ができます。 どちらのコマンドもユーザーネームとパスワードが必要ですので、 簡単にプリントするためには、なにかシェルスクリプトを作るのが よいでしょう。例えば例としては:

# pqlist -S ACCT_FS01 -U guest -n
# nprint -S ACCT_FS01 -q LASER -U guest -n filename.txt

ncpmount コマンドと同様のログオン方法です。上に述べた例は、ACCT_FS01 というファイルサーバにパスワードなしの guest アカウントで、LASER という プリントキューが存在し、それに対して guest がプリントを許されている という場合の例です。

自動的にマウントされるように設定する

ncp マウントを恒久的に設定する必要がある場合には上で述べたような コマンドを rc ファイルから実行する事によって、ブート時に自動的に おこなうことができます。私のお薦めは /etc/rc.local ファイルにこれら の設定を記述しておくことです。 私は /etc/init.d ディレクトリの下の NetWare というファイルにこれらの 設定を記述しておき、/etc/rc2.d ディレクトリに適切なシンボリックリンク を張っています。 例えば以下のようにするのもいいかもしれません:

#
# Start the ncp filesystem
/sbin/insmod /lib/modules/1.2.13/fs/ncpfs.o

# configure the IPX network
ipx_configure --auto_interface=on --auto_primary=on

# guest login to the Accounting fileserver
ncpmount ACCT_FS01 /mnt/Accounts -U guest -n

#

NCP マウントの設定には、$HOME/.nwclient ファイルを作る、という もうひとつの方法があります。このファイルには一時的または ユーザごとに必要なNCPマウントを記述しておきます。 これにより、毎回マウントの詳細を指定することなく、詳細なマウント 方法を記述しておくことができます。

このファイルの形式は明快です: たとえば次のコマンドを実行すると、ログイン名 TERRY で、/home/terry/docs ディレクトリに DOCS_FS01 をマウントします(ACCT_FS01 ではなく)。DOCS_FS01 が選択されなかったのは、マウントコマンドのオプションにファイルサーバ を指定しなかったからです。

$ ncpmount /home/terry/docs

また、次のコマンドを実行すると、DOCS_FS01 のかわりに ACCT_FS01 を ログイン名 GUEST でマウントします。

$ ncpmount -S ACCT_FS01 /home/terry/docs

注意: この機能がうまく動作するためには、$HOME/.nwclient ファイルの パーミッションが、0600 になっている必要があります。これには、次の コマンドを実行します:

$ chmod 0600 $HOME/.nwclient

ルート以外のユーザにこの機能を使う事を許すのであれば、ncpmount コマンドの Root の Set Userid ビットを立てておくことが必要です。 これには次のコマンドを実行します:

# chmod 4755 ncpmount

9. Linux マシンを NCP サーバとして設定する

Linux を Novell ファイルサーバとして機能させるためのパッケージには二種類 あります。どちらのパッケージを使っても、Linux 上のファイルを Novell NetWare クライアントソフトウエアのユーザと共有する事ができます。 本物の Novell ファイルサーバと同じように、ファイルシステムをマシン上の ローカルドライブにマップすることや、アタッチすることができます。 両方のパッケージを使ってみて、あなたの目的にはどちらのパッケージが 適しているかを判断するのがよいでしょう。

9.1 mars_nwe パッケージ

Martin Stover <mstover@freeway.de> が開発したパッケージです。 Netware クライアントに対してファイルとプリントサービスを提供します。

mars_nwe は Martin Stovers Netware Emulator の 略です。

mars_nwe のできること

mars_nwe は Novell NCP のサブセットを実現しています。 ファイルサービス、ディスクベースの bindery サービス、プリントサービスが 実現されています。バグを含んでいるようです。(@@)

mars_nwe を入手するには

linux01.gwdg.de <ftp://linux01.gwdg.de/pub/ncpfs/>. から入手できます。 これを書いている時点での最新バージョンは: mars_nwe-0.96.pl2.tgz.

mars_nwe パッケージを構築する

イーサネットとIPX機能をイネーブルしてカーネルを構築する

まず最初にあなたのカーネルが IPX 機能をイネーブルして構築されている ことを確認する必要があります。バージョン 1.2.13 のカーネルでは、 以下に示すように 'The IPX protocol' の質問に対して 'Y' と答えている ことを確認する必要があるだけです:

 ...
 ...
Assume subnets are local (CONFIG_INET_SNARL) [y]
Disable NAGLE algorithm (normally enabled) (CONFIG_TCP_NAGLE_OFF) [n]
The IPX protocol (CONFIG_IPX) [n] y
*
* SCSI support
 ...
 ...

より新しい版のカーネルでは、プロンプトなどが多少異なるかもしれません が、同様の方法で大丈夫です。

あなたの使用するイーサネットカードに対応したドライバを含んでいること を確認する必要もあります。もしこれについてどうやればいいかを知らなければ Ethernet-HOWTO を読んでください。 <http://sunsite.unc.edu/mdw/HOWTOJ/Ethernet-HOWTO.html>.

カーネルを構築する準備は整いました。構築が完了した後には lilo を 走らせて、新しいカーネルをインストールすることを忘れないでください。

ncpfs ソフトウエアを解凍するには

# cd /usr/src
# tar xvfz mars_nwe-0.96.pl2.tgz

mars_nwe を make する

パッケージを make するのはとても簡単です。まず、config.h を眺めて、 もし必要ならばエディットします。これによって、 インストールディレクトリや、サーバがサポートするセッションやボリューム の最大数などを設定することができます。 次に:

# make
# make install

これによってサーバが構築され、適切なディレクトリにインストールされ ます。また、インストレーションスクリプトは /etc/nwserv.conf という 設定ファイルをインストールします。

サーバを設定する

設定はとても簡単です。/etc/nwserv.conf ファイルをエディットします。 はじめてこのファイルの内容を見るとそのフォーマットはちょっと謎めいて 見えますが、実はとても明瞭です。それぞれの行にひとつの設定が記述 されています。それぞれの行は、その行の内容を意味する数字で始まり、 空白で区切られています。'#' の後の文字はコメントとみなされ、無視 されます。パッケージの中にもMartinの提供する設定例が含まれています が、別のもっと単純な例をここに挙げておきます。

# VOLUMES (max. 5)
# Only the SYS volume is compulsory. The directory containing the SYS
# volume must contain the directories: LOGIN, PUBLIC, SYSTEM, MAIL.
# The 'k' option converts all filenames in NCP requests to lowercase.
# The default is upper case.
# Syntax:
#    1 <Volumename> <Volumepath>   <Options>

1   SYS         /home/netware/SYS/               # SYS
1   DATA        /home/netware/DATA/      k       # DATA

# SERVER NAME
# If not set then the linux hostname will be converted to upper case
# and used.
# Syntax:
#    2 <Servername>

2   LINUX_FS01

# INTERNAL NETWORK NUMBER (not yet implemented)
# Syntax:
#    3 <Internal Network Address> [<Node Number>]


# NETWORK DEVICE(S)
# This entry configures your IPX network. If you already have your
# IPX network configured then you do not need this.
# Syntax:
#    4 <IPX Network Number> <device_name> <frametype> [<ticks>]
#                         Frame types: ethernet_ii, 802.2, 802.3, SNAP

4  0x39a01010  eth0  802.3  1

# SAVE IPX ROUTES AFTER SERVER IS DOWNED
# Syntax:
#    5 <flag>
#       0 = don't save routes, 1 = do save routes

5 0

# NETWARE VERSION
# Syntax:
#    6 <version>
#      0 = 2.15, 1 = 3.11

6 0

# MINIMAL GID UID rights
# permissions used for attachments with no login.
# Syntax:
#    10 <gid>
#    11 <uid>
#    <gid> <uid> are from /etc/passwd, /etc/groups

10  200
11  201

# SUPERVISOR password
# May be removed after the server is started once. The server will
# encrypt this information into the bindery file after it is run.
# Syntax:
#    12 <Supervisor-Login> <Unix username> [<password>]

12  SUPERVISOR  root  secret

# USER ACCOUNTS
# This associates netware logins with unix accounts. Password are
# optional.
# Syntax:
     13 <User Login> <Unix Username> [<password>]

13  TERRY  terry
13  MAR    mar


# PRINT QUEUES
# This associates Netware printers with unix printers. The queue
# directories must be created manually before printing is attempted.
# Syntax:
#    21 <queue_name> <queue_directory> <unix_print_cmd>

21  EPSON  SYS:/PRINTJ/PSON lpr -h
21  LASER  SYS:/PRINT/LASER lpr -Plaser

# DEBUG FLAGS
# Syntax:
#    <debug_item> <debug_flag>
#
#    100 = IPX KERNEL
#    101 = NWSERV
#    102 = NCPSERV
#    103 = NWCONN
#    104 = use NWCLIENT
#                 0 = disable debug, 1 = enable debug

100 0
101 0
102 0
103 0
104 0

# RUN NWSERV IN BACKGROUP AND USE LOGFILE
# Syntax:
#    200 <flag>
#        0 = run NWSEV in foreground and don't use logfile
#        1 = run NWSERV in background and use logfile

200  1

# LOGFILE NAME
# Syntax:
#    201 <logfile>

201  /tmp/nw.log

# APPEND LOG OR OVERWRITE
# Syntax:
#    202 <flag>
#        0 = append to existing logfile
#        1 = overwrite existing logfile

202  1

# SERVER DOWN TIME
# This item sets the time after a SERVER DOWN is issued that the
# server really goes down.
# Syntax:
#    210 <time>
#        in seconds. (defaults 10)

210  10

サーバをスタートする

サーバをスタートするには、ただ、次のコマンドを実行するだけです:

# nwserv

サーバをテストする

サーバをテストするには、まず、ネットワーク上の Netware クライアント から、アタッチ、ログインをやってみます。次にクライアントから CAPTURE を設定し、印刷してみます。両方ともうまくいけば、サーバは 動作しています。

9.2 lwared パッケージ

Ales Dryak <A.Dryak@sh.cvut.cz> が開発しました。 Linux を NCP ベースのファイルサーバとして機能させる事ができます。

Ales はこのパッケージを LinWare Daemon の略として、lwared と名付けました。

lwared のできること

lwared サーバは Novell NCP のサブセットを提供します。プリントサービスは 含まれていませんが、messaging(@@) を実現しています。現在のところ、 Windown95 や Windows NT クライアントとはあまり相性がよくないようです。 lwared では、IPX ルーティングや SAP テーブルの更新のためには、別のプログラム を使う必要があります。クライアントの誤った動作によってサーバがクラッシュ することもあります。重要なことには、ファイル名変換の機能が実現されて いません。

サーバは NETX や VLM NetWare シェルと共に動作します。(@@)

lwared を入手するには

lwared は 1.2.0 以降のカーネルで動作しますが、カーネルパッチが必要ない という理由で、1.2.13 を使う事をお薦めします。 1.3.* カーネルでは IPX 機能の一部が変更されたため、うまく動作させる ためにはなんらかのパッチが必要なことを意味しています。新しいカーネル のためのパッチが含まれているので、これらα版のカーネルを使う必要があると しても、lwared をうまく動作させる事ができるはずです。

lwared パッケージは anonymous ftp で以下から入手できます: klokan.sh.cvut.cz <ftp://klokan.sh.cvut.cz/pub/linux/linware/> または : sunsite.unc.edu <ftp://sunsite.unc.edu/pub/Linux/system/Network/daemons> またはこの ミラーサイト。

これを書いている時点での最新のバージョンは: lwared-0.95.tar.gz

lwared を構築する

lwared パッケージを解凍する

こんな感じ:

# cd /usr/src
# tar xvpfz lwared-0.95.tar.gz

イーサネットとIPX機能をイネーブルしてカーネルを構築する

もしあなたがα版の 1.3.* カーネルを使っている場合には、1.3.17 以降 のバージョンで試してみてください。提供されているパッチは、それらの バージョンに対して作られたものだからです。 1.3.17 よりも古いバージョンでは、手動のパッチをあてる必要が あるでしょう。(これをどうやるかについては、INSTALL ファイルの 中にいくらか情報があります。) 1.3.17 以降のカーネルにパッチをあてるには以下を試してください:

# make patch

パッチをあてたあとには、もし必要ならばカーネルが IPX サポート をイネーブルして構築されていることを確認します。バージョン 1.2.13 カーネルでは、以下に示すように 'The IPX protocol' の質問に対して 'Y' と 答えていることを確認する必要があるだけです:

 ...
 ...
Assume subnets are local (CONFIG_INET_SNARL) [y]
Disable NAGLE algorithm (normally enabled) (CONFIG_TCP_NAGLE_OFF) [n]
The IPX protocol (CONFIG_IPX) [n] y
*
* SCSI support
 ...
 ...

より新しい版のカーネルでは、プロンプトなどが多少異なるかもしれません が、同様の方法で大丈夫です。

あなたの使用するイーサネットカードに対応したドライバを含んでいること を確認する必要もあります。もしこれについてどうやればいいかを知らなければ Ethernet-HOWTO を読んでください。 <http://sunsite.unc.edu/mdw/HOWTOJ/Ethernet-HOWTO.html>.

カーネルを構築する準備は整いました。構築が完了した後には lilo を 走らせて、新しいカーネルをインストールすることを忘れないでください。

lwared のコンパイルとインストール

lwared をコンパイルするには、まず最初に server/config.h をチェック して、必要ならエディットします。このファイルはサーバが動作中に どのようにふるまうか、などの設定が含まれています。 デフォールトの設定はリーズナブルなものですが、ログファイルと 設定ファイルの置かれるディレクトリがあなたの環境に あっていることをチェックしておいたほうがいいでしょう。

# make depend
# make
# make install

私の場合には、'make depend' は float.h が無いと文句を言ってきましたが、 うまく動作しました。また、gcc 2.6.3 でコンパイルしたときには、 lib/ipxkern.c の以下の行を修正する必要がありました:

#include <net/route.h>

#include <net/if_route.h>

に修正しました。 このファイルは名前が変わったようです。

'make install' を実行する事によって、サーバとルーティングデーモン が /use/sbin ディレクトリに、lwpasswd プログラムが /usr/bin に、IPX ユーティリティが /sbin に、そして最後になるが重要なのは、マニュアル ページが /usr/man ディレクトリ以下にインストールされます。 もしこれらのディレクトリ配置があなたのシステムに適していない場合には、 関連した Makefile をエディットして、目的のディレクトリに書き換えて ください。

9.2.4. lwaredの設定と使い方

IPX ネットワークの設定

まず最初にしなければならないのは、あなたのサーバがサポートしている IPX ネットワークをサポートできるように、イーサネットカードを設定 しなければなりません。 これには、それぞれの LAN セグメントの IPX ネットワークアドレス、 それぞれのセグメントにどのイーサネットデバイス (eth0, eth1 など) が 接続されているのか、それぞれの LAN セグメントがどのフレームタイプ (802.3, EtherIIなど) を使用しているのか、サーバが使用すべき インターナルネットワークアドレス(これは実際には、サーバが複数の LAN セグメントに対してサービスする場合に必要です。) を知る必要があります。

設定の例として、異なるIPXネットワークセグメントのアドレス 23a91300 と 23a91301 の上の、インターナルネットワークアドレス bdefaced というサーバ の場合には次のようになります:

# ipx_internal_net add BDEFACED 1
# ipx_interface add eth0 802.3 23a91300
# ipx_interface add eth1 etherii 23a91301

ルーティングデーモンのスタート

カーネルは実際のところ、IP に対するのと同様に IPX パケットを フォワードします。しかし、カーネルはルーティングテーブルの 更新を管理するために追加のソフトウエアを必要とします。 IPX の場合には、二つのデーモンが必要であり、両方とも lwaredと共に供給されています。 ipxripd は IPX ルーティング情報を管理し、ipxsapd は SAP 情報を 管理します。 これらのデーモンをスタートするには、そのログメッセージをどこに 出力するかを指定するだけです:

        
# ipxripd /var/adm/ipxrip
# ipxsapd /var/adm/ipxsap

lwared サーバの設定

lwared サーバに対してログインを許すためには、手動で二つのファイルを 設定する必要があります。以下の通り:

/etc/lwpasswd

LinWare ユーザのアカウント情報を保持するファイルです。 lwpasswd プログラムはそれを最新の状態に保つためのものです。 /etc/lwpasswd ファイルの最もシンプルな形式はこんな感じ:

ales:
terryd:
guest:

ログイン ID の後ろに ':' が付加された単純なリストです。':' の後ろに 暗号化されたパスワードが入ります。 重要なことは、暗号化されたパスワードが存在しない場合にはパスワード なし、と認識されるということです。 LinWare ユーザは Linux アカウントをもっていなければなりません。 すなわち、/etc/lwpasswd の中のすべてのユーザは /etc/passwd の 中にも存在しなければなりません。 また、他の LinWare ユーザのパスワードを変更できるのは root ユーザ のみです。root としてログインすることで、LinWare ユーザの パスワードを以下のように設定・変更することができます:

# lwpasswd rodg
Changing password for RODG
Enter new password:
Re-type new password:
Password changed.

/etc/lwvtab

LinWare のボリュームテーブルで、LinWare ユーザに対して どのディレクトリが利用可能かが保持されています。(この ファイルは NFS における、/etc/exports ファイルと同様の機能 です。)シンプルな例は :

SYS             /lwfs/sys
DATA            /lwfs/data
HOME            /home

フォーマットはシンプルです: ボリューム名の後に空白を置き、 その後ろにエクスポートされる Linux のディレクトリ名を書きます。 サーバをスタートするためには、少なくとも SYS ボリュームの エントリーを記述する必要があります。 もし、DOS ベースのユーザが、LinWare サーバをプライマリサーバとして 使える必要がある場合には SYS ボリュームとしてエクスポートしている ディレクトリの下にスタンダード SYS ボリュームディレクトリを インストールする必要があります。 この場合、もちろんこれらのファイルは、 Novell Corporation の著作権が あるので、あなたはこれらについてのライセンスをもっていなければ なりません。 もしユーザがプライマリサーバとして Novell ファイルサーバを 使っているのならば、必要ありません。

lwared サーバをスタートする

じゃんじゃじゃーーーん!

# lwared

なんと簡単なんでしょうね? 恐らくあなたは疑問があるでしょう。 通知 (advertise) されるべきファイルサーバ名はどうやってわかるんでしょう? 上のようにサーバを起動した場合には、Linux の hostname で返される 名前がファイルサーバ名として通知されます。 他の名前をファイルサーバ名として通知したい場合には、例えば:

# lwared -nlinux00

のようにすると、サーバ名は linux00 となります。

lwared をテストする

まず最初に、ネットワーク上の DOS クライアントから、slist で LinWare サーバが見えるかどうか、のテストをします。slist プログラム は Novell ファイルサーバの SYS ボリュームにあるので、どこかすでに ログインしているマシンからテストする必要があります。 もしこれがうまくいかなかった場合には ipxsapd と lwared の 両方が起動されている事を確認してください。slist がうまくいったら、 次にサーバにアタッチして、ボリュームをマッピングします:

C:> attach linux00/ales
 ...
 ...
C:> map l:=linux00/data:
C:> l:

他のマップと同じ様に、これらの新しいマップを扱う事ができるはずです。 ここでのファイルパーミッションは、あなたの LinWare ログインに相当する Linux アカウントに許されたパーミッションに基づいたものになります。

10. IP 経由の IPX トンネル

二つの LAN 間に IP 接続しか無い、という状況はよくあるものです。この ような場合に、DOS 上の DOOM でどうやってマルチプレイヤーのデスマッチを したらいいでしょう? Andreas Godzina <ag@agsc.han.de> の ipxtunnel がその答です。

ipxtunnel は IPX パケットを TCP/IP データグラムにカプセル化して TCP/IP 接続を通過させます。これによって、IPX ブリッジのような機能を提供します。 ipxtunnel は IPX パケットを待ち受け (listen)、それを TCP/IP データグラムに 包みこんで、指定されたリモート IP アドレスに配送します。 もちろん、これがうまく動作するためには、指定先のマシンでも同じバージョンの ipxtunnel が動作していることが必要です。

10.1 ipxtunnelを入手する

ipxtunnel は sunsite.unc.edu <ftp://sunsite.unc.edu/pub/Linux/system/Network/daemons> または そのミラーサイトから入手することができます。

10.2 ipxtunnelを構築する

私の場合、以下のコマンドできれいに構築できました:

# cd /usr/src
# tar xvfz .../ipxtunnel.tgz
# cd ipxtunnel
# make

10.3 ipxtunnelの設定

ipxtunnel の設定はとても簡単です。相手のマシンが gau.somewhere.com で、 あなたのマシンが gim.sw.edu だとしましょう。 ipxtunnel は、/etc/ipxtunnel.conf というファイルを設定ファイルとして 使います。このファイルには、TCP/IP 接続に使われるデフォールトの UDP ポートや、カプセル化されたデータをどこに送るか、どのローカル インターフェースに対してipxtunnel がデータをやりとりするかなどを 指定します。

簡単な設定ファイルの例を以下に示します:

#
# /etc/ipxtunnel.conf for gim.sw.edu
#
# The UDP port to use:                       (default 7666)
port 7777
#
# The remote machine to send IPX packets to: (no default)
remote gau.somewhere.com
#
# The local interfaces to listen for IPX on: (default eth0)
interface eth0
interface eth1

当然のことですが、相手先のマシンでは、同様の設定で、ただし あなたのマシンをリモートマシンとして設定する必要があります。

10.4 ipxtunnelのテストと使い方

d ipxtunnel は、IPX ブリッジのようにふるまいます。ですから、接続している 相互の IPX ネットワークは同じものでなければならないでしょう。Andreas は 実際に Novell ファイルサーバが稼動している環境での ipxtunnel の動作を 確認していないので、もしあなたがこのような環境で使ってみた場合には ぜひ Andreas に対して、動作したかどうかを知らせてあげてください。 ipxtunnel がうまく動作すれば、DOOM をリンク端の両方のマシンで動作させ、 お互いを見ることができるはずです。

Andreas はこのコードを高速の回線の上で使っているため、低速の回線での パフォーマンスに関してはわかりません。 ぜひ、何がうまく動作して、何はうまく動作しないか、を彼に知らせて あげてください。

11. Novell の Linux 商用サポート

Caldera 社は完全な Novell Netware クライアント機能を含む、幅広い 拡張をおこなった Linux パッケージを商用に作成/サポートしています。 ベースとなっている版は良く考慮された Red Hat Linux Distribution であり、 Caldera 社は彼らの「ネットワークデスクトップ」製品をこれに付加して います。NetWare 機能は、Novell から技術ライセンス供与を受けて作成された ものであり、完全な NetWare クライアント機能を実現しています。 このクライアント機能は、Novell の 3.x, 4.x ファイルサーバに対する完全な クライアントアクセスを提供し、NerWare のディレクトリサービス (NDS) や RSA暗号化機能なども含んでいます。

もっと詳細な情報や、注文方法については、Caldera 社の Web サーバ <http://www.caldera.com/> を参照してください。 もしあなたが Novell のサポートを必要とする Linux 用のビジネス アプリケーションを使わなければならないのなら、Caldera 社の製品は 注目に値するでしょう。

12. 著作権に関するメッセージ

IPX-HOWTO の著作権は Terry Dawson に属します。 著作権に関する記述とこの許可文書がすべての複製の中に保存されている ことを条件として、そのままの複製を作成し、配布することを許可します。 その文書が修正したものであると明記されており、上で述べたそのままの 文書と同じ条件を満たしていれば、この文書を修正したものの複製/配布を 許可します。

上に述べた修正版のドキュメントに関する条件を守る限り、 このドキュメントを他の言語に翻訳したものを複製/配布することを許可します。 新しいメディアにおいて元の文書への明確な参照が含まれることで 元の文書を承認するための要件が満たされるなら、上に述べた修正版に 関する条件を守る限り、この文書を他のメディアに変換することを許可 します。ここで何を「明確な」と定義するかは疑わしいところではあり ますが、それについても著作権所有者が決定する権利を保有します。

13. その他 && 謝辞

David E. Storey <dave@tamos.gmu.edu> と Volker Lendecke <lendecke@namu01.gwdg.de> の両者はこのドキュメントに対して いろいろな情報提供をしてくれることで非常に支援してくれました。

"NetWare"はNovell社の登録商標<http://www.novell.com/>です。 "Caldera"はCaldera社の登録商標<http://www.caldera.com/>です。

regards Terry Dawson, vk2ktj.

<94004531@postoffice.csu.edu.au>, or
<terry@perf.no.itg.telecom.com.au>

14. 日本語訳について

日本語訳 : 川島浩 (kei@sm.sony.co.jp)
校正     : 小野さん (ono@epsenewsc.gee.kyoto-u.ac.jp)
           杉浦さん (yol@kthree.co.jp)

-- 訳者より --

このドキュメントは単なる翻訳です。思い切った意訳もしています。 お許しください。

(sgml conversion: y.senda, ysenda@pop01.odn.ne.jp, 2001/10/09)