<!doctype linuxdoctr system>

<!-- This is the Linux NET-2/3-HOWTO, please forward any comments or suggestions
     to the author: 94004531@postoffice.csu.edu.au
 -->

<article>

<!-- Title information -->

<title>Linux NET-2/3-HOWTO
<author>Terry Dawson, <tt>94004531@postoffice.csu.edu.au</tt>
<date>v3.5, 16 January 1996
<trans> こじまみつひろ <tt>isle@st.rim.or.jp</tt>
<tdate> 1996/04/03

<abstract>
この文書は Linux の NET-2 や NET-3 と呼ばれるネットワーク用のソフトウェ
アをどのように入手、インストール、設定するかについてまとめたものです。
いくつかの「しばしば尋ねられる質問(FAQ)」に対する回答も付録に付けてい
ます。この文書は tcp/ip のネットワークについての知識を与えるようには書
いていませんが、可能な範囲で必要な情報は盛りこんでいます。tcp/ip ネッ
トワークの原理についての教科書は後述する参考書をご覧ください。

</abstract>

<!-- Table of contents -->
<toc>

<!-- Begin the document -->

<sect><heading>イントロダクション

<p>
この文書は Linux NET-2/3 の HOWTO です。初期の NET-FAQ やそれを引き継
いだ NET-2-HOWTO のバージョン 1.0+ を全面的に書き改めたものです。この
文書は Linux kernel のバージョン 1.0 以上用の新しい NET-2/NET-3 tcp/ip 
ネットワークコード用に書かれています。

<sect1><heading>前バージョンからの変更点

<p>
<verb>
追加：

修正/アップデート：
	ipalias について 1.3.* カーネルに対応
	IPX のついての質問は IPX-HOWTO を紹介

</verb>

<verb>
&lsqb;訳注：v1.x のころは、

              日本語訳 : ぺーちゃん (NBB02702@niftyserve.or.jp)
             校正 : 山本昌利＠ＮＥＣ (yammasts@mcd.yh.nec.co.jp)
                  : ＶＩＣ (GAA00714@niftyserve.or.jp)

の皆さんが翻訳されていました。

v.3.x では、原版も全面的に改稿されているようなので、こじま
(isle@st.rim.or.jp) が新ためて 0 から翻訳しました。そのため、以前の日
本語版に比べて、校正も内容のチェックも不十分だと思います。また、SLIP 
回りについては詳しく書いてありますが、訳者は実際に使ったことがないので、
大きな勘違いをしているところがあるかも知れません。おかしなとこに気づい
た方は御気軽に訳者まで連絡ください。&rsqb;
</verb>

<sect1><heading> Linux 用ネットワークコードの簡単な開発史

<p>
<tt>Ross Biro &lt;biro@yggdrasil.com></tt> が最初の Linux kernel 内部
のネットワーク用コードを書きました。彼は、イーサネット用のドライバは 
<tt>Donald Becker &lt;becker@cesdis1.gsfc.nasa.gov></tt> 作のものを、
SLIP 用のドライバは <tt>Laurence Culhane
&lt;loz@holmes.demon.co.uk></tt>作のものを、D-Link のドライバは 
<tt>Bj0rn Ekwall &lt;bj0rn@blox.se></tt> 作のものを利用していました。

その後、ネットワーク回りのコードは <tt>Fred van Kempen
&lt;waltje@hacktic.nl> </tt>が引き継ぎ、Ross のコードを元に <em>NET-2
</em>リリースに発展させました。NET-2 コードはその後もいくつかのバージョ
ンアップが行なわれ、最終的には <tt> Alan Cox
&lt;iialan@iifeak.swan.ac.uk></tt> が NET-2 のコードを徹底的にデバッグ
して、最新のカーネルに取りこまれるように安定させました。このコードは元々 
<em> NET-2D(ebuggued) </em> と呼ばれており、Linux 1.0 がリリースされる
少し前に標準のカーネルに取りこまれるようになりました。

PPP は <tt> Michael Callahan &lt;callahan@maths.ox.ac.uk></tt> と <tt>
Al Longyear &lt;longyear@netcom.com></tt> がサポートし、最初はカーネル
のパッチとして、後には標準のカーネルリリースに取りこまれるようになりま
した。

最新のコードは NET-3 と呼ばれるバージョンで、多くの修正や機能強化が行
われていますが、基本的には カーネルの 1.1.5 以降のバージョンで同じコー
ドが利用されています。

Alan は IPX や AX.25 モジュールと言った機能を加え、<tt> Florian La
Roche &lt; flla@stud.uni-sb.de> </tt> はネットワーク用アプリケーション
の最新版を作成しています。

新部裕は PLIP ドライバを機能強化しました。

Jonathan Naylor は AX.25 コードの開発を引きつぎ、NetRom を含む多くの機
能を追加しました。

その他、大勢の人々がバグの修正やアプリケーションの移植、デバイスドライ
バの作成に協力しています。

<sect><heading>免責条項(Disclaimer)

<p>
Linux のネットワークコードは、全く新しく tcp/ip ネットワークプロトコル
をカーネルへ実装したものです。0 から開発され、既存のネットワーク用のコー
ドを移植したものではありません。

Linux のネットワーク用コードは、カーネルに実装された最も新しく、革新的
なコードです。広く使われるようになってきたので、その機能を、新しいアプ
リケーションに使ったり、新しい作業に使おうと多くのデベロッパが開発を行
なっています。ただし、このコード自身はまだ流動的で、多くのバグや問題点
があるかも知れません。また、修正やパッチがいくつも出るかも知れません。
もしこれらを気にするならば、安定版のカーネルに附属のネットワーク用のコー
ドとユーティリティプログラムを使うようにお薦めします。安定版のカーネル
はリリース番号の 2 つ目の数字が<bf>偶数</bf>のものです。例えば 1.2.7 
は安定版のカーネルです。リリース番号の 2 つ目の数字が<bf>奇数</bf>のバー
ジョンのカーネルは開発用のバージョンで、<em>テスト用</em> のリリースな
ので問題やバグはより多く含まれているでしょう。

数人の開発者がネットワーク用コードにその才能を捧げており、何千ものテス
トやバグ/問題点のレポートの収集、それらの問題点の修正を行っています。
多分、あなたの経験した問題も既に報告済のもので、作業が進行中で、近い将
来解決されることでしょう。ですから、少しの間我慢するか、もし自らで修正
できるなら、ぜひ協力をお願いします。

筆者たちにも Linux のネットワーク用のソフトウェアの全てを知ることはで
きません。もしこの文書に間違いがあっても勘弁してください。そして、間違
いは私たちに教えてください。この文書で扱っているそれぞれのソフトウェアの
詳細とより正確な情報については、それぞれのソフトウェアに附属の README 
ファイルを参照してください。私たちはこの文書を可能な限り、間違いの無いよ
うに、最新であるように、努めています。本文書中のソフトウェアのバージョ
ンは執筆時のものです。

<bf>注意</bf>：名前が似ていることから、<em> BSD の NET-2 リリース 
</em> と混同されることがありますが、Linux のネットワーク用のコードは 
<em>BSD の NET-2 リリース</em>とは何の関係もありません。両者を混同しな
いようにしてください。

<sect><heading>もう質問ですか？

<p>
<em>&dquot;唯一おろかな質問は訪ねられなかった質問だ&dquot;</em>

もし一般的な設定に関する疑問があって、さまざまな HOWTO や FAQ 集を読ん
でも答が見つからなかった場合、<em>comp.os.linux.networking</em> に投稿
するのがいいでしょう。もし、その問題が特に Linux のネットワーク用のコー
ドに依存するものならば、NET メーリングリストに投稿するのがいいかの知れ
ません。<bf>投稿する際には可能なかぎり多くの関連情報を含めてください
</bf>。情報の不十分なバグレポートや問題点の報告ほどイライラさせるもの
はありません。

<bf> 最低でも、使っているソフトウェアのバージョン/リビジョン番号、問題の詳
細説明、問題を起した環境、についての説明は必要です。可能な限り、実行状
態の追跡記録やデバッグメッセージを付けることも必要です。</bf>

<bf>それぞれの</bf>ディストリビューションについての設定や問題点は、ネッ
トワークコードの開発者ではなく、まずそれらのディストリビューションの開
発者に質問してください。なぜなら、いくつかのディストリビューションでは、
非標準的なディレクトリ構造をしているものや、テスト版/非標準版のネット
ワークコードやユーティリティプログラムを添付しているものもあるからです。
NET-2 コードの開発者は、この文書に書かれている以外の形でのディストリビュー
ションについてはサポートできませんし、テスト用のアルファ版のディストリ
ビューションについてもサポートできません。

<bf>linux-net</bf> のメーリングリストに参加するには、メーリングリストのサーバー
である
<tscreen><verb>
Majordomo@vger.rutgers.edu
</verb></tscreen>
に、
<tscreen><verb>
subscribe linux-net
</verb></tscreen>

と書いたメールを送ってください。サブジェクト欄は無視されます。注意して
もらいたいのですが、<tt>linux-net</tt> メーリングリストは開発に関する
議論を行なう場で、初心者が質問すべき場所でありません。

PPP についてもメーリングリストがあり、参加するには同じアドレスに 
<tt> subscribe linux-ppp </tt>と書いたメールを送ってください。

<tt> linux-hams </tt>と呼ばれるメーリングリストも存在します。このメー
リングリストはアマチュア無線に関するプログラムについて議論するために作
成されました。このメーリングリストに参加するには、同じアドレスに 
<tt>subscribe linux-hams </tt> と書いたメールを送ってください。

<sect><heading>関連文書(tcp/ip についてより深く勉強するには)
<p>
この HOWTO が扱っていない tcp/ip に関する情報を得たい場合、以下の文書
が参考になるでしょう。

<tt>Olaf Kirch</tt> は <em>Linux Network Administration
Guide(NAG)</em> と呼ばれる文書を <em>Linux Documentation Project</em> 
の一環として作成しました。この文書は、NFS や UUCP, 電子メール、ネット
ニュース、ネームサーバーなど、 Linux で tcp/ip ネットワークを使う場合
の設定や使用法の全てを扱っています。

NAG はこの HOWTO を補うもので、この文書が扱わない部分を中心に扱ってい
ます。この HOWTO は NET コードのインストールと設定、例えば、`どのよう
にしてインターネットに接続するか'、についてのみを扱っています。もしあ
なたが unix のネットワークについて初心者ならば、NAG を入手して読んでみ
ることを強くお薦めします。NAG はこの文書の対象外の人が呈する疑問の数々
に答えています。NAG は書籍としても入手できますが、以下のアドレスから 
ftp で入手することも可能です。

<bf>sunsite.unc.edu</bf>
<tscreen><verb>
/pub/Linux/docs/linux-doc-project/network-guide/*
</verb></tscreen>

このディレクトリにはいくつものバージョンのドキュメントが置かれています。
また、文書のフォーマットもさまざまで、プレーンテキスト、ポストスクリプ
ト、DVI, Latex, groff のフォーマットのものがあるはずです。

The <em>Linux Network Administrators Guide</em> (c)Olaf Kirch.

現在ではいくつもの会社が Linux の文書を出版しており、自分自身の手で 
ftp してプリントアウトするだけの時間が無ければ、一般書籍として大きな本
屋で彼の本を入手することは可能です。

&lsqb; 訳注：NAG は近日中に日本語版が発売される予定です。&rsqb;

Linux のネットワークについては以下の HOWTO も参照すべきです。

<p>

<url url="http://sunsite.unc.edu/mdw/HOWTO/Ethernet-HOWTO.html"
name="Ethernet-HOWTO">、この HOWTO はイーサネットカードを使う場合にま
ず読むべきものです。Ethernet-HOWTO は、Linux 用にイーサネットカードを
選び、インストールし、設定するかについて詳しく解説しており、イーサネッ
トドライバに関する問題を診断する方法についても書かれています(邦訳あり)。

PPP を使う場合は PPP-HOWTO <url
url="http://sunsite.unc.edu/mdw/HOWTO/PPP-HOWTO.html"
name="PPP-HOWTO"> が役に立つでしょう(邦訳あり)。

IPX に関しては <url
url="http://sunsite.unc.edu/mdw/HOWTO/IPX-HOWTO.html"
name="IPX-HOWTO"> をご覧ください(邦訳あり)。

SLIP や PPP を使ってサーバーを立ちあげたい時には Serial-HOWTO <url
url="http://sunsite.unc.edu/mdw/HOWTO/Serial-HOWTO.html"
name="Serial-HOWTO"> が役に立つでしょう(邦訳あり)。

Sun の Network Information Service(NIS) を使いたい時には<url
url="http://sunsite.unc.edu/mdw/HOWTO/NIS-HOWTO.html"
name="NIS-HOWTO"> が役に立つでしょう(邦訳あり)。

アマチュア無線用のソフトウェアを使う場合は <url
url="http://sunsite.unc.edu/mdw/HOWTO/HAM-HOWTO.html"
name="HAM-HOWTO"> が有益でしょう。

電子メールやネットニュースを設定する際の問題については<url
url="http://sunsite.unc.edu/mdw/HOWTO/Mail-HOWTO.html"
name="Mail-HOWTO">(邦訳あり) と<url
url="http://sunsite.unc.edu/mdw/HOWTO/News-HOWTO.html"
name="News-HOWTO"> が役立つでしょう(邦訳あり)。

UUCP 経由でインターネットに接続する場合、<url
url="http://sunsite.unc.edu/mdw/HOWTO/UUCP-HOWTO.html"
name="UUCP-HOWTO"> が有益でしょう(邦訳あり)。

Linux マシンを使って防火壁(firewall)マシンを設定する場合には、
<url url="http://sunsite.unc.edu/mdw/HOWTO/Firewall-HOWTO.html" 
name="Firewall-HOWTO">が役に立つでしょう。

tcp/ip に関する一般的な情報を勉強した後には、以下の文書が役に立つでしょ
う。

<descrip>
<tag>tcp/ip の紹介
</tag>
<url url="ftp://athos.rutgers.edu/runet/tcp-ip-intro.doc"
name="text version">,
<url url="ftp://athos.rutgers.edu/runet/tcp-ip-intro.ps"
name="postscript version">.
<tag>tcp/ip 管理方法
</tag>
<url url="ftp://athos.rutgers.edu/runet/tcp-ip-admin.doc"
name="text version">,
<url url="ftp://athos.rutgers.edu/runet/tcp-ip-admin.ps"
name="postscript version">.
</descrip>

更に詳細な情報が必要な場合、次の書籍を強くお薦めします。

<tscreen><verb>
"Internetworking with TCP/IP"
by Douglas E. Comer

ISBN 0-13-474321-0
Prentice Hall publications.
</verb></tscreen>

Unix の環境でネットワークを利用するアプリケーションソフトウェアを書き
たい場合には、以下の書籍がお薦めです。

<tscreen><verb>
"Unix Network Programming"
by W. Richard Stevens

ISBN 0-13-949876-1
Prentice Hall publications.
</verb></tscreen>

<sect1><heading>この文書の最新版

<p>
この文書の日付が 2 ヶ月以上前なら、より新しいものが出ているはずです。
Linux のネットワーク回りはきわめて進化が速く、さまざまな新しい機能を取
りこんでいるので、この文書もかなりな頻度で更新しています。最新版は以下
の anon-ftp サイトから入手可能です。

<bf>sunsite.unc.edu</bf>
<tscreen><verb>
/pub/Linux/docs/HOWTO/NET-2-HOWTO
</verb></tscreen>
あるいは：
<tscreen><verb>
/pub/Linux/docs/HOWTO/other-formats/NET-2-HOWTO{-html.tar,ps,dvi}.gz
</verb></tscreen>

WWW 経由ならば、
<url url="http://sunsite.unc.edu/mdw/linux.html"
name="Linux Documentation Project Web Server"> の
<url url="http://sunsite.unc.edu/mdw/HOWTO/NET-2-HOWTO.html" name="NET-2-HOWTO">
ページか、直接私<tt>&lt;94004531@postoffice.csu.edu.au></tt>あてに連絡
ください。最新版は定期的に <tt> comp.os.linux.networking</tt> か 
<tt>comp.os.linux.answers</tt> 、<tt>news.answers</tt> に投稿されてい
ます。

<tt>news.answers</tt> に投稿された FAQ は、この文書も含めて、
<tt>rtfm.mit.edu:/pub/usenet</tt> に保管されています。

<sect1><heading>フィードバックのお願い
<p>
コメントや最新情報、その他何でも、筆者 
<tt>&lt;94004531@postoffice.csu.edu.au></tt> まで知らせてください。連
絡が早いほど、この文書を早くに改訂/修正することができます。最近はあま
りネットニュースを見ていないので、問題点が見つかれば、メールで直接お知
らせください。<tt>undernet</tt> IRC ネットワークの <tt>#linpeople</tt> 
チャンネルの <em>terryd</em> で連絡がつくかも知れません。

<sect><heading>この文書で使われる用語
<p>
この文書の中では、<tt>クライアント</tt>や<tt>サーバー</tt>と言った用語
を多数目にすることになります。それらは既に一般的に使われている用語です
が、この文書の中では以下のように定義しておきます。

<descrip>
<tag>クライアント</tag> サービスやデータを入手するために、何らかの動作
や接続を開始するマシンやプログラム

<tag>サーバー</tag> 複数の外部マシンからからの接続要求を受けつけて、それ
らにサービスやデータを提供するマシンやプログラム

</descrip>

この定義はそれほど厳密なものではありませんが、正確にはクライアントとサー
バ関係とは言いにくい <em>SLIP</em> や <em>PPP</em> と言った一対一(peer
to peer)接続の両端を区別するのにも使えるでしょう。

<p>
その他の用語としては、

<descrip>
<tag>IP アドレス</tag> ネットワーク上の TCP/IP ホストをユニークに識別す
るための番号。IP アドレスは 4 バイトで構成され、各バイトを 10 進数で表
記してドット(`.')で区切った形(例えば 123.45.678.9)で表記されます。


<tag>ハードウェア・アドレス</tag> ハードウェアアドレス：物理ネットワー
クのメディアアクセス層でホストを一意に識別するための数字です。<em>イー
サネットアドレス</em>や <em>AX.25 アドレス</em>などがハードウェアアド
レスの例です。

<tag>データグラム</tag>

