前のページ 次のページ 目次

9. ネットワーク用デバイスの設定

ここまでがうまくいけば、使う予定のネットワーク用デバイスの機能を組みこ んだ Linux カーネルとそれらを設定するためのプログラムが揃ったはずです。 ここからが面白くなりますよ。まず、使う予定のデバイスをそれぞれ設定する 必要がありあす。この設定は、それぞれのデバイスごとに IP アドレスと接続 されているネットワークを指定する、という形になります。

この文書の古いバージョンではほぼ完全な形で各種の設定用のファイルを示し、 修正したり削除すべき行はそれぞれのファイルの中のコメントで指定していま した。このバージョン以降はやり方を変えて、 0 から作った設定ファイルが ちゃんとあるべき場所に存在し、それらがどのような機能を果すのかはあらか じめ知っているものと仮定します。その上で、それぞれのファイルについて、 必要に応じてその機能を解説することにします。

9.1 /dev にあるスペシャルデバイスファイルの設定

Linux の場合、ネットワークを使うのに /dev 以下のスペシャルデ バイスファイルを設定する必要はありません。他の OS のようにネットワーク 用のスペシャルデバイスは不要なのです。必要なデバイスはカーネルがメモリ 上に動的に作成するので、スペシャルデバイスを直接目にすることはありませ ん。それらを効率よく利用するための機能は全てカーネルが提供します。

9.2 初める前に知っておくべきこと

ネットワークについて設定する前に接続するネットワークについての情報が必 要となります。必要な情報は、接続先のプロバイダやネットワークの管理者が 教えてくれるはずです。

IP アドレス

これはドットで区切った 10 進数で表記された、たとえば 128.253.153.54 のような形の、各マシンに固有のアドレスです。こ のアドレスはネットワーク管理者があなたのマシン用に指定してくれるはずで す。

SLIP や plip で接続する場合、 IP アドレスの指定は不要なので SLIP につ いての項に進んでください。

loopback デバイスのみを使う場合、すなわちイーサネットや SLIP, plip を 使わないなら、loopback 用のポートは 127.0.0.1 を使うことに決 まっているので、特に IP アドレスを指定する必要はありません。

