現在も、多くの人々が新しい機能とモジュールをLinux のネットワークコード 用に開発しています。いくつかはほぼ完成に近い状態になっており充分機能し ています。そのようなモジュール類をこの章で紹介しています。近い将来、そ れらが正式にリリースされれば、また適切なところへ移すつもりです。例えば AX25 は、アマチュア無線に特化しているので HAM-HOWTOに移しました。
cmu-snmp のソースから Erik Schoenfelder
<schoenfr@ibr.cs.tu-bs.de>
が移植した snmp エージェントがテス
ト中です。
ソースコードは ftp.ibr.cs.tu-bs.de の
/pub/local/cmu-snmp2.1.2l3-src.tar.gz
です。
詳細は附属の cmu-snmp2.1.213.README
に書いてあるので、ぜひお
読みください。
This package provides a nearly complete MIB-II variable set. and parts of the host MIB. Setting of system group variables is provided. The private community string is settable in the config file.
(このパッケージは MIB-II の変数群をほぼ完璧にサポートし、ホスト MIB に も一部対応しています。システムグループの変数も使えます。private community string も設定ファイルで指定できます。)
nstat.tar.gz
には nstat という
/proc/net/snmp
の出力を整形するフォーマッタが入っています。
このエージェントを使うには Linux v1.1.60 以上、libc v4.6.27 以上が必要で す。
Peter De Schrijver <stud11@cc4.kuleuven.ac.be>
が Token
Ring 用のドライバを開発中です。最新版は Linux 1.3.* の公式リリースに入
りました。古いバージョンのカーネル用には
linux3.cc.kuleuven.ac.be
/pub/Linux/TokenRing/TokenRing.patch-1.2.0.gz
ftp.cs.kuleuven.ac.be
/pub/unix/linux/TokenRing.patch-1.1.64.gz
などがあります。
いくつかのバージョン用のファイルが入っていますので、お使いのカーネルの バージョンに合ったものを選んでください。
Token Ring に対応した network 用のプログラムも
linux3.cc.kuleven.ac.be
の同じディレクトリにあるのでお忘れなく。
IBM の TROPIC チップセットを使っているボードはほぼ動き、以下のボードで は動作確認されています。
TI のチップセットやバスマスタ DMA を使っているボードは現在のドライバでは 使用できません。ただし、IBM のバスマスタタイプのアダプタ用のドライバを開 発している人もいます。
V.35 は C.C.I.T.T. 規格のインタフェースで、高速バランスシリアルインタフェー スを利用して、最大 2Mbps でデータの送受信が可能です。 differential pair balanced 転送を使えば V.35 インタフェースは V.24/RS232C タイプのインタフェー スよりも長いケーブルが使え、転送速度もより高速です。
Matti Aarnio <mea@mea.utu.fi>
は Internet Technologies
International (ITI) の代表です。ITI は XNET-1
と呼ばれる 8bit
の X.21 カードを開発しており、このカードは適切なケーブルを使えば V.35
として利用できます。カード自身についての情報は、
Internet Technologies International OY,
Helsinki, Finland <intec@digiw.fi>
Internet Technologies International OY (Ltd)
PO BOX 51
00641 Helsinki
FINLAND
Fax: +356-0-7523939
まで問い合わせてください。
このカード用のドライバは ftp.funet.fi. から入手できます。
SDL Communications は、ISA バス用に V.35 をサポートしたさ まざまなコントローラカードを発売しています。
このカード用のベータ版のドライバは、
ftp.sdlcomm.com
/business/sdlcomm/n2/linux
から入手できます。詳しい情報は SDL のセールス担当の Rubin Dhillonに連絡してみてくだ さい。
Eric Schernk <schenk@cs.toronto.edu>
が SLIP と PPP の双方
から利用可能な動的発呼用のプログラムを開発しました。このプログラムは
pty 経由で接続するようにデーモンを設定した SLIP デバイスが必要です。
SLIP で接続していない時、ローカルホスト宛てではない全てのデータグラム
はこのデバイスに送られ、デバイスを見張っているデーモンが外部宛のデータ
グラムを検出すれば、接続用のスクリプトを起動してネットワークを接続し、
経路を設定しなおしてデータグラムを送りだします。
このソフトウェアは以下のサイトから入手できます。
sunsite.unc.edu
/pub/Linux/system/Network/serial/diald-0.7.tar.gz
注意:このデーモンを使うにはpty 経由で接続するように設定した SLIP デバイスが必要なので、PPP しか使わない場合でも SLIP ドライバを組 みこんだカーネルを作成する必要があります。
インストールや設定の方法についてはソフトウェアに附属の文書をごらんくだ さい。
いくつか ISDN をサポートしようという試みが進行中です。私が知っているも のは、
Alan Cox が 3Com の arpeggio ISDN カード用のドライバを書きはじめました。 現状では同期 PPP でしか使えません。このドライバは
sunsite.unc.edu
/pub/Linux/kernel/patches/network/sonix.tgz
にあります。
sunsite.unc.edu
/pub/Linux/kernel/patches/network/isdndrv-0.1.1.tar.gz
Fritz Elfert, Jan den Ouden と Thinking Objects 社は ICN ISDN カード 用のドライバを開発しています。このドライバの文書のいくつかはドイツ語で す。このドライバには異なる ISDN カードをサポートするためにいくつかの変 種が開発されているようなので、うまくいかなかった場合、他のものを試して みるのもいいでしょう。このドライバは以下のサイトから入手できます。
ftp.franken.de
/pub/isdn4linux/
あるいは: ftp.gwdg.de
/pub/linux/misc/isdn4linux/
Matthias Urlichs <urlichs@smurf.noris.de>
が Streams に基づ
く実験的な ISDN のサポートを開始しました。最新版は kernel 1.3.* 用で、
動いているという聞いたことがあります。
このドライバは:
ftp.uni-stuttgart.de
/pub/systems/linux/isdn/ftp.noris.de/
から入手できます。
このドライバの説明書はドイツ語で書かれており、プログラムもヨーロッパの ISDN ネットワークを前提にしています。Matthias は解説の英語版を準備中で す。
Joel Katz <stimpson@panix.com>
は Combinet 社の Everyware 1000 シリー
ズ plug-in ISDN カード用のドライバを開発しています。
このドライバは:
sunsite.unc.edu
/pub/Linux/kernel/patches/network/combinet1000isdn-1.02.tar.gz
から入手できます。
Harald Milz は Linux 用の ISDN についての WWW ページを作成しています Linux ISDN Web Page. ISDN 全般については、 Dan Kegel の ISDN ホームページ Dan Kegel's ISDN home page. が役にたつでしょう。
LiS(Linux Streams) というプロジェクトが System-V 互換の Streams を Linux に実装しようとしています。これに関する情報は Linux Streams Web Page で公開さ れています。そこにはプロジェクトの進行状況や連絡方法、テスト用のコード などがあります。
Werner Almesberger が Linux 用の ATM に関する情報を集めたホームページ を作成しています lrcwww.epfl.ch。このページには raw ATM connection と ATM 上に IP を送る基本機能を実現した pre-alpha 段階の実験的なコードも登録されて います。また、ATM についての有益な情報も多数登録されています。
Linux での ATM について議論するためのメーリングリストが用意されていま
す。参加したい人は majordomo@vger.rutgers.edu
あてに、本文に
subscribe linux-atm
と書いたメールを送ってください。
X.25 について尋ねる人がたくさんいます。X.25 についてはいくつかの小グルー プで開発が始まっているようですが、開発のスピードはあまり速くないようで す。X.25 のサポートに興味があるなら、それらのグループに参加して開発速 度を速めるように努力するのがいいでしょう。私が持っている情報は Alan Cox が開いているホームページから得たものが全て、そこには開発が進行中の 2 つのプロジェクトについてのホームページが紹介されています。紹介されて いるページは www.ping.beです。
アップル社のマシン(Macintosh)がネットワーク上に存在し、それらとプリン タやファイルを共有したい時、linux のアップルトークサポートの出番になり ます。
以下の情報は主に Cees de Groot <cg@tricbbs.fn.sub.org>
と
Dana Baken <dana@millenium.tiac.net>
らの経験によるもので
す。
Alan Cox が Apple Ethertalk の機能をカーネルに実装しました。この機能は 1.2.* の最新版や 1.3.* のシリーズではカーネルに標準で含まれるようになっ たので、カーネルの設定時にそれらの機能を使うように設定してカーネルをコ ンパイルし直すだけで利用可能です。
#
# cd /usr/src/linux
# make config
...
...
Appletalk DDP ? y
...
...
#
カーネルがサポートしているのは極く基本的なネットワーク機能だけで、より 上位の階層のプロトコルを使うためにはいくつかのソフトウェアが必要になり ます。
Wesley Craig <netatalk@umich.edu>
がミシガン大学に Reseach
Systems Unix Group という団体を組織して、Appletalk のプロトコルスタッ
クや有益なユーティリティ類を netatalk という名前でまとめてい
ます。
netatalk は以下のサイトから入手できます:
netatalk の 1.3.3.b2 以降のバージョンで Linux がサポートされています。
インストールするには、以下のようにします。
# cd /usr/src
# tar xvfz .../netatalk
- この時点で Makefile を修正して、このパッケージに含まれるプログラム類が
インストールされるディレクトリ、DESTDIR を修正した方がいいかも知れませ
ん。ただし、デフォルトで指定されている /usr/local/atalk というのは問題
を起しにくい設定になっています。
- 以上でコンパイルすることが可能です。私の環境では `uname' コマンドは
/bin ディレクトリには無かったので、Makefile のその部分のみを修正しまし
た
# make
- ルートになって:
# make install
これで必要なコマンド類はコンパイル/インストールされたはずです。
[ 訳注:libc のバージョンによっては
/usr/include/sys/uio.h
を
/usr/include/sys/linux/uio.h
にシンボリックリンクする必要があっ
たり、netatalk に dirent 用のパッチが必要だったりします。詳細は
netatalk 附属の README.linux というファイルをご覧ください。]
まず最初に /etc/services
ファイルに services.atalk
の内容を追加して AppleTalk 用のサービスを利用可能にします。これは単に
services.atalk
を /etc/services
の末尾に追加するだけ
です。
次に /usr/local/etc/atalk
ディレクトリ(あるいはあなたが変更したディ
レクトリ)に appletalk 用の設定ファイルを作成します。
まず作成すべきファイルは /usr/local/atalk/etc/Atalkd.conf
ファ
イルです。最初は、このファイルには AppleTalk に接続されているネットワー
クのデバイス名を指定する次の一行のみが必要です(訳注: eth0 の場合は多
分無くても動きます)。
eth0
AppleTalk では、設定に必要な情報は定期的にネットワーク上に流されている ので、atalkd が起動時にその他の詳細な情報を自動的に収集して、追加して くれます。
Mac からあなたの Linux マシンのファイルシステムを共有できるように設定 することが可能です。
このためには、/usr/local/atalk/etc/AppleVolumes.system
ファイ
ルを設定する必要があります。
この設定の詳細と指定可能なオプションについては afpd のマニュ アルページを参照してください。
例えば、以下のような形式になります:
/tmp Scratch
/home/ftp/pub Public
この設定で、/tmp
ファイルシステムを AppleShare の 'Scratch'
ボリュームとして、/home/ftp/pub
ディレクトリを AppleShare の
`Public' ボリュームとして使用可能です。ボリューム名の指定は必須ではな
く、指定しなかった場合、daemon プログラムが自動的に付けてくれます。で
も指定したところで害になることはありません。
Linux マシンに接続されているプリンタを Mac から共有することも簡単です。 このためには Appletalk Printer Access Protocol Daemon, papd プログラムを利用します。このプログラムは、起動された後、Mac からのプリ ントリクエストを受けつけて、あなたのマシンのプリンタデーモンに渡してプ リントします。
このためには /usr/local/atalk/etc/papd.conf
を設定します。こ
のファイルの形式は /etc/printcap
と同じです。指定したプリンタ
名は Appletalk の命名プロトコル NBP を使って登録されます。
/usr/local/atalk/etc/papd.conf
は例えば以下のように設定します。
TricWriter:\
:pr=lp:op=cg:
この設定では、`TricWriter' というプリンタが Appletalk のネットワークか ら利用可能で、受けつけたプリントは linux の `lp' プリンタへ lpd 経由で出力されます。
それでは基本的な設定を試してみましょう。netatalk のパッケージには rc ファイルが用意されており、それを起動すれば必要なプログラム は実行されます。ですから、
# /usr/local/atalk/etc/rc.atalk
とやるだけで、必要なプログラムは全て起動されるはずです。エラーメッセー ジが出力されず、起動の各段階ごとのメッセージがコンソールに出力されてい れば大丈夫です。
[ 訳注:atalkd デーモンは起動時に AppleTalk 上を流れる設定を読み こんで自らを設定するため、起動には多少の時間がかかります。papd 等は atalkd が安定してから起動すべきなので、時間がかかるからといって atalkd をバックグラウンドにしてはいけません。]
netatalk が正しく動いているかどうかは、ネットワークに接続された Macintosh から確認します。Mac から「メニュー」を選んで 「セレクタ (Chooser)」 を出し、「ファイル共有(AppleShare)」 をクリックして、Linux マシンの名前が見えれば大丈夫です。
/etc/rc.d/rc.inet1
以前に起動してみてくださ
い。
.AppleDesktop
と Network Trash Folder
というディレク
トリを作り、その下に作られたディレクトリそれぞれ
に.AppleDouble
というリソースフォーク用のディレクトリを作ります。
ですから、/
を export する前には充分考慮してください。さもな
いと、後日、整理のために多大な時間がかかってしまいます。
/proc/net/
ディレクトリに書きこまれています。
もし御自宅にネットワークを張っていたり、複数のマシンが SLIP/plip/ppp で相互に接続されているような環境を作っていたり、プライベートなネットワー クからダイアルアップ経由でインターネットに接続しているような場合、直接 インターネットに接続しているマシン以外からもインターネットに出たいと思 うことがあるでしょう。このような場合、正式には、ローカルなネットワーク にネットワーク用の IP アドレスを割りあててもらい、接続先のインターネッ トプロバイダと交渉して、通常の単一ホスト用のルーティングからネットワー ク用のルーティングに設定を変更してもらう必要があります。残念なことに、 この設定をするとより多くのデータが流れることになるので、ほとんどのプロ バイダがかなり高額な追加料金を要求しています。
IP_MASQUERADING はこのために考えだされた方法で、ローカルのネッ
トワークのマシン全てから発信されるデータグラムのアドレスをリアルタイム
で書きかえて、ネットワークに接続された一台のアクティブなマシンに見せか
けることができます。IP_MASQUERADE のコードの殆んどは Pauline
Middelink <middelin@polyware.iaf.nl>
作です。
以下に紹介する方法は Ken Eaves <keves@evs.com>
が教えてく
れたものです。役に立てば、Ken に感謝してください。
[ 訳注:IP_MASQUERADE 回りは最新のカーネルでは多少変更され ており、ipfw ではなく ipfwadm で設定するようになりま した。ipfwadm では引数も ipfw とは異なるので、以下の 記述は obsolete になっています。最新のカーネルで IP_Masquerade を使う 場合、 X/OS のホーム ページ を参照ください。]
IP_Masquerade には、現在、linux 1.2.* へのパッチと改造された
ipfwコマンドが必要です。net-tools
に附属の
ipfw コマンドには、まだ `masquerade' オプションが組みこまれて
いません。ip_masquerade を使うには、カーネルを
ip_firewalling オプションを組み込んで構築しておく必要があります。
パッチファイルは以下のサイトから入手できます:
ftp.eves.com
/pub/masq
このディレクトリに 1.2.x へのパッチファイルと新しい ipfw コマ
ンド、それに Ken がまとめた Masquerade FAQ
のファイルがありま
す。この文章は彼の FAQ を元にしてものです。
パッチファイルは masq-patch.1.2.n
という名前になっています。
ipfw
と ipfw-for-1.3.10
というファイルがあり、前者が
version 1.2.* 用、後者が 1.3.10 用になっています。
充分新しい 1.2.* のソースコードが /usr/src/linux
ディレクトリ
にあると仮定します。
#
# cd /usr/src
# patch -p0 <.../masq-patch.1.2.n 2>patch.errs
- patch.errs ファイルを調べて、`fail' している部分が無いことを確認しましょ
う。無ければパッチはうまくあたっています。もし `fail' しているようなら、
何かが間違っているはずです。カーネルのソースのバージョンがあっているか、
再度確認してください。
# cd /usr/src/linux
# make config
- 以下の質問に `y' と答えること:
...
IP: forwarding/gatewaying (CONFIG_IP_FORWARD) [y]
IP: firewalling (CONFIG_IP_FIREWALL) [y]
IP: masquerading (ALPHA) [y]
...
- その他のオプションは従来通りの設定にしてください
# make dep
# make clean
- あとはいつものように make します。lilo を使っているなら:
# make zlilo
#
新しいカーネルでシステムを再起動します。新しくコンパイルしたカーネルで
起動していることを確認したら、ちゃんと動く ipfw プログラムを
手に入れましょう。ipfw は通常 /sbin
にインストールさ
れるので、正しいバージョンの ipfw コマンドを
/sbin/ipfw
にコピーします。以上で、カーネルで
IP_masquerade を使う準備ができました。
IP_MASQUERADE の設定方法は使っているネットワークの構成に依存します。一 般的に言いますと:インターネットに接続したいローカルネットワークのマシ ンは全てデフォルトの経路を IP_MASQUERADE をサポートしている linux マシ ンに指定します。次に、その linux マシンの firewall テーブルに、それら のローカルなマシンが masquerade されるように設定します。
IP-MASQUERADE 機能を設定するには ipfw コマンドが必要です。 ipfw コマンドは、通常、Linux のファイアウォール機能を設定する ために使うコマンドですが、masqeurade するホストは一種のファイアウォー ルとして機能するので、ipfw を改造して、masquerade に関する機 能を追加しています。
ほとんどの場合をカバーするような 2 つの例を示しておきましょう。もっと 複雑な設定をする必要があるなら、自分自身で経験を積んでください。
2 つのマシンが SLIP や ppp でつながっている場合:
.-------. .-------.
| | SLIP | linux | SLIP/ppp
| local |-----//------| masq |-----//-------> ISP へ
| | | svr |
._______. ._______.
^ ^ ^
| | |
192.168.0.2 192.168.0.1 動的に割りあてられる
/etc/rc.d/rc.inet1
ファイルに以下のような記述を追加します。
...
...
# Allow machine 192.168.0.2 to be masqueraded to everybody
ipfw a m all from 192.168.0.2/32 to 0.0.0.0/0
...
...
iii.iii.iii.iii/nn
という書き方に注意してください。
/nn
の意味と計算の方法をお知りになりたいかもしれませんね。こ
の書き方は、ip アドレスとネットマスクを合わせて表示するもので、
iii.iii.iii.iii
の先頭から /nn
で指定したビット数だ
けマッチする、という意味になります。この例では一つのホストが対象なので、
全てのビットをマッチさせる必要があります。IP アドレスは 32 ビットなの
で、 /32
で全てのビットを意味します。
イーサネットで構成されたプライベートなネットワーク上のマシンがインター ネットと接続された一台のマシンを利用する場合。
.-------. _
| | .2 |
| local |----|
| | | <-- Ethernet lan
._______. | 192.168.0.0 netmask 255.255.255.0
|
|
.-------. | .-------.
| | .3 | .1 | linux | SLIP/ppp
| local |----|--------| masq |-----//-------> ISP へ
| | | | svr |
._______. - ._______.
^
|
動的に割り当てられる
この設定の場合、ネットワーク全体を意味するエントリを指定する必要があり ます。ですから、rc.inet1 はこんな風になるでしょう。
...
...
# Allow all machines on network 192.168.0.0 to be masqueraded to everybody
ipfw a m all from 192.168.0.2/24 to 0.0.0.0/0
...
...
繰り返しますが、ネットマスク(255.255.255.0)と ipfw の指定の仕 方の関係に注意してください。class C のネットワーク(255.255.255.0)では ネットマスクは 24 ビットです。
よく使われるネットマスクとそれがマッチするビット数を表にしてみました。
netmask ipfw
--------------- ----
255.0.0.0 /8
255.255.0.0.0 /16
255.255.255.0 /24
255.255.255.128 /25
255.255.255.192 /26
255.255.255.224 /27
255.255.255.240 /28
255.255.255.248 /29
255.255.255.255 /32
masq@eves.com
で IP_MASQUERADE についてのメーリングリストが開
設されていましたが、現在は停止しているようです。
WWW サーバーを動かしていて複数の仮想サーバーを使いたい場合、あるいは同 じ配線の上に複数のサブネットを切っているようなネットワークを使っている 場合、一つのインターフェースで複数のアドレスに対応する機能があれば便利 です。
この機能は ipalias と呼ばれ、一つのインターフェースに複数のア ドレスを設定することを可能にします。
Robert Sanders <rsanders@mindspring.com>
がこの機能を開発し、
1.2.* カーネルへのパッチとして配布しています。また、Juan Jose
Ciarlante <jjciarla@raiz.uncu.edu.ar>
が 1.3.50++ 用に 全く新
しいバージョンを開発し配布しています。
パッチは以下のサイトから入手できます:
ftp.procyon.com
/pub/linux/ipalias
インストールするには 1.2.1 のカーネルのソースコードが必要で、
# cd /usr/src/linux
# patch -p1 .../alias-patch-1.2.1-v1
# make config
# make dep; make clean; make zlilo
とします。
ipalias を使うには ifconfig と netstat コマンドもそ
の機能に対応したバージョンが必要で、それらは
alias-net-tools.tar.gz
として提供されています。
ip alias を設定するには、その機能に対応している ifconfig を使って以下のように実行します。
# ifconfig eth0 alias 198.71.200.5
この例では、すでに eth0 をネットワーク用に設定してあるところに
198.71.200.5
のアドレスを追加するような設定になっています。
1.3.50++ ではパッチは不要です。カーネルを再構築する際の make
config
で Network aliasing (CONFIG_NET_ALIAS) [N/y/?]
という質問に yes と答えるだけです。
新しい ip_alias では、より適切な方法で新しいネットワークインタフェース
を作っています。カーネルにその機能があるかをチェックするには
/proc/net/alias*
を見てください。正しいカーネルならば、
aliases
と alias_types
という 2 つのファイルが
/proc/net
ディレクトリにあるはずです。
エイリアスを設定するには、修正されていない ifconfig プログラ ムを使ってちょっとしたトリックをすることになります。新しく設定されるポー トは実際の物理的なポート名に拡張子を付けた名前を持ちます:
# ifconfig eth0:0 192.168.1.1
# route add -host 192.168.1.1 dev eth0:0
エイリアスは '0' から始まっていることに注意してください。ですから
eth0:1
は 物理的な eth0
デバイスの 2 つめのエイリア
スになります。
エイリアスを削除するには ifconfig を使って:
# ifconfig eth0:0- 0
とします。
'-' はカーネルにそのエイリアスを削除して、対応する全ての経路と arp の エントリも削除するように伝えます。