データグラム：データグラムは、IP ネットワークで転送されるデータの基本
単位で、データとその行き先のアドレスが付いたヘッダから構成されています。
データグラムは `パケット' とも呼ばれています。

<tag>MTU</tag> <em>最大転送単位</em>(Maximum Transmission Unit)の
略で、より小さな単位に分割せずに IP インターフェースから送ることのでき
るデータグラムの最大サイズを示します。MTU は細分化されずに送りたい最も
大きなデータグラムのサイズよりも大きくなければいけません。注意してもら
いたいのですが、ここで指定しているサイズはローカルに細分化する際の話で
あり、転送の途中でさらに小さな MTU が指定され、データグラムはそこで細
分化されるかも知れません。MTU の典型的な値は、イーサネットでは 1500 バ
イト、SLIP では 576 バイトです。

<tag>MSS</tag> <em>最大セグメントサイズ</em>(Maximum Segment Size)とは、
一度に転送できる最大のデータ量です。もしローカルなネットワークセグメン
トでデータグラムを細分化したくなければ、MSS は (MTU - IP ヘッダー)分の
大きさが必要です。

<tag>ウィンドウ</tag> <em>ウィンドウ</em>とは受信端が一度に受け取れる
最大のデータ量です。

<tag>経路(route)</tag> <em>経路</em> とはデータグラムが目的地に辿りつ
くまでに経由していく通路(パス)です。

<tag>ARP</tag>

ARP とは <em>Address Resolution Protocol</em> の頭文字を取ったもので、
ネットワーク上のマシンが IP アドレスとハードウェアアドレスを結びつける
際に利用されるプロトコルです。

</descrip>

<sect><heading>NET-3 が提供している機能

<p>
NET コードは Linux 用のカーネルに実装された完全な tcp/ip プロトコル一
式です。

<sect1><heading>一般的な機能

<p>
最新の NET-3 のコードは以下の機能を提供しています。
<descrip>
<tag>Ethernet Cards
</tag>いくつかのポータブル用、ポケットアダプタ、PCI 用を含めて、たいていのイー
サネットカードはサポート済
<tag>SLIP(シリアルライン IP)と PPP (ポイント・トゥ・ポイント)プロトコ
ル</tag>
を使うとモデムを介した電話回線や二台のマシンを直結したシリアルライン上
に tcp/ip プロトコルを通すことができます。

<tag>Van Jacobsen 式ヘッダ圧縮 </tag>

tcp/ip プロトコルのヘッダーを圧縮して、電話回線のような低速度の回線で 
SLIP/PPP の効率を上げます。

<tag>PLIP(パラレルライン IP) </tag>

プリンタポート(パラレルポート)を使って 2 台のマシンを IP 接続すること
が可能です。

<tag>EQL ロードバランシング </tag>

2 本(あるいはそれ以上)の回線を同時に利用して回線の速度を増し、別のマシ
ンや、(もし使っているプロバイダがサポートしていれば)インターネットに接
続することが可能です。新しいカーネル(1.3.x)でサポートしています。

<tag>NFS (Networked File System) </tag>
ネットワーク経由で他のマシンのファイルシステムをマウントすることが可能
です。

<tag>IPX (Novell)
</tag>
自分で IPX 用のアプリケーションを書いたり、Linux を IPX のルーターに利
用できます。

<tag>Sun の Network Information System - NIS </tag>

NIS の実装も Linux に移植され利用可能です。

<tag>ARCNet </tag>

ARCNet 用のドライバも開発済で、最新のカーネルには標準で含まれています。
ARCNet はイーサーネットほど速くはありませんが、カードはずっと安価に入
手可能です。

<tag>IBM's Token Ring</tag>

を使えば、Linux マシンを Token Ring Lan に接続することが可能です。
Token Ring 用の試験版のドライバは最新のカーネルに附属しています。

<tag>Appletalk </tag>

あるいは「イーサトーク」と呼ぶべきでしょうか？どちらにせよ、これを使え
ば Macintosh とファイルやプリンタを共有することが可能です。詳しくは、
「実験中、あるいは開発中のモジュール」の章をご覧ください。

<tag>WaveLan Wireless Lan Card support </tag>

WaveLan Wireless Lan Card を使えば、移動環境、すなわちネットワークから
離れてアクセスすることが可能です。最新のカーネルにはドライバが含まれて
います。

<tag>ISDN </tag>

いくつかのメーカー製の ISDN カードの実験的なサポートが行なわれています。
詳しくは、「実験中、あるいは開発中のモジュール」の章をご覧ください。

<tag>ATM </tag>

Linux 用の ATM ドライバを開発中のチームが存在します。

<tag>IP firewalling</tag>

を使えば、Linux マシンを安全な防火壁マシン(firewall gateway)に設定する
ことが可能です。

<tag>IP Accounting </tag>

を使えば、誰がどれくらいネットワークを使っているかの記録を取ることがで
きます。

<tag>IP tunnelling </tag>

は様々な IP の実験に使えます。

</descrip>
<p>
以下の機能は NET-3 コードにはまだ含まれていません：


<descrip>
<tag>SPX/NCP (Novell Netware) </tag>

がサポートされれば、Novell のネットワークファイルシステムをマウントし
たり、ネットワークプリンタを利用することが可能になるはずです。現在も開
発が進行中ですが、Novell が著作権を持つ製品ですのでもうすこし時間がか
かりそうです。

<tag>FDDI</tag>

少くとも私の知る範囲では Linux 用に FDDI カードのドライバを作成してい
る人はいません。

<tag>System-V streams </tag>
Linux 用に System-V 互換のストリームを開発中の人々がいます。詳細は後述
します。
</descrip>

<sect1><heading> サポートされているイーサネットカード

<p>
kernel 1.2.0 では以下のイーサネットカードがサポートされています。

<itemize>
<item>WD80*3 その互換カード
<item>SMC Ultra.
<item>AMD LANCE と PCnet (AT1500 and NE2100) 及びその互換カード
<item>3Com 3c501 (時代遅れでひどく遅い).
<item>3Com 3c503.
<item>3Com 3c505.
<item>3Com 3c507.
<item>3Com 3c509/3c579.
<item>Cabletron E21xx.
<item>DEPCA と互換カード
<item>EtherWorks 3.
<item>ARCNet.
<item>AT1700 (互換カードではない).
<item>EtherExpress.
<item>NI5210 と互換カード.
<item>NI6510.
<item>WaveLAN.
<item>HP PCLAN+ (27247B と 27252A).
<item>HP PCLAN (27245 と 27xxx シリーズ).
<item>NE2000/NE1000 と互換カード.
<item>SK&lowbar;G16.
<item>Ansel Communications EISA 3200.
<item>Apricot Xen-II on board ethernet.
<item>DE425, DE434, DE435.
<item>Zenith Z-Note.
<item>AT-LAN-TEC/RealTek pocket adaptor.
<item>D-Link DE600 pocket adaptor と互換ボード
<item>D-Link DE620 pocket adaptor と互換ボード
</itemize>

新しいバージョンのカーネルではさらにサポートしているカードは増えていま
す。

Linux でイーサネットカードを使うつもりならば、<url
url="http://sunsite.unc.edu/mdw/HOWTO/Ethernet-HOWTO.html"
name="Ethernet-HOWTO"> に目を通すのがいいでしょう。Ethernet-HOWTO には
サポート済のイーサネットカードのリストやイーサネットカードを買う際の注
意など、有益な情報が多数記載されています。

今までに述べてきたように、Linux のネットワークはイーサネット以外にも様々
な形態のネットワーク接続をサポートしています。世界中の大学やインターネッ
ト接続を提供している会社がダイアルアップ形式のネットワーク接続サービス
を提供しています。これらのサービスはたいてい SLIP か PPP 接続の形になっ
ていますので、Linux を使えば簡単にこれらのサービスを亨受することができ
ます。SLIP や PPP 接続に必要なものは電話回線と普通のモデムだけなので、
Linux マシンをちゃんと設定すればすぐにでも SLIP や PPP 経由でインター
ネットに接続することが可能です。設定の仕方の詳細については後述します。

<sect1><heading>アマチュア無線のサポート

<p>
現在の Linux はいくつかのアマチュア無線に固有の機能もサポートしていま
す。最新の開発版のカーネルには以下の機能が標準で附属しています。

<descrip>
<tag>AX.25 </tag>
Alan Cox と Jonathan Naylor がカーネルに AX.25 ソケット機能を組みこみ
ました。

<tag>NetRom </tag>

Jonathan Naylor が開発版のカーネルに NetRom の機能を組みこみました。ま
だ開発途中ですが、進展状況は良好のようです。

<tag>Ottawa PI Card </tag>

Dave Perry と Ottawa Packet Radio Group が作成した Ottawa PI カード用
のドライバは完成しています。

<tag>Generic SCC card driver </tag>

Joerg Reuter が SCC カード用の一般的なドライバを作成し、開発版のカーネ
ルに附属しています。

<tag>A kernel user network link driver
</tag>
を使えば、面倒な pty を使わずにユーザープログラムをリンクすることが可
能です。

</descrip>

アマチュア無線についての詳細は <url
url="http://sunsite.unc.edu/mdw/HOWTO/HAM-HOWTO.html"
name="HAM-HOWTO"> をご覧ください。

<sect><heading>NET-2/NET-3 ソフトウェアの入手法
<p>
ネットワーク関係のソフトウェアを設定する前に必要なソフトウェアを入手す
る必要があります。必要なソフトウェアは version 1.0 以降のカーネル、正
しいライブラリ、tcp/ip の設定用プログラムと設定ファイル(例えば 
/sbin/ifconfig や /etc/hosts など)、telnet, ftp, rlogin といったネット
ワーク用のアプリケーションです。

Slackware のようなディストリビューションの形態で Linux を入手している
場合、ネットワーク用の設定ファイルやライブラリ、各種アプリケーションな
ど必要なものは全て揃っているはずです。必要なファイルがあるか確認してお
きましょう。

<bf>注意：ディストリビューションによっては、ファイルやコマンドがこの HOWTO 
で説明しているのとは違う場所にインストールされている可能性もあります。</bf>

すでにネットワーク用のソフトウェアが<bf>揃って</bf>いれば、「カーネル
の設定」 の節まで進んでください。ネットワーク用のソフトウェアが<bf>無
い</bf>場合にのみ、次の指示に従うこと。


<sect1><heading>カーネルのソースコード

<p>
Linux の場合、 1.2.* のバージョン番号を持つカーネルが <em>安定版</em>
で 1.3.* のバージョンのものは開発版のカーネルと位置づけられています。
パッチをあてたりカーネルのソースを修正するのが大変とお考えなら 1.2.* 
のバージョンのカーネルを使うのがいいでしょう。1.2.* のカーネルでも必要
な機能の大部分は有しているはずです。しかしながら、ネットワーク回りに関
心がおありでしたら、思いきって 1.3.* の新しいバージョンのカーネルをご
利用することをお薦めします。1.3.* のカーネルではネットワーク回りのコー
ドにさまざまな改良が施されています。既にあちこちで聞かれていると思いま
すが、1.3.* のバージョンのカーネルを使う場合、既存のシステムはバックアッ
プしておき、テスト中に何かトラブルが起きた場合に備えましょう。


1.2 シリーズの最新のカーネルは

<bf>ftp.funet.fi</bf>
<tscreen><verb>
/pub/OS/Linux/PEOPLE/Linus/v1.2/linux-1.2.13.tar.gz
</verb></tscreen>

です。これは gzip で圧縮されたファイルなので展開するには <em>gzip</em> が必要です。

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

<tscreen><verb>
# cd /usr/src
# mv linux linux.old
# gzip -dc linux-1.2.13.tar.gz | tar xvf -
</verb></tscreen>


<tt>patch-1.2.1.gz..</tt> といったファイルも同じディレクトリにあるはず
です。これらはパッチファイルになっています。1.2.1 のカーネルというのは、
1.2.0 のバージョンにパッチが一つあたった状態を意味します。ですから、
1.2.1 のカーネルを使っている場合、patch-1.2.1.gz をあてる必要はありま
せん。もし、お使いのカーネルのバージョンよりも大きいバージョンのパッチ
ファイルがあった場合、それらを<bf>全て</bf>入手して、以下の方法でカー
ネルソースに<bf>順に</bf>パッチをあて、バージョンアップします。

<tscreen><verb>
# cd /usr/src
# for patchfile in .../patch*
> do
> gzip -dc $patchfile | patch -p0 2>>patch.errs
> done

 ...
</verb></tscreen>

メッセージが出力されたファイル(patch.errs)をチェックして、
<tt>fail</tt> という文字列があるか確認します。見付からなければ大丈夫、
パッチは無事にあたています。もし <tt>fail...</tt> と出力されていれば、
正しくあたらなかったパッチファイルがあります。その場合、パッチをあてる
前のカーネルソースを再度展開して、一つ一つパッチファイルをあてながら、
どのパッチがエラーになっているかを調べましょう。うまくいかない原因がわ
からない時はトラブルレポートを出してください。

<sect1><heading>必要なライブラリ

<p>
ネットワーク機能を正しく使うには、<bf>最低でも</bf> 4.4.2 以降の 
<em>libc</em>を使いましょう。それ以前のバージョンではサブネットマスク
に問題があります。

最新の a.out タイプのライブラリ(libc-4.6.27) は

<bf>sunsite.unc.edu</bf>
<tscreen><verb>
/pub/Linux/GCC/
</verb></tscreen>
から入手できます。少なくとも以下のファイルが必要です。

<itemize>
<item>image-4.6.27.tar.gz
<item>inc-4.6.27.tar.gz
<item>extra-4.6.27.tar.gz
<item>release.libc-4.6.27
</itemize>

libc 4.6.27 をインストールする前に <bf> 必ず </bf> <bf>
release.libc-4.6.27 </bf>を読んでください。4.5.26 よりも新しい libc を
使うには GCC の 2.6.2 よりも新しいバージョンと 1.1.52 以降のカーネルが
必要です。

<sect1><heading>ネットワーク設定用のツール類

<p>
ネットワーク回りの設定には設定用のプログラムを集めたユーティリティ集が
必要です。

最新の NET-2 用ユーティリテイは

<bf>ftp.linux.org.uk</bf>
<tscreen><verb>
/pub/linux/Networking/PROGRAMS/NetTools/net-tools-1.2.0.tar.gz
</verb></tscreen>

から入手できます。

カーネル内部のネットワーク回りのコードが現在も改良されつづけているので、
ネットワーク用のプログラムも使用するカーネルに対応したバージョンのもの
が必要になります。

ファイル名中の数字が、そのプログラムが動く最低レベルのカーネルのバージョ
ンを意味しています。使いたいカーネルのバージョン番号と同じか、それより
も小さな数字を持つファイルを入手してください。

入手したプログラムをコンパイルするには、
<tscreen><verb>
# cd /usr/src
# mkdir net-tools
# cd net-tools
# gzip -dc net-tools-1.2.0.tar.gz | tar xvf -
# make
</verb></tscreen>

とします。"make" と入力すれば自動的に <tt> Configure.sh </tt> という設
定用スクリプトが起動され、必要な設定を行なった上でコンパイルされます。
うまくコンパイルできたなら、

<tscreen><verb>
# make install
</verb></tscreen>

として、コンパイルしたプログラムを正しい場所に移しましょう。

1.1.26 より古いバージョンのカーネルを使っている場合、

<bf>ftp.linux.org.uk</bf>
<tscreen><verb>
/pub/linux/Networking/PROGRAMS/Other/net032
</verb></tscreen>

をチェックしてください。このディレクトリには 3 種類のネットワーク用の
プログラムが保存されています。お使いのカーネルのバージョンに対応するプ
ログラムパッケージ名は以下の通りです。

<tscreen><verb>
net-0.32d-net3.tar.gz     1.1.12+
net-0.32b.tar.gz          1.1.4+
net-0.32.old.tar.gz       pre 1.1.4 kernels
</verb></tscreen>

これらのパッケージには <em>ifconfig</em> や <em>route</em>,
<em>netstat</em> といったネットワークを使うには必須のプログラムが入っ
ています。それぞれの使い方については後述します。


<sect1><heading> ネットワーク用アプリケーション

<p>
ネットワークを使うには、<em>telnet</em> や <em>ftp</em> ,
<em>finger</em> といったプログラムやそれらのサービスを提供するデーモン
プログラムも必要でしょう。<tt>Florian La Roche
&lt;flla@stud.uni-sb.de></tt> がそれらをまとめてバイナリとソース双方の
ほぼ完璧な配布キット(ディストリビューション)を作成しています。tcp/ip 
用のアプリケーションプログラムの実行形式や設定ファイルのサンプルは

<bf>ftp.funet.fi</bf>
<tscreen><verb>
/pub/OS/Linux/PEOPLE/Linus/net-source/base/NetKit-A-0.08.bin.tar.gz
/pub/OS/Linux/PEOPLE/Linus/net-source/base/NetKit-B-0.06.tar.gz
</verb></tscreen>

から入手できます。これよりも新しいバージョンが見つかれば、そちらを使っ
てください。入手すれば、必要な環境が整っているかどうかを確認するために
附属の <tt>README</tt> ファイルを <bf> まず </bf> 読んでください。

Florian はネットワーク用のアプリケーションのバイナリ(B とされたパッケー
ジ)も配布していましたが、最近はとりやめたようなので、御自分でコンパイ
ルしないといけないかも知れません。コンパイルは以下のように行います。

<tscreen><verb>
# cd /usr/src
# gzip -dc NetKit-B-0.06.tar.gz | tar xpvlf -
# cd NetKit-B-0.06
</verb></tscreen>

次に <tt>README</tt> ファイルを読んでください。お使いの状況によっては、
<tt>Makefile</tt> を修正して 
<tt>HAVE&lowbar;SHADOW&lowbar;PASSWORDS</tt> を指定する必要があるかも
知れません。私は shadow password は使っていないので、この行の先頭に 
<tt>&num;</tt> を付けてコメントアウトしています。残りの部分は特に修正
する必要はないので、

<tscreen><verb>
# make
# make install
</verb></tscreen>

してコンパイル、インストールします。

<bf>重要な注意：</bf>Florian はこれらの tar ファイルを利用者の便を図る
ために作成しています。彼は可能な限り完璧なものを作ろうと努力して、
<tt>net-tools.n.n.nn</tt> のバイナリを取りこむようにしていますが、
Florian が選択したディレクトリ構造は Alan の考えてるディレクトリ構造と
は異なっています。そのため、これらのプログラムをインストールする際には
充分注意してください。将来、Florian はディレクトリ構造を変更するかも知
れませんが、とりあえず現在の時点では、上記の方法でなく、以下のような手
順でインストールすることをお薦めします。

<tscreen><verb>
-  適切な場所で バイナリファイルを展開する：
# cd /usr/src
# mkdir NetKit
# cd NetKit
# gzip -dc NetKit-A-0.07.bin.tar.gz | tar xpvlf -
# gzip -dc NetKit-B-0.06.bin.tar.gz | tar xpvlf -

-  Florians が作成したバイナリ類を削除しておおく
# rm ./bin/hostname ./sbin/route ./sbin/ifconfig ./sbin/netstat
# rm ./usr/sbin/arp ./usr/sbin/rarp ./usr/sbin/slattach

-  Florian のファイルを正しい場所にコピーする

# cp -vrpd . /
</verb></tscreen>

<sect1><heading>その他のドライバ類

<p>
AX.25 など現在開発が進行中、すなわちα版やβ版のテストコードを使いたい
ときは、それらのパッケージを入手する必要があります。詳細については本書
の適切な箇所を参照してください。

<sect><heading>カーネルの設定

<p>
ネットワーク用のツールを使ったりネットワーク用の設定をする前にカーネル
自体にネットワーク機能が組みこまれているか確認する必要があります。一番
確実な方法は、自分自身で必要なオプションを指定してカーネルを再構築する
ことでしょう。

カーネルのソースコードは正しく展開され、必要なパッチも既にあててあるも
のとの前提で話を進めます。その場合、必要なことは <tt>
/usr/src/linux/drivers/net/CONFIG </tt>ファイルを編集するだけです。
修正すべき点はファイル自体にコメントとして書きこんであるので、このファ
イルを見れば何を設定すべきかはわかるでしょう。通常、デフォルトの設定が
そのまま使えて、修正すべき点はごくわずかのはずです。私の場合、何も変更
する必要ありませんでした。このファイルは使おうとしているイーサネットカー
ドがあまり一般的なものでは無い場合やイーサネットドライバで正しく認識さ
れない場合にのみ必要となります。このファイルを修正すれば、いくつかのイー
サネットカードを直接認識させることが可能です。例えば、WD-8013 によく似
ているが、ドライバをそのままでは使えない場合、このファイルを修正して共
有メモリのアドレスを変更し、ドライバに正しく認識させてやる必要がありま
す。このファイルの詳細や適用可能なイーサネットカードについては
<url url="http://sunsite.unc.edu/mdw/HOWTO/Ethernet-HOWTO"
	name="Ethernet-HOWTO"> に詳しく説明してあります。また、この CONFIG 
ファイルでは PLIP に関するパラメータを指定することも可能ですが、特に遅
いマシン以外ではデフォルトの設定で大丈夫なはずです。

必要に応じて CONFIG ファイルを修正したらカーネルの再構築に移ります。ま
ず、<tt>/usr/src/linux</tt> にある Makefile を修正して VGA を適切なも
のに設定し、カーネルの設定用のプログラムを起動します。


<tscreen><verb>
# cd /usr/src/linux
# make config
</verb></tscreen>

こうすれば、プログラムが必要な設定を尋ねてきます。ネットワークに関係す
る設定は 4 つ、<tt> General Setup </tt>、<tt>Networking option</tt>、
<tt>Network device support</tt>、<tt>Filesystems</tt> の部分です。中で
も一番大変なのは <tt> Network device support </tt> の部分でしょう。こ
の部分では実際に利用するデバイス(ネットワークカード)を指定する必要があ
ります。その他の部分ではたいていデフォルトの設定のままで大丈夫なはずで
す。以下に実際の方法を述べます。

<tscreen><verb>
*
* General setup
*
 ...
 ...
Networking support (CONFIG_NET) [y] y
 ...
 ...
</verb></tscreen>

<tt>General setup</tt> の <tt>Networking support (CONFIG_NET)</tt> の
部分ではネットワークを使うかどうかを指定します。これには "yes" と答え
なければなりません。

<tscreen><verb>
*
* Networking options
*
TCP/IP networking (CONFIG_INET) [y] 
IP forwarding/gatewaying (CONFIG_IP_FORWARD) [n] 
IP multicasting (CONFIG_IP_MULTICAST) [n] 
IP firewalling (CONFIG_IP_FIREWALL) [n] 
IP accounting (CONFIG_IP_ACCT) [n] 
*
* (it is safe to leave these untouched)
*
PC/TCP compatibility mode (CONFIG_INET_PCTCP) [n] 
Reverse ARP (CONFIG_INET_RARP) [n] 
Assume subnets are local (CONFIG_INET_SNARL) [y] 
Disable NAGLE algorithm (normally enabled) (CONFIG_TCP_NAGLE_OFF) [n] 
The IPX protocol (CONFIG_IPX) [n] 
*
</verb></tscreen>

<tt> Networking options</tt> の後半ではネットワーク上のそれぞれの機能
を使うか否かを設定します。たいていデフォルトのままで大丈夫ですが、もし
何か変更したい場合は、それぞれの質問に対して適切な設定を行ってください。
表示される質問の意味については後で簡単に触れますので、興味があればご覧
ください。

<tscreen><verb>
*
*
* Network device support
*
Network device support? (CONFIG_NETDEVICES) [y] 
Dummy net driver support (CONFIG_DUMMY) [n] 
SLIP (serial line) support (CONFIG_SLIP) [y] 
 CSLIP compressed headers (CONFIG_SLIP_COMPRESSED) [y] 
 16 channels instead of 4 (SL_SLIP_LOTS) [n] 
PPP (point-to-point) support (CONFIG_PPP) [y] 
PLIP (parallel port) support (CONFIG_PLIP) [n] 
Do you want to be offered ALPHA test drivers (CONFIG_NET_ALPHA) [n] 
Western Digital/SMC cards (CONFIG_NET_VENDOR_SMC) [y] 
WD80*3 support (CONFIG_WD80x3) [y] 
SMC Ultra support (CONFIG_ULTRA) [n] 
AMD LANCE and PCnet (AT1500 and NE2100) support (CONFIG_LANCE) [n] 
3COM cards (CONFIG_NET_VENDOR_3COM) [n] 
Other ISA cards (CONFIG_NET_ISA) [n] 
EISA, VLB, PCI and on board controllers (CONFIG_NET_EISA) [n] 
Pocket and portable adaptors (CONFIG_NET_POCKET) [n] 
*
</verb></tscreen>

このセクションがもっとも重要かつ必須な部分です。この部分で利用するハー
ドウェアデバイスの種類を指定しています。この例では、ヘッダーの圧縮機能
込みで SLIP を指定し、その他 PPP と WD80*3 ドライバのみを指定していま
す。選んだ設定によっては、これら以外のオプションの設定もあらわれるかも
知れません。SLIP の設定に <tt>n</tt> と答えたら、ヘッダの圧縮に関する
設定や 16 チャンネルに関する設定は省略されます。使いたい機能にのみ 
<tt>y</tt> と答えて、そうではない機能には <tt>n</tt> と答えましょう。
不要な機能を組みこむとカーネルが大きくなりますし、ドライバ同士の干渉で
正しく働かないこともあります。

<tscreen><verb>
*
* Filesystems
*
 ...
 ...
/proc filesystem support (CONFIG_PROC_FS) [y] 
NFS filesystem support (CONFIG_NFS_FS) [y] 
 ...
 ...
</verb></tscreen>

手元のマシンで NFS を使いたい場合、NFS ファイルシステムを使うように指
定します。ネットワーク用の各種のユーティリティが利用するので 
<tt>/proc</tt> ファイルシステムも使うように設定しておきましょう。

設定が完了すれば、後は実際にカーネルをコンパイルするだけです。

<tscreen><verb>
# make dep
# make
</verb></tscreen>

新しいカーネルがちゃんとコンパイルできて問題ないようならば <tt> make
zlilo </tt>することを忘れないように。

<sect1><heading>ネットワーク用のオプションは実際にはどのような働きをするのか？

<p>
最新のカーネルでは <tt> make config </tt> の際に多数のオプションの設定
を尋ねてきます。たいてい、これらのオプションはデフォルトのまま変更する
必要はありませんが、環境によってはいくつかのオプションを変更した方が有
効なこともあります。

<descrip>
<tag>TCP/IP networking</tag>
この意味は明白でしょう。この指定によって tcp/ip プロトコルの機能をカー
ネル内部に組みこみます。この HOWTO を読んでいる人はこのオプションに `y' 
と答えてください。

<tag>Dummy networking device</tag>
SLIP や PPP のユーザーが、ダイアルアップ時に指定されたシリアル接続とは
異なる、独立した IP アドレスを使う際に利用するデバイスです。この機能を
使えば、あなたのマシンに 2 つのアドレスを与えることが簡単にできます。

<tag>IP forwarding/gatewaying</tag>
このオプションは、あなたのマシン宛てとは異なるアドレスを持ったデータグ
ラムを受けとった時にどうするかの指定です。IP ルーターして機能させたい
場合、このオプションに `y' と答えてください。SLIP や PPP のサーバーと
なるマシンでは、通常、このオプションを指定する必要があります。

<tag>IP multicasting</tag>
これはα版の IP マルチキャスト機能を使うかどうかの指定です。この機能は 
`Internet Talk Radio' やビデオの放送などを受けとる際に利用します。ここ
で指定するのはカーネルについての機能のみなので、実際に IP マルチキャス
トを使う場合、それ用のプログラムが必要となります。

<tag>IP firewalling</tag>このオプションを指定すれば、 tcp/ip の各ポー
トのどれを使用可能にし、どれを使用不能にするか、どの範囲の IP アドレス
を持つホストからの接続を許可するか、といったさまざまなセキュリティに関
する設定が利用可能になります。この機能も、実際に使うには各種のプログラ
ムが必要です。

<tag>IP accounting</tag>
このオプションは Linux マシンを使ってインターネットへの商用の接続サー
ビスを提供しようとする人向けのものです。このオプションの指定によって、
IP アドレスごとにどのポートから何バイトのデータをやりとりしたかの記録
を取ることが可能になります。別途プログラムが必要となりますがが、この機
能を利用することで、あなたのマシンを使っている人ごと、サービスごとの課
金が可能になります。

<tag>PC/TCP compatibility mode</tag>
このオプションはパソコン用の tcp/ip(PC/TCP) のバグに対応するためのもの
です。パソコン用の PC/TCP の実装のいくつかには問題があって、それが 
Linux の(対応が難しい)バグに触れてしまい、クラッシュする可能性がありま
す。このオプションの指定はそのようなトラブルを防ぐためのものです。通常
このオプションを指定する必要はありませんが、ネットワーク上に PC/TCP を
使って問題となるパソコンがあれば、このオプションを指定します。

<tag>Reverse ARP</tag>
RARP プロトコルの機能をカーネルに組みこむかどうかの指定です。Sun 3 マ
シンをブートするために組みこまれた機能なので、それ以外の場面ではあまり
使うことはありません。

<tag>Assume subnets are local</tag>使っているサブネットにあなたのマシ
ンが直接接続されているか、ブリッジなどで、さらに再分割されているかの指
定です。デフォルトのままでほとんど影響はないはずです。

<tag>Disable NAGLE algorithm</tag>これはデータグラムが転送されるタイミ
ングを指定するためのオプションです。デフォルトの設定が殆んどの状況下で
最善のパフォーマンスを示し、disable にすれば性能は悪化するはずです。こ
の設定はソケットを使えるプログラム内部で変更可能なので、カーネルの設定
はデフォルトのままにして、実際のプログラムの内部で、特に素早い反応が必
要な場合に限って NAGLE アルゴリズムを使用しないようにする方がいいでしょ
う。

<tag>The IPX protocol</tag>
IPX プロトコルの機能をカーネルに組みこむかどうかの指定です。IPX とは 
Novell が開発した IP プロトコルによく似たネットワーク用のプロトコルです。

<tag>Amateur Radio AX.25 Level 2</tag>
アマチュア無線用の AX.25 プロトコルを組みこむかどうかの指定です。この
オプションを指定すれば、ネットワークソケットの新しいクラスがプログラム
から使えるようになります。AX.25 プロトコルは、パケット無線を使うアマチュ
ア無線家の間で使われているプロトコルです。

</descrip>

<sect><heading>ネットワーク用デバイスの設定

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

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

<sect1><heading> /dev にあるスペシャルデバイスファイルの設定

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

<sect1><heading>初める前に知っておくべきこと
<p>
ネットワークについて設定する前に接続するネットワークについての情報が必
要となります。必要な情報は、接続先のプロバイダやネットワークの管理者が
教えてくれるはずです。

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

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

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

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

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

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

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

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

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

<sect2><heading>ネットワークアドレス

<p>

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

<tscreen><verb>
ネットマスク        :      255.255.255.0
IP アドレス         :      128.253.154.32    &&
                           ---------------
ネットワークアドレス:      128.253.154.0     =
</verb></tscreen>

となります。

<sect2><heading>ブロードキャストアドレス

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

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

すなわち、こういう風に考えてください。
<tscreen><verb>
ネットマスクがこうなら：      255.255.255.0      !
ビットを反転させると、：        0.  0.  0.255    =
ネットワークアドレスは：　　  128.253.154.0      ||
                              ----------------
故にブロードキャストは：      128.253.154.255    =
</verb></tscreen>

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

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

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

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

<p>
<em>「ここから出る方法が無ければならない」</em>

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

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

<sect2><heading>ネームサーバー・アドレス

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

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

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

<sect1><heading>/etc/rc.d/rc.inet1,2、/etc/rc.net、/etc/init.d/network
<p>
ネットワークデバイスを毎回手動で設定するのは大変なので、起動時に自動的
に設定できれば、、と思うことでしょう。<tt>rc</tt>と呼ばれるファイルが
このために用意されています。

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

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

ディストリビューションごとに以下のファイル名に読みかえてください。
<tscreen><verb>
この文書の例           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
</verb></tscreen>

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

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

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

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

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

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

</descrip>

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

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

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

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

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

<tscreen><verb>
#!/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
#
</verb></tscreen>

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

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

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

<tscreen><verb>
# 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
#
</verb></tscreen>

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

<tscreen><verb>
# 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
# 
</verb></tscreen>

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

<sect1><heading>イーサネットカードの設定(オプション)

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

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


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


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

<tscreen><verb>
#
# 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
#
</verb></tscreen>

ここで、
<descrip>
<tag>IPA.IPA.IPA.IPA</tag>あなたのマシンの IP アドレスを指定します。
<tag>NMK.NMK.NMK.NMK</tag>ネットマスクの指定です。
<tag>BCA.BCA.BCA.BCA</tag>ブロードキャストアドレスの指定です。
<tag>NWA.NWA.NWA.NWA</tag>ネットワークアドレスの指定です。
</descrip>

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

<sect1><heading>SLIP デバイスの設定(オプション)

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

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

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

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

<tt>dip-uri</tt> は

<bf>sunsite.unc.edu</bf>の
<tscreen><verb>
/pub/Linux/system/Network/serial/dip337j-uri.tgz
</verb></tscreen>
にあります。

インストールは以下のように行います。
<tscreen><verb>
#
# cd /usr/src
# gzip -dc dip337j-uri.tgz | tar xvf -
# cd dip.3.3.7j

<edit Makefile>

# make install
#
</verb></tscreen>
<p>
元々の <tt>Makefile</tt> では <em>uucp</em> というグループが存在すると
仮定されていますが、あなたのシステムの設定に従って <em>dip</em> や 
<em>SLIP</em> というグループに変更してください。

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

<sect2><heading>いつ、どちらを使うべき？

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

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

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

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

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

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

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

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

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

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

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

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

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

<sect2><heading>DIP の使い方

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

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

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

<tscreen><verb>
#
# 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
</verb></tscreen>

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