ネットワークマスク (`netmask').

ネットワークの一つのセグメントに存在するホストの数は一定数以下に制限し た方がネットワークの性能はよくなります。このため、ネットワーク管理者は ネットワークをより小さな「サブネット」と呼ばれる単位に分割しているはず です。それぞれのサブネットごとにネットワーク用のアドレスが与えられてい ます。ネットワークマスクは、使っているネットワークのアドレスをマスクす るビットパターンとして設定し、あなたのマシンがどのサブネットに属してい るかを指定します。これは経路制御にとって極めて重要な設定で、外部のマシ ンとは問題なく通信できるのに内部の特定のマシンとは通信できないような場 合、多分このネットマスクの設定が間違っているのでしょう。

ネットマスクはネットワークの管理者がネットワークの設計時に設定するので、 使うべきネットマスクは彼らが教えてくれるはずです。ほとんどのネットワー クでは class-C のサブネットを使っているため、ネットマスクは 255.255.255.0 になります。大きなネットワークでは class-B のネッ トマスク(255.255.0.0)を使っているかも知れません。 NET-2/NET-3 コードでは、デバイスにアドレスを割りあてた際、自動的にデフォルトのネッ トマスクを設定するようになっています。デフォルトでは、ネットワークはサ ブネットに分割されない設定になっています。

NET-2/NET-3 コードは、ネットワークのクラスに応じて、デフォルトでは以下 のネットマスクを用います:

最初のバイトごとのデフォルトのネットマスク
1-127         255.0.0.0         (Class A)
128-191       255.255.0.0       (Class B)
192+          255.255.255.0     (Class C)

もしこれらの一つでうまく行かなかった場合、別の指定を試してみてください。 それでもだめなら、ネットワークの管理者か身近のネットワークの達人に相談 してみてください。

loopback ポートや SLIP/PLIP についてはネットマスクの設定は不要です。

ネットワークアドレス

ネットワークアドレスとは、使っている IP アドレスとネットマスクのビット 和をとったもので、例えば IP アドレスが 128.253.154.32 でネットマスクが 255.255.255.0 の場合、

ネットマスク        :      255.255.255.0
IP アドレス         :      128.253.154.32    &&
                           ---------------
ネットワークアドレス:      128.253.154.0     =

となります。

ブロードキャストアドレス

「叫びとは、必要か否かにはかかわらずみんなが聞くささやきである。」

ブロードキャストアドレスは、通常、ビットを反転したネットマスクアドレス とネットワークアドレスの OR を取ったものになっています。例えば、 Class-C のネットワークで 255.255.255.0 のネットマスクを使って いる場合、上記のネットワークアドレスと 0.0.0.255 の OR を取っ て、ブロードキャストアドレス128.253.154.255 とな ります。

すなわち、こういう風に考えてください。

ネットマスクがこうなら:      255.255.255.0      !
ビットを反転させると、:        0.  0.  0.255    =
ネットワークアドレスは:    128.253.154.0      ||
                              ----------------
故にブロードキャストは:      128.253.154.255    =

歴史的な理由からネットワークアドレスをブロードキャストアドレスと同じに しているネットワークもあるので注意が必要です。疑問点があればネットワー クの管理者に尋ねてください。

sniffer などのネットワークのトラフィックを監視できるデバイス がある場合、lan 上を流れるデータを観察することでネットワークアドレスと ブロードキャストアドレスを確認することができます。イーサネットのブロー ドキャストアドレスである ff:ff:ff:ff:ff:ff に注意して(あるい はそれ以外のパケットはフィルタリングして)観察します。ローカルにあるルー タのソース IP アドレスが付いてプロトコル ID が ARP 以外のパケットがあ れば、そのパケットの宛先となっている IP アドレスをチェックしましょう。 このデータグラムは恐らく使っているルータから、RIP の経路情報をブロード キャストしているデータグラムです。その場合、宛先の IP アドレスがブロー ドキャストアドレスになっているはずです。

くりかえしますが、不確実な場合はネットワーク管理者に尋ねてください。彼 らも間違った設定であなたのマシンをネットワークに接続されるよりはあなた を助ける方を選ぶはずです。

ルーター(`ゲートウェイ') アドレス

「ここから出る方法が無ければならない」

ルーター(ゲートウェイ)アドレスはあなたのネットワークとインターネットを接 続しているマシンのアドレスです。このマシンは外部との「ゲートウェイ」と 呼ばれます。ルーターに付ける IP アドレスは、そのネットワークのアドレス の一番小さいものかホストのアドレスの一番大きいものにする、という習慣が あります。多分前者の習慣の方がより一般的なものでしょう。この場合、ゲー トウェイアドレスには、最後のバイトが .1 で終るアドレスが付け られているはずです。例えば、あなたのマシンのアドレスが 128.253.154.32 の場合、ルーター(ゲートウェイ)のアドレスは 128.253.154.1 でしょう。このように IP アドレスをつけるのは習 慣的なもので、有効なアドレスならばどれでもルーター(ゲートウェイ)アドレ スとして利用可能です。それに、一つ以上のルーターがネットワーク上に存在 する場合もありますので、詳しくはネットワーク管理者に確認するのがいいで しょう。

loopback アドレスしか使わない場合、ルーターのアドレスを指定する必要は ありません。PPP の場合も、接続時にルーターのアドレスを指定できるので、 アドレス指定は不要です。SLIP の場合、SLIP のサーバーのアドレスがルーター のアドレスになります。

ネームサーバー・アドレス

ネットワークに接続されたマシンはネームサーバーと呼ばれるマシンにアクセ スに行きます。ネームサーバーは人間が扱うホスト名とマシンが扱う IP アド レスを相互に変換しています。ネットワーク管理者に尋ねれば一番近くにある ネームサーバーのアドレスを教えてくれるでしょう。 named を起 動すれば、あなたのマシンをネームサーバーにすることも可能で、その場合は ネームサーバーのアドレスは loopback アドレス、すなわち 127.0.0.1 になります。実際のところ named を動かす必要はあり ません;詳しくは 「named」 の章をご覧くださ

もし loopback しか使わない場合は自分のマシン以外と通信することはないの でネームサーバーのアドレスは必要ありません。

SLIP/PLIP/PPP のユーザーへの注意

SLIP/PLIP/PPP のユーザーの場合、ここで述べてきたような設定を気にする必 要はあまりありません。SLIP/PLIP/PPP を経由した接続の場合、これらの設定 が必要かどうかはネットワークへの接続形態に依存しており、設定に必要な情 報は接続先のマシンから提供されます。SLIP/PLIP/PPP といったデバイスの設 定方法については後述します。

9.3 /etc/rc.d/rc.inet1,2、/etc/rc.net、/etc/init.d/network

ネットワークデバイスを毎回手動で設定するのは大変なので、起動時に自動的 に設定できれば、、と思うことでしょう。rcと呼ばれるファイルが このために用意されています。

unix の初心者向けの話:rcファイルは、起動時に init プログラムが実行して、syslogupdate , cron といった基本的なプログラムを起動する役割を果します。ちょ うど MS-DOS の autoexec.bat のようなもので、 rc は 恐らく runtime commands に由来するのでしょう。習慣として、 rc ファイルは /etc ディレクトリに置かれます。Linux における各種のファイルの標準配置を規定している Linux Filesystem Standard でも rc ファイルがどこに置かれるべきかを正確に指定し ておらず、BSD 風の /etc/rc.* という配置でも、System-V 風の /etc/rc.d/rc* という配置でも構わない、と述べています。Alan や Fred、それに私も、System-V 風の配置を使っていますので、ここでもそれを 元に説明します。System-V 系の配置の場合、ネットワーク設定用の rc ファイルは /etc/rc.drc.inet1rc.inet2 になります。まず起動時に呼びだされる rc ファ イルは /etc/rc で、そのファイルが他の rc ファイ ル、例えば、rc.inet1 を呼びだし、rc.inet1rc.inet2 を呼びだす、ような形になります。initから 見つけられる限り、それらがどんな名前でどこに置かれていても構いません。

いくつかのディストリビューションでは、ネットワークを設定するための rc ファイルは rc.net と言う名称で /etc の下に置かれていることもあります。この場合、 rc.inet1 rc.inet2 の内容が一つの rc.net に含まれており、 まとめて起動されることになります。

ディストリビューションごとに以下のファイル名に読みかえてください。

この文書の例           Slackware     Debian and other newer.
===================   ===========   =======================
/etc/rc.d/rc.inet1    /etc/rc.net   /etc/init.d/network

/etc/rc.d/rc.inet2    /etc/rc.net   /etc/init.d/netbase
                                    /etc/init.d/netstd_init
                                    /etc/init.d/netstd_nfs
                                    /etc/init.d/netstd_misc

ネットワーク用のデーモンやアプリケーションが起動される前に設定できるな ら、設定用のコマンドはどこで起動されても構いません。

以下の例では、ネットワークの設定用 rc ファイルは rc.inet1 rc.inet2 として、 /etc/rc.d の下にあるものとし ます。もし、これとは異なるディストリビューションを使っていたり、ファイ ルを別の場所に置きたいといった場合は、適宜読みかえてください。

これらのファイルを 0 から書いていくことにします。

rc.inet1

rc.inet1 では基本的な tcp/ip インターフェースを /sbin/ifconfig/sbin/route を使って設定します。

ifconfig

/sbin/ifconfig は IP アドレスやネットマス ク、ブロードキャストアドレスなどを指定して、インターフェースが正しく機 能するように設定します。ifconfig をパラメータを付けずに起動す れば、全てのネットワークデバイスの設定の現状が表示されます。使い方の詳 細については ifconfig のマニュアルを参照してください。

route

/sbin/route はルーティングテーブルと呼ばれる、 ネットワークを処理するコードがデータグラムを転送する際に参照するデータ の転送経路を記述した表のエントリを作成したり、変更したり、削除するため に使います。ルーティングテーブルには目的地のアドレスとそのアドレスに到 達できるインターフェースの組を登録します。引数なしに route コ マンドを実行すれば、現在のルーティングテーブルの中身が表示されます。使 い方の詳細については route のマニュアルを参照してください。

rc.inet2

rc.inet2 では inetdportmapper など、ネッ トワーク用のデーモンプログラムを起動します。これらについては、後に `rc.inet2' の章で詳しく扱うので、ここでは rc.inet1 に専念しま しょう。ここで rc.inet2 に触れたのは、rc.inet1 と rc.inet2 が 一つのファイルになった rc.net などの後半が何をしているかを知っ てもらうためです。ネットワーク用のデーモンプログラムは、ネットワークの 設定をしてから起動するということを忘れないでください。

9.4 loopback デバイスの設定(必須)

loopback デバイスというのは、そういうハードウェアが存在するわけではな く、物理的なインターフェースのように見えるソフトウェアのことです。この デバイスを使えば、ネットワーク経由で自分自身に簡単に接続することができ、 実際にネットワークに接続しなくてもネットワーク用のソフトウェアを使うこ とが可能です。ネットワークに実際に接続しなくてもネットワーク用のソフト を開発できるので、 SLIP 接続の環境でネットワーク用のソフトウェアを開発 している人などに特に役に立つでしょう。開発中は loopback デバイスを使い、 実際のテストの段階で SLIP を使って外部と接続して行うようなことが可能に なります。

loopback デバイスを使う限り、もしプログラムに問題があっても、ネットワー ク上の他のユーザーに被害を与えることはありません。

習慣として loopback デバイスのアドレスは 127.0.0.1 になってい るので、設定の際にはこの値を使ってください。

Linux では loopback デバイスは `lo' という名前になっています。 rc.inet1 では、まずこのデバイスの設定を行いましょう。設定は以 下のようになります。

#!/bin/sh
#
# rc.inet1   --  configures network devices.
#
# Attach the loopback device.
/sbin/ifconfig lo 127.0.0.1
#
# Add a route to point to the loopback device.
/sbin/route add 127.0.0.1
# End loopback
#

loopback インターフェースの IP アドレス(127.0.0.1)を指定するために ifconfig を使い、127.0.0.1 行きのデータグラムは全て loopback 用ポートへ行くように route プログラムで経路制御のた めの表に記入しています。

ここには 2 つの重要な点があります。

先に `Network Mask' の章で説明したネットマスクとブロードキャストアドレ スは loopback デバイスではデフォルトの値が使われます。実際にどういう値 が指定されてるか見るには ifconfig を引数無しで起動すれば分り ます。

# ifconfig
lo        Link encap Local Loopback  
          inet addr 127.0.0.1  Bcast 127.255.255.255  Mask 255.0.0.0
          UP BROADCAST LOOPBACK RUNNING  MTU 2000  Metric 1
          RX packets 0 errors 0 dropped 0 overrun 0
          TX packets 30 errors 0 dropped 0 overrun 0
#

次に、route コマンドがどのようにして loopback デバイスを 127.0.0.1 への経路となるデバイスに選んでいるのかがはっきりし ません。今回の場合、route コマンドは充分賢くて、 127.0.0.1 は loopback デバイスがサポートしているネットワーク に属していることを知っています。route コマンドは IP アドレス とネットマスクをチェックして実行します。現在の経路表は route コマンドを引数無しで実行すれば表示されます。

# route
Kernel routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
127.0.0.0       *               255.0.0.0       U     0      0       30 lo
# 

注意:ネームサーバーをきちんと設定していない時はroute コマンドに -n を付けて起動しましょう。引数で-n を指 定すると、経路は IP アドレスのみで表示され、ホスト名は表示されません。

9.5 イーサネットカードの設定(オプション)

この節はイーサネットカードを設定する人にのみ必要です。もしイーサネット カードを設定する必要が無い場合は飛ばしてもらっても結構です。

イーサネットカードの設定は loopback デバイスよりも少しだけ複雑です。イー サネットカードを設定する場合、デフォルト値で動くという自信が無ければ、 ネットワークマスクとブロードキャストアドレスを指定してやる必要がありま す。もっとも、大抵の場合はデフォルトの値で動くはずですが。

指定に使う IP アドレスはあなたのマシンに割りあてられた値を使う必要があ りますし、ネットワークマスク、ブロードキャストアドレスもネットワーク上 で指定されている値を指定します。

Linux が利用する最初のイーサネットデバイスは `eth0' で、二つ 目のデバイスは `eth1'、、、になります。イーサネットデバイスに 対する設定を rc.inet1 ファイルに加えましょう。アドレスを実際 のものに書きかえれば、以下のコードがそのまま利用できるはずです。

#
# Attach an ethernet device
#
#  configure the IP address, netmask and broadcast address.
/sbin/ifconfig eth0 IPA.IPA.IPA.IPA
/sbin/ifconfig eth0 netmask NMK.NMK.NMK.NMK
/sbin/ifconfig eth0 broadcast BCA.BCA.BCA.BCA
#
# add a network route to point to it:
/sbin/route add -net NWA.NWA.NWA.NWA device eth0
#
# End ethernet
#

ここで、

IPA.IPA.IPA.IPA

あなたのマシンの IP アドレスを指定します。

NMK.NMK.NMK.NMK

ネットマスクの指定です。

BCA.BCA.BCA.BCA

ブロードキャストアドレスの指定です。

NWA.NWA.NWA.NWA

ネットワークアドレスの指定です。

route コマンドに -net という引数を付けて起動している ことに注意してください。この引数を指定すると、route コマンド に与えたアドレスはネットワークを示すもので、特定のホストに対するもので ないことを意味します。ネットワークのアドレスの指定には、 /etc/networks ファイルにネットワークアドレスを書いておくとい う方法もあります。この方法については「/etc/networks/」の章で扱います。

9.6 SLIP デバイスの設定(オプション)

SLIP(Serial Line Internet Protocol) を使えばモデムでつながった電話回線 などのシリアル回線経由で tcp/ip プロトコルを使うことが可能になります。 もちろん、SLIP を使うには、SLIP サーバーに接続する必要がありま すが、最近では大学やインターネット接続サービスを提供する会社が世界各地 で SLIP 接続のサービスを提供しています。

slip はシリアルポートを利用して IP データグラムを送ります。そのため、 シリアルデバイスを制御する必要があります。Slip が使うデバイス名は sl0, sl1 などの名前になっています。これらがどのよう にシリアルデバイスに関係しているのでしょうか?シリアルデバイスを SLIP デバイスに変換するために、ネットワーク用のプログラムはカーネルの ioctl(I/O コントロール)と呼ばれる機能を利用しています。このた めに二つのプログラム、dipslattach という 2 つの プログラムが用意されています。

dip

dip(Dialup IP)は多くの機能を持つコマンドで、シリアルデバイス の転送速度を設定したり、モデムにコマンドを送って電話をかけさせたり、リ モートサーバーに自動的にログインしたり、サーバーから送られてくるいろい ろなメッセージを受けとり、その中から IP アドレスなどの情報を選びとって、 シリアルポートを SLIP モードに変更するためにカーネルの I/O コントロー ルを利用したりします。dip には強力なスクリプト機能(マクロ機能) があり、それを使って接続先に自動的に logon することも可能です。

dip はかってnet-tools に含まれていましたが、開発が個 別に行なわれるようになったため、現在では独立に配布されています。 dip にはいくつものバージョンがあり、それぞれ独特の機能が追加 されています。一番広く使われているのは dip-uri と呼ばれるバー ジョンですが、いくつかのバージョンの dip を入手して、必要な機能 を備えているバージョンを検討してみることをお薦めします。 dip-uri が一番ポピュラーなので、この文書に示す例も dip-uri に従うことにします。

dip-uri

sunsite.unc.edu

/pub/Linux/system/Network/serial/dip337j-uri.tgz
にあります。

インストールは以下のように行います。

#
# cd /usr/src
# gzip -dc dip337j-uri.tgz | tar xvf -
# cd dip.3.3.7j

<edit Makefile>

# make install
#

元々の Makefile では uucp というグループが存在すると 仮定されていますが、あなたのシステムの設定に従って dipSLIP というグループに変更してください。

slattach

slattachdip にくらべるとごく簡単なプログラムで、 使うのも簡単ですが、dip ほど洗練されてはいません。スクリプト 機能も無く、slattach が行う仕事はシリアルデバイスを SLIP デバ イスとして設定することだけです。slattach を起動する前に必要な ネットワークの設定は済ませておき、シリアル回線も接続した状態にしておき ます。slattach はサーバーとの恒久的な接続、すなわち物理的に直 結した状態や専用回線を使った接続の際に最も威力を発揮します。

いつ、どちらを使うべき?

接続先の SLIP サーバーに、モデムなどの一時的な回線を経由して接続する場 合、dip を使って回線を接続します。専用線を使う場合のように、 回線を接続するために特別の操作が不要な場合は slattach を使い ます。後者の詳細については「slip を使った恒久的な接続」の章をご覧くだ さい。

SLIP の設定はイーサネットインタフェースの設定によく似ています(上述の 「イーサネットデバイスを設定するには」をご覧ください)が、いくつか重要 な違いもあります。

まず第一に、イーサネットのネットワークと異なり、SLIP の接続ではネット ワークの両端に二台のマシンのみが接続された状態になるということです。イー サネットの場合、接続されるとすぐに利用可能になりますが、SLIP では接続 形態によって多少異なるものの、特別の方法でネットワーク接続を初期化して やる必要があります。

dip を使っている場合、接続の初期化は起動時には行ないので、回 線の準備ができた時点で初期化することになります。この手順はスクリプトを 使って自動化することも可能です。slattach の場合、 rc.inet1 ファイルに初期化の手順を書いておくのがいいでしょう。 この方法についてはすぐ説明します。

SLIP サーバーには IP アドレスを動的に割りあてるサーバーと静的に割りあ てるサーバーの二つの種類があります。一方、ほとんど全ての SLIP サーバー は電話回線経由でアクセスしてきた場合、ユーザー名とパスワードを要求して ユーザの login を認証します。dip を使えば、この部分は自動的に 対応することも可能です。

DIP を使った静的な SLIP サーバーへの接続方法

静的な SLIP サーバーを使う場合、専用の IP アドレスが必要になります。この サーバーに接続するたびに、SLIP ポートをその IP アドレスで設定します。静 的な SLIP サーバーはモデムからの呼び出しに答えて、ユーザー名とパスワード を問い合わせた上で接続を許可します。そして、あなた専用の IP アドレス向 けに送られたデータグラムは全て SLIP 接続を経由して送るような経路制御を 登録します。静的な SLIP サーバーを使っている場合、ホスト名と IP アドレ ス(あらかじめ知っているはずです)を /etc/hosts に書いておきま す。rc.inet2, host.conf, resolv.conf, /etc/HOSTNAME, rc.local というファイルも設定する必要 があるかも知れません。rc.inet1 には SLIP 接続用の特別の設定を する必要は*無い*ことをお忘れなく。インターフェースを設定するのは dip の仕事です。dip に適切な情報を与えれば、 dip がモデムを操作して電話をかけ、接続後に SLIP サーバーにロ グインした上で、インターフェースを適切に設定してくれます。

ここまでで SLIP サーバーの働きが理解できれば、「Dip の使い方」の節まで 飛ばして、 dip の設定方法を調べてください。

DIP を使った動的な SLIP サーバーへの接続方法

動的な SLIP サーバーに接続すると、サーバーの方で用意している IP アドレスの中から、毎回異なる IP アドレスが与えられることになります。す なわち、接続の際にサーバーから与えられる IP アドレスは毎回異なるわけで、 今あなたが使っているアドレスは、あなたが logoff した後は別の人が使うは ずです。動的な SLIP サーバーを管理している管理者は、あらかじめいくつかの IP アドレスを用意しておき、サーバーに新しいアクセスが来るごとに用意して いる IP アドレスの中から未使用のものを割りあてて、接続を求めている相手 に login の手続きを送り、welcome メッセージと共に割りあてた IP アドレ スを表示して、そのセッションの間はその IP アドレスを使うように指示しま す。

動的な SLIP サーバーとの接続法も、基本的には静的な SLIP サーバーと同じです が、サーバーから与えられた(毎回異なる) IP アドレスを使って SLIP デバイス を設定する必要がある、という点のみが異なります。

繰返しますが、dip は充分賢く、新しいバージョンでは単に login のプロセスを自動的に実行するのみならず、自動的にサーバーから与えられる IP アドレスを読みとり、それを使って SLIP デバイスを設定できるように記 憶することまでしてくれます。

SLIP サーバーの動作の仕組みがわかれば、dip を正しく設定する方 法についてまとめている「Dip の使い方」の節へ進んでください。

DIP の使い方

先に述べたように dip は多機能なプログラムで、SLIP サーバーへの ログインの手順を自動化するだけではなく、SLIP サーバーとの接続を開始し、 サーバーから貰った IP アドレスを使って ifconfigroute コマンドを用いて SLIP デバイスを設定するところまでやっ てのけます。

基本的に、dip を使うには `dip script' と呼ばれる dip が理解できる一連のコマンドを書いたリストを用意しなければなりません。こ のリストで dip に実行してもらいたい動作を記述することになりま す。dip のパッケージに附属の sample.dip というファイ ルがリストのサンプルなので、どのように記述するかを知りたい人は、まずこ のファイルを参照してください。dip には多数のオプションがあり ますが、この HOWTO の中でその詳細に触れることはできませんので、より詳 しくは dip のマニュアルページや README ファイル、dip に附属のサンプルファイルをご覧ください。

sample.dip をご覧になった方は気づくでしょうが、このスクリプト では静的な SLIP サーバーを使うようになっていて、あらかじめ IP アドレス は分っていることになっています。新しいバージョンの dip では、 動的な SLIP サーバー用に、サーバーから与えられる IP アドレスを自動的に 読みとり、その IP アドレスで SLIP デバイスを設定するような機能が追加さ れています。以下に示す dip script のサンプルは dip337j-uri.tgz パッケージに附属の sample.dip を修正 したもので、最初の叩き台にするのにふさわしいものでしょう。このスクリプ トを /etc/dipscript に保存して、御自分の設定に合わして修正し てください。

#
# sample.dip    Dialup IP connection support program.
#
#               This file (should show) shows how to use the DIP
#       This file should work for Annex type dynamic servers, if you
#       use a static address server then use the sample.dip file that
#       comes as part of the dip337-uri.tgz package.
#
#
# Version:      @(#)sample.dip  1.40    07/20/93
#
# Author:       Fred N. van Kempen, <waltje@uWalt.NL.Mugnet.ORG>
#

main:
# Next, set up the other side's name and address.
# My dialin machine is called 'xs4all.hacktic.nl' (== 193.78.33.42)
get $remote xs4all.hacktic.nl
# Set netmask on sl0 to 255.255.255.0
netmask 255.255.255.0
# Set the desired serial port and speed.
port cua02
speed 38400

# Reset the modem and terminal line.
# This seems to cause trouble for some people!
reset

# Note! "Standard" pre-defined "errlevel" values:
#  0 - OK
#  1 - CONNECT
#  2 - ERROR
#
# You can change those grep'ping for "addchat()" in *.c...

# Prepare for dialing.
send ATQ0V1E1X4\r
wait OK 2
if $errlvl != 0 goto modem_trouble
dial 555-1234567
if $errlvl != 1 goto modem_trouble

# We are connected.  Login to the system.
login:
sleep 2
wait ogin: 20
if $errlvl != 0 goto login_trouble
send MYLOGIN\n
wait ord: 20
if $errlvl != 0 goto password_error
send MYPASSWD\n
loggedin:

# We are now logged in.
wait SOMEPROMPT 30
if $errlvl != 0 goto prompt_error

# Command the server into SLIP mode
send SLIP\n
wait SLIP 30
if $errlvl != 0 goto prompt_error

# Get and Set your IP address from the server.  
#   Here we assume that after commanding the SLIP server into SLIP
#   mode that it prints your IP address
get $locip remote 30
if $errlvl != 0 goto prompt_error

# Set up the SLIP operating parameters.
get $mtu 296
# Ensure "route add -net default xs4all.hacktic.nl" will be done
default

# Say hello and fire up!
done:
print CONNECTED $locip ---> $rmtip
mode CSLIP
goto exit

prompt_error:
print TIME-OUT waiting for sliplogin to fire up...
goto error

login_trouble:
print Trouble waiting for the Login: prompt...
goto error

password:error:
print Trouble waiting for the Password: prompt...
goto error

modem_trouble:
print Trouble occurred with the modem...
error:
print CONNECT FAILED to $remote
quit

exit:
exit

上に示した例では動的な SLIP サーバーに接続することを仮定して いますので、もし接続先が静的な SLIP サーバーならば dip337j-uri.tgz に附属しているサンプルスクリプトを元に修正し てください。

dip スクリプトの中で get $local というコマン ドが現われた場合、dip はサーバーから送られたテキストを調べて、 数字で始まって `.' で区切られている IP アドレスとおぼしき文字列を探し ます。この修正は動的な SLIP サーバーに特有のもので、この機能 を利用して IP アドレスを読みこむプロセスを自動化しています。

ここに示した例では、自動的に SLIP 接続をデフォルトの経路にするような設 定になっていますが、イーサネットにも接続していてそれがデフォルトの経路 になっている場合など、SLIP 接続をデフォルトの経路にしたくない場合は、 スクリプトから default コマンドを削除してください。スクリプト からでも明らかでしょうが、SLIP のデバイスは sl0 なので、 dipコマンドが終了してから ifconfigroute コマンドを使って適宜設定することも可能です。

dip では mode コマンドを使って複数のプロトコルを切り かえることが可能です。一番よく使われているのは SLIP に圧縮機能を組みこ んだ cSLIP でしょう。ただし、これらの機能はホストとクライアン トの双方で使うように設定されなければなりませんので、自分が使おうとして いるプロトコルをサーバーでも利用可能かどうかは確認する必要があります。

先に示したサンプルスクリプトはかなり頑丈に作ってあるのでほとんどのエラー に対応することができるはずです。より詳しくは dip のマニュアル を御覧いただきたいのですが、サーバーにつながらなかった場合、一定の間隔 を置いてリダイアルしたり、複数のサーバーに順々にアクセスするようなこと もdip scriptで可能なはずです。

専用線と slattach を使って定常的に SLIP 接続するには

2 台のマシンをケーブルでつないでいるとか専用回線を使うといった場合のよ うに、恒久的に 2 台のマシンをシリアル接続している場合には dip を使ってシリアル接続を設定する面倒はいりません。slattachdip に比べるとごく簡単な機能しか無いプログラムですが、シリア ル接続を設定するには充分な機能を持っています。

接続は恒久的なものですから、設定は rc.inet1 ファイルに書きこ んで、起動時に実行するのがいいでしょう。簡単に言えば、恒久的なシリアル 回線を使って接続する場合には、まずシリアルデバイスを正しい回線速度に設 定し、次にそのデバイスを SLIP モードへ変更する必要があります。 slattachはこれを一つのコマンドでやってしまいます。以下のコマ ンドを rc.inet1 ファイルに加えてください。

#
# Attach a leased line static SLIP connection
#
#  configure /dev/cua0 for 19.2kbps and cslip
/sbin/slattach -p cslip -s 19200 /dev/cua0 &
/sbin/ifconfig sl0 IPA.IPA.IPA.IPA pointopoint IPR.IPR.IPR.IPR up
#
# End static SLIP.

ここで、

IPA.IPA.IPA.IPA

あなたの IP アドレス

IPR.IPR.IPR.IPR

接続先のマシンの IP アドレスです

slattach はシリアルデバイスに未使用の SLIP デバイスを sl0 から順に割りあてていきます。すなわち、最初に起動した slattach コマンドは sl0 をシリアルデバイスに割りあて、 次の slattach コマンドは sl1 をシリアルデバイスに割 りあて、、となります。

slattach では -p オプションの引数で複数のプロトコル を切り替えることができます。この場合、圧縮をするかしないかで SLIPcSLIP を切り替えることが可能です。注意:圧縮 の有無は接続の両端ともに同じ設定に合わせる必要があります。

9.7 PLIP デバイスの設定(オプション)

plip(Parallel Line IP)は SLIP に似ていますが、シリアルポート の替りにパラレルポート(プリンタポート)を使って 2 台のマシンの間を接続 します。パラレルポートを使えば、一度に複数のデータを送ることが可能なの で通常のシリアルデバイスよりも速い接続速度を期待できます。もっとも単純 なパラレルポートであるプリンタポートを使っても、比較的高価な 16550AFN UART を使ったシリアルポートよりも高速な接続が可能です。

ラップトップの中には PLIP が使えない機種もあります。というのも、それら は一般のプリンタでは使わないけれど、PLIP では使っているいくつかの信号 を通さないようなチップを使っているからです。

Linux の plip のインターフェースは Crynwyr Packer Driver の PLIP と互換なので、plip 経由で tcp/ip のソフト ウェアが動いている DOS マシンと接続することも可能です。

PLIP ドライバを使うには 2 つの方法があります。一つは PLIP ドライバをカー ネル本体に組みこんでしまう方法で、もう一つはモジュールとして作成し、必 要な時にロードする方法です。私はカーネル本体にドライバ組みこんでしまう 方法をお薦めします。というのも、その方が作成が簡単ですし、plip ドライ バを必要とする環境にいる場合、常にそのドライバを使うものだからです。

[ 訳注: PLIP はパラレルのプリンタポートを使うので、カーネルにパ ラレルプリンタのドライバ(Config Printer)を組みこむと PLIP は使えないそ うです。現在は両者ともモジュール化されていますから、プリンタも使うし PLIP も使いたい場合は、両者ともモジュール化しておく必要があります。 ]

カーネルのコンパイル時に plip を設定するのに参照されるファイ ルが一つだけあります。それは /usr/src/linux/drivers/net/CONFIG で、このファイルで plip が使うタイマをミリセコンド単位で指定します。たいていデフォ ルト値のままで大丈夫です。このタイミングを増す必要があるのは特に遅いコ ンピュータを使っている場合で、接続先の速い方のコンピュータで このタイマのタイミングを大きくして、待ち時間を長くしてやる必要がありま す。

[ 訳注: このあたりの設定値は net-tools 附属の plipconfig という プログラムで変更可能だそうです。]

ドライバは以下のような I/O アドレスと IRQ を仮定しています。

device  i/o addr    IRQ
------  --------    -----
plip0   0x3BC           5
plip1   0x378           7
plip2   0x278           2 (9)

もしあなたの使っているコンピュータのパラレルポートがこの組み合わせのど れとも対応しない場合、ifconfig コマンドで `irq' パラメータを 使って、使用すべき IRQ を変えてください。プリンタポートの IRQ を ON/OFF できるような ROM BIOS をお使いの場合、ON にしておくことを忘れな いように。

plip インタフェースを設定するには、rc.inet1 ファイル に以下のようなコマンドを追加します。

#
# Attach a PLIP interface
#
#  configure first parallel port as a plip device
/sbin/ifconfig plip0 IPA.IPA.IPA.IPA pointopoint IPR.IPR.IPR.IPR up
#
# End plip

ここで

IPA.IPA.IPA.IPA

あなたの使う IP アドレス

IPR.IPR.IPR.IPR

接続先の IP アドレス

になります

pointopoint パラメータは SLIP の場合と同じ意味で、接続先のマ シンの IP アドレスを指定するものです。

殆んどの場合、plip インタフェースは SLIP インタフェー スを同じように扱うことができます。ただし、plip インタフェース には dipslattach は必要ありませんし、使うことも できません。

PLIP 用のケーブル

plip は MS-DOS で pc 同士を接続する時によく用いられるケーブル と同じケーブルで接続できるように考慮されています。

/usr/src/linux/drivers/net/plip.c によると、接続用ケーブルの ピンの配置は以下のようになっています。

Pin Name    Connect pin - pin
---------   -------------------------------
GROUND      25 - 25
D0->ERROR   2 - 15
ERROR->D0   15 - 2
D1->SLCT    3 - 13
SLCT->D1    13 - 3
D2->PAPOUT  4 - 12
PAPOUT->D2  12 - 4
D3->ACK     5 - 10
ACK->D3     10 - 5
D4->BUSY    6 - 11
BUSY->D4    11 - 6
D5          7*
D6          8*
D7          9*
STROBE      1*
FEED        14*
INIT        16*
SLCTIN      17*

注意:`*' マークのピンは接続しません。Extra grounds は 18,19,20,21,22,23,24 です。

もしお使いのケーブルが金属箔でシールドされているタイプなら、おそらく 一端のみで DB-25 の金属シェルとつながっていると思います。

警告:間違った配線の PLIP ケーブルを使えばコントローラカードを壊し てしまう怖れがあります。余計な苦労をしたくなければ、全ての接続を ダブルチェックするぐらい注意して確認してください。

[ 訳注: 「ラップリンク」や「インターリンク」といった、パラレルポー ト同士を結んで通信するためのケーブルがいくつか市販されているようなので、 それらを使う方が安全かも知れません。]

PLIP ケーブルをあまり長くしてはいけません。このケーブルの仕様はたかだ か 1 メートル程度の長さしか考慮していません。長い PLIP ケーブルを強い 電磁気の発生源、例えば照明器具や電線、無線機などの近くでは使わないでく ださい。強い電磁気の発生源の近くで利用すると、データの送受信が妨害され たり、コントローラがダメージを受ける怖れがあります。長い距離を結びたい 場合には安い thin-net 用のイーサネットカードを 2 枚買って、同軸ケーブ ルで接続することを考えるべきです。


前のページ 次のページ 目次