<p>
<em>dip</em> スクリプトの中で <em>get &dollar;local </em> というコマン
ドが現われた場合、<em>dip</em> はサーバーから送られたテキストを調べて、
数字で始まって `.' で区切られている IP アドレスとおぼしき文字列を探し
ます。この修正は<em>動的な</em> SLIP サーバーに特有のもので、この機能
を利用して IP アドレスを読みこむプロセスを自動化しています。
<p>
ここに示した例では、自動的に SLIP 接続をデフォルトの経路にするような設
定になっていますが、イーサネットにも接続していてそれがデフォルトの経路
になっている場合など、SLIP 接続をデフォルトの経路にしたくない場合は、
スクリプトから <em>default</em> コマンドを削除してください。スクリプト
からでも明らかでしょうが、SLIP のデバイスは <em>sl0</em> なので、
<em>dip</em>コマンドが終了してから <em>ifconfig</em> や <em>route</em> 
コマンドを使って適宜設定することも可能です。

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

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


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

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

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

<tscreen><verb>
#
# 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.
</verb></tscreen>

ここで、
<descrip>
<tag>IPA.IPA.IPA.IPA</tag>あなたの IP アドレス
<tag>IPR.IPR.IPR.IPR</tag>接続先のマシンの IP アドレスです
</descrip>

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

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

<sect1><heading>PLIP デバイスの設定(オプション)

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

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

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

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

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

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

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

ドライバは以下のような I/O アドレスと IRQ を仮定しています。
<tscreen><verb>
device  i/o addr    IRQ
------  --------    -----
plip0	0x3BC		5
plip1	0x378		7
plip2	0x278		2 (9)
</verb></tscreen>

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

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

<tscreen><verb>
#
# 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
</verb></tscreen>

ここで
<descrip>
<tag>IPA.IPA.IPA.IPA</tag>あなたの使う IP アドレス
<tag>IPR.IPR.IPR.IPR</tag>接続先の IP アドレス
</descrip>
になります

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

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

<sect2><heading>PLIP 用のケーブル

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

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

<tscreen><verb>
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*
</verb></tscreen>

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

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

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

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

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

<sect><heading>経路制御(ルーティング)(必須)

<p>
必要なネットワークデバイスの設定が終れば、どのような経路で IP データグ
ラムを伝送するか考えなければなりません。ネットワークデバイスが一つしか
無い場合はごく簡単で、自分自身以外へのデータグラムは全てそのデバイスへ
送るように設定するだけで済みます。もし 2 つ以上のネットワークインタフェー
スを持っている場合、問題は多少複雑になります。例えば、イーサネットのデ
バイスと自宅のマシンとつなぐための SLIP デバイスの 2 つを持っている場
合、自宅のマシンへ行くデータグラムは SLIP デバイスへ、その他のマシンへ
行くデータグラムはイーサネットデバイスへ、それぞれ送るような設定が必要
です。ルーティングは実際にはごく単純なメカニズムですが、最初は少々理解
するのに手こずるかも知れません。でも大丈夫、みんなそう感じています。

<em>route</em> コマンドをオプション無しで起動すると、現在のルーティン
グテーブルが表示されます。

unix のネットワークの設定には、大きく 4 種類のルーティングメカニズムが
使われています。以下にそれらを示します。

<sect1><heading>静的/手動経路制御

<p>
「静的な経路制御(static routing)」とは、その名が示す通り、あらかじめ指
定された経路情報に従う経路制御の方法で、ネットワークに何かトラブルが起
きたり別の経路が使用可能になっても、あらかじめ決められた経路が変化する
ことはありません。静的な経路制御は目的とするホストへ代替の経路が無いよ
うなごく簡単なネットワーク、すなわちそのホストへの経路が一つしかないよ
うな場合、あるいはネットワークが変更されてもそのホストへの経路は変更し
たくないような場合に使います。

Linux では、SLIP や plip を使って接続する場合のために、
<em>ifconfig</em> に <em>pointopoint</em> パラメータで指定するという特
別の経路指定法が用意されています。SLIP/plip を使い、
<em>pointopoint</em> パラメータで接続先のアドレスを与えた場合、ip の経
路制御用のソフトウェアは接続先のアドレスへ静的な経路が成立したと考えま
す。専用回線を使って SLIP/plip で接続する場合に使う <em>route</em> コ
マンドは以下のようになります。

<tscreen><verb>
#/sbin/route add IPR.IPR.IPR.IPR
</verb></tscreen>

ここで、
<descrip>
<tag>IPR.IPR.IPR.IPR</tag>は接続先の IP アドレスになります。
</descrip>

<sect1><heading>デフォルトの経路(デフォルトルート)

<p>
<em>デフォルトルート</em>という仕組みは、大部分のエンドユーザーのワー
クステーションやネットワークにつながったほとんどのホストが最も普通に使
うものでしょう。デフォルトルートは全ての目的アドレスと一致する特別の静
的な経路です。ですから、データグラムを送るべき経路が特に指定されていな
い場合、デフォルトルートので指定された経路が選ばれることになります。

もしイーサネットインタフェースが一つだけ、あるいは SLIP インタフェース
のみで接続されている場合、デフォルトルートはそのインタフェースになりま
す。イーサネットインタフェースを使っているなら、同じネットワーク上の他
のマシンへデータグラムを送る場合、どのホストへデータグラムを送るべきか
はカーネルが知っています。カーネルは、先に説明したネットワークアドレス
とネットワークマスクを使って、どこへデータグラムを送るべきかを判断して
います。どこにデータグラムを送るべきかわからない場合、送信先は同じネッ
トワーク上ではないと判断し、そのデータグラムを <em>ルーター</em>に送り
ます。このためにはデフォルトルートであなたのネットワークの<em>ルーター
</em>を指定しておく必要があります。SLIP 接続の場合は <em>SLIP サーバー
</em>が<em>ルーター</em>のような機能を果しますので、デフォルトルートは 
<em>SLIP サーバー</em>を指すようにしておきます。

デフォルトルートを設定するためには、以下のコマンドを <tt>rc.inet1</tt> 
に<bf>追加</bf>し、ネットワークデバイスの設定を<bf>終えて</bf>から以下
のコマンドを実行します。

<tscreen><verb>
#
# Add a default route.
#
/sbin/route add default gw RGA.RGA.RGA.RGA
#
</verb></tscreen>

ここで、
<descrip>
<tag>RGA.RGA.RGA.RGA</tag>はルーター/ゲートウェイのアドレスです。
</descrip>

<sect1><heading> 代理(Proxy) ARP

<p>
<bf>この方法は汚いし、トラブルを起しがちなので、特に注意する必要があり
ます。</bf>しかし、とにかくこれを使いたい、という人もいるはずなので説
明することにします。

<em>proxy arp</em> をもっとも必要としているのは、Linux マシンを使って 
SLIP のダイアルインサーバーを構築しようとする人でしょう。PPP の場合は 
PPP デーモンが同じ仕事をずっと単純かつ自動的に、そしてずっと安全にやっ
てくれます。

tcp/ip でネットワークに接続しているホストがあなたのマシンと通信する場
合、そのホストはあなたのマシンの IP アドレスは知っているけれど、データ
グラムを送るべきハードウェア(イーサネット)アドレスは分らないはずです。
IP アドレスとハードウェアアドレスを相互に変換するのが、ARP(Address
Resolution Protocol) の役目です。イーサネットプロトコルはブロードキャ
ストアドレスという特別のアドレスを定義しており、このアドレスはすべての
イーサネットカードが認識できます。ホスト A からホスト B へ通信したいと
します。ホスト A はホスト B の IP アドレスは知っているものの、実際にデー
タグラムを送るべき(ホスト B の)ハードウェアアドレスを知りません。その
場合、ホスト A は、ホスト B の IP アドレスを含んだ特別のフォーマットの
データグラムをブロードキャストアドレスに流します。ブロードキャストアド
レスに流れたデータグラムは、そのネットワークに接続された全てのホストが
認識でき、そのデータグラムに指定された IP アドレスをもつホスト(B) が自
分のハードウェアアドレスを返答します。ARP はこのようにして IP アドレス
からハードウェアアドレスを変換します。

ですから、あるマシン(A) を別のマシン(B)のサーバーとして使う場合、サー
バーとなるマシン A が、物理的にはイーサネットに接続されていない B の 
IP アドレスに対する ARP リクエストにも答えるようにしなければなりません。
IP アドレスを割りあて済みのローカルなネットワークに SLIP でダイアルイ
ン接続してくる場合を考えましょう。例えば、割り当て済みのアドレスを 
<tt>128.253.154.120-124</tt> として、マシンのハードウェアアドレスは 
<tt>00:00:C0:AD:37:1C</tt> だとします(イーサネットカードのハードウェア
アドレスは <em>ifconfig</em> コマンドを引数無しで起動すれば表示されま
す)。proxy を使って、割り当て済みのアドレスに対する arp リクエストに答
えるように設定するには、<tt>rc.inet</tt> の最後に以下のようなコマンド
を<bf>追加</bf>します。

<tscreen><verb>
#
# Proxy ARP for those dialin users who will be using this
#           machine as a server:
#
/sbin/arp -s 128.263.154.120 00:00:C0:AD:37:1C pub
/sbin/arp -s 128.263.154.121 00:00:C0:AD:37:1C pub
/sbin/arp -s 128.263.154.122 00:00:C0:AD:37:1C pub
/sbin/arp -s 128.263.154.123 00:00:C0:AD:37:1C pub
/sbin/arp -s 128.263.154.124 00:00:C0:AD:37:1C pub
#
# End proxy arps.
</verb></tscreen>

<tt>pub</tt> という引数は `publish(公告)'を意味し、この引数を付けてコ
マンドを実行すると、指定した IP アドレス(実際にそのマシンに与えられた 
IP アドレスとは違っても)への問い合わせに対して(自分の)ハードウェアアド
レスを返すようになります。この例では <tt>128.264.154.120</tt> から 
<tt>128.264.154.124</tt> のアドレスの問い合わせに対して、
<tt>00:00:C0:AD:37:1C</tt> のハードウェアアドレスを返します。

普通、この(Proxy ARP)設定に加えて、 SLIP サーバーにする Linux マシンに
は <tt>128.264.154.120</tt> から <tt>124</tt> のアドレスをそれぞれに対
応する SLIP デバイスへ送るような経路表を設定しなければなりません。

PPP を使っている場合、手動で arp テーブルを書きかえるようなことは不要
です。<em>pppd</em> は、接続先の IP アドレスとサーバーマシンの IP アド
レスが同じネットワークに属し、かつ <em>proxyarp</em> という引数が与え
られたら自動的に arp テーブルを修正します。ただし、サーバー側で起動す
る<em>pppd</em> のコマンドラインの引数でネットマスクを指定する必要はあ
るかも知れません。

<sect1><heading>gated 経路制御用のデーモン

<p>
<em>gated</em> は多くの場合 <em>proxy arp</em> の替りに使え、<em>proxy
arp</em>よりもずっとすっきりしています。しかし、gated の基本的な使い方
は linux マシンをあなたのネットワークのインテリジェントな <em>ip ルー
タ</em>にすることです。<em>gated</em> は複数のルーティングプロトコル、
例えば RIP, BGP, EGP, HELLO, OSPF といったルーティングプロトコルを理解
します。小さなネットワークでもっとも広く使われているのは 
<em>RIP</em>(<em>Routing Information Protocol</em>)です。<em>rip</em> 
を使うという設定で <em>gated</em> を起動した場合、その Linux マシンは
定期的にルーティングに関する情報を特別のフォーマットのデータグラムでネッ
トワークにブロードキャストします。この情報を受けとることで、ネットワー
クにいる他のマシンはあなたのマシンを経由して辿りつけるアドレスを知るこ
とができます。

お使いのネットワーク上の全てのホストが <em>gated</em> か 
<em>routed</em> を動かしている場合、<em>gated</em> を <em>proxy
arp</em> の替りに使うことができます。ネットーク上に動的なルーティング
のマシンと静的なルーティングのマシンが混在している場合、静的なルーティ
ングのマシンのルーティングテーブルが <em>gated</em> の情報で破壊されな
いように特に注意する必要があります。というのも、それらのマシンが使う静
的なルーティング情報は外部からは更新されないからです。<em>gated</em> 
を使いながら静的なルーティング情報を加える最善の方法は 
<tt>/etc/gated.conf</tt> に <tt>static</tt> という部分を加えることです。
この点については後述します。

<em>gated</em> は通常 <tt>rc.inet2</tt> で起動されます。
<tt>rc.inet2</tt> については次節で扱うことにします。<em>routed</em> と
呼ばるデーモンについて見聞きしたことがあるかも知れません。
<em>gated</em> は <em>routed</em> の上位互換で、<em>routed</em> よりも
柔軟かつ高機能なので、<em>routed</em> の替りに <em>gated</em> を使うべ
きでしょう。

<sect2><heading><em>gated</em> の入手方法

<p>
Gated は以下のサイトから入手できます。

<bf>sunsite.unc.edu</bf>
<tscreen><verb>
/pub/Linux/system/Network/daemons/gated11_bin.tgz
</verb></tscreen>

<sect2><heading><em>gated</em> のインストール

<p>
<em>gated</em> のバイナリ配布には、3 つのプログラムと二つの設定ファイ
ル例が附属しています。

プログラムは：

<descrip>
<tag>gated
</tag>	実際の <em>gated</em> デーモン

<tag>gdc </tag><em>gated</em> を操作するためのユーザーインタフェースプ
ログラム。<em>gdc</em> は <em>gated</em> デーモンをコントロールするの
に利用され、<em>gated</em> の起動/停止、状態情報の取得などの機能を持ちます。

<tag>ripquery
</tag>ゲートウェイの既知の経路を問いあわせるための診断用プログラムで、`rip
query' あるいは `rip poll' の形で使います。

</descrip>

設定ファイルは

<descrip>
<tag>gated.conf</tag> <em>gated</em> デーモンを制御する実際の設定ファ
イル。起動時の <em>gated</em> の振る舞いを設定します。あらゆるルーティ
ングプロトコルの起動/停止を司どり、ルーティングプロトコルの実際の動作
を制御します。

<tag>gated.version
</tag>
<em>gated</em> デーモンのバージョンを記載しているテキストファイル。
</descrip>

<em>gated</em> のバイナリ配布には、必要なファイルを自動的に正しい場所
にインストールする機能はないようです。幸いなことに、必要なファイルはそ
れほど多くないので、それらを配置することはそれほど難しいことではありま
せん。

バイナリで入手した <em>gated</em> をインストールするには以下の手順によ
ります。

<tscreen><verb>
# cd /tmp
# gzip -dc .../gated.linux.bin.tgz | tar xvf -
# install -m 500 bin/gated /usr/sbin
# install -m 444 bin/gated.conf bin/gated.version /etc
# install -m 555 bin/ripquery bin/gdc /sbin
# rm -rf /tmp/bin
</verb></tscreen>

私はネットワーク用のデーモンを <tt>/usr/sbin</tt> に置くようにしていま
す。もし異なった場所にインストールしたいなら、それに合わせてインストー
ル先を変更してください。以下に示す <em>gated</em> の設定では、
<em>gated</em> に古い <em>routed</em> デーモンのエミュレートをさせるよ
うにもしています。この設定で、たいていの場合は大丈夫なはずです。

<tscreen><verb>
#
#  This configuration emulates routed.  It runs RIP and only sends
#  updates if there are more than one interfaces up and IP forwarding is
#  enabled in the kernel.
#
#	NOTE that RIP *will not* run if UDP checksums are disabled in
#	the kernel.
#
rip yes ;
traceoptions all;
#
</verb></tscreen>

もし静的な経路制御を加えたい場合、<tt>/etc/gated.conf</tt> の 
<tt>static</tt> の部分に加えることができます。

<tscreen><verb>
#
static {
37.0.0.0 mask 255.0.0.0 gateway 44.136.8.97 ;
host 44.136.8.100 gateway 44.136.8.97 ;
} ;
#
</verb></tscreen>

この例では、<tt>37.0.0.0</tt> のクラス A のネットワークへの経路は 
<tt>44.136.8.97</tt> のゲートウェイ経由で、<tt>44.138.8.100</tt> のホ
ストへも <tt>44.136.8.97</tt> のゲートウェイ経由で接続するように指定し
ています。このように設定しておけば <em>route</em> コマンドでその経路を
指定しなくても、<em>gated</em> が自動的にその経路を付加してくれます。

<p>
マニュアルをインストルールするには以下のようにします。

<tscreen><verb>
# cd /tmp
# gzip -dc .../gated.linux.man.tgz | tar xvf -
# install -m 444 man/*.8 /usr/man/man8
# install -m 444 man/*.5 /usr/man/man5
# rm -rf /tmp/man
</verb></tscreen>

<em>gated</em> のマニュアルには、設定と使用法に関する詳細な説明が書い
てあります。<em>gated</em> の設定については、<tt>gated-config</tt> と
いうマニュアルページを参照してください。

<sect><heading>ネットワーク用デーモンの設定

<p>
ネットワークを実際に機能させるには、まだいくつかのファイルが必要です。
残されたファイルは、ネットワーク用のソフトウェアを高レベルで設定するた
めのもので、中でも重要なものについては後の節で触れることにします。しか
し、以下に触れるファイル以外にもネットワークの設定に関わるファイルは存
在しています。それらはネットワークの仕組みを理解するうちにわかってくる
ことと思います。

<sect1><heading>/etc/rc.d/rc.inet2 (rc.net の後半部)

<p>
この文書を、ここまで順に読んできた人ならそれぞれのネットワークデバイス
を正しいアドレスで設定し、ネットワークの設定に必要なルーティングもきち
んと設定できていることと思います。次に必要なのは、もう少し高レベルのネッ
トワーク用ソフトウェアを設定することです。

設定についての詳細は Olaf の <em>"Network Administrators Guide"</em> 
に詳しく説明されているので、この本をぜひ一読してみてください。"NAG" を
読めば、以下に示すファイルのうちのどの部分を利用すべきか、どの部分を含
めないべきか(こちらの方が重要)がわかるでしょう。少しセキュリティの面に
ついても触れておきましょう。ネットワーク用のサービスを多く提供しようと
すればするほど、セキュリティホールも多くなるので、最小限必要な機能だけ
を動かすようにしましょう。

ネットワークが機能するために、バックグラウンドで動いている極めて重要な
<em>デーモン(daemons)</em>がいくつかあります。各々の詳細についてはマニュ
アルページを参照してもらう方がいいでしょう。代表的なデーモンを以下に示
します。

<sect2><heading>inetd

<p>
<em>inetd</em> はそれぞれのプロセスのバックグラウンドに居て、インター
ネット経由のサービスを処理するデーモンです。<em>inted</em> は必要な時
に必要なサービス用のプログラムを起動するので、それらのサービス用のデー
モンを常に起動しておく必要はありません。<em>telnet</em> や 
<em>ftp</em> といった特定のサービスを使いたいというリクエストが届いた
場合、<em>inetd</em> は <tt>/etc/services</tt> をチェックして、そのリ
クエストを処理するためのサーバープログラムを見つけて起動し、以後の処理は
そのサーバーに委ねます。ちょうどインターネット経由のサービスの受付処理を
するサーバーと考えればいいでしょう。<em>inetd</em> には <em>echo</em> や 
<em>discard</em>、テスト用のサービスリクエストの発生機能といったいくつ
かの簡単なサービスが組みこまれてもいます。<em>inetd</em> は動かそうと
しているネットワーク用のサービスの全てを処理するのではなく、それらの中
の代表的なものを処理します。<tt>udp</tt> を使ったサービスや WWW のサー
バ、mud のサーバーのように、自分で接続を多重化するようなサービスは 
<em>inetd</em>とは独立に起動されるのが普通です。通常、そのようなサービ
スを提供するプログラムでは、附属のドキュメントで <em>inetd</em> 経由で
使うべきか否か書いてあるはずです。

<sect2><heading>syslogd
<p>
<em>syslogd</em> はシステムのログ(運用記録)を処理するためのデーモンで
す。<em>syslogd</em> は、自分宛てに送られたメッセージを受けとり、 
<tt>/etc/syslogd.conf</tt> ファイルに記載されているルールに従って、そ
のメッセージを適切な場所へ送ります。例えば、ある種のメッセージはコンソー
ルとログファイルの両方に送ってもらいたいが、その他のメッセージはログファ
イルのみでいいような場合、<em>syslogd</em> を使ってそれらの行き先を分
けることが可能です。


<sect1><heading>rc.inet2 ファイルの例

<p>
以下に示すものは、Fred が作成した rc.inet2 ファイルの例です。サービス
番号の大きいものから起動するようになっていますので、実際に動かしたいも
の以外は削除してください。削除するには、不要な部分を単純に削除してしま
うか、<em>if</em> から <em>fi</em> で囲まれた部分をコメントアウトする
ようにしてください。全ての設定は、まず必要なファイルの有無をチェックし
て、それらが存在していれば何を起動したかを示すためのメッセージを出力し、
実際のコマンドを適切な引数を付けてバックグラウンドで動くように起動して
います。それぞれのデーモンについての詳細は <em>"Network Administrators
Guide"</em> か、関連するマニュアルページを参照ください。

<tscreen><verb>
#! /bin/sh
#
# rc.inet2      This shell script boots up the entire INET system.
#               Note, that when this script is used to also fire
#               up any important remote NFS disks (like the /usr
#               distribution), care must be taken to actually
#               have all the needed binaries online _now_ ...
#
# Version:      @(#)/etc/rc.d/rc.inet2  2.18    05/27/93
#
# Author:       Fred N. van Kempen, <waltje@uwalt.nl.mugnet.org>
#

# Constants.
NET="/usr/sbin"
IN_SERV="lpd"
LPSPOOL="/var/spool/lpd"

# At this point, we are ready to talk to The World...
echo -e "\nMounting remote file systems ..."
/bin/mount -t nfs -v            # This may be our /usr runtime!!!

echo -e "\nStarting Network daemons ..."
# Start the SYSLOG daemon.  This has to be the first server.
# This is a MUST HAVE, so leave it in.
echo -n "INET: "
if [ -f ${NET}/syslogd ]
then
echo -n "syslogd "
${NET}/syslogd
fi

# Start the SUN RPC Portmapper.
if [ -f ${NET}/rpc.portmap ]
then
echo -n "portmap "
${NET}/rpc.portmap
fi

# Start the INET SuperServer
# This is a MUST HAVE, so leave it in.
if [ -f ${NET}/inetd ]
then
echo -n "inetd "
${NET}/inetd
else
echo "no INETD found.  INET cancelled!"
exit 1
fi

# Start the NAMED/BIND name server.
# NOTE: you probably don't need to run named.
#if [ ! -f ${NET}/named ]
#then
#        echo -n "named "
#        ${NET}/named
#fi

# Start the ROUTEd server.
# NOTE: routed is now obsolete. You should now use gated.
#if [ -f ${NET}/routed ]
#then
#        echo -n "routed "
#        ${NET}/routed -q #-g -s
#fi

# Start the GATEd server.
if [ -f ${NET}/gated ]
then
echo -n "gated "
${NET}/gated
fi

# Start the RWHO server.
if [ -f ${NET}/rwhod ]
then
echo -n "rwhod "
${NET}/rwhod -t -s
fi

# Start the U-MAIL SMTP server.
if [ -f XXX/usr/lib/umail/umail ]
then
echo -n "umail "
/usr/lib/umail/umail -d7 -bd &etago;dev/null >/dev/null 2>&1 &
fi

# Start the various INET servers.
for server in ${IN_SERV}
do
if [ -f ${NET}/${server} ]
then
		echo -n "${server} "
		${NET}/${server}
fi
done

# Start the various SUN RPC servers.
if [ -f ${NET}/rpc.portmap ]
then
if [ -f ${NET}/rpc.ugidd ]
then
		echo -n "ugidd "
		${NET}/rpc.ugidd -d
fi
if [ -f ${NET}/rpc.mountd ]
then
		echo -n "mountd "
		${NET}/rpc.mountd
fi
if [ -f ${NET}/rpc.nfsd ]
then
		echo -n "nfsd "
		${NET}/rpc.nfsd
fi

# Fire up the PC-NFS daemon(s).
if [ -f ${NET}/rpc.pcnfsd ]
then
		echo -n "pcnfsd "
		${NET}/rpc.pcnfsd ${LPSPOOL}
fi
if [ -f ${NET}/rpc.bwnfsd ]
then
		echo -n "bwnfsd "
		${NET}/rpc.bwnfsd ${LPSPOOL}
fi

fi
echo network daemons started.
# Done!
</verb></tscreen>

<sect1><heading>その他ネットワークの設定に必要なファイル

<p>
ネットワーク経由で接続してきた人にあなたのマシンをホストとして提供する
には、これ以外にもいくつかの設定ファイルが必要です。Slackware や 
RedHat といったディストリビューションを使ってインストールしたなら、必
要なファイルは作成されているはずなので、大丈夫かどうかをチェックして、
もしダメなら以下に示すサンプルを利用してください。

<sect2><heading>/etc/inetd.conf 

<p>
<tt>/etc/rc.d/rc.inet2</tt> の中で <em>inetd</em> と <em>syslogd</em>、
その他の <em>rpc</em> サーバーを起動しています。<em>inetd</em> には、
起動するデーモン類を指定するためのファイルが必要で、
<tt>/etc/inetd.conf</tt> というファイルを利用しています。

以下に示すものは単純な <tt>/etc/inetd.conf</tt> の例です。

<tscreen><verb>
#
# The internal services.
#
# Authors:      Original taken from BSD UNIX 4.3/TAHOE.
#               Fred N. van Kempen, <waltje@uwalt.nl.mugnet.org>
#
echo    stream tcp nowait root  internal
echo    dgram  udp wait   root  internal
discard stream tcp nowait root  internal
discard dgram  udp wait   root  internal
daytime stream tcp nowait root  internal
daytime dgram  udp wait   root  internal
chargen stream tcp nowait root  internal
chargen dgram  udp wait   root  internal
#
# Standard services.
#
ftp     stream tcp nowait root  /usr/sbin/tcpd in.ftpd ftpd
telnet  stream tcp nowait root  /usr/sbin/tcpd in.telnetd
#
# Shell, login, exec and talk are BSD protocols.
#
shell   stream tcp nowait root  /usr/sbin/tcpd in.rshd
login   stream tcp nowait root  /usr/sbin/tcpd in.rlogind
exec    stream tcp nowait root  /usr/sbin/tcpd in.rexecd
talk    dgram  udp wait   root  /usr/sbin/tcpd in.talkd
ntalk   dgram  udp wait   root  /usr/sbin/tcpd in.talkd
#
# Status and Information services.
#
finger  stream tcp nowait root  /usr/sbin/tcpd in.fingerd
systat  stream tcp nowait guest /usr/sbin/tcpd /usr/bin/ps -auwwx
netstat stream tcp nowait guest /usr/sbin/tcpd /bin/netstat
#
# End of inetd.conf.
</verb></tscreen>

個々のフィールドの詳細については <em>inetd</em> のマニュアルページを参
照してください。ここでは簡単に説明しておきます。各行の最初の欄にはソケッ
ト番号に対応するサービス名が書かれており、そのサービス用のソケットに接
続要求が届いた場合、どのようなコマンドがどういう引数で起動されるかを記
述しています。ここに記述されたコマンドと引数を用いて <em>inetd</em> が
そのプログラムを起動します。最初の欄に書かれているサービス名と実際のソ
ケット番号との対応は <tt>/etc/services</tt> ファイルに記載されています。


<sect2><heading>/etc/services の例

<p>
<tt>/etc/services</tt> ファイルはインターネット用の各種サービスの名称
と使用するソケット番号、プロトコルを記述した表になっています。
この表は <em>inetd</em> や <em>telnet</em>、<em>tcpdump</em> といった
プログラムが利用しています。この表のおかげで、個々のサービス番号を覚え
なくても、サービスの名称で使うことが可能になっています。

以下に示すものは簡単な <tt>/etc/services</tt> ファイルの例です。

<tscreen><verb>
#
# /etc/services - database of service name, socket number
#                 and protocol.
#
# Original Author:
#     Fred N. van Kempen, <waltje@uwalt.nl.mugnet.org>
#
tcpmux     1/tcp
echo       7/tcp
echo       7/udp
discard    9/tcp   sink null
discard    9/udp   sink null
systat     11/tcp  users
daytime    13/tcp
daytime    13/udp
netstat    15/tcp
chargen    19/tcp  ttytst source
chargen    19/udp  ttytst source
ftp-data   20/tcp
ftp        21/tcp
telnet     23/tcp
smtp       25/tcp  mail
time       37/tcp  timserver
time       37/udp  timserver
name       42/udp  nameserver
whois      43/tcp  nicname    # usually to sri-nic
domain     53/tcp
domain     53/udp
finger     79/tcp
link       87/tcp  ttylink
hostnames  101/tcp hostname   # usually to sri-nic
sunrpc     111/tcp
sunrpc     111/tcp portmapper # RPC 4.0 portmapper TCP
sunrpc     111/udp
sunrpc     111/udp portmapper # RPC 4.0 portmapper UDP
auth       113/tcp authentication
nntp       119/tcp usenet     # Network News Transfer
ntp        123/tcp            # Network Time Protocol
ntp        123/udp            # Network Time Protocol
snmp       161/udp
snmp-trap  162/udp
exec       512/tcp            # BSD rexecd(8)
biff       512/udp comsat
login      513/tcp            # BSD rlogind(8)
who        513/udp whod       # BSD rwhod(8)
shell      514/tcp cmd        # BSD rshd(8)
syslog     514/udp            # BSD syslogd(8)
printer    515/tcp spooler    # BSD lpd(8)
talk       517/udp            # BSD talkd(8)
ntalk      518/udp            # SunOS talkd(8)
route      520/udp routed     # 521/udp too
timed      525/udp timeserver
mount      635/udp            # NFS Mount Service
pcnfs      640/udp            # PC-NFS DOS Authentication
bwnfs      650/udp            # BW-NFS DOS Authentication
listen     1025/tcp listener  # RFS remote_file_sharing
ingreslock 1524/tcp           # ingres lock server
nfs        2049/udp           # NFS File Service
irc        6667/tcp           # Internet Relay Chat
# End of services.
</verb></tscreen>


例えば <em>telnet</em> の行は、<em>telnet</em> サービスは 23 番のソケッ
トと <em>tcp</em> プロトコルを使うことを示しています。<em>domain</em> 
の行は DNS(Domain Name Service)が 52 番のソケットを <em>tcp</em> と 
<em>udp</em> 双方のプロトコルで使うことを示しています。
<tt>/etc/services</tt>には <tt>/etc/inetd.conf</tt> の各行に対応する行
(エントリー)が必要です。

<sect2><heading>/etc/protocols の例

<p>
<tt>/etc/protocols</tt> ファイルはプロトコル名と対応するプロトコル番号
を対応づけた表です。使われるプロトコルはそれほど多くないので、このファ
イルもごくささやかなものです。

<tscreen><verb>
#
# /etc/protocols - database of protocols.
#
# Original Author:
#   Fred N. van Kempen, <waltje@uwalt.nl.mugnet.org>
#
ip   0   IP   # internet protocol
icmp 1   ICMP # internet control message protocol
igmp 2   IGMP # internet group multicast protocol
ggp  3   GGP  # gateway-gateway protocol
tcp  6   TCP  # transmission control protocol
pup  12  PUP  # PARC universal packet protocol
udp  17  UDP  # user datagram protocol
idp  22  IDP
raw  255 RAW
#
# End of protocols.
</verb></tscreen>

<sect1><heading>ホスト名の変換

<p>
ホスト名の変換(Name Resolution)とは、人間に分りやすいように付けられて
いるドット区切りのホスト名(例えば <tt>tsx-11.mit.edu</tt>)をネットワー
ク用のソフトウェアが理解できる IP アドレスに変換することです。通常の形
でインストールすると、簡単な方法と複雑な方法の二つでホスト名の変換が行
なわれます

<sect2><heading>/etc/hosts

<p>
<tt>/etc/hosts</tt> ファイルは ip アドレスとホスト名の対応表になってお
り、この表に書いておくことで、ネットワーク上の別のマシンを IP アドレス
でもホスト名でも参照することができるようになります。ネームサーバー
(「named」の章を参照)を使えば、同様の ホスト名 → IP アドレスの変換を
自動的に行なってくれます(<em>named</em> を使えば、あなたの Linux マシ
ンをネームサーバーにすることも可能です)。/etc/hosts ファイルに最低限必
要なのは <tt>localhost</tt> とその IP アドレス <tt>127.0.0.1</tt> とい
う行です。loopback 以外の接続も使う場合、あなたのマシンの正式なホスト
名(たとえば <tt>loomer.vpizza.com</tt>)とその IP アドレスの行も必要で
す。ゲートウェイやネットワークアドレスを加えておくのもいいでしょう。

例えば、<tt>loomer.vpzza.com</tt> が <tt>128.253.154.32</tt> という IP 
アドレスを持っている場合、<tt>/etc/hosts</tt> ファイルには以下の行が必
要です。

<tscreen><verb>
# /etc/hosts
# List of hostnames and their ip addresses
127.0.0.1               localhost
128.253.154.32          loomer.vpizza.com loomer
# end of hosts
</verb></tscreen>

繰返しますが、実際の <tt>/etc/hosts</tt> ファイルはあなたの環境に合わ
せて変更するのを忘れないように。 loopback しか使わないなら、
<tt>/etc/hosts </tt>に必要なのは <tt>127.0.0.1</tt> の行だけです。その
行のホスト名の欄に <tt>localhost</tt> と言う名とあなたのホスト名を書い
ておきましょう。

2 行目に注意してもらいたいのですが、<tt>128.253.154.32</tt> には 2 つ
の名前が付いています。一つは <tt>loomer.vpizza.com</tt> で、もう一つは 
<tt>loomer</tt>です。最初の名前がシステムの正式名称(Fully Qualified
Domain Name:FQDN)で、2 つめがその名称のエイリアス(別称)になっています。
エイリアスを指定しておけば、<tt>loomer.vpizza.com</tt> という長い名前
を入力しなくても <em>rlogin loomer</em> だけで接続可能になります。エイ
リアスよりも前に正式名称(FQDN)を書くことをお忘れなく。

<sect2><heading>named - 我は汝を必要とするか？

<p>
<em>`I dub thee ..'</em>

<em>named</em> とは、多くの unix 互換 OS で動くネームサーバーデーモンで
す。<em>named</em> はそのマシンだけでなく、ネットワーク上の他のホスト
からのホスト名と IP アドレスの変換リクエストも受けつけます。すなわち、
ネットワーク上の他のマシンが <tt>`goober.norelco.com'</tt> の IP アド
レスを探していて、あなたのマシンの <em>named</em> のデータベースにこの
マシンの IP アドレスがあれば、探しているマシンからのリクエストを受けて 
<tt>`goobers'</tt> の IP アドレスを教えます。

昔の Linux の tcp/ip では、マシンに別名を付ける場合(それが自分自身の別
名であっても)、<em>named</em> を動かしてホスト名と IP アドレスの変換を
させる必要がありました。この場合、<em>named</em> の設定はかなり複雑で、
正しく設定して運用することが難しいという問題を起していました。そのため
に <tt>/etc/hosts</tt> に記述したホスト名を <em>named</em> が使うデー
タベースファイルに変換するための <em>hostcvt.build</em> というプログラ
ムが作成されたりしました。設定と運用の難しさを除いても、<em>named</em> 
は CPU を浪費し、ネットワークのトラフィックを増しがちなので、あまりお
薦めできません。

それでも <em>named</em> を立ちあげたい理由は以下のようなものでしょう。

<itemize>
<item>何台かのマシンでネットワークを組み、そのうちの一台をネームサーバーにし
て外部のネームサーバーは使わない場合

<item>ネットワークの管理者が何らかの理由であなたの Linux マシンをネームサー
バーにするように命じた場合

<item>インターネットとの接続が、遅い SLIP 回線経由で、ホスト名の参照が
起きるたびに遅い SLIP 回線を経由してネームサーバーを見にゆくよりも、キャッ
シュのみの小さなネームサーバーを Linux マシン上に用意したい場合。もし接
続先のホストがそれほど多くなく、それらの IP アドレスもわかっている場合
は、それらのホスト名を <tt>/etc/hosts</tt> ファイルに書いてしまえば ネー
ムサーバーを見にゆく必要は無くなります。また、大抵の場合、名前の問い合わ
せはそれほど時間のかかる処理ではなく、遅い SLIP 接続の上でも正しく動く
はずです。

<item>趣味でネームサーバーを動かしたい場合。

</itemize>

繰り返しますが、通常の使用では <bf>named を起動する必要はありません
</bf>：すなわち、<tt>rc.inet2</tt> から <em>named</em> の部分はコメン
トアウトして、<tt>hostcvt.build</tt> を動かす必要もありません。もしマ
シンに別名をつけたい場合、例えば <tt>loomer.vpizza.com</tt> を 
<tt>loomer</tt> として参照したい場合、<tt>/etc/hosts</tt> にそのように
書いておくだけで足ります。特別の理由が無い限り <em>named</em> を動かす
べき必然性はありません。もしネームサーバーにアクセスできて(ネームサー
バのアドレスはネットワーク管理者が教えてくれるはずです)、ちゃんと使え
る場合、<em>named</em> を動かそうと悩む必要はありません。


loopback デバイスのみを使っている場合なら、<em>named</em> を起動して、
ネームサーバーのアドレスを 127.0.0.1 にすることが可能です。でも、通信で
きるマシンは自分自身だけなので意味はありませんし、ネームサーバーを呼び出
す必要も無いでしょう。

<sect2><heading>/etc/networks

<p>
<tt>/etc/networks</tt> は自分や他のマシンの使っているネットワークの名
前とアドレスをまとめたファイルです。このファイルは <em>route</em> コマ
ンドが利用し、ネットワークを IP アドレスでなく、その名称で指定すること
を可能にします。

<em>route</em> コマンドを使って経路制御に加えたいネットワークは全て 
<tt>/etc/networks</tt> に書いておくか、<em>route</em> コマンドに 
<tt>-net</tt> の引数を付けて指定する必要があります。

<tt>/etc/networks</tt> の形式は <tt>/etc/hosts</tt> ファイルとよく似て
いて、例えばこんな風になっています。

<tscreen><verb>
#
# /etc/networks: list all networks that you wish to add route commands
#                for in here
#
default         0.0.0.0         # default route    - recommended
loopnet         127.0.0.0       # loopback network - recommended
mynet           128.253.154.0   # Example network CHANGE to YOURS
#
# end of networks
</verb></tscreen>

<sect2><heading>/etc/host.conf

<p>
システムにはリゾルバライブラリと呼ばれるライブラリ機能があります。この
ライブラリが参照するのは <tt>/etc/host.conf</tt> と呼ばれるファイルで、
指定されたホスト名を IP アドレスに変換するために、どのような順序で検索
を行うかを設定しています。<tt>/etc/host.conf</tt> には少なくとも以下の 
2 行が必要です。

<tscreen><verb>
order hosts,bind
multi on
</verb></tscreen>

この 2 行の指定で、リゾルバライブラリにまず <tt>/etc/hosts</tt> ファイ
ルを見にゆき、次に(設定されていれば)ネームサーバーに問いあわせる、とい
う順序になります。<em>multi</em> の行は <tt>/etc/hosts</tt> ファイルに
問いあわせた名前の IP アドレスが複数あってもいいことを意味します。

このファイルは Linux 用の resolv+ bind ライブラリに入っていたものです。
より詳しい説明は <em>resolv+(8)</em> のマニュアルをご覧ください。この
マニュアルは以下のファイルに含まれています。

<bf>sunsite.doc.ic.ac.uk</bf>
<tscreen<verb>
/computing/comms/tcpip/nameserver/resolv+/resolv+2.1.1.tar.Z
</verb></tscreen>

<sect2><heading>/etc/resolv.conf

<p>
<tt>/etc/resolv.conf</tt> はシステム名の実際の検索方法(resolver)を指定
するもので、2 種類のエントリから構成されています。一つは(もしあれば)ネー
ムサーバーのアドレス(複数可)で、もう一つはあなたのドメインの名称です
(ドメイン名を付けていれば)。もし自前でネームサーバーを動かしている場合
(すなわち Linux マシンで <em>named</em> を動かしている場合)、ネームサー
バーのアドレスは <tt>127.0.0.1</tt>、すなわち loopback アドレスになり
ます。

システムのドメイン名はホスト名の正式名称(もしインターネット上に正式に
登録されているマシンなら)からホスト名の部分を削ったものです。すなわち、
あなたのマシンの正式名称が <tt>loomer.vpizza.com</tt> ならば、ドメイン
名は <tt>loomer</tt> を外した <tt>vpizza.com</tt> になります。

例えば、あなたのマシンが <tt>goober.norelco.com</tt> で、128.253.154.5 
のアドレスにあるネームサーバーを参照する場合、<tt>/etc/resolv.conf</tt> 
ファイルは以下のようになります。

<tscreen><verb>
domain norelco.com
nameserver 128.253.154.5
</verb></tscreen>

<tt>resolv.conf</tt> ファイルには複数のネームサーバーを指定可能で、各
ネームサーバーの指定ごとに <em>nameserver</em> が頭に必要です。

もし loopback しか使っていないなら、ネームサーバーの指定は不要です。

<sect2><heading>ホスト名の設定 - /etc/HOSTNAME

<p>
お疲れさまでした。でも、もう一つ小さな仕事が残っています。あなたの使っ
ているマシンに名前を付けなければいけません。<em>sendmail</em> のような
プログラムは、メールを送ろうとしているあなたを確認し、設定されたホスト
名を用いて自分自身を同定した上で接続先のマシンにメールを送ります。

この種の設定のためには 2 つのプログラムが使われますが、それらはたいて
い誤用されています。その 2 つのプログラムとは <em>hostname</em> と 
<em>domainnname</em> です。

もし <tt>1.1.38</tt> 以前の <tt>net-tools</tt> を使っている場合、
<tt>/etc/rc</tt> ファイルに以下のようなコマンドを書いておきます。

<tscreen><verb>
/bin/hostname -S
</verb></tscreen>

こうしておけば <em>hostname</em> コマンドが <tt>/etc/HOSTNAME</tt> か
らホストの正式名称(Fully Qualified Domain Name)、すなわちドメイン名を
含んだホスト名を読みとります。<em>hostname</em> コマンドは FQDN を DNS 
に登録されたホスト名とドメイン名の部分に分解して、正しく設定します。

例えば、上記のマシンには <tt>/etc/HOSTNAME</tt> に以下のように書いてあ
るはずです。

<tscreen><verb>
goober.norelco.com
</verb></tscreen>

<tt>net-tools-1.1.38</tt> 以降の <em>hostname</em> コマンドを使ってい
る場合、<tt>/etc/rc.d/rc.inet1</tt> ファイルの最後に次のように書いてお
きます。

<tscreen><verb>
/bin/hostname goober.norelco.com
</verb></tscreen>

もし以前のリリースからアップグレードしている場合、以下のように書いてお
けば、以前のバージョンと同様の設定をしてくれます。

<tscreen><verb>
/bin/hostname -F /etc/HOSTNAME
</verb></tscreen>

/bin/domainname コマンドは <bf>NIS</bf> 用です。NIS のドメイン名は 
<bf>DNS</bf> のドメイン名とは<bf>異なり</bf>ます。
<tt>/bin/domainname</tt> コマンドは NIS を使っていない場合設定する必要
はありません。NIS については後に簡単に説明します。

<sect1><heading>その他のファイル

<p>
これら以外にも <tt>/etc</tt> ディレクトリの下には必要に応じて修正すべ
きファイルがいくつもあります。それら個々の説明をする代りに、ネットワー
クに接続するための必要最低限のファイルを示しましょう。より詳しくは 
Olaf の <em>"Network Administration Guide"</em> を御覧ください。"NAG" 
はこの <em>HOWTO</em> が扱っていない部分も扱っています。この HOWTO で
も、将来のバージョンではそれらを扱うことも計画しています。

全てのファイルを設定し、それらを正しい場所に置いたら、新しいカーネルで
再起動して、ネットワークに接続してみましょう。しかし、古いカーネル、あ
るいは「復旧用ディスク」を準備しておくように強くお薦めします。もし何か
トラブルが生じた場合はこれらのディスクから起動して修正します。H.J.Lu 
作の `single disk boot disk' や Slackware 等の配布に含まれている 
`disk1' を使うのもいいでしょう。

<sect><heading>より進んだ設定

<p>
これまでに述べてきたところは、典型的な Linux workstation を通常のエン
ドユーザが使うことを前提にした設定です。読者の中にはもう少し高度な設定
を必要とする人もいるでしょう。この章ではそれらのうちの代表的なものをい
くつか紹介します。

AX.25 や Ottawa PI, generic SCC といったドライバについての説明は <url
url="http://sunsite.unc.edu/mdw/HOWTO/HAM-HOWTO.html"
name="HAM-HOWTO"> に移りました。

<sect1><heading>PPP - Point to Point Protocol.

<p>
<em>Point to Point Protocol</em> はシリアル回線の上を tcp/ip などの様々
なプロトコルを通すために考案された新しい、効率的なプロトコルで、旧来の 
SLIP に取って替るものです。PPP はエラーの検出やセキュリティに関する多
数のオプションなどの機能も豊富です。PPP は SLIP で見つかっていたいくつ
かの問題点を修正し、非同期接続でも同期接続でも使えるようになっています。

PPP の重要な特徴は IP アドレスなどのパラメータを動的に割り当てることが
ごく簡単に可能なことで、この機能はたいていの PPP サーバーで利用できます。
この機能は PPP のクライアントから特別の形式のフレームを使った要求を送
ることで実現しています。この機能のおかげで SLIP のように、面倒な設定を
する必要はなくなりました。SLIP の場合、アドレスの設定はプロトコルの外
部で行なう必要があります。

PPP を Linux に移植したのは <tt>Michael Callahan,
&lt;callahan@maths.ox.ac.uk></tt> と <tt> Al Longyear,
&lt;longyear@netcom.com></tt> です。この文書に記した情報の大部分は PPP 
のソフトウェアに附属の文書から得たものです。PPP のパッケージに附属のド
キュメントは充実しており、ここで私が説明するよりも、さらに詳細な情報が
含まれているので、ぜひ御一読をお薦めします。

Linux 用の PPP のコードはかなり信頼性が高いものが公開されています。
Linux 用 PPP の 1.0.0 のコードは Paul Mackrras 作の BSD 系 OS 用の free
PPP を元にしています 1.0.0 は free PPP の 2.1.1 を元にしています。

PPP のプログラムは 2 つの部分から構成されています。一つ目は kernel に
組みこまれたモジュールで PPP 用にフレームを合成したり分解したりします。
二つめは pppd というデーモンで、 LCP や IPCP、UPAP、CHAP と言う一群の
プロトコルを使って、接続のためにオプションをやりとりしたり、接続を確立
したり、認証機能を果したりしています。


<sect2><heading>SLIP の代りに PPP を使う理由は？
<p>
SLIP よりも PPP をお薦めする理由はいくつもあります。。最も一般的な理由
は：
<descrip>
<tag>接続先のインターネットプロバイダが PPP しか提供していない場合
</tag>

SLIP の代りに PPP を使うもっともはっきりした理由は、接続先のインターネッ
トプロバイダが SLIP をサポートせず、PPP しかサポートしていない場合です。

<tag>常にノイズの多いシリアル回線を使っている場合
</tag>
PPP は SLIP とは異なり、やりとりする全てのフレームをチェックしています。
使っている回線にノイズが多い場合、SLIP ではエラーの修正は接続の両端の
部分、すなわち、あなたのマシンと(SLIP を経由したインターネット上のどこ
かにある)接続先のマシンの間で行なわれます。一方、PPP ではエラーの検出
はローカルに、すなわちあなたのマシンと(シリアル回線で接続されている)
PPP サーバーの間で行なわれます。このため、エラーからの回復は SLIP よりも
速くなります。

<tag>その他、PPP のみの機能を使う必要がある場合

</tag>PPP には SLIP が提供していない多くの機能が組みこまれています。例
えば IP 以外のパケット、DECNET や AppleTalk のフレームをシリアル回線経
由で送りたい場合は PPP を使う必要があります。

</descrip>

<sect2><heading>PPP のソフトはどこから入手できますか？

<p>
PPP は以下のサイトから入手できます。

<bf>sunsite.unc.edu</bf>
<tscreen><verb>
/pub/Linux/system/Networking/serial/ppp-2.1.2d.tar.gz
</verb></tscreen>

このファイルにはカーネルのソースと pppd のソース、およびバイナリが含ま
れています。バージョン 1.0.0 はカーネルの 1.0.x と 1.1.x 用です。2.1.2 
は 1.2.x 用、最新の 2.2.0 は 1.3.x 用になっています。

&lsqb; 訳注 : 現時点での pppd の最新バージョンは pppd-2.2.0e です &rsqb;

<sect2><heading>PPP のインストール
<p>
PPP をインストールするのは比較的簡単です。

<sect3><heading>カーネルに組みこまれたドライバ

<p>
最近のカーネルでは <em>ppp</em> をサポートしているので、あらかじめ PPP 
のカーネル用の部分がソースに含まれています。ですから、 ppp を使いたい
人は最近のカーネルを使った方がいいでしょう。カーネルを設定して再構築す
るのは簡単で、/usr/src/linux で以下のようにすれば大丈夫です。

<tscreen><verb>
# make config   (PPP を使うように設定するのを忘れないように)
# make dep
# make          (コンパイル後、新しいカーネルをインストールするのを
                 忘れないように)
</verb></tscreen>

新しいカーネルで再起動すれば、起動時に以下のようなメッセージが出るはず
です。

<tscreen><verb>
PPP: version 0.2.7 (4 channels) NEW_TTY_DRIVERS OPTIMIZE_FLAGS
TCP compression code copyright 1989 Regents of the University of California
PPP line discipline registered.
</verb></tscreen>

このメッセージが出れば PPP の機能がカーネルに組みこまれています。

次に <tt>/proc/net/dev</tt> を見てみます。<tt>/proc</tt> ファイルシス
テムを見るためには <em>more</em> や <em>less</em> は使えないことに注意
しましょう。 <em>more</em> や <em>less</em> はまずファイルサイズをチェッ
クしますが、<tt>/proc</tt> ファイルシステムはその特徴としてファイルサ
イズが 0 なので <em>more</em> や <em>less</em> では中身が見えません。
<tt>/proc</tt> ファイルシステムを見る場合は cat を使って

<tscreen><verb>
# cat /proc/net/dev
</verb></tscreen>

とします。その結果は以下のようになるはずです。

<tscreen><verb>
Inter-|   Receive                  |  Transmit
 face |packets errs drop fifo frame|packets errs drop fifo colls carrier
lo:        0    0    0    0    0        0    0    0    0     0    0
ppp0:      0    0    0    0    0        0    0    0    0     0    0
ppp1:      0    0    0    0    0        0    0    0    0     0    0
ppp2:      0    0    0    0    0        0    0    0    0     0    0
ppp3:      0    0    0    0    0        0    0    0    0     0    0
</verb></tscreen>

この表示が見えれば PPP のドライバはカーネルへ正しく組みこまれています。

<sect3><heading>pppd
<p>
ppp のソースコードを展開するには以下のようにします。

<tscreen><verb>
# cd /usr/src
# gzip -dc ppp-2.1.2d.tar.gz | tar xvf -
</verb></tscreen>

<em>pppd</em> を再コンパイルしたければ展開された <em> pppd</em> サブディ
レクトリで <em>make</em> と打てば OK です。lcp.c と upap.c, chap.c を
コンパイルする際にはいくつか警告メッセージが出るかも知れませんが大丈夫
です。

<em>chat</em> を再コンパイルする場合、<tt>chat</tt> ディレクトリにある 
<tt>README.linux</tt> を読んでください。

インストールするには <tt>chat</tt> と <tt>pppd</tt> のディレクトリで 
<em>make install</em> と入力します。このコマンドで <em>chat</em> と
<em> pppd</em> のバイナリを <tt>/usr/sbin</tt> にインストールし、
<tt>pppd.8</tt> のマニュアルページを <tt>/usr/man/man8</tt> にインストー
ルします。

<tt>pppd</tt> を動かすには <tt>root</tt> の権限が必要です。pppd を 
<tt>root</tt> に <em>suid</em> するか、<tt>root</tt> になって起動しま
しょう。<tt>root</tt> になって <em>pppd</em> を install すれば 
<tt>root</tt> に suid されるはずです。


<sect2><heading>PPP の設定と使用法

<p>
SLIP 同様、PPP もクライアントとしてもサーバーとしても利用可能です。
SLIP で <em>dip</em> がする仕事を PPP では <em>chat</em> というプログ
ラムが担当し、リモートマシンへ電話をかけて、ログインプロセスを自動的に
実行します。もっとも、<em>dip</em> とは異なり <em>chat</em> では 
<em>ioctl</em> を使ってシリアル回線を PPP 用の回線に変更するという処理
は行ないません。それは <em>pppd</em> の仕事です。<em>pppd</em> はクラ
イアントとしてもサーバーとしても使えます。<em>pppd</em> は、通常 
<em>chat</em> プログラムから起動されて接続とログインの処理をし、
<em>ioctl</em> を使って回線を <em>ppp</em> 用に変更し、いくつものステッ
プを経てあなたのマシンと接続先のマシンが通信できるようにして、バックグ
ラウンドに入り、あなたに処理を委ねます。

より詳しくは <em>pppd</em> と <em>chat</em> のマニュアルを御覧ください。
ここで説明したよりもずっと詳しい説明が ppp のパッケージに附属の README 
ファイルに記載されているので、ぜひ README ファイルにも目を通してくださ
い。

<sect3><heading>電話回線経由の PPP 接続の設定方法
<p>
多くの人がこの使い方をすると思うので、まずモデムを経由した電話回線経由
の接続法について説明します。PPP 接続を提供しているインターネットプロバ
イダと接続する方法です。単に接続したいだけなら、<em>pppd</em> を引数無
しで起動するだけで足ります。この場合、PPP サーバーから IP アドレスが動
的に割りあてられます。あらかじめ決められているアドレスを使う場合につい
ては後に説明します。

<em>pppd</em> には動作を制御するために多くのオプションが用意されていま
す。これらのオプションは引数として与えるだけでなく、ファイルに書いてお
くことが可能なので、<em>ps</em> などで調べてもどのような引数を使ってい
るか見えなくすることも可能です。この機能は <em>pppd</em> を 
<em>chat</em> 経由で起動している場合に特に重要になります。というのも、
<em>chat</em> はサーバーにログインするためのパスワードをやりとりするの
で、それらを(引数として与えるのではなく)ファイルに書いておき、他人が 
<em>ps</em> で見てもパスワードが見えないようにしておくのはセキュリティ
上重要です。

<em>pppd</em> が使うファイルは <tt>/etc/ppp/options</tt> です。

典型的な PPP の設定の場合、<tt>/etc/ppp/options</tt> はこんな風になる
でしょう。

<tscreen><verb>
connect /etc/ppp/ppp-connect
/dev/ttyS1
19200
crtscts
modem
lock
asyncmap 0
defaultroute
</verb></tscreen>

これらのオプションの意味は

<enum>
<item><em>pppd</em> はモデムを使ってダイアルし、ログインするのに 
<tt>/etc/ppp/ppp-connect </tt>というスクリプトを使います。

<item> <em>pppd</em> はシリアルデバイスの <tt>ttyS1</tt> を 
<tt>19200</tt> bits/sec のスピードで使い、ハードウェアとのハンドシェー
クには <tt>crtscts</tt> を使い、modem の信号線(CD)を監視して、接続が生
きているか終了したかを判定します。

<item> <em>pppd</em> は <tt>tty</tt> デバイス用にロックファイルを作り、
使っている tty が他のプロセスと競合しないようにしています。

<item>PPP の回線は `8 ビットクリーン' で、全てのキャラクタが透過です。
<tt>asyncmap</tt> オプションはどのキャラクタをエスケープするか指定し、
デフォルトではコントロールキャラクタをエスケープするようになっています
が、最近の PPP サーバーはたいてい 8 ビットクリーンになっているはずなので、
<tt>asyncmap</tt> を 0 に指定して、<em>pppd</em> がエスケープするキャ
ラクタを無しにします。

<item><em>pppd</em> は接続が確立すれば ppp デバイスをデフォルトの経路
にします。

&lsqb; 訳注 : イーサネットとシリアル接続のゲートウェイにする場合など、あらか
じめデフォルトルートが設定されていれば、それを書きかえることはしません&rsqb;

</enum>

次のステップは <tt>/etc/ppp/ppp-connect</tt> スクリプトの設定です。こ
のスクリプトの中で <em>pppd</em> に付いてくる <em>chat</em> プログラム
を使うのがいいでしょう。

まず、PPP サーバーへの接続手順がどのようなものかを確認します。
以下に示すものはサンプルスクリプト用の架空の手順です。

<tscreen><verb>
CONNECT 14400

Welcome to XYZ PPP server!

login:                      <ユーザー名の入力>^M
password:                   <パスワードの入力>^M

Now entering PPP:
</verb></tscreen>

<em>chat</em> プログラムは引数として 送る/受けとる 文字列を順に並べて
おきます。文字列は「期待する文字列 送信する文字列」 の順に対にしておき
ます。<tt>/etc/ppp/ppp-connect</tt> スクリプトは <em>chmod</em> で必要
な人以外には見えないように設定します。上のような出力例の場合、対応する
引数は以下のようになるでしょう。

<tscreen><verb>
#!/bin/sh
# A chat script to login to the XYZ PPP server.
#
NUM=5552857
UID=terryd
PASSWD=secret1
#
/usr/sbin/chat -v "" ATZ OK ATDT$NUM CONNECT ogin: $UID word: \\q$PASSWD PPP:
</verb</tscreen>

この設定では、まずダイアル前にモデムを初期化するシーケンス(ATZ)を付け
ています。

<tt>""</tt> というのは「何も待たない」ことを意味しています。頭にこれを
付けると、まず何かを送信してから始めることになります。

<tt>-v</tt> オプションは <em>chat</em> を冗長モードで動かす指定です。
このモードにしておけば、ログイン時の手順は全て <em>syslog</em> に送ら
れるので、実際にどのようなやりとりが行なわれているのかを詳しく調べるこ
とができます。<tt>&dollar;PASSWD</tt> の前の <tt>&bsol;&bsol;q</tt> に
注意してください。<tt>&bsol;&bsol;q</tt> を付けると、それ以後の部分は 
<em>syslog</em> にエコーされなくなります。こうしておけば、自分のパスワー
ドをシステムのログファイルに記録されてしまうことはありません。

/etc/ppp/ppp-connect は <tt>chmod 600 /etc/ppp/ppp-connnect</tt> とし
て、他のユーザーにパスワードを見られないようにしておきましょう。

上記の設定で PPP 接続を開始するには、単に <em>`pppd'</em> と打つだけで、
後は自動的に進行します。システムログに残されたログインの進行状態を観察
しましょう。そしてログインの手続きが終了したら <tt>route -n</tt> コマ
ンドを使って、デフォルトの経路が <tt>ppp0</tt> デバイスになっているこ
とを確認してください。

あらかじめ決まっている IP アドレスを使う場合は以下のような行を 
<tt>/etc/ppp/options</tt> ファイルに加えておきます。

<tscreen><verb>
nnn.nnn.nnn.nnn:
</verb></tscreen>

ここで、<tt>nnn.nnn.nnn.nnn</tt> はあなたの IP アドレスです。注意して
ほしいのですが、この指定は接続先のインターネットプロバイダが許可してい
る場合にしか使えません。最後の : (コロン)も重要です。

<em>pppd</em> では、ここで上げた以外にも多数のオプションを 
<tt>option</tt> ファイルに指定可能です。より詳しい説明は <em>pppd</em> 
と <em>chat</em> のマニュアルを御覧ください。


<sect3><heading>専用線経由での PPP 接続の設定方法

<p>
専用線を使って PPP のクライエントを設定するのはごく簡単です。ここでも 
<em>pppd</em> プログラムを使いますが、モデム経由の電話回線のようにダイ
ヤルをかけて接続するような作業は不要なので chat プログラムはずっと簡単
ですみます。

ここに示すサンプルでは、 ppp サーバーは一切ログインの手続きを必要としな
いような設定になっています。このような例を選んだ理由は、ログインの方法
はホストごとに異なりますし、あなた自身のマシンに接続させるような場合、
この例に示したような手順に設定することも可能だからです。

<tscreen><verb>
pppd defaultroute noipdefault debug \
kdebug 2 /dev/cua0 9600
</verb></tscreen>

まずシリアルデバイスをオープンして <em>ioctl</em> でそれを 
<em>ppp</em> デバイスに変更します。そして、デフォルトの経路をこの 
<em>ppp</em> インターフェースにします。<em>noipdefault</em> の指定は今
回利用する IP アドレスはサーバーから与えてもらうことを意味します。
<em>debug</em>で指定した出力は <em>syslog</em> へ送られます。
<em>kdebug 2</em> の指定は debug メッセージの出力レベルを 2 にする、と
いうことで、より詳しい情報が出力されるようになります。<em>pppd</em> は 
<em>/dev/cua0</em> を 9600bps で利用します。

もし接続先のサーバーが何らかのログイン手続きを必要とするなら、ダイアル
回線経由でつなぐ例で示したように <em>chat</em> を使って、簡単に設定で
きるでしょう。

より詳しい情報は <em>pppd</em> と <em>chat</em> のマニュアルを御覧くだ
さい。ppp についてくる README ファイルにも、私がここで説明したよりずっ
と詳しい情報が記載されているので、ぜひ目を通すようにしてください。

<sect3><heading>PPP サーバーの設定方法
<p>
PPP サーバーの設定は SLIP サーバーとよく似ています。PPP 接続用に、特別
の `ppp' というアカウントを作り、そのアカウントのログインシェルとして 
<em>pppd</em> を起動するようなスクリプトを指定します。その場合、
<tt>/etc/passwd</tt> エントリーはこのような形になるでしょう。

<tscreen><verb>
ppp:EncPasswd:102:50:PPP client login:/tmp:/etc/ppp/ppplogin
</verb></tscreen>

<tt>/etc/ppp/ppplogin</tt> スクリプトはこういうふうになるはずです。

<tscreen><verb>
#!/bin/sh
exec /usr/sbin/pppd passive :192.1.2.23
</verb></tscreen>

ここで指定しているアドレス(192.1.2.23)が<bf>接続を求めてきた</bf>マシ
ンに与えるアドレスになります。

普通、複数のユーザーが同時にアクセスしてくるような環境では、同時アクセ
スを許可するユーザー数だけの起動用のスクリプトとアカウントを用意して、
それぞれに ip アドレスを指定してやる必要があります。

<sect2><heading>PPP についてより詳しい情報の入手法、あるいはバグレポートの提出先

<p>
The <url url="http://sunsite.unc.edu/mdw/HOWTO/PPP-HOWTO.html"
name="PPP-HOWTO"> は、本書に示した情報よりも広い範囲をカバーしている優
れた参考書です。

Linux の PPP についての議論の大部分は PPP メーリングリストで行われてい
ます。

<bf>linux-ppp</bf> メーリングリストに参加するには、
<tscreen><verb>
Majordomo@vger.rutgers.edu
</verb></tscreen>

宛に、本文に 

<tscreen><verb>
subscribe linux-ppp
</verb></tscreen>
と書いたメールを送ります。subjcect: の行は無視されます。

気をつけてほしいのですが、バグや問題を報告するときは可能な限り多量の情
報を含めるようにしてください。問題点をわかりやすくすればするほど、より
的確な助言が得られることでしょう。

また以下の文献も役に立つでしょう：

RFC 1548, 1331, 1332, 1333, 1334。これらが PPP を定義している文献です。

W.Richard Stevens の「TCP/IP Illustrated Vol 1」(Addison-Wessley,
1994, ISBN 0-201-63346-9)にも PPP についての説明があります。

<sect1><heading>Slip サーバーの設定方法
<p>

ネットワークに接続されたマシンが手元にあって、電話回線経由で接続してく
る人たちに接続サービスを提供したい場合、そのマシンをサーバーとして設定
する必要があります。もしシリアル回線用のプロトコルとして SLIP を使いた
い場合、その設定には以下に示す 3 種の方法があります。私のお薦めは最初
に上げた <em>sliplogin</em> を使う方法で、これがもっとも簡単で分りやす
いと思います。でも、残りの方法についても説明しますので、どれがいいかは
あなたが選んでください。

<sect2><heading><em>sliplogin</em> を使った設定方法

<p>
<em>sliplogin</em> は通常のログイン・シェルの代りとなる SLIP ユーザー
用のログイン用のプログラムで、接続した回線を SLIP 用に変更する機能を持っ
ています。<em>sliplogin</em> を使えば、接続してきたユーザーに毎回同じ
アドレスを割り当てる<em>静的なアドレスサーバー</em>としても、毎回違う(か
もしれない)アドレスを割りあてる<em>動的なアドレスサーバー</em>としても設
定可能です。

<p>
電話をかけてきた人は、接続するたびに通常のログインプロセス、すなわち、
まずユーザー名を入力し、次にパスワードを入力するというプロセスを通過し
ます。しかし、その後が普通のログインとは多少異なっていて、通常のログイ
ンシェルを起動するのではく、<em>sliplogin</em> が起動して、まず設定用
ファイル(<tt>/etc/slip.hosts</tt>)を読みこみ、電話してきた人の入力した
ログイン名が登録されているかどうかをチェックします。登録されていれば、
回線を 8 bit クリーンに設定し <em>ioctl</em> を使って SLIP 用に回線を
変更します。以上の手続きが終れば設定の最終段階に突入し、
<em>sliplogin</em> は SLIP インターフェースを適切な ip アドレスやネッ
トマスクで設定し、ルーティングテーブルに情報を追加するためのスクリプト
を起動します。このスクリプトは <tt>/etc/slip.login</tt> と呼ばれていま
すが、<em>getty</em> 同様に接続相手によっては特別の設定をする必要があ
るため <tt>/etc/slip.login.loginname</tt> として、デフォルトのファイル
の代りにユーザー別の設定ファイルを使用することも可能です。

<p>
<em>sliplogin</em> を使うためには、これ以外にも 3 つか 4 つの設定ファ
イルが必要となります。以下にそれらのファイルについて、どのような設定す
るかを説明します。

<itemize>
<item><tt>/etc/passwd</tt> には回線経由で接続してくるユーザーのアカウ
ントを用意します。

<item><tt>/etc/slip.hosts</tt> には回線経由で接続してくるユーザーごと
の情報を書いておきます。

<item><tt>/etc/slip.login</tt> には接続してきたユーザー用の経路情報を
書いておきます。

<item><tt>/etc/slip.tty</tt> は、<em>動的なアドレス</em>の割り当てを使
う場合に設定します。このファイルには割当てるべきアドレスを記入しておき
ます。

<item><tt>/etc/slip.logout</tt> にはユーザーが回線を切ったり logout し
た時の後始末をするコマンドを書いておきます。

</itemize>

<sect3><heading><em>sliplogin</em> はどこにあるの？

<p>

<em>sliplogin</em> は以下のサイトから入手できます。

<bf>sunsite.unc.edu</bf>
<tscreen><verb>
/pub/Linux/system/Network/serial/sliplogin-2.0.tar.gz
</verb></tscreen>

この tar ファイルにはバイナリとソース、マニュアルページが含まれていま
す。
<p>
注意して欲しいのですが、<em>sliplogin</em> を起動できるのは正式に許可
されたユーザーだけです。そのため、<tt>/etc/group</tt> ファイルに以下の
ような記述を追加します。

<tscreen><verb>
 ..
SLIP::13:radio,fred
 ..
</verb></tscreen>

<em>sliplogin</em>用のパッケージをインストールすれば、
<tt>Makefile</tt> が自動的に <em>sliplogin</em> 関連のプログラムの所有
グループを <tt>SLIP</tt> に変更し、<tt>SLIP</tt> のグループに属するユー
ザーのみがプログラムを起動できるように設定します。上の例では 
<tt>SLIP</tt> グループに属する radio と fred だけが <em>sliplogin</em> 
を実行できます。
<p>
バイナリを <tt>/sbin</tt> に、マニュアルを 8 章にインストールするには、
以下のようにします。

<tscreen><verb>
# cd /usr/src
# gzip -dc .../sliplogin-2.0.tar.gz | tar xvf -
# <..shadow password を使わない場合 Makefile を修正すること..>
# make install
</verb></tscreen>

自分でバイナリを再コンパイルしたい場合は <tt>make install</tt> の前に 
<tt>make clean </tt>してください。もしバイナリをどこか別の場所にインス
トールしたいなら <tt>Makefile</tt> の適切な箇所を書きかえてしまうしか
ないでしょう。

<p>
より詳しくはプログラムに附属の <tt>README</tt> ファイルをご覧ください。


<sect3><heading>Slip 接続ホスト用の <tt>/etc/passwd</tt> の設定

<p>

SLIP サーバーの一般的な運用法としては、 SLIP で接続してくる人用に特別の
アカウントを <tt>/etc/passwd</tt> に作るのが普通です。そのアカウントは
接続してくる<em>ホスト名</em>の頭に S を付けたものをアカウント名にする
場合が多く、例えば、接続してくるマシンが <tt>radio</tt> というホスト名
だった場合、

<tscreen><verb>
Sradio:FvKurok73:1427:1:radio SLIP login:/tmp:/sbin/sliplogin
</verb></tscreen>

のようなフィールドを <tt>/etc/passwd</tt> に作ります。

アカウント名は管理者にとってわかりやすければ、特にどんな名前でもかまい
ません。
<p>
注意：ホストごとにアカウント名を作成しますが、実際にそのアカウントで 
ログインして shell を使うことは無いので、ホームディレクトリを用意して
おく必要はなく、<tt>/tmp</tt> あたりをホームディレクトリに指定しておけ
ばいいでしょう。また、通常のシェルの代りに <tt>sliplogin</tt> を使って
いることに注意してください。

<sect3><heading><tt>/etc/slip.hosts</tt> の設定方法

<p>シェルとして起動された <em>sliplogin</em> は 
<tt>/etc/slip.hosts</tt> ファイルを調べて、ログイン名を元に、それぞれ
の接続者ごとに詳しい設定を指定します。接続者にあたえる IP アドレスや接
続形態を指定するのもこのファイルです。以下に示すサンプルでは、
<tt>radio</tt> というホストには静的なアドレスを、<tt>albert</tt> とい
うホストには動的なアドレスを使うようにそれぞれ指定しています。

<tscreen><verb>
#
Sradio    44.136.8.99    44.136.8.100   0xffffff00   normal
Salbert   44.136.8.99    DYNAMIC        0xffffff00   compressed
#
</verb></tscreen>

<tt>/etc/slip.hosts</tt> の各欄の意味は、

<enum>
<item>接続者の login 名
<item>サーバーマシン(すなわちこのマシン)の ip アドレス

<item>接続者にあたえるべき ip アドレス。この欄が <tt>DYNAMIC</tt> の指
定になっていれば、ip アドレスは後述する <tt>/etc/slip.tty</tt> ファイ
ルに用意されているものから動的に割りあてられます。<bf>注意</bf>：この
機能を使うには、少なくとも sliplogin の 1.3 以上のバージョンのものを使っ
てください。

<item>接続してくるマシンの使うネットマスクを 16 進で表記したもの。例えば、
Class C のネットワークマスクの場合、0xffffff00 になります。

<item>圧縮機能などを指定するための欄です。
</enum>

注意：2 つめと 3 つめの欄にはホスト名でも、ドットで区切った IP アドレ
スでも、どちらの形でも書けますが、ホスト名で指定した場合、そのホスト名
を IP アドレスに変換できなければなりません。ホスト名から IP アドレスへ
変換できないとスクリプトは異常終了してしまいます。正しく IP アドレスへ
変換できるかどうかをテストするには、そのホスト名へ telnet してみるのが
いいでしょう。<em>Trying nnn.nnn.nnn...</em> というメッセージが出れば
そのホスト名は IP アドレスに変換できています。"Unknown host.." という
メッセージが出る場合はうまく変換できていません。うまく変換できない場合
は IP アドレスを直接書くか、リゾルバの設定を修正してください(「名前の
変換」の章)

以上に示した以外にも、いくつかオプションとして指定できるパラメータも存
在し、もっともよく使われるオプションパラメータは以下の二つです。

<descrip>
<tag>normal
</tag>通常の非圧縮タイプの SLIP 
<tag>compressed
</tag>van Jacobsen のヘッダ圧縮を可能にした SLIP(cSLIP)
</descrip>

これらは相互に排他的なので、どちらか一方のみを指定してください。その他
のオプションについてはマニュアルを参照してください。

<sect3><heading><tt>/etc/slip.login</tt> ファイルの設定

<p>
<em>sliplogin</em> が <tt>/etc/slip.hosts</tt> を調べ、対応するエント
リが見つかれば、<tt>/etc/slip.login</tt> を実行して SLIP インターフェー
スを設定された IP アドレスとネットマスクで設定します。

<em>sliplogin</em> のパッケージに附属の <tt>/etc/slip.login</tt> のサ
ンプルはこのようになっています。

<tscreen><verb>
#!/bin/sh -
#
#       @(#)slip.login  5.1 (Berkeley) 7/1/90
#
# generic login file for a SLIP line.  sliplogin invokes this with
# the parameters:
#     $1       $2        $3       $4         $5        $6    $7-n
#   SLIPunit ttyspeed loginname local-addr remote-addr mask opt-args
#
/sbin/ifconfig $1 $4 pointopoint $5 mtu 1500 -trailers up
/sbin/route add $5
arp -s $5 <hw_addr> pub
exit 0
#
</verb></tscreen>

このスクリプトは <em>ifconfig</em> と <em>route</em> コマンドを使って、
SLIP デバイスを指定した IP アドレス、リモートの IP アドレス、ネットマ
スクで設定して、SLIP デバイス経由でリモートアドレスに達するような経路
を指定しています。<em>slattach</em> コマンドを使ったことのある人はよく
似た指定法だと気づくでしょう。

<p>
もう一点、<em>代理(proxy) ARP</em> を使って、サーバーマシンと同じイー
サネット上にある他のホストマシンに回線経由のマシンへの到達方法を教えて
いる点に注意してください。<tt>&lt;hw_addr></tt> フィールドでは、サーバー
マシンのイーサネットカードのハードウェアアドレスを指定します。もしサー
バーマシンがイーサネットを使ったネットワークに接続されていないなら、こ
の行は削除しておきます。

<sect3><heading><tt>/etc/slip.logout</tt> ファイルの設定

<p>
接続が切れると、(SLIP デバイスとして設定されていた)シリアルデバイスを
通常の状態に戻して、次の接続者がきちんとログインできるようにしておく必
要があります。これは <tt>/etc/slip.logout</tt> ファイルで指定します。
フォーマットはごく簡単で、

<tscreen><verb>
#!/bin/sh -
#
#               slip.logout
#
/sbin/ifconfig $1 down
/sbin/route del $5
arp -d $5
exit 0
#
</verb></tscreen>

このスクリプトがやっているのはインターフェースを「ダウン」させ、以前に
設定された経路を削除することだけです。同時に <em>arp -d</em> コマンド
で proxy の設定も削除しています。もしサーバーマシンがイーサネットに接
続されていないなら <em>arp</em> の部分は不要です。

<sect3><heading><tt>/etc/slip.tty</tt> ファイルの設定

<p>
動的な IP アドレスの割り当てを行う場合、すなわち 
<tt>/etc/slip.hosts</tt> ファイルに <tt>DYNAMIC</tt> のキーワードを持
つホストがある場合、割り当てるべきアドレスを記載した 
<tt>/etc/slip.tty</tt> ファイルを用意する必要があります。
<tt>/etc/slip.tty</tt>ファイルは IP アドレスの動的割り当てを使う場合に
のみ必要なファイルです。このファイルは SLIP 接続してくる <em>tty</em> 
デバイスとそのポートに接続してきたユーザーに割りあてるべき IP アドレス
を組みあわせた表の形になっています。

このファイルのフォーマットは具体的には以下のようになります。

<tscreen><verb>
# slip.tty    tty -> IP address mappings for dynamic SLIP
# format: /dev/tty?? xxx.xxx.xxx.xxx
#
/dev/ttyS0      192.168.0.100
/dev/ttyS1      192.168.0.101
#
</verb></tscreen>

<p>
このテーブルの読み方は、<tt>/dev/ttyS0</tt> に接続した利用者で、
<tt>/etc/slip.hosts</tt> のリモートアドレス欄が <tt>DYNAMIC</tt> になっ
ている場合、<tt>192.168.0.100</tt> というアドレスを与える、という意味
になります。

<p>
このように、接続に使うポートごとに一つのアドレスを割りあてることで、全
てのユーザーごとに IP アドレスを割りあてる必要が無くなり、最小限の IP 
アドレスを用意するだけで済みます。

<sect2><heading><em>dip</em> を使う Slip サーバー

<p>
以下の説明は Linux を SLIP サーバーとして使う方法を簡単にまとめてある 
<em>dip</em> のマニュアルを元にしたものです。対象としている 
<em>dip</em> は <em>dip337j-uri.tgz</em> を元にしているので、その他の
バージョンではうまくあてはまらないかも知れません。

<em>dip</em> には入力モードの機能があり、起動したユーザー名をエントリ
として、<tt>/etc/diphosts</tt> ファイルの記述に従ってシリアルラインを 
SLIP 用に設定することができます。<em>dip</em> を入力モードで起動するに
は <em>dip</em> を <em>diplogin</em> という名前で起動します。すなわち、
<em>dip</em> を SLIP サーバーとして使うにはログインシェルのかわりに 
<em>diplogin</em> を使う特別のアカウントを作ればいいことになります。

まず、以下のように diplogin を dip のシンボリックリンクにします。

<tscreen><verb>
# ln -sf /usr/sbin/dip /usr/sbin/diplogin
</verb></tscreen>

次に、<tt>/etc/passwd</tt> と <tt>/etc/diphosts</tt> ファイルにエント
リを加えます。必要なエントリは以下のようなフォーマットです。

Linux を <em>dip</em> を使った SLIP サーバーとして設定するには、(入力
モードになる) <em>dip</em> をログインシェルにした特別の SLIP アカウン
トをユーザーごとに設定します。慣例として、SLIP 接続のアカウントは、大
文字の `S' から始まる名前、すなわち `Sfredm' みたいにします。

SLIP ユーザー用の <tt>/etc/passwd</tt> はこんな風になります。

<tscreen><verb>
Sfredm:ij/SMxiTlGVCo:1004:10:Fred:/tmp:/usr/sbin/diplogin
^^         ^^        ^^  ^^   ^^   ^^   ^^
|          |         |   |    |    |    \__ ログインシェルが diplogin
|          |         |   |    |    \_______ ホームディレクトリ
|          |         |   |    \____________ ユーザー名
|          |         |   \_________________ Group ID
|          |         \_____________________ User ID
|          \_______________________________ 暗号化されたパスワード
\__________________________________________ Slip User Login Name
</verb></tscreen>

ユーザーがログインしてくると、<em>login(1)</em> プログラムがユーザーを
チェックした上で <em>diplogin</em> コマンドを起動します。
<em>diplogin</em> というコマンド名で起動された <em>dip</em> は自分をロ
グインシェルだと認識して、まず <em>getuid()</em> で自分を起動したユー
ザー id を得ます。次に、そのユーザー id を <tt>/etc/diphosts</tt> に探
して、ユーザー id か自分を起動した <em>tty</em> デバイス名を見つけ、そ
の記述にしたがって回線を設定します。ユーザーのエントリを 
<tt>diphosts</tt> ファイルに作るか、デフォルトの設定ファイルの設定を利
用するかによって、ユーザーごとに静的な IP アドレスの割り当てを使うか動
的な IP アドレスの割り当てを使うかを組み合わせることが可能です。

<em>dip</em> は入力モードで起動された場合、自動的に `代理(proxy) ARP' 
の設定を加えるので、特に proxy の設定を行う必要はありません。

<sect3><heading><tt>/etc/diphosts</tt> の設定

<p>
<tt>/etc/diphosts</tt> は、リモートホストを探すために <em>dip</em> が
自動的に見にゆく設定ファイルです。リモートホストはあなたのマシンに接続
してくるユーザーであるかもしれないし、あなたのマシンが接続しにゆくマシ
ンかも知れません。

<tt>/etc/diphosts</tt> の一般的なフォーマットは以下のようなものです。

<tscreen><verb>
 ..
Suwalt::145.71.34.1:145.71.34.2:255.255.255.0:SLIP uwalt:CSLIP,1006
ttyS1::145.71.34.3:145.71.34.2:255.255.255.0:Dynamic ttyS1:CSLIP,296
 ..
</verb></tscreen>

それぞれのフィールドは：
<enum>
<item> ログイン名：getpwuid(getuid()) で得られる名前か tty 名
<item>未使用：passwd との互換性のため。

<item>リモートアドレス：接続してくるホストの IP アドレス。数字、あるい
はホスト名

<item>ローカルアドレス：このマシンの IP アドレス。数字、あるいはホスト名

<item>ネットマスク：ドット区切りの 10 進表記

<item>コメントフィールド：何を書いても可。

<item>プロトコル：Slip, CSlip 等の指定。

<item><tt>MTU</tt>: 10 進数で指定

</enum>

リモートの SLIP ユーザー用 <tt>/etc/net/diphosts</tt> のエントリは：
<tscreen><verb>
Sfredm::145.71.34.1:145.71.34.2:255.255.255.0:SLIP uwalt:SLIP,296
</verb></tscreen>

この例では SLIP 接続のリモートアドレスが 145.71.34.1 で MTU を 296 に
しています。あるいは、

<tscreen><verb>
Sfredm::145.71.34.1:145.71.34.2:255.255.255.0:SLIP uwalt:CSLIP,1006
</verb></tscreen>

こちらでは cSLIP 接続でリモートアドレスを 145.71.34.1 にして、MTU を 
1006 にしています。

すなわち、静的に IP アドレスを割り当てたいユーザーについては 
<tt>/etc/diphosts</tt> に設定して、動的に IP アドレスを割り当てたいユー
ザーには <tt>tty</tt> デバイスを元にした設定を用意して、ユーザー名を使っ
たエントリは作りません。それぞれの <tt>tty</tt> デバイスごとに少なくと
も一つの設定を用意して、ユーザーがどのモデム経由で接続しても適切な設定
が行われるようにすることを忘れないように。

ユーザーがログインしてくれば、通常のログインプロンプトとパスワードプロ
ンプトが表示され、SLIP-login 用にユーザー id とパスワードを入力します。
それらが正しければ、ユーザーには特にメッセージが出力されずに回線が 
SLIP モードに変更され、<tt>diphosts</tt> ファイルのパラメータに従って
設定されます。

<sect2><heading><em>dSLIP</em> パッケージを使った SLIP サーバー
<p>
Matt Dillon <tt>&lt;dillon@apollo.west.oic.com></tt> が電話回線経由で
アクセスしてくる時だけでなく、自分がアクセスする時にも使えるようなプロ
グラムをまとめました。彼の作ったパッケージは、接続をさまざまに制御する
小さなプログラムから構成されています。少くとも一つのスクリプトは 
<em>tcsh</em> がインストールされていることを前提に作成されています。
Matt は彼の SLIP 用パッケージが必要とするユーティリテイのバイナリも配
布しています。このパッケージを使いこなすには多少の経験が必要となります
が、悲観する必要はありません。
<p>
Matt はパッケージに附属の README ファイルとして詳細なインストールの説
明をしてくれているので、それを繰り返すことはやめておきます。
<p>
<em>dSLIP</em> は以下のサイトから入手できます。

<bf>apollo.west.oic.com</bf>
<tscreen><verb>
/pub/linux/dillon_src/dSLIP203.tgz
</verb></tscreen>

あるいは

<bf>sunsite.unc.edu</bf>
<tscreen><verb>
/pub/Linux/system/Network/serial/dSLIP203.tgz
</verb></tscreen>

附属の <tt>README</tt> ファイルを読んで <tt>make install</tt> する前に 
忘れず <tt>/etc/passwd</tt> と <tt>/etc/group</tt> エントリを作ってお
くこと。

<sect1><heading>自動マウントデーモン - AMD

<p>
この節は <tt>Mitch DSouza</tt> からの情報を最小限の修正のみで記載して
います。Mitch ありがとう。

<sect2><heading>自動マウントって何？何の役に立つの？

<p>
自動マウントはファイルシステムを必要に応じて自動的にマウントしてくれる
便利な方法です。この方法を使えばサーバーとクライアント双方の負荷を減ら
し、NFS を使わなくてもきわめて柔軟なファイル構成を設定できます。また、
プライマリのサーバーが使用できない場合、自動的にセカンダリのサーバにス
イッチするようなシステムの冗長化も可能です。<em>union</em> mount とい
うマウントの方法もあり、複数のディレクトリの中身を一つのディレクトリに
見せるようなことも可能です。その豊富な機能を使いこなすためには必ず附属
のマニュアルを読んでください。

忘れてはならない重要なポイントをいくつか(重要度の順番というわけではあ
りません)

<itemize>
<item> <em>amd</em> の使う map ファイルは Sun のものとは互換性はなく、
HP のものとも互換性はありません。しかし、<em>amd</em> はフリーに配布で
き、 SUN や HP でも動きますし、それらに附属のものよりも豊富な機能を持っ
ています。ですから、<em>amd</em> を使ってネットワーク上の異機種マシン
間で map ファイルを共有することも可能です。Mitch は Linux/Dec/NeXT/Sun 
といったマシンが混在したネットワーク環境で amd を使ってディスクを共有
しているそうです。

<item> <em>Sun</em> の automount が使う map ファイルは <em>amd</em> の
パッケージの <tt>contrib</tt> ディレクトリにある 
<tt>automount2amd.pl</tt> という <em>perl</em> スクリプトで 
<em>amd</em> 形式の map ファイルに変換できます。

<item> <em>amd</em> を使うためには、事前に <em>portmapper</em> を動か
しておく必要があります。

<item> UFS マウントはタイムアウト<bf>しません</bf>。

<item> Linux <bf>のみ</bf>の機能ですが、UFS マウントは Linux 固有のファ
イルシステム(minix, ext, ext2, xiafs,,)と同様に扱えます。デフォルトで
は minix ファイルシステムになっています。この機能はマニュアルには書い
ていませんが、<em>opts</em> に引数を与えることで、以下のように実現できま
す。

<tscreen><verb>
 ..., opts:=type=msdos,conv=auto
</verb></tscreen>

<item> <em>direct</em> automount オプションを使わずに既存のディレクト
リにマウントしてはいけません。<em>direct</em> automount オプションを使
わずにマウントすると、誰かが <tt>/home/fred</tt> をホームディレクトリ
にしている時でも <tt>/home</tt> にあなたのディスクをマウントしてしまい
ます

<item> もし何か問題が起きれば、`-x all' オプションを指定して、
<em>amd</em> のログを全て取るようにします。また、
<tscreen><verb>
% amq -ms
</verb></tscreen>
のコマンドを使えば、何か問題が起きていれば報告されるはずです。

<item> GNU の <em>getopt()</em> は時として賢すぎる場合があります。オプ
ションで無い部分を指定する前に `--' を付けて、オプションとして解釈され
ないようにする必要があります。

<tscreen><verb>
# /etc/amd -x all -l syslog -a /amd -- /net /etc/amd.net
</verb></tscreen>
</itemize>

<sect2><heading>AMD の入手方法

<p>
<em>amd</em> は

<bf>sunsite.unc.edu</bf> の
<tscreen><verb>
/pub/Linux/system/Misc/mount/amd920824upl67.tar.gz
</verb></tscreen>

にあります。このパッケージにはバイナリとソース一式、texinfo 形式のドキュ
メントが含まれています。

<sect2><heading>AMD の設定例
<p>
現在使用中のファイルシステムに関しては <tt>/etc/fstab</tt> で設定しま
すが、自動マウントに関する設定はこのファイルでは行なわず、コマンドライ
ンから指定します。

<tt>/etc/fstab</tt> で <em>NFS</em> マウントを使っている場合、以下のよ
うなエントリがあるはずです。

<tscreen><verb>
server-1:/export/disk  /nfs/server-1  nfs  defaults
server-2:/export/disk  /nfs/server-2  nfs  defaults
</verb></tscreen>

この例では <tt>server-1</tt> と <tt>server-2</tt> のディスク
(/export/disk)を <tt>/nfs/server-1</tt> と <tt>/nfs/server-2</tt> にそ
れぞれ NFS マウントしています。

<em>amd</em> を使う場合、<tt>/etc/fstab</tt> から NFS を指定しているこ
れらの行を削除、あるいはコメントアウトして、以下のコマンドで 
<em>amd</em> を起動します。

<tscreen><verb>
/etc/amd -x all -l syslog -a /amd -- /nfs /etc/amd.server
|      | |    | |       | |     |  | |  | |             |
|      | |    | |       | |     |  | |  | |             |
`------' `----' `-------' `-----' -' `--' `-------------'
|        |      |         |      |   |    |
(1)      (2)    (3)       (4)    (5) (6)  (7)
</verb></tscreen>

ここで：

<enum>
<item> <em>amd</em> の実行ファイルへのフルパスの指定(もちろんフルパス
指定は必須ではありません)。&dollar;PATH の設定によっては 
<em>`amd'</em> だけでも可能です。

<item>`-x all' は全てのログを取る、という指定です。ログの取り方にはいくつか
のレベルがありますので、詳しくはマニュアルを見てください。

<item>`-l syslog' の指定は、ログを <em>syslog</em> daemon 経由で取るこ
とを意味します。<em>syslog</em> daemon を経由すればファイルに出力した
り、ダンプしたり、無視したり、どこかの空いた tty console に出力したり
できます。<em>syslog</em> の代りに直接ファイル名を指定すれば(例えば 
`-l foo')、ログはそのファイル(<tt>foo</tt>)に出力されます。

<item>`-a /amd' の指定は <tt>/amd</tt> ディレクトリを自動マウントの一
時的なマウント地点にすること意味します。このディレクトリは 
<em>amd</em> が自動的に作るので 、古いディレクトリが残っていれば、
<tt>/etc/rc</tt> のスクリプトなどで <em>amd</em> を起動する前に削除す
る必要があります。

<item> `--' は <em>getopt()</em> にそれ以降の部分はオプションとして解
釈しないことを指示します。コマンドラインで `type:=' オプションを使う場
合、この指定をしないと <em>getopt()</em> が間違ってオプションであると
解釈してしまいます。

<item>`/nfs' が<bf>実際</bf>のマウント地点になります。このディレクトリ
も自動的に作成されるので、`type:=direct' オプションを使う場合を除いて、
サブディレクトリが存在してはいけません。

<item> <em>amd</em> の map ファイルの指定。指定している `amd.server' 
は以下のようになっています。

<tscreen><verb>

# /etc/amd.server
/defaults    opts:=rw;type:=nfs
server-1     rhost:=server-1;rfs:=/export/disk
server-2     rhost:=server-2;rfs:=/export/disk
</verb></tscreen>

</enum>

amd が起動してちゃんと動いていれば、

<tscreen><verb>
% amq -ms
</verb></tscreen>

コマンドで現在のマウントの状況を確認することができます。

単に

<tscreen><verb>
% ls /nfs
</verb></tscreen>

としただけではファイルは見えませんが、

<tscreen><verb>
% ls /nfs/server-1
</verb></tscreen>

とすれば、`server-1 ' を自動的にマウントしてその中身を表示します。ちゃ
んと表示されれば <em>amd</em> は正しく働いています。一定時間が経過する
と、このディレクトリは自動的にアンマウントされます。

<em>amd</em> を使って各人のホームディレクトリを管理するような場合、
<tt>/etc/password</tt> はこんな風になります。

<tscreen><verb>
 ...
linus:EncPass:10:0:God:/nfs/server-1/home/linus:/bin/sh
mitch:EncPass:20:10:Mitch DSouza:/nfs/server-1/home/mitch:/bin/tcsh
matt:EncPass:20:10:Matt Welsh:/nfs/server-1/home/matt:/bin/csh
</verb></tscreen>

このように指定しておけば、Linus や Matt、あるいは Mitch が login して
きた場合、彼らのホームディレクトリが適切なサーバーから自動的にマウントさ
れ、logout すれば自動的にアンマウントされます。

<sect1><heading> Linux をルータとして使うには

<p>
Linux はルータとしても機能します。ルータとして使うには <em>gated</em> 
のようなルーティング用デーモンを動かすか、単純な経路制御しか必要なけれ
ば静的なルーティングを指定します。最近のカーネル(1.1.* 以降)を使ってい
る場合、カーネルを再構築する際に、

<tscreen><verb>
IP forwarding/gatewaying (CONFIG_IP_FORWARD) [y] y
</verb></tscreen>

に y を指定する必要があります。

Olaf Kirch の NAG にはネットワークのデザイン法やルーティングについての
説明があるので、詳しく知りたい方はぜひご覧ください。NAG については「関
連文献」の章で触れています。

<sect1><heading>NIS - Sun Network Information System

<p>NIS に興味があれば、<url
url="http://sunsite.unc.edu/mdw/HOWTO/NIS-HOWTO.html"
name="NIS-HOWTO"> をぜひご覧ください。NIS-HOWTO には必要なソフトの入手
法や Linux 用の NIS の設定の仕方について詳しく説明されています。

<sect><heading>実験中/開発中のモジュール

<p>
現在も、多くの人々が新しい機能とモジュールをLinux のネットワークコード
用に開発しています。いくつかはほぼ完成に近い状態になっており充分機能し
ています。そのようなモジュール類をこの章で紹介しています。近い将来、そ
れらが正式にリリースされれば、また適切なところへ移すつもりです。例えば 
AX25 は、アマチュア無線に特化しているので <url
url="http://sunsite.unc.edu/mdw/HOWTO/HAM-HOWTO.html"
name="HAM-HOWTO">に移しました。


<sect1><heading>snmp エージェント

<p>
cmu-snmp のソースから <tt>Erik Schoenfelder
&lt;schoenfr@ibr.cs.tu-bs.de></tt> が移植した snmp エージェントがテス
ト中です。

ソースコードは
<bf>ftp.ibr.cs.tu-bs.de</bf> の
<tscreen><verb>
/pub/local/cmu-snmp2.1.2l3-src.tar.gz
</verb></tscreen>
です。

詳細は附属の <tt>cmu-snmp2.1.213.README</tt> に書いてあるので、ぜひお
読みください。

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 も設定ファイルで指定できます。)


<tt>nstat.tar.gz</tt> には <em>nstat</em> という
<tt>/proc/net/snmp</tt> の出力を整形するフォーマッタが入っています。

このエージェントを使うには Linux v1.1.60 以上、libc v4.6.27 以上が必要で
す。

<sect1><heading>Token Ring 用ドライバ

<p>
<tt>Peter De Schrijver &lt;stud11@cc4.kuleuven.ac.be></tt> が Token
Ring 用のドライバを開発中です。最新版は Linux 1.3.* の公式リリースに入
りました。古いバージョンのカーネル用には

<bf>linux3.cc.kuleuven.ac.be</bf>
<tscreen><verb>
/pub/Linux/TokenRing/TokenRing.patch-1.2.0.gz
</verb></tscreen>

<bf>ftp.cs.kuleuven.ac.be</bf>
<tscreen><verb>
/pub/unix/linux/TokenRing.patch-1.1.64.gz
</verb></tscreen>

などがあります。

いくつかのバージョン用のファイルが入っていますので、お使いのカーネルの
バージョンに合ったものを選んでください。

Token Ring に対応した network 用のプログラムも 
<tt>linux3.cc.kuleven.ac.be</tt>の同じディレクトリにあるのでお忘れなく。

IBM の TROPIC チップセットを使っているボードはほぼ動き、以下のボードで
は動作確認されています。

<itemize>
<item>IBM Token Ring Adapter II
<item>IBM Token Ring 16/4 Adapter
<item>IBM Token Ring Adapter/A
<item>IBM Token Ring 16/4 Adapter/A
<item>HyperRing Classic 16/4
</itemize>

TI のチップセットやバスマスタ DMA を使っているボードは現在のドライバでは
使用できません。ただし、IBM のバスマスタタイプのアダプタ用のドライバを開
発している人もいます。

<sect1><heading>V.35 インタフェースボード

<p>
V.35 は C.C.I.T.T. 規格のインタフェースで、高速バランスシリアルインタフェー
スを利用して、最大 2Mbps でデータの送受信が可能です。 differential pair
balanced 転送を使えば V.35 インタフェースは V.24/RS232C タイプのインタフェー
スよりも長いケーブルが使え、転送速度もより高速です。

<sect2><heading>Internet Technologies International XNET-1

<p>
<tt>Matti Aarnio &lt;mea@mea.utu.fi></tt> は Internet Technologies
International (ITI) の代表です。ITI は <tt>XNET-1</tt> と呼ばれる 8bit 
の X.21 カードを開発しており、このカードは適切なケーブルを使えば V.35 
として利用できます。カード自身についての情報は、

<tscreen><verb>
Internet Technologies International OY,
Helsinki, Finland  <intec@digiw.fi>
Internet Technologies International OY (Ltd)
PO BOX 51
00641 Helsinki
FINLAND
Fax: +356-0-7523939
</verb></tscreen>
まで問い合わせてください。
<p>
このカード用のドライバは
<url url="ftp://ftp.funet.fi/pub/Linux/kernel/xnet-sync-driver.tar.gz"
	name="ftp.funet.fi">.
から入手できます。

<sect2>SDL Communications N2 card.

<p>
<url url="http://www.ici.net/cust&lowbar;pages/sdl/sdl.html"
	name="SDL Communications"> は、ISA バス用に V.35 をサポートしたさ
まざまなコントローラカードを発売しています。

このカード用のベータ版のドライバは、

<bf>ftp.sdlcomm.com</bf>
<tscreen><verb>
/business/sdlcomm/n2/linux
</verb></tscreen>

から入手できます。詳しい情報は SDL のセールス担当の <url
url="mailto:sales@sdlcomm.com" name="Rubin Dhillon">に連絡してみてくだ
さい。

<sect1><heading>SLIP/PPP 用の動的発呼用パッケージ

<p>
<tt>Eric Schernk &lt;schenk@cs.toronto.edu></tt> が SLIP と PPP の双方
から利用可能な動的発呼用のプログラムを開発しました。このプログラムは 
pty 経由で接続するようにデーモンを設定した SLIP デバイスが必要です。
SLIP で接続していない時、ローカルホスト宛てではない全てのデータグラム
はこのデバイスに送られ、デバイスを見張っているデーモンが外部宛のデータ
グラムを検出すれば、接続用のスクリプトを起動してネットワークを接続し、
経路を設定しなおしてデータグラムを送りだします。

<p>
このソフトウェアは以下のサイトから入手できます。

<bf>sunsite.unc.edu</bf>
<tscreen><verb>
/pub/Linux/system/Network/serial/diald-0.7.tar.gz
</verb></tscreen>

<bf>注意：</bf>このデーモンを使うにはpty 経由で接続するように設定した 
SLIP デバイスが必要なので、PPP しか使わない場合でも SLIP ドライバを組
みこんだカーネルを作成する必要があります。

インストールや設定の方法についてはソフトウェアに附属の文書をごらんくだ
さい。

<sect1><heading>ISDN サポート

<p>
いくつか ISDN をサポートしようという試みが進行中です。私が知っているも
のは、


<sect2><heading>3Com-Sonix PC/Arpeggio ドライバ

<p>
Alan Cox が 3Com の arpeggio ISDN カード用のドライバを書きはじめました。
現状では同期 PPP でしか使えません。このドライバは

<bf>sunsite.unc.edu</bf>
<tscreen><verb>
/pub/Linux/kernel/patches/network/sonix.tgz
</verb></tscreen>

にあります。

<sect2><heading>DIEHL SCOM card

<p>
<bf>sunsite.unc.edu</bf>
<tscreen><verb>
/pub/Linux/kernel/patches/network/isdndrv-0.1.1.tar.gz
</verb></tscreen>

<sect2><heading>ICN ISDN and/or Teles ISDN card and/or Creatix AVM ISDN board

<p>
Fritz Elfert, Jan den Ouden と  Thinking Objects 社は ICN ISDN カード
用のドライバを開発しています。このドライバの文書のいくつかはドイツ語で
す。このドライバには異なる ISDN カードをサポートするためにいくつかの変
種が開発されているようなので、うまくいかなかった場合、他のものを試して
みるのもいいでしょう。このドライバは以下のサイトから入手できます。

<bf>ftp.franken.de</bf>
<tscreen><verb>
/pub/isdn4linux/
</verb></tscreen>

あるいは:
<bf>ftp.gwdg.de</bf>
<tscreen><verb>
/pub/linux/misc/isdn4linux/
</verb></tscreen>

<sect2><heading>Euro-ISDN card ?

<p>
Matthias Urlichs <tt>&lt;urlichs@smurf.noris.de></tt>が Streams に基づ
く実験的な ISDN のサポートを開始しました。最新版は kernel 1.3.* 用で、
動いているという聞いたことがあります。

このドライバは：

<bf>ftp.uni-stuttgart.de</bf>
<tscreen><verb>
/pub/systems/linux/isdn/ftp.noris.de/
</verb></tscreen>

から入手できます。

このドライバの説明書はドイツ語で書かれており、プログラムもヨーロッパの 
ISDN ネットワークを前提にしています。Matthias は解説の英語版を準備中で
す。

<sect2><heading>Combinet's Everyware 1000 ISDN card

<p>
Joel Katz <tt>&lt;stimpson@panix.com></tt> は Combinet 社の Everyware 1000 シリー
ズ plug-in ISDN カード用のドライバを開発しています。

このドライバは：

<bf>sunsite.unc.edu</bf>
<tscreen><verb>
/pub/Linux/kernel/patches/network/combinet1000isdn-1.02.tar.gz
</verb></tscreen>
から入手できます。

<sect2><heading>その他の情報：

<p>
Harald Milz は Linux 用の ISDN についての WWW ページを作成しています
<url url="http://www.ix.de/ix/linux/linux-isdn.html"
	name="Linux ISDN Web Page">.
ISDN 全般については、
Dan Kegel の ISDN ホームページ
<url url="http://alumni.caltech.edu/~dank/isdn/"
	name="Dan Kegel's ISDN home page">.
が役にたつでしょう。

<sect1><heading>System-V Streams

<p>
LiS(Linux Streams) というプロジェクトが System-V 互換の Streams を 
Linux に実装しようとしています。これに関する情報は<url
url="http://www.uc3m.es/~LiS/" name="Linux Streams Web Page"> で公開さ
れています。そこにはプロジェクトの進行状況や連絡方法、テスト用のコード
などがあります。

<sect1><heading>ATM (Asynchronous Transfer Mode) 

<p>
Werner Almesberger が Linux 用の ATM に関する情報を集めたホームページ
を作成しています<url url="http://lrcwww.epfl.ch/linux-atm/"
name="lrcwww.epfl.ch">。このページには raw ATM connection と ATM 上に 
IP を送る基本機能を実現した pre-alpha 段階の実験的なコードも登録されて
います。また、ATM についての有益な情報も多数登録されています。

Linux での ATM について議論するためのメーリングリストが用意されていま
す。参加したい人は <tt>majordomo@vger.rutgers.edu</tt> あてに、本文に 
<tt>subscribe linux-atm</tt> と書いたメールを送ってください。


<sect1><heading>X.25 サポート

<p>
X.25 について尋ねる人がたくさんいます。X.25 についてはいくつかの小グルー
プで開発が始まっているようですが、開発のスピードはあまり速くないようで
す。X.25 のサポートに興味があるなら、それらのグループに参加して開発速
度を速めるように努力するのがいいでしょう。私が持っている情報は Alan
Cox が開いているホームページから得たものが全て、そこには開発が進行中の 
2 つのプロジェクトについてのホームページが紹介されています。紹介されて
いるページは<url url="http://www.ping.be/~ping0778/linux-x.25/"
name="www.ping.be">です。


<sect1><heading>Appletalk のサポート

<p>
アップル社のマシン(Macintosh)がネットワーク上に存在し、それらとプリン
タやファイルを共有したい時、linux のアップルトークサポートの出番になり
ます。

以下の情報は主に <tt>Cees de Groot &lt;cg@tricbbs.fn.sub.org></tt> と 
<tt>Dana Baken &lt;dana@millenium.tiac.net></tt>らの経験によるもので
す。


<sect2><heading>Appletalk DDP を組みこんだカーネルの構築

<p>
Alan Cox が Apple Ethertalk の機能をカーネルに実装しました。この機能は 
1.2.* の最新版や 1.3.* のシリーズではカーネルに標準で含まれるようになっ
たので、カーネルの設定時にそれらの機能を使うように設定してカーネルをコ
ンパイルし直すだけで利用可能です。

<tscreen><verb>
#
# cd /usr/src/linux
# make config
 ...
 ...
    Appletalk DDP ? y
 ...
 ...
#
</verb></tscreen>

<sect2><heading>Appletalk の設定用ツールとデーモンの構築方法

<p>
カーネルがサポートしているのは極く基本的なネットワーク機能だけで、より
上位の階層のプロトコルを使うためにはいくつかのソフトウェアが必要になり
ます。

<tt>Wesley Craig &lt;netatalk@umich.edu></tt> がミシガン大学に Reseach
Systems Unix Group という団体を組織して、Appletalk のプロトコルスタッ
クや有益なユーティリティ類を <em>netatalk</em> という名前でまとめてい
ます。

netatalk は以下のサイトから入手できます：

<url url="ftp://terminator.rs.itd.umich.edu/unix/netatalk/"
	name="University of Michigan">

netatalk の 1.3.3.b2 以降のバージョンで Linux がサポートされています。

インストールするには、以下のようにします。

<tscreen><verb>
# cd /usr/src
# tar xvfz .../netatalk
- この時点で Makefile を修正して、このパッケージに含まれるプログラム類が
  インストールされるディレクトリ、DESTDIR を修正した方がいいかも知れませ
  ん。ただし、デフォルトで指定されている /usr/local/atalk というのは問題
  を起しにくい設定になっています。
- 以上でコンパイルすることが可能です。私の環境では `uname' コマンドは 
  /bin ディレクトリには無かったので、Makefile のその部分のみを修正しまし
  た
# make
- ルートになって：
# make install
</verb></tscreen>

これで必要なコマンド類はコンパイル/インストールされたはずです。

&lsqb; 訳注：libc のバージョンによっては 
<tt>/usr/include/sys/uio.h</tt> を 
<tt>/usr/include/sys/linux/uio.h</tt> にシンボリックリンクする必要があっ
たり、netatalk に dirent 用のパッチが必要だったりします。詳細は 
netatalk 附属の README.linux というファイルをご覧ください。&rsqb;

<sect2><heading> AppleTalk 用ソフトウェアの設定

<p>
まず最初に <tt>/etc/services</tt> ファイルに <tt>services.atalk</tt> 
の内容を追加して AppleTalk 用のサービスを利用可能にします。これは単に 
<tt>services.atalk</tt> を <tt>/etc/services</tt> の末尾に追加するだけ
です。

次に <tt>/usr/local/etc/atalk</tt> ディレクトリ(あるいはあなたが変更したディ
レクトリ)に appletalk 用の設定ファイルを作成します。

まず作成すべきファイルは <tt>/usr/local/atalk/etc/Atalkd.conf</tt> ファ
イルです。最初は、このファイルには AppleTalk に接続されているネットワー
クのデバイス名を指定する次の一行のみが必要です(訳注： eth0 の場合は多
分無くても動きます)。

<tscreen><verb>
eth0
</verb></tscreen>

AppleTalk では、設定に必要な情報は定期的にネットワーク上に流されている
ので、atalkd が起動時にその他の詳細な情報を自動的に収集して、追加して
くれます。

<sect2><heading>Appletalk 経由で Linux のファイルを利用する

<p>
Mac からあなたの Linux マシンのファイルシステムを共有できるように設定
することが可能です。

このためには、<tt>/usr/local/atalk/etc/AppleVolumes.system</tt> ファイ
ルを設定する必要があります。

この設定の詳細と指定可能なオプションについては <em>afpd</em> のマニュ
アルページを参照してください。

例えば、以下のような形式になります：

<tscreen><verb>
/tmp Scratch
/home/ftp/pub Public
</verb></tscreen>

この設定で、<tt>/tmp</tt> ファイルシステムを AppleShare の 'Scratch' 
ボリュームとして、<tt>/home/ftp/pub</tt> ディレクトリを AppleShare の 
`Public' ボリュームとして使用可能です。ボリューム名の指定は必須ではな
く、指定しなかった場合、daemon プログラムが自動的に付けてくれます。で
も指定したところで害になることはありません。

<sect2><heading>Appletalk 経由で Linux に接続されたプリンタを利用する

<p>
Linux マシンに接続されているプリンタを Mac から共有することも簡単です。
このためには Appletalk Printer Access Protocol Daemon, <em>papd</em> 
プログラムを利用します。このプログラムは、起動された後、Mac からのプリ
ントリクエストを受けつけて、あなたのマシンのプリンタデーモンに渡してプ
リントします。

このためには <tt>/usr/local/atalk/etc/papd.conf</tt> を設定します。こ
のファイルの形式は <tt>/etc/printcap</tt> と同じです。指定したプリンタ
名は Appletalk の命名プロトコル NBP を使って登録されます。

<tt>/usr/local/atalk/etc/papd.conf</tt> は例えば以下のように設定します。

<tscreen><verb>
TricWriter:\
   :pr=lp:op=cg:
</verb></tscreen>

この設定では、`TricWriter' というプリンタが Appletalk のネットワークか
ら利用可能で、受けつけたプリントは linux の `lp' プリンタへ 
<em>lpd</em> 経由で出力されます。

<sect2><heading>appletalk ソフトウェアの起動
<p>
それでは基本的な設定を試してみましょう。netatalk のパッケージには 
<em>rc</em> ファイルが用意されており、それを起動すれば必要なプログラム
は実行されます。ですから、

<tscreen><verb>
# /usr/local/atalk/etc/rc.atalk
</verb></tscreen>

とやるだけで、必要なプログラムは全て起動されるはずです。エラーメッセー
ジが出力されず、起動の各段階ごとのメッセージがコンソールに出力されてい
れば大丈夫です。

&lsqb; 訳注：atalkd デーモンは起動時に AppleTalk 上を流れる設定を読み
こんで自らを設定するため、起動には多少の時間がかかります。papd 等は 
atalkd が安定してから起動すべきなので、時間がかかるからといって atalkd 
をバックグラウンドにしてはいけません。&rsqb;

<sect2><heading>ちゃんと動いているかのテスト

<p>
netatalk が正しく動いているかどうかは、ネットワークに接続された 
Macintosh から確認します。Mac から「メニュー」を選んで 「セレクタ
(Chooser)」 を出し、「ファイル共有(AppleShare)」 をクリックして、Linux 
マシンの名前が見えれば大丈夫です。

<sect2><heading>いくつかの注意事項
<p>
<itemize>
<item> Appletalk をサポートするプログラムは IP ネットワークの設定以前
に起動する必要があるかも知れません。何か Appletalk について問題が起き
たり、起動後に IP ネットワークに問題が起きるような場合は、Appletalk 用
のソフトウェアは <tt>/etc/rc.d/rc.inet1</tt> 以前に起動してみてくださ
い。

<item> <em>afpd</em>(Apple Filing Protocol Daemon)はハードディスク上に
雑多なファイルを作成します。指定したマウントポイントのディレクトリ
に<tt>.AppleDesktop</tt> と <tt>Network Trash Folder</tt> というディレク
トリを作り、その下に作られたディレクトリそれぞれ
に<tt>.AppleDouble</tt> というリソースフォーク用のディレクトリを作ります。
ですから、<tt>/</tt> を export する前には充分考慮してください。さもな
いと、後日、整理のために多大な時間がかかってしまいます。

<item> <em>afpd</em> プログラムは Mac から平文のパスワードを求めます。
これはセキュリティ面から見ると問題で、このデーモンをインターネットに接
続されたマシンで起動する場合は特に注意してください。さもないと誰かがイ
タズラするかも知れません。

<item> <em>netstat</em> や <em>ifconfig</em> といった既存の診断用ツー
ルは Appletalk をサポートしていません。必要ならば、生情報は 
<tt>/proc/net/</tt>ディレクトリに書きこまれています。

</itemize>

<sect1><heading>IP&lowbar;MASQUERADE -複数のホストを一つに見せる
<p>
もし御自宅にネットワークを張っていたり、複数のマシンが SLIP/plip/ppp 
で相互に接続されているような環境を作っていたり、プライベートなネットワー
クからダイアルアップ経由でインターネットに接続しているような場合、直接
インターネットに接続しているマシン以外からもインターネットに出たいと思
うことがあるでしょう。このような場合、正式には、ローカルなネットワーク
にネットワーク用の IP アドレスを割りあててもらい、接続先のインターネッ
トプロバイダと交渉して、通常の単一ホスト用のルーティングからネットワー
ク用のルーティングに設定を変更してもらう必要があります。残念なことに、
この設定をするとより多くのデータが流れることになるので、ほとんどのプロ
バイダがかなり高額な追加料金を要求しています。

IP&lowbar;MASQUERADING はこのために考えだされた方法で、ローカルのネッ
トワークのマシン全てから発信されるデータグラムのアドレスをリアルタイム
で書きかえて、ネットワークに接続された一台のアクティブなマシンに見せか
けることができます。IP_MASQUERADE のコードの殆んどは <tt>Pauline
Middelink &lt;middelin@polyware.iaf.nl></tt> 作です。

以下に紹介する方法は <tt>Ken Eaves &lt;keves@evs.com></tt> が教えてく
れたものです。役に立てば、Ken に感謝してください。

&lsqb; 訳注：IP&lowbar;MASQUERADE 回りは最新のカーネルでは多少変更され
ており、<em>ipfw</em> ではなく <em>ipfwadm</em> で設定するようになりま
した。<em>ipfwadm</em> では引数も <em>ipfw</em> とは異なるので、以下の
記述は obsolete になっています。最新のカーネルで IP_Masquerade を使う
場合、<url url="http://www.xos.nl/linux/ipfwadm/" name="X/OS のホーム
ページ"> を参照ください。&rsqb;

<sect2>`masq' software の入手方法

<p>IP&lowbar;Masquerade には、現在、linux 1.2.* へのパッチと改造された
<em>ipfw</em>コマンドが必要です。<tt>net-tools</tt> に附属の 
<em>ipfw</em> コマンドには、まだ `masquerade' オプションが組みこまれて
いません。ip&lowbar;masquerade を使うには、カーネルを 
ip&lowbar;firewalling オプションを組み込んで構築しておく必要があります。

パッチファイルは以下のサイトから入手できます：

<bf>ftp.eves.com</bf>
<tscreen><verb>
/pub/masq
</verb></tscreen>

このディレクトリに 1.2.x へのパッチファイルと新しい <em>ipfw</em> コマ
ンド、それに Ken がまとめた <tt>Masquerade FAQ</tt> のファイルがありま
す。この文章は彼の FAQ を元にしてものです。

パッチファイルは <tt>masq-patch.1.2.n</tt> という名前になっています。
<tt>ipfw</tt> と <tt>ipfw-for-1.3.10</tt> というファイルがあり、前者が 
version 1.2.* 用、後者が 1.3.10 用になっています。

<sect2><heading>パッチのインストール方法

<p>
充分新しい 1.2.* のソースコードが <tt>/usr/src/linux</tt> ディレクトリ
にあると仮定します。

<tscreen><verb>
#
# 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
#
</verb></tscreen>

新しいカーネルでシステムを再起動します。新しくコンパイルしたカーネルで
起動していることを確認したら、ちゃんと動く <em>ipfw</em> プログラムを
手に入れましょう。<em>ipfw</em> は通常 <tt>/sbin</tt> にインストールさ
れるので、正しいバージョンの <em>ipfw</em> コマンドを 
<tt>/sbin/ipfw</tt> にコピーします。以上で、カーネルで 
IP&lowbar;masquerade を使う準備ができました。

<sect2>IP_MASQUERADE の設定方法は？
<p>
IP_MASQUERADE の設定方法は使っているネットワークの構成に依存します。一
般的に言いますと：インターネットに接続したいローカルネットワークのマシ
ンは全てデフォルトの経路を IP_MASQUERADE をサポートしている linux マシ
ンに指定します。次に、その linux マシンの firewall テーブルに、それら
のローカルなマシンが masquerade されるように設定します。

IP-MASQUERADE 機能を設定するには <em>ipfw</em> コマンドが必要です。
<em>ipfw</em> コマンドは、通常、Linux のファイアウォール機能を設定する
ために使うコマンドですが、masqeurade するホストは一種のファイアウォー
ルとして機能するので、<em>ipfw</em> を改造して、masquerade に関する機
能を追加しています。

ほとんどの場合をカバーするような 2 つの例を示しておきましょう。もっと
複雑な設定をする必要があるなら、自分自身で経験を積んでください。

2 つのマシンが SLIP や ppp でつながっている場合：

<tscreen><verb>
 .-------.             .-------.
 |       |    SLIP     | linux |   SLIP/ppp
 | local |-----//------| masq  |-----//-------> ISP へ
 |       |             | svr   |
 ._______.             ._______.

         ^            ^         ^
         |            |         |
    192.168.0.2   192.168.0.1  動的に割りあてられる
</verb></tscreen>

<tt>/etc/rc.d/rc.inet1</tt> ファイルに以下のような記述を追加します。

<tscreen><verb>
 ...
 ...
# 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
 ...
 ...
</verb></tscreen>

<tt>iii.iii.iii.iii/nn</tt> という書き方に注意してください。
<tt>/nn</tt> の意味と計算の方法をお知りになりたいかもしれませんね。こ
の書き方は、ip アドレスとネットマスクを合わせて表示するもので、
<tt>iii.iii.iii.iii</tt> の先頭から <tt>/nn</tt> で指定したビット数だ
けマッチする、という意味になります。この例では一つのホストが対象なので、
全てのビットをマッチさせる必要があります。IP アドレスは 32 ビットなの
で、 <tt>/32</tt> で全てのビットを意味します。

イーサネットで構成されたプライベートなネットワーク上のマシンがインター
ネットと接続された一台のマシンを利用する場合。

<tscreen><verb>
 .-------.    _
 |       | .2 |
 | local |----|
 |       |    | <-- Ethernet lan
 ._______.    |     192.168.0.0 netmask 255.255.255.0
              |
              |
 .-------.    |        .-------.
 |       | .3 |     .1 | linux |   SLIP/ppp
 | local |----|--------| masq  |-----//-------> ISP へ
 |       |    |        | svr   |
 ._______.    -        ._______.

                                ^
                                |
                               動的に割り当てられる
</verb></tscreen>

この設定の場合、ネットワーク全体を意味するエントリを指定する必要があり
ます。ですから、rc.inet1 はこんな風になるでしょう。

<tscreen><verb>
 ...
 ...
# 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
 ...
 ...
</verb></tscreen>

繰り返しますが、ネットマスク(255.255.255.0)と <em>ipfw</em> の指定の仕
方の関係に注意してください。class C のネットワーク(255.255.255.0)では
ネットマスクは 24 ビットです。

よく使われるネットマスクとそれがマッチするビット数を表にしてみました。

<tscreen><verb>
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
</verb></tscreen>

<sect2><heading>IP_MASQUERADE について議論されている場所

<p>
<tt>masq@eves.com</tt> で IP_MASQUERADE についてのメーリングリストが開
設されていましたが、現在は停止しているようです。

<sect1><heading>IP ALIAS 一つのインターフェースに複数のアドレスを設定する方法
<p>
WWW サーバーを動かしていて複数の仮想サーバーを使いたい場合、あるいは同
じ配線の上に複数のサブネットを切っているようなネットワークを使っている
場合、一つのインターフェースで複数のアドレスに対応する機能があれば便利
です。

この機能は <em>ipalias</em> と呼ばれ、一つのインターフェースに複数のア
ドレスを設定することを可能にします。

<tt>Robert Sanders &lt;rsanders@mindspring.com></tt>がこの機能を開発し、
1.2.* カーネルへのパッチとして配布しています。また、<tt>Juan Jose
Ciarlante &lt;jjciarla@raiz.uncu.edu.ar></tt> が 1.3.50++ 用に 全く新
しいバージョンを開発し配布しています。


<sect2><heading> 1.2.* カーネル用のパッチファイル

<p>
パッチは以下のサイトから入手できます：

<bf>ftp.procyon.com</bf>
<tscreen><verb>
/pub/linux/ipalias
</verb></tscreen>

インストールするには 1.2.1 のカーネルのソースコードが必要で、
<tscreen><verb>
# cd /usr/src/linux
# patch -p1 .../alias-patch-1.2.1-v1
# make config
# make dep; make clean; make zlilo
</verb></tscreen>
とします。

ipalias を使うには <em>ifconfig</em> と <em>netstat</em> コマンドもそ
の機能に対応したバージョンが必要で、それらは 
<tt>alias-net-tools.tar.gz</tt> として提供されています。


<sect3><heading> 1.2.* 用の設定

<p>ip alias を設定するには、その機能に対応している <em>ifconfig</em> 
を使って以下のように実行します。

<tscreen><verb>
# ifconfig eth0 alias 198.71.200.5
</verb></tscreen>

この例では、すでに eth0 をネットワーク用に設定してあるところに 
<tt>198.71.200.5</tt> のアドレスを追加するような設定になっています。


<sect2><heading>1.3.50++ カーネル用の設定

<p>
1.3.50++ ではパッチは不要です。カーネルを再構築する際の <tt>make
config</tt> で <tt>Network aliasing (CONFIG_NET_ALIAS) [N/y/?] </tt>
という質問に yes と答えるだけです。

<sect3><heading>1.3.50++ カーネルでの IP_ALIAS の設定

<p>
新しい ip_alias では、より適切な方法で新しいネットワークインタフェース
を作っています。カーネルにその機能があるかをチェックするには 
<tt>/proc/net/alias*</tt> を見てください。正しいカーネルならば、
<tt>aliases</tt> と <tt>alias_types</tt> という 2 つのファイルが 
<tt>/proc/net</tt> ディレクトリにあるはずです。
<p>
エイリアスを設定するには、修正されていない <em>ifconfig</em> プログラ
ムを使ってちょっとしたトリックをすることになります。新しく設定されるポー
トは実際の物理的なポート名に拡張子を付けた名前を持ちます：

<tscreen><verb>
# ifconfig eth0:0 192.168.1.1
# route add -host 192.168.1.1 dev eth0:0
</verb></tscreen>
エイリアスは '0' から始まっていることに注意してください。ですから 
<tt>eth0:1</tt> は 物理的な <tt>eth0</tt> デバイスの 2 つめのエイリア
スになります。

<p>
エイリアスを削除するには <em>ifconfig</em> を使って：
<tscreen><verb>
# ifconfig eth0:0- 0
</verb></tscreen>
とします。

'-' はカーネルにそのエイリアスを削除して、対応する全ての経路と arp の
エントリも削除するように伝えます。

<sect><heading>診断用ツール - どこが悪いか調べるには？

<p>
このセクションでは一般に使われているネットワークの状態診断用のプログラ
ムを簡単に紹介した上で、それらを使ってネットワーク上の問題点を発見する
方法について説明します。そのためにもう少し詳しく tcp/ip の仕組みについ
ても解説します。この文書ではそれぞれのプログラムの働き方の詳細について
触れる機会がなかったので、ここで簡単にそれぞれのプログラムについて説明
しておくつもりです。今までに述べてきた点については、より詳しく
知るために参照すべき文書やマニュアルページを紹介しているので、それらを
ご覧ください。

<sect1><heading>ping - そこにいるかい？
<p>
<em>ping</em> プログラムは NetKit-B のディストリビューションに含まれて
います。このディストリビューションについては「ネットワーク用アプリケー
ション」のセクションで詳しく説明しています。<em>ping</em> コマンドは、
その名が示すように(訳注：ping とは、潜水艦が敵艦を発見するために打つソ
ナーを意味します)、ターゲットとなるホストがデータグラムを受けとり、正
しく返答してくるか、また通過してゆくネットワークも正しく働いているかど
うかをチェックするものです。一番簡単な使用法は、

<tscreen><verb>
# ping gw
PING gw.vk2ktj.ampr.org (44.136.8.97): 56 data bytes
64 bytes from 44.136.8.97: icmp_seq=0 ttl=254 time=35.9 ms
64 bytes from 44.136.8.97: icmp_seq=1 ttl=254 time=22.1 ms
64 bytes from 44.136.8.97: icmp_seq=2 ttl=254 time=26.0 ms
^C

--- gw.vk2ktj.ampr.org ping statistics ---
3 packets transmitted, 3 packets received, 0% packet loss
round-trip min/avg/max = 22.1/28.0/35.9 ms
#
</verb></tscreen>
とするだけです。

<em>ping</em> の動作は、与えられたホスト名を IP アドレスに変換して 
<em>icmp</em> プロトコルを利用して、ターゲットとなるホストに <em>icmp
echo request</em> を定期的に送ることだけです。<em>icmp echo
request</em> を受ける度にリモートホストは <em>icmp echo reply</em> デー
タグラムを返送してきます。`64 bytes from ...' の各行は <em>echo
request</em> に対応する返答(<em>echo reply</em>)を示します。各行は返答
をしているホストの IP アドレス、返答の番号、ttl(time to live) フィール
ド、かかった時間、の各項目から成っています。かかった時間(round trip
time)は <em>echo request</em> のデータグラムが送られてから <em>echo
reply</em>が帰ってくるまでにかかった時間です。この数字は 2 つのマシン
をつないでいるネットワークが速いか遅いかを示す目安になります。
<p>
中断後に表示される 2 行は、転送されたデータグラム数と有効な返答数、失
なわれたデータグラム数についての統計です。失なわれたデータグラム数が多
い場合、二台のマシンを接続しているネットワークのどこかで、ルーターやリ
ンクの容量が溢れたとかイーサネットで多数のコリジョンが発生しているといっ
た問題が生じている可能性があります。異なるネットワーク上にあるマシンに
対して <em>ping</em> してみることで、問題が発生している箇所を特定する
ことが可能です。ある地点まではパケットがちゃんと届いているのに、そこを
越えると 届かなくなるようなような場合、問題はその間に起きています。


<sect1><heading>traceroute - どうやってそこへ行く？
<p>
<em>traceroute</em> コマンドは既述の NetKit-A に入っています。このコマ
ンドは、基本的には、目的のホストまでどのような経路を通って接続するかを
示すものです。<em>traceroute</em> は <em>icmp</em> プロトコルも使いま
すが、通過してゆく経路を示すために多少の工夫をしています。その工夫とは、
転送するデータグラムの <em>ttl</em> フィールドを操作することです。 
<em>ttl</em> フィールドとは、迷子になったデータグラムがループ状態に陥
いらないようにするため仕組みで、データグラムがルータを経由する度に 
<em>ttl</em> フィールドの数字を一つ減らし、それが 0 になった時点で、そ
のデータグラムを受けたルータかホストがデータグラムの寿命が尽きたという
メッセージ(<em>icmp time to live expired message</em>)を発信元のホスト
に送ります。<em>traceroute</em> はこのメカニズムを使って、<em>ttl</em> 
フィールドを最初は 1 に設定し、1 ステップ経過するごとに <em>ttl</em> 
フィールドを一つずつ増やした <em>udp</em> データグラムを送信しています。
データグラムの寿命が尽きたというメッセージが帰ってきたアドレスを記録し
ていくことで、目的地までの経路を決定することができます。例えばこんな風
に利用します：

<tscreen><verb>
# traceroute minnie.vk1xwt.ampr.org
traceroute to minnie.vk1xwt (44.136.7.129), 30 hops max, 40 byte packets
 1  gw (44.136.8.97)  51.618 ms  30.431 ms  34.396 ms
 2  gw.uts (44.136.8.68) 2017.322 ms  2060.121 ms 1997.793 ms
 3  minnie.vk1xwt (44.136.7.129) 2205.335 ms  2319.728 ms  2279.643 ms
#
</verb></tscreen>

最初の数字は何ホップ離れているか(<em>ttl</em> の値)を示し、2 つめの欄
はその返答を返してきたホストのホスト名とアドレス(ホスト名がわからない
場合はアドレスのみ)を示します。第 3、第 4、第 5 の欄は、そのホストへ送っ
た 3 つのデータグラムが往復するまでにかかった時間です。この例では、ま
ず gw.vk2ktj へ接続し、そこまでの往復に要した時間を 3 つ表示しています。
次のホストはgw.uts.apmr.org で、minnie.vk2xwt.ampr.org はもう一つ先で
す。それぞれのステップに要した時間から、ネットワークの状態をある程度推
測することが可能です。この例では、 gw マシンまでの時間はごく短いので 
gw マシンとはイーサネットで接続されていると考えることができます。
gw.uts には gw に比べてかなり時間がかかっており、低速の無線回線を経由
していると考えられます。一方、minnie.vk1xwt は gw.uts よりもほんの少し
時間がかかっているだけなので、minnie.vk1xwt と gw.uts は高速な回線で結
ばれていると推測できます。
<p>
traceroute してみて、経過時間の後に <tt>!N</tt> という記号が付いた場合、
「ネットワーク的に到着不能(<em>network unreachable</em>)」であることを
示しています。このメッセージは、返答を返しているホストやルータが目的の
アドレスへの経路を見つけられない時に生じます。このメッセージが出る場合、
ネットワークのどこかがダウンしているのでしょう。最後に示されるアドレス
がリンクの切れている直前の部分です。
<p>
同様に <tt>!H</tt> という記号が出ている場合、「ホストへ到着不能
(<em>host unreachable</em>)」状態を示します。この場合、ネットワーク的
には目的のホストまで到達しているものの、何らかのトラブルでそのホストが
返答できなくなっている状態です。

<sect1><heading>tcpdump - ネットワークの活動調査
<p>
<tt>Adam Caldwell &lt;acaldwel@103mort2.cs.ohiou.edu></tt> が linux へ 
<em>tcpdump</em> を移植しました。<em>tcpdump</em> を使えば、あなたのマ
シンを経由して出入りするデータグラムを監視することができます。
<em>tcpdump</em> は、ネットワーク上の問題点を診断するのにも利用できま
す。

tcpdump のソースとバイナリは<url
url="ftp://ftp.funet.fi/pub/OS/Linux/PEOPLE/Linus/net-source/tools/tcpdump-3.0.3.tar.gz"
name="103mor2.cs.ohiou.edu"> から入手できます。

<em>tcpdump</em> はそのマシンを経由していくデータグラムを傍受して、多
少暗号めいた形のテキストフォーマットで表示します。<em>tcpdump</em> は、
プロトコルエラーや原因不明の切断といった問題を分析するのに役立ち、ネッ
トワークに何が起っているのかを直接見ることを可能にします。
<em>tcpdump</em> をきちんと活用するには各種のプロトコルやその働き方に
ついての知識が必要ですが、特にそれらの知識がなくても様々な用途に使うこ
とができます。例えば、ルーティングに関する問題が生じている時に、データ
グラムが正しいポートからやり取りされてるかどうか、あるいは接続先から正
しくデータグラムを受けとっているかどうかなどを見ることができます。

簡単な tcpdump の出力例です。
<tscreen><verb>
# tcpdump -i eth0
tcpdump: listening on eth0
13:51:36.168219 arp who-has gw.vk2ktj.ampr.org tell albert.vk2ktj.ampr.org
13:51:36.193830 arp reply gw.vk2ktj.ampr.org is-at 2:60:8c:9c:ec:d4
13:51:37.373561 albert.vk2ktj.ampr.org > gw.vk2ktj.ampr.org: icmp: echo request
13:51:37.388036 gw.vk2ktj.ampr.org > albert.vk2ktj.ampr.org: icmp: echo reply
13:51:38.383578 albert.vk2ktj.ampr.org > gw.vk2ktj.ampr.org: icmp: echo request
13:51:38.400592 gw.vk2ktj.ampr.org > albert.vk2ktj.ampr.org: icmp: echo reply
13:51:49.303196 albert.vk2ktj.ampr.org.1104 > gw.vk2ktj.ampr.org.telnet: S 700506986:700506986(0) win 512 <mss 1436>
13:51:49.363933 albert.vk2ktj.ampr.org.1104 > gw.vk2ktj.ampr.org.telnet: . ack 1103372289 win 14261
13:51:49.367328 gw.vk2ktj.ampr.org.telnet > albert.vk2ktj.ampr.org.1104: S 1103372288:1103372288(0) ack 700506987 win 2048 <mss 432>
13:51:49.391800 albert.vk2ktj.ampr.org.1104 > gw.vk2ktj.ampr.org.telnet: . ack 134 win 14198
13:51:49.394524 gw.vk2ktj.ampr.org.telnet > albert.vk2ktj.ampr.org.1104: P 1:134(133) ack 1 win 2048
13:51:49.524930 albert.vk2ktj.ampr.org.1104 > gw.vk2ktj.ampr.org.telnet: P 1:28(27) ack 134 win 14335

 ..
#
</verb></tscreen>

<em>tcpdump</em> を引数なしで起動した場合、loopback デバイス以外の、
(一番小さい番号の)最初のネットワークデバイスを監視対象にします。上記の
例のようにモニタするデバイスをコマンドラインの引数で与えることも可能で
す。起動されると、<em>tcpdump</em> は送受信される全てのデータグラムを
テキストの形で、1 データグラム 1 行に示します。最初の欄はデータグラム
が送受信された時間です。残りの部分はそのデータグラムのタイプによって変
ります。上記の例では、最初の 2 行は alvert.v2ktj から gw.vk2ktj への 
arp request のようです。次の 4 行は albert.vk2ktj から gw.vk2ktj への 
2 回の ping でしょう。このように tcpdump は送受信された icmp データグ
ラムの名称を示します。「大なり記号(&gt;)」はどこからどこへデータグラムが
送られたのか、"送り手 &gt; 受け手" の形で示しています。例の残りの部分は 
albert.vk2ktj から gw.vk2ktj への telnet 接続を行なっています。
<p>
ホスト名の最後についている数字や名前は使われているソケット番号を示して
います。数字をサービス名に変換するには <tt>/etc/services</tt> ファイル
に登録されている情報を参照しています。
<p>
<em>tcpdump</em> は各フィールドを展開するので、いくつかのデータグラム
では window の値や mss パラメーターを見ることも可能です。
<p>
指定可能なオプションは <em>tcpdump</em> のマニュアルページに記載されて
います。

<bf>PPP ユーザーへの注意</bf>：現在のバージョンの <em>tcpdump</em> は 
PPP プロトコルに対応していません。Al Longyear が PPP 用のパッチを作っ
ていますが、これは <em>tcpdump</em> の公式版には取りこまれていません。
パッチは <tt>sunsite.unc.edu</tt> の <em>tcpdump</em> と同じディレクト
リにあります。

<sect1><heading>icmpinfo - icmp 情報の記録

<p>
ICMP すなわち、Internet Control Message Protocol は使っている IP ネッ
トワークの健全さについての情報を送っています。ICMP メッセージは黙って
送受信されるので、その存在に気づくことはまずありません。
<em>icmpinfo</em> は 沈黙のうちに送信される ICMP メッセージを 
<em>tcpdump</em> のように表示するためのプログラムです。<tt>Laurent
Demailly &lt;dl@hplyot.obspm.fr></tt> が bsd の ping のソースを徹底的
に修正して作成しました。

<em>icmpinfo</em> の 1.10 は以下のサイトから入手できます：

<bf>hplyot.obspm.fr</bf>
<tscreen><verb>
/net/icmpinfo-1.10.tar.gz
</verb></tscreen>

コンパイルはごく簡単です。

<tscreen><verb>
# cd /usr/src
# cd icmpinfo-1.10
# gzip -dc icmpinfo-1.10.tar.gz | tar xvf -
# make
</verb></tscreen>

<em>icmpinfo</em> を走らせるには root 権限が必要になります。
<em>icmpinfo</em> の出力は起動した tty に直接表示したり 
<em>syslog</em> 経由で記録することが可能です。

どのように動くのかをテストするには <em>icmpinfo</em> を起動してから接
続先のホストへ <em>traceroute</em> してみるのがいいでしょう。
<em>traceroute</em> が使っている <em>icmp</em> メッセージが出力される
はずです。

<sect><heading>FAQ と簡単な答
<p>
以下にしばしば尋ねられる質問と答えをまとめてみました。

<sect1><heading>全般的な質問：

<p>
<descrip>

<tag>インターネットに接続されたマシンには電話回線経由の端末としてしか
接続できないんですが、このマシンを使って自分のマシンをインターネットに
接続できますか？
</tag>

可能です。<em>TERM</em> というプログラムを調べてください。
<em>TERM</em> を使えば通常のターミナル接続を経由してネットワーク接続が
可能になります。ただし、使用するアプリケーションプログラムも 
<em>TERM</em> 用に修正する必要がありますが、よく使われているアプリケー
ションにはバイナリやソースが用意されています。より詳しくは <url
url="http://sunsite.unc.edu/mdw/HOWTO/Term-HOWTO.html"
name="TERM-HOWTO"> をご覧ください。

<tag>私のマシンに telnet/ftp/rlogin しようとしても応答が帰ってきません。

</tag>ネームリゾルバの設定を間違っているのでしょう。「/etc/resolv.conf」 
についての章を再読してください。少なくともネームサーバー用のエントリは設
定しておく必要があります。

<tag>インターネットに接続しないネットワーク環境を構築したいのですが、
使っていいアドレスは決っていますか？

</tag>RFC1597 がプライベートネットワーク用にいくつかの IP アドレスを予
約しています。これらのアドレスを使う限り、事故でインターネットに接続し
てデータグラムを流してしまってもトラブルは生じないはずです。予約されて
いるアドレスは：

<tscreen><verb>
10.0.0.0        -   10.255.255.255
172.16.0.0      -   172.31.255.255
192.168.0.0     -   192.168.255.255
</verb></tscreen>
の部分です。

予約されてるアドレスは Class-A,B,C それぞれに存在しているので、ネット
ワークのデザインやサイズを限定する必要はありません。インターネットに接
続しない限り、そのネットワーク内部でアドレスが一意に決まっていれば、他
のグループやネットワークが使っているものと同じアドレスを使っても問題に
はなりません。

<tag>ローカルのネットワークとインターネットを電話回線を使って接続した
いのですが可能でしょうか？

</tag>以下のような 3 種類のオプションがあります。
<itemize>
<item> 接続先のプロバイダにお願いして、host route の代りに network
route を使う方法。これは高価かも知れませんが、性能や技術的には最善の方
法です。

<item> ダイアルアップ接続を `SOCKS' を使ったファイアウォールのように設
定する方法。この方法を使うには <em>proxy</em> の設定が必要で、インター
ネットの側から見るとルータが反応しているように見えるけれど、実際にはロー
カルのネットワーク上にあるマシンが反応しているように設定する必要があり
ます。この方法についての詳細は <url
url="http://sunsite.unc.edu/mdw/HOWTO/Firewall-HOWTO.html"
	name="Firewall-HOWTO"> をご覧ください。ただし、この方法を使うには、
ローカルのネットワーク上のマシンで SOCKS 機能に対応したプログラムを用
意する必要があります。

<item><tt>IP-Masquerade</tt> を使う方法。これが一番直接的で、ローカル
のネットワーク上のマシンにも特別のクライエントは不要なため、最も単純な
方法と言えるでしょう。IP-Masquerade を使うと自動的に IP アドレスが変換
されて、ローカルのネットワーク上にあるマシンを直接インターネットに電話
回線で接続しているマシンのように見せかけることが可能です。
IP-Masquerade には(<em>ICMP</em> を通さないなど)いくつかの制限がありま
すが、完全なファイアウォールゲートウェイよりはずっと軽く実現することが
可能です。

</itemize>

<tag>ftp.linux.org.uk がダウンしている場合、必要なファイルの入手先は？

</tag>Alan Cox のファイルは以下のサイトにミラーされています。

<bf>ftp.Uni-Mainz.DE</bf>
<tscreen><verb>
/pub/Linux/packages/Net2Debugged
</verb></tscreen>

あるいは/また：

<bf>ftp.infomagic.com</bf>
<tscreen><verb>
/pub/mirrors/linux/sunacm
</verb></tscreen>

<tag>今使っている kernel/net code のバージョンを知るには？

</tag>現在では、ネットワークコードとカーネルは同期したバージョンナンバーを持っ
ているので、

<tt>uname -a</tt>
か
<tt>cat /proc/version</tt>

としてください。

<tag>telnet ユーザーが接続した時に表示されるメッセージを変えるには？

</tag> getty 経由でログインしてきた場合、<tt>/etc/issue</tt> の内容が
表示されます。<em>telnetd</em> によっては <tt>/etc/issue.net</tt> を使っ
ていることもあります。もし <tt>/etc/issue</tt> を変えても表示されるメッ
セージが変らなければ <tt>/etc/issue.net</tt> を変えてみてください。
</descrip>

<sect1><heading>エラーメッセージ：

<p>
<descrip>

<tag>'eth0: transmit timed out' というエラーが出つづけるんですが、どういう
意味ですか？

</tag>このメッセージが出るのは、イーサネットケーブルが外れているかイーサネッ
トカードの設定パラメーターが間違っている(I/O アドレス、IRQ など)場合で
す。起動時のメッセージをチェックしてカードのイーサネットアドレスが正し
く認識されているか確認してください。正しく認識されているようなら、他の
ハードウェアと IRQ や I/O アドレス、DMA などが衝突していないかチェック
してください。例えばサウンドブラスターの工場出荷時の設定では多くのネッ
トワークカードと IRQ や i/o ポートが衝突しています。

<tag>ネットワークを使っているとき、`check Ethernet cable' というメッセージ
が出ます。

</tag>
恐らくイーサネットカードの設定が間違っているのでしょう。
<tt>/usr/src/linux/drivers/net/CONFIG</tt> を再チェックしてみてくださ
い。もしこの設定に問題が無ければ多分ケーブルの問題でしょう。ケーブル類
が確実に接続しているかも確認してください。

</descrip>

<sect1><heading>経路制御の問題：

<p>
<descrip>

<tag>route コマンドを使った時、`obsolete route request' というメッセージが
出るんですが？
</tag>
カーネルよりも古いバージョンの <em>route</em> コマンドを使っているようなので新
しいバージョンの <em>route</em> コマンドにアップグレードしてください。最新のプ
ログラムを入手するには「ネットワーク設定用ツール」の章をご覧ください。

<tag>ネットワークにつなごうとすると `network unreachable' のメッセージが出
ます。
</tag>

このメッセージはあなたのマシンか経由しているマシンから <em>ping</em> 
しているマシンや接続しようとしているマシンへの経路が見付からない時に表
示されます。試したホスト全てでこのメッセージが出る場合、デフォルト・ルー
トの設定が間違っているのでしょう。「経路制御(routing)」の項を再読して
ください。


<tag>サーバーマシンやゲートウェイマシンへは ping できるんですが、そこか
ら外部のマシンには接続できません。

</tag> これは恐らく経路制御に関する問題です。「経路制御(routing)」の項
を再読してください。経路制御の部分に問題が無ければ、接続しようとしてい
るホストからあなたのマシンへの経路が正しく設定されているかを確認してく
ださい。電話回線経由の接続の場合、これが最もよくある原因で、接続先のサー
バーマシンで <em>gated</em> や <em>routed</em> といった経路制御用のプ
ログラムがちゃんと起動しているか、あるいは <em>`代理(proxy) arp'</em> 
の設定がなされているか確認してください。これらが正しく設定されていない
と、リモートホストへデータグラムを送ることはできるもののあなたのマシン
へデータグラムを返送することができません。

</descrip>

<sect1><heading>Linux を Novell のファイルサーバーあるいは NFS として使うには？

<p>
<descrip>

<tag>手元にある Novell のファイルサーバーを Linux マシンと一緒に使いた
いんですが？

</tag>
<url url="http://sunsite.unc.edu/mdw/HOWTO/IPX-HOWTO.html"
	name="IPX-HOWTO"> を読んでください。この HOWTO には NFS のプログラ
ムが無くても Novell のファイルサーバーを Linux マシンから使う方法につい
て書いてあります。

<tag>NFS 上のファイルが壊れてしまうんですが、、

</tag>いくつかのベンダー(Sun をはじめ)では、 UDP のチェックサム機能を持たな
い NFS を持つマシンをリリースしていました。これはイーサネットの性能を
上げるには貢献しますが、その他にとっては致命的です。ほとんどのファイル
サーバーでは UDP チェックサム機能が利用可能ですし、Linux も pl13 以降
ではデフォルトでこの機能を使用しています。しかし、サーバーとクライエン
トの双方でこの機能が使えないと意味がありません、、、

<tag>なぜ NFS 上のファイルは全てリードオンリーになっているのでしょう？
</tag>Linux の NFS サーバーはデフォルトでリードオンリーの属性になりま
す。詳細については <em>`exports'</em> と <em>nfsd</em> のマニュアルを
ご覧ください。Linux 以外のサーバーでは <tt>/etc/exports</tt> を修正す
る必要があります。

</descrip>

<sect1><heading>SLIP についての質問：

<p>
<descrip>

<tag>SLIP サーバーの IP アドレスを知らない場合、どうすればいいですか？

</tag>
実際のところ、<em>dip</em> が SLIP サーバーに接続して SLIP 機能を果す
ためには、サーバーの IP アドレスを指定する必要はありません。 
<em>remote</em> オプションを指定すれば、<em>dip</em> は自動的に 
<em>ifconfig</em> と <em>route</em> コマンドを実行してくれます。もし本
当にサーバーのアドレスが不明で、それを知る方法も無いなら、<tt> Peter
D. Junger &lt;Junger@samsara.law.cwru.edu></tt> が教えてくれた方法が役
に立ちます。彼によると、<em>dip</em> スクリプトが利用するリモートアド
レスにも自分のアドレスを指定するんだそうです。これはちょっと醜い方法で
すが、実際には SLIP でやりとりするデータグラムにはサーバーのアドレスは不
要なので、ちゃんと動きます。


<tag>`dip' がルート権限でしか動きません。
</tag>
<em>dip</em> は経路制御表(routing table)を書き変えるなどの作業のために
ルートの setuid しておく必要があります。Uri Blumenthal によると、以下
の方法が可能だそうです。

<itemize>
<item><tt>/etc/group</tt> に <em>dip</em> というグループを作り、
<em>dip</em> を使って接続したいユーザーを全て登録する。

<item> 次に、ルートでログインして、以下のコマンドを実行する。

<verb>
# chown root.dip /usr/bin/dip
# chmod u=rx,g=x,o= /usr/bin/dip
# chmod u+s /usr/bin/dip
</verb>
</itemize>

電話回線経由で接続してくるユーザーについては <tt>/etc/diphosts</tt> ファ
イルで何ができるかを制限することができます。

<tag>`<tt>DIP: tty: set_disc(1): Invalid argument</tt>' というメッセー
ジが出るのですが？
</tag>

多分 <em>SLIP</em> をサポートするようにカーネルをコンパイルしていない
のでしょう。<tt>/proc/net/dev</tt> を調べて <tt>sl0</tt> や 
<tt>sl1</tt> というデバイスがあるか確認してみてください。あるいは 
<em>dip</em> のバージョンがすごく古い場合もこのエラーが出る可能性があ
ります。その場合は <em>dip</em> をバージョンアップしましょう。



<tag>あるホストに ping したら `<tt>wrong data byte &num;17...</tt>' と
いうエラーになります。
</tag>

多分、モデムが XON/XOFF フロー制御を使うように設定されているいるのでしょ
う。SLIP を使うには 8 ビットクリーンでなければいけませんので、XON/XOFF 
を使ったフロー制御は使えません。それ以外の点でも、ハードウェアを用いた
フロー制御の方が優れているので、そちらを使うように設定してください。

<tag>ping はできるけど、telnet や ftp が使えないんです。
</tag>

多分、サーバーとあなたのマシンの間でヘッダの圧縮機能を使うかどうかを正
しく設定できてないのでしょう。両者の間で圧縮機能を使うか否かを再度確認
してみてください。両者で同じ設定になっていなければなりません。

<tag>SLIP を使っている時に回線を切断する方法は？
</tag>
dip を使って接続したなら `<em>dip -k</em>' とすれば切断します。ダメな
ら、動いている <em>dip</em> のプロセスを殺してください。<em>dip</em> 
が死ねば、回線は切断します。プロセスを正しく殺すには、以下の手順に従い
ます。<em>dip</em> のプロセス番号を <em>&lt;pid&gt;</em> とすると、
`<em>kill &lt;pid&gt;</em>', `<em>kill -hup &lt;pid&gt;</em>' それでもだめな
ら `<em>kill -9 &lt;pid&gt;</em>' とします。この方法は、他の unix のプロ
セスを殺すために使えるので覚えておけばいいでしょう。

<tag>SLIP ポートに多数の overrun エラーが出るのですが？
</tag>

古いバージョンのネットワーク用のソフトでは、圧縮されたパケット数を 
overrun したパケット数と誤認します。この種のエラーは新しいカーネルとネッ
トワーク用のソフトを使っている場合は起きないはずです。もしそれでもこの
エラーが発生する場合、マシンがデータを受けとる速度についていけないので
しょう。もしシリアルカードが 16550AFN UART チップを使っていない場合、
使っているものにアップグレードすれば解決するかも知れません。16450 や 
8250 チップでは一文字を受けとる度に割り込みが発生するので CPU にはかな
りの負荷になります。16550AFN は 16 バイト分の FIFO があるので FIFO が
一杯になりかけた時か、新しいデータを待っている時しか割り込みが発生せず、
同じ量のデータを受信する場合にも発生する割り込みの数はずっと少くなり、
シリアルポートに割く CPU パワーもずっと少なくてすみます。複数のシリア
ルポートを使っている場合は 16550AFN UART チップのカードにバージョンアッ
プすることが必須でしょう。

<tag>二つの SLIP インターフェースを利用できますか？

</tag>はい、可能です。例えば 3 台のマシンを相互に接続したいような場合、 
一台のマシンに二つの SLIP インタフェースを用意して接続するでしょう。二
つめのインタフェースも一つ目と同様に設定します。二つ目のインタフェース
には最初のものとは異なる IP アドレスが必要なことに注意してください。き
ちんと使うためには経路制御(routing)に関する知識が必要ですが、ちゃんと
動くはずです。

<tag>マルチポートの I/O カードを使っていますが、4 つ以上の SLIP ポートを使
えますか？
</tag>
カーネルに組みこまれた SLIP はデフォルトで最大 4 つまでの SLIP デバイ
スが定義されています。この定義は 
<tt>/usr/src/linux/drivers/net/slip.h</tt> にあるので、もし 16 まで増
したければ <tt>#define SL_NRUNIT</tt> を 4 から 16 にします。加えて 
<tt>/usr/src/linux/drivers/net/Space.c</tt> にも <tt>sl4</tt>,
<tt>sl5</tt> といったデバイスを追加しておく必要があります。既存のデバ
イスの定義をコピーして修正するのが簡単でしょう。修正後はカーネルを再コ
ンパイルすることを忘れないように。
</descrip>

<sect1><heading>PPP についての質問

<p>
PPP についての質問は 
<url url="http://sunsite.unc.edu/mdw/HOWTO/PPP-HOWTO.html" name="PPP-HOWTO">
をご覧ください。そこには Al Longyear が集めた PPP に関する質問と答の一
覧が用意されています。

<sect><heading>クイックガイド - SLIP や PPP のサーバーの設定

<p>
あなたの Linux マシンを SLIP や PPP サーバーにするのは案外簡単です。手
順自身は単純ですが、可能な設定はいくつもあるので、それぞれの段階が相互
にどのように影響しあっているのかを正しく理解しておけば、問題が生じた時
の対処も簡単でしょう。以下に示すものがあなたの Linux マシンを SLIP や 
PPP サーバーとして設定するための手順です。

<enum>
<item>ハードウェアを組み立てます。IRQ や共有メモリが衝突しないように注
意しましょう。それぞれのシリアルポートについて、ヌルモデムケーブルでダ
ムターミナルをつないで <em>minicom</em> や <em>seyon</em> などの通信プ
ログラムを使って正しく通信できるか確認します。複数のシリアルポートを同
時に使う場合はインテリジェントタイプのボードで <tt>16550AFN UART</tt> 
チップを使っているものが必要です。この種のボードならシリアルポートが発
生する割り込みを処理するのも多少は簡単です。

<item>カーネルの再構築。ネットワーク用の設定が正しく指定されているかチェッ
クしてください。SLIP や PPP で入ってくるユーザーに正しくルーティング情
報を与えるには IP Forwarding も可能にしなければいけません。SLIP や PPP 
の設定も正しく行います。ヘッダ圧縮を使うなら CSLIP も設定する必要があ
ります。電話回線経由で接続してきたユーザーがあなたのマシンを経由してイ
ンターネットヘ接続するなら、IP Forwarding の指定が必須です。正しく設定
しているか再度チェックしてください。

<item>
カーネルをインストールします。ちゃんと起動するかテストして 
<tt>/proc/net/dev</tt> ファイルに必要な <tt>sl*</tt> や <tt>ppp*</tt> 
のデバイスが存在しているか確認してください。もしそれらが見付からなけれ
ばカーネルの設定を間違えたか、古いカーネルを起動しているのでしょう。も
ういちど <em>lilo</em> を実行して、新しいカーネルがインストールされて
いるか再度確認してください。

<item>
ユーザーが接続してくるシリアルポート用に <em>getty</em> を設定します。
このための方法の詳細は <url
url="http://sunsite.unc.edu/mdw/HOWTO/Serial-HOWTO.html"
name="Serial-HOWTO">をご覧ください。モデムがキャリアを受けたとき正しく 
<tt>DCD</tt> 信号を出すように設定することを忘れないように。たいていの 
<em>getty</em> では、電話がかかってきたことを検出するのにこの信号を利
用しています(<em>mgetty</em> は例外で <tt>RING</tt> というメッセージを
使って検出します。ですから <em>mgetty</em> を使う場合はモデムが 
<tt>RING</tt> メッセージを出すように設定しなければいけません。たいてい
のモデムなら<tt>ATQ0V1</tt> という設定で大丈夫でしょう)

<item>
<em>getty</em> がちゃんと動いているかをテストします。SLIP や PPP の設
定で悩むまえに、正しく <em>getty</em> が働いているか確認することが肝心
です。設定したシステムに電話をかけ、<tt>login:</tt> プロンプトが正しく
出て、ログインすれば通常のシェルが起動するか確認してください。もし文字
が欠けたりゴミが出るようならフロー制御の問題でしょう。


<item> どのように IP アドレスを割当てるかを決めます。もし毎回固定した 
IP アドレスを割り当てたい場合は静的サーバーにします。使う IP アドレスを
最小限に押えて、毎回ユーザーに割り当てるアドレスは異なってもいいような
場合は動的サーバーの設定にします。

<item> どのような形で SLIP や PPP サーバーを運用するか決定します。SLIP 
の場合、接続方法には <em>sliplogin</em> や <em>dip</em>、 
<em>dSLIP</em> といった方法があります。<em>sliplogin</em> を使う場合、
「<em>sliplogin</em> を使った Slip サーバー」の節をご覧ください。
<em>dip</em> を使う場合、「<em>dip</em> を使う Slip サーバー」の節をご
覧ください。<em>dSLIP</em> パッケージを使う場合、「<em>dSLIP</em> を使
う Slip サーバー」の節をご覧ください。PPP の場合、pppd を使う必要があ
るので <url url="http://sunsite.unc.edu/mdw/HOWTO/PPP-HOWTO.html"
name="PPP-HOWTO"> を読んでください。必要なソフトウェアの最新バージョン
をコンパイルして必要に応じてインストールしておきます。

<item> SLIP で接続してくるユーザーに割りあてる IP アドレスがイーサネッ
トのネットワークの一部なら、それぞれのアドレス用に <em>proxy arp</em> 
を設定する必要があります。設定の仕方は「代理(Proxy) ARP」の章をご覧く
ださい。これらの設定は <em>sliplogin</em> パッケージに附属の 
<em>/etc/sliplogin</em> や <em>/etc/SLIPlogout</em> ファイルで指定でき
ます。もし接続してくるユーザーに割りあてるアドレスがイーサネットのネッ
トワークのアドレスと違っている場合は <em>gated</em> のような経路制御用
のデーモンを動かす必要があります。<em>gated</em> を使うなら、「gated」
の章をご覧ください。

<item> 自分で SLIP/PPP サーバーの接続をテストする

<item> 誰か他の人に SLIP/PPP サーバーの接続をテストしてもらう
</enum>

<sect><heading>バグ

<p>
Linux のネットワーク用コードは現在も進化しています。まだバグもあります
が、現在ではバグレポートはずいぶん減ってきました。Alan Cox が <url
url="http://iifeak.swan.ac.uk/NetNews.html" name="Linux Networking
News">と呼ばれる WWW のページを公開しており、NET-3 ネットワークコード
の現状についての情報を提供しています。その他の情報源としては、カーネル
に附属の <tt>/usr/src/linux/net/inet/README</tt> ファイルや 
<tt>linux-net</tt> メーリングリストなどがあります。

<sect><heading>Copyright Message.

<p>
The NET-2-HOWTO is Copyright (c) 1995 Terry Dawson and Matt Welsh.

Permission is granted to make and distribute verbatim copies of
this document provided the copyright notice and this permission notice
are preserved on all copies.

Permission is granted to copy and distribute modified versions of this
document under the conditions for verbatim copies above, provided a notice
clearly stating that the document is a modified version is also included in
the modified document.

Permission is granted to copy and distribute translations of this document
into another language, under the conditions specified above for modified
versions.

Permission is granted to convert this document into another media under
the conditions specified above for modified versions provided the requirement
to acknowledge the source document is fulfilled by inclusion of an obvious
reference to the source document in the new media. Where there is any
doubt as to what defines 'obvious' the copyright owner reserves the right
to decide.

NET-2-HOWTO は Terry Dawson と Matt Welsh の著作物です((c) 1995)

この文書全体のコピーと再配布は、この著作権表示と許可条項が全てのコピー
に含まれている限り可能です。

この文書の修正版のコピーと再配布も、上記条項に含めて、修正版であること
が文書中に示される限り可能です。

翻訳版のコピーと再配布は上記の修正版の配布条項に添えば可能です。

この文書を他のメディアに変換することも、上記の修正版の配布条項に従い、
オリジナルの文書への明確なポインタが示されれば可能です。何を持って「明
確な」ポインタとするかは著作権者が決定権を有します。

<sect><heading>Miscellaneous and Acknowledgements.
<p>
この文書の更新については多くの人のコメントや提案を参考にしましたが、個々
人の御名前は失念しました。とにかく、<bf>ありがとう</bf>

コメントや提案があればぜひメールしてください。最近はかなり忙しいので、
すぐに返事ができないかも知れませんが、提案いただいた内容は十分考慮させ
ていただきます。

Linux のネットワーク用のコードが現在の姿になるには長い時間がかかり、そ
れは簡単な道のりではありませんでした。しかし、全ての開発者は素晴しい仕
事をしてくれました。彼らの努力のおかげで、高性能で豊富な機能を持ち、フ
レキシブルで自由に使えるプログラムが利用できるようになったのです。私た
ちは彼らに感謝しなければなりません。Linus, Ross, Fred, Alan,
Alpha/Beta 版のテスター、各種ツールの開発者、そして彼らを精神的に支え
た多くの人たち、彼ら全ての努力のおかげで、現在のコードがあるのです。

気にいらない所がある人は、頑張って自らの手で修正してください。happy
hacking !

<p>
regards
<tt>Terry Dawson, vk2ktj.</tt>
<p>
<tt>&lt;94004531@postoffice.csu.edu.au>/&lt;terry@perf.no.telecom.com.au></tt>

</article>
