  Linux Networking-HOWTO (Previously the Net-3 Howto)
  Current Author: {Poet} poet@linuxports.com
  Original Authors: Terry Dawson (main author), VK2KTJ;
  Alessandro Rubini (maintainer)
  v1.5, August 1999
  The Linux Japanese FAQ Project
  v1.5j, January 2000

  Linux オペレーティングシステムのカーネルには、ゼロから書きあげられた
  ネットワークコードが組み込まれています。最近のカーネルに実装されている
  TCP/IP の性能は、既存の最高のシステムにも比肩しうる結果を示していま
  す。この文書は Linux のネットワーク用のソフトウェアのインストールと設
  定方法、さらに関連するツール類について解説します。
  ______________________________________________________________________

  目次

  1. はじめに
  2. 文書の履歴
     2.1 フィードバック

  3. この HOWTO の読み方
     3.1 この文書内での約束事

  4. Linux のネットワーク機能に関する一般的な情報
     4.1  Linux カーネルのネットワーク機能の開発小史
     4.2 Linux のネットワーク機能についての情報源
     4.3 Linux 限定でないネットワークに関する情報源

  5. ネットワークの設定に関する一般的な情報
     5.1 何から始めるか?
        5.1.1 最新のカーネルソース(なくてもかまいません)
        5.1.2 最新のネットワークツール
        5.1.3 各種ネットワーク用アプリケーションプログラム
        5.1.4 IP アドレスの説明
     5.2 設定コマンドの置き場所は?
     5.3 ネットワークインターフェイスの作成
     5.4 ネットワークインターフェイスの設定
     5.5 リゾルバの設定
        5.5.1 名前に含まれるものは?
        5.5.2  必要な情報
        5.5.3 /etc/resolv.conf
        5.5.4 /etc/host.conf
        5.5.5 /etc/hosts
        5.5.6 ネームサーバの実行
     5.6 ループバックインターフェイスの設定
     5.7  経路制御(ルーティング)
        5.7.1 さて、routed プログラムは何をしているのでしょう?
     5.8 ネットワーク経由の各種サービスとサーバの設定
        5.8.1 /etc/services
           5.8.1.1 /etc/services ファイルの実例
        5.8.2 /etc/inetd.conf
           5.8.2.1 /etc/inetd.conf の例
     5.9 その他のネットワークに関連した設定ファイル
        5.9.1 /etc/protocols
        5.9.2 /etc/networks
     5.10 ネットワークのセキュリティとアクセス制御
        5.10.1 /etc/ftpusers
        5.10.2 /etc/securetty
        5.10.3 tcpd を使ったホスト別アクセス制御機構
           5.10.3.1 /etc/hosts.allow
           5.10.3.2 /etc/hosts.deny
        5.10.4 /etc/hosts.equiv
        5.10.5 ftp デーモンの適切な設定
        5.10.6 ファイアウォール
        5.10.7 その他のお勧め

  6. IP 関係、イーサネット関係の情報
     6.1 イーサネット
     6.2 EQL - 複数回線のトラフィックイコライザ
     6.3 IP パケット統計情報の取得(Linux 2.0 用)
     6.4 IPパケット統計取得(Linux 2.2 用)
     6.5 IP エイリアス
     6.6 IP ファイアウォール(Linux 2.0 用)
     6.7 IP ファイアウォール (Linux 2.2 用)
     6.8 IPIP カプセル化
        6.8.1 トンネリングを行うネットワーク設定
        6.8.2 トンネリングを行うホストの設定
     6.9 IP マスカレード(IP Masquerade)
     6.10 IP 透過プロキシ(IP Transparent Proxy)
     6.11 IPv6
     6.12 モバイル IP(Mobile IP)
     6.13 マルチキャスト
     6.14 NAT - ネットワークアドレス変換(Network Address Translation)
     6.15 Traffic Shaper - 許可する帯域幅の変更
     6.16 Linux 2.2 における経路制御

  7. 一般的な PC ハードウェアの使用
     7.1 ISDN
     7.2 PLIP (Linux 2.0 の場合)
     7.3 PLIP (Linux 2.2 の場合)
     7.4 PPP
        7.4.1 pppd を使ってインターネットと常時接続する方法
     7.5 SLIP クライアント
        7.5.1 dip
        7.5.2 slattach
        7.5.3 どんな場合にどれを使うべきか?
        7.5.4 予め決まった IP アドレスを使う SLIP サーバ
        7.5.5 接続時に IP アドレスを割り当てるタイプのサーバ
        7.5.6 DIP の使い方
        7.5.7 専用線と slattach を使って恒久的な SLIP 接続を行う方法
     7.6 SLIP サーバ
        7.6.1 sliplogin を使った SLIP サーバの設定
           7.6.1.1 sliplogin の入手先
           7.6.1.2 SLIP ホスト用の /etc/passwd
           7.6.1.3 /etc/slip.hosts の設定
           7.6.1.4 /etc/slip.login ファイルの設定
           7.6.1.5 /etc/slip.logout ファイルの設定
           7.6.1.6 /etc/slip.tty ファイル の設定
        7.6.2 dip を使った SLIP サーバ
           7.6.2.1 /etc/diphosts の設定
        7.6.3 dSLIP パッケージを使った SLIP サーバ

  8. その他のネットワーク技術
     8.1 ARCNet
     8.2 Appletalk (AF_APPLETALK)
        8.2.1 Appletalk 用ソフトウェアの設定
        8.2.2 Linux のファイルシステムを Appletalk 経由で提供する方法
        8.2.3 AppleTalk 経由での Linux のプリンタの共有
        8.2.4  appletalk ソフトウェアの起動
        8.2.5 appletalk ソフトウェアのテスト
        8.2.6 netatalk の注意点
        8.2.7 さらに詳しい情報について
     8.3 ATM
     8.4 AX25 (AF_AX25)
     8.5 DECNet
     8.6 FDDI
     8.7 フレームリレー
     8.8 IPX (AF_IPX)
     8.9 NetRom (AF_NETROM)
     8.10 Rose プロトコル (AF_ROSE)
     8.11 SAMBA - `NetBEUI', `NetBios',  `CIFS' のサポート
     8.12 STRIP (Starmode Radio IP) 機能
     8.13 トークンリング
     8.14 X.25
     8.15 WaveLan カード

  9. ケーブルと接続方法
     9.1 シリアル用クロスケーブル
     9.2 パラレルポート用ケーブル(PLIP ケーブル)
     9.3 10base2 (細い同軸の)イーサネットケーブル
     9.4 ツイストペア(Twisted Pair)イーサネットケーブル

  10. この文書で使われている用語の解説
  11. ISP 用の Linux?
  12. 謝辞
  13. 著作権
  14. 日本語版について

  ______________________________________________________________________

  1.  はじめに

  この文書は、LinuxPorts がこの文書の著者となってから最初のリリースで
  す。最初に一言、我々は、この先数ヶ月程度は読者の皆さんがこの文書を役に
  立つと考えてくださるように、また本文書が Linux のネットワーク関連のこ
  とがらについて、正確でタイムリーな情報を提供できているように望んでいま
  す。

  この文書は我々が管理している他の HOWTO と同様に、全く別物になるでしょ
  う。この文書はまもなく単なる Net-3(4) HOWTO ではなく、Networking-HOWTO
  となるでしょう。PPP, VPN 等といった内容も押さえるつもりです。

  2.  文書の履歴

  元々の NET-FAQ は Matt Welsh と Terry Dawson が著者であり、 Linux
  Documentation Project が正式に立ち上がる前に Linux のネットワークに関
  する FAQ (よく聞かれる質問)に答えるために書かれました。この FAQ は
  Linux カーネルのネットワーク機能のごく初期の開発バージョンを扱っていま
  した。NET-2-HOWTO は、オリジナルの LDP HOWTO 文書の一つとなり、NET-FAQ
  の後を受けて Linux カーネルのネットワークコードのバージョン 2、そして
  その後のバージョン 3 を扱っていました。この文書はさらにその後を受
  け、Linux のネットワークコードのバージョン 4 だけに関連する話題や、カ
  ーネルのリリース 2.x と 2.2.x に特化した話題を扱っています。

  話題をあれこれと取りこみすぎたため、この文書の以前のバージョン
  (NET-2/3-HOWTO)はかなり肥大化していました。そのため、ネットワーク機能
  のうち、特定の分野だけを扱う HOWTO がいくつも書かれてきました。この文
  書では、そのような HOWTO で書かれている話題については、その HOWTO への
  ポインタを示し、主に他の文書が扱っていない分野の話題を扱うことにしま
  す。

  2.1.  フィードバック

  我々 LinuxPorts はフィードバックをお待ちしています。
  poet@linuxports.com <mailto:poet@linuxports.com> まで連絡してくださ
  い。

  繰り返しますが、誤っている点や追加してほしい項目が何かあれば、我々に連
  絡してください。

  3.  この HOWTO の読み方

  この文書はトップダウン式の構成にしています。最初の章にはお知らせ的なこ
  とが書いてあるので、興味がなければ飛ばしても構いません。その後にはネッ
  トワークに関する一般的な知識が書いてあるので、より専門的な部分に進む前
  に必ず理解しておいてください。残りの部分は「技術に特化した」情報であ
  り、3 つの主な部分からできています: つまりイーサネットと IP に関する情
  報、広く使われている PC ハードウェアの関連技術に関する情報、まれに使わ
  れている技術に関する情報、です。

  したがって、この文書のお勧めの読み方は以下のようになります:

     一般的なことに関する章を読む。
        これらの章に書いてあることの全てあるいはほとんど全ては、その後で
        説明する技術に適用されます。したがって、これを理解しておくことは
        重要です。その一方で、読者の多くは既にこういったことに詳しいもの
        と筆者は考えています。

     自分のところのネットワークについて考える。
        自分のところのネットワークがどうなっているか、あるいはこれからど
        うするのかを知っておき、どんなハードウェアや技術を使うのかを正確
        に知っておくべきです。

     直接 LAN やインターネットに接続しているならば「イーサネットと
        IP」の章を読む。" この章ではイーサネットの基本的な設定と Linux
        が IP ネットワーク用に用意している各種機能(ファイアウォールや高
        度な経路設定など)について説明しています。

     安価な LAN やダイアルアップ接続に興味があるなら次の章を読む。
        この章では PLIP, PPP, SLIP, ISDN といった個人所有のワークステー
        ションで広く使われる技術について説明します。

     必要に応じて専門技術の章を読む。
        IP 以外のプロトコルや一般的でないハードウェアが必要ならば、最後
        の章を見ましょう。 IP 以外のプロトコルと特殊な通信ハードウェアの
        詳しい説明があります。

     設定作業を行う。
        実際にネットワークの設定をやってみて、そこで起きた問題を注意深く
        記録しておくべきです。

     必要ならば、さらに説明を探す。
        この文書では解決の役に立たない問題に出会ったら、助けを求めるため
        の場所やバグを報告する先に関する章を読んでください。

     楽しむ!
        ネットワークは面白いものです。楽しんでください。

  3.1.  この文書内での約束事

  特別な約束事はありませんが、コマンドの表記方法には注意してください。古
  典的な Unix の文書に従って、シェルに入力するコマンドの前にはプロンプト
  を書いてあります。この HOWTO では、スーパーユーザの権限が必要ないコマ
  ンドのプロンプトとしては "user%" を使い、root で実行する必要があるコマ
  ンドのプロンプトとしては "root#" を使います。ただの "#" でなく "root#"
  を使っているのは、シェルスクリプトからの抜粋部分との混同を避けるためで
  す。シェルスクリプトでは "#" 記号はコメント行を定義するために使いま
  す。

  「カーネルのコンパイルオプション」が示された時は、これは menuconfig で
  使われる書式で表現されます。 menuconfig を使っていなくてもわかるはずで
  す(筆者も使っていません)。オプションの入れ子がわからなくて
  も、menuconfig を一度実行すればわかると思います。

  この文書の HTML 版については、ローカルに置いている LDP 文書を読みやす
  くするために他の HOWTO へのリンクをローカル参照にしています。LDP 文書
  の全てを持っていなければ、各 HOWTO 文書は metalab の /pub/Linux/HOWTO
  ディレクトリ <ftp://metalab.unc.edu/pub/Linux/HOWTO/> や metalab の無
  数にあるミラーサイトから入手できます。

  4.  Linux のネットワーク機能に関する一般的な情報

  4.1.  Linux カーネルのネットワーク機能の開発小史

  カーネルに新規に TCP/IP プロトコルスタックを組み込み、既存のものと同等
  の性能を出すのは簡単なことではありません。U.S.L(Unix Software
  Laboratory)が Unix に関する訴訟を起こして、既存のコードが著作権によっ
  て使えなくなるかもしれない恐れが生じたことが主な理由となって、Linux の
  開発者たちは、既存のネットワークコードを移植するのではなく、ゼロから新
  しいコードを書こうと決意しました。同時に、既存の実装とは全く異なったや
  り方で、よりよいものを作り直してみようという熱意も、大きな原動力になり
  ました。

  カーネルに組み込まれたネットワークコードの開発を最初にリードしたボラン
  ティアは Ross Biro <biro@yggdrasil.com> でした。彼は、単純で機能的には
  不十分ながら、まずまず使いものになるネットワークコードと WD-8003 ネッ
  トワークカード用のドライバを作成しました。このコードを使って多くの人々
  がソフトウェアのテストや実験をし、実際にインターネットに接続した人たち
  もいました。しかし、Linux コミュニティの中でネットワーク機能の開発に対
  する要望が高まるにつれ、Ross にのしかかる責任が増えてしまい、彼はネッ
  トワーク機能の開発のリーダーを降りました。しかし、Ross がこのプロジェ
  クトを開始したことと、様々な論争がなされている中で、ある程度実用になる
  コードを責任を持って実際に開発したことのおかげで、その後の作業が容易に
  なりました。したがって、彼のした仕事は現在のコードがうまくできているこ
  との重要な要素です。

  Orest Zborowski <obz@Kodak.COM> が Linux カーネルに独自の BSD のソケッ
  トプログラムインターフェイスを組み込みました。これは極めて重要な前進で
  した。というのも、これを使うことにより既存のネットワークアプリケーショ
  ンの多くが大きな変更なしに移植できるようになったからです。

  同じ頃、Laurence Culhane <loz@holmes.demon.co.uk> が SLIP プロトコルを
  サポートする最初のドライバを開発しました。これにより、イーサネットを持
  たない多くの人々もネットワーク用のソフトウェアのテストができるようにな
  りました。こちらの場合でもまた、何人かの人々がこのドライバに携わり、こ
  れを実際に使ってインターネットに接続しはじめました。このドライバの成功
  により、Linux に充分なネットワーク機能が組み込まれれば、より多くのユー
  ザが積極的に既存のネットワークソフトウェアを利用・実験するようになるだ
  ろうと感じる人がますます多くなりました。

  もう一人、熱心にネットワーク機能を開発したのが Fred van Kempen
  <waltje@uwalt.nl.mugnet.org> です。Ross がリーダーを降りてからの不安定
  な時期に Fred は彼の時間と努力を捧げて開発をリードしました。Fred は
  Linux のネットワークソフトウェアを独特の方向に発展させようと考え、その
  方向に開発をすすめました。Fred は `NET-2' と呼ばれるネットワークコード
  を開発し(Ross のコードは `NET' コードと呼ばれています)、このコードは多
  くの人々にとって十分実用的なものでした。Fred は開発計画として、動的な
  デバイスインターフェイスやアマチュア無線用の AX.25 プロトコル、よりモ
  ジュール化されたネットワーク機能など、さまざまな革新的な機能をスケジュ
  ールに挙げていました。Fred の NET-2 コードは実に多くの熱心な開発者に用
  いられ、「実際に動く」という評判が広まりました。このころのネットワーク
  コードはまだカーネル本体には組み込まれておらず、多数のパッチとして公開
  されていました。当時書かれた NET-FAQ と NET-2-HOWTO はこのパッチを組み
  こむずいぶん複雑な手順について説明していました。Fred は既存のネットワ
  ーク系の実装に革新をもたらそうとしていましたが、それには時間がかかりま
  した。一方、Linux コミュニティでは、安定して動き、80% のユーザを満足さ
  せる機能を持ったネットワーク機能をもとめる声が強まり、Ross 同様、開発
  のリーダーとして Fred にかかるプレッシャーが強まってきました。

  Alan Cox<iialan@www.linux.uk.org>がこの状況を解決する方法を提案しまし
  た。彼は Fred の NET-2 コードを引きとり、デバッグして、信頼性と安定性
  を高めてせっかちなユーザに提供しました。そうやって Fred の負担を減ら
  し、彼が本来の仕事を続けられるようにしました。Alan はこれをうまくや
  り、彼の作ったネットワークコードは `Net-2D(ebugged)' と呼ばれました。
  このコードはほとんどの設定で安定して動作し、多くのユーザはこのコードに
  満足しました。Alan にはネットワーク機能を開発していく計画に貢献するだ
  けの独自のアイデアと技術力があり、彼を中心に NET-2 コードの開発方針に
  ついて多くの議論がなされました。その結果、Linux のネットワーク界に 2
  つの流れが生まれることになりました。一つは「まず動くものを作って、その
  後改善していこう」と考える人たち、もう一つは「最初から良いものを作ろ
  う」と考える人たちでした。最終的には Linus が判断をして、Alan の開発し
  たコードを標準のカーネルに組み込みました。その結果、Fred の立場は難し
  くなりました。彼が開発した新機能をテストしてくれるユーザの絶対数は少な
  くなり、開発のテンポも遅れ、しだいに開発そのものが難しくなっていきまし
  た。Fred はその後もしばらくは開発を続けていましたが次第に開発から手を
  引き、Alan が Linux のネットワーク機能の開発者の新しいリーダーになりま
  した。

  そのころ、Donald Becker<becker@cesdis.gsfc.nasa.gov>がハードウェアレベ
  ルのドライバの開発者としての頭角を現わし、多数のイーサネット用ドライバ
  を開発しました。現在のカーネルに組み込まれているネットワークカード用ド
  ライバのほとんどは彼が開発したものです。もちろん彼以外にも重要な貢献を
  した人はいますが、Donald の素晴しい仕事は特に言及に値するものでしょ
  う。

  Alan はその後も NET-2-Debugged コードの改善を進めるとともに、`TODO' リ
  ストに載ったまま残されていたさまざまな仕事にも取り組みました。Linux
  1.3.* のカーネルが公開され始めたころ、カーネルのネットワークコードは現
  在のバージョンである NET-3 へと移行しました。Alan は、 Linux のネット
  ワークコミュニティにいる多数の才能ある人々の助けを借りながら、多くの機
  能を開発していきました。彼は動的なネットワークデバイスや AX.25 の最初
  のスタンダード、IPX 機能などを開発しました。彼はその後もネットワークコ
  ードを修正し続け、ゆっくりと再構築と機能強化につとめて現在の状況に達し
  ました。

  PPP の機能は Michael Callahan<callahan@maths.ox.ac.uk>と Al
  Longyear<longyear@netcom.com>が組み込みました。この機能も、多数の人々
  が Linux をネットワーク接続に使う際に重要な役割を果しました。

  Jonathon Naylor <jsn@cs.nott.ac.uk> は Alan の AX.25 コードを引き継い
  でさまざまな機能を強化し、NetRom プロトコルと Rose プロトコルもサポー
  トしました。この AX.25/NetRom/Rose のサポートはとても重要です。なぜな
  ら、これらのプロトコルを標準的にサポートしていると胸を張れる OS は
  Linux 以外に存在しないからです。

  もちろん、ここで紹介した人以外にも何百人もの人々が Linux のネットワー
  クソフトウェアを開発する中で重要な役割を果してきました。彼らの何人かは
  後述のそれぞれの技術の詳細に関する節で紹介することになるでしょう。その
  他、モジュール化や各種のドライバの開発、バグの修正、新しい機能の提案、
  テストレポート、精神的な支援をしてきた多数の人々がいます。その全ての人
  が、「自分は自分の役割を果し、自分に可能なことをしてきただけ」、と言う
  ことでしょう。Linux カーネルのネットワークコードは Linux 風のアナーキ
  ーな開発がどのような結果をもたらすかの優れた実例です。今までの話に驚か
  なかった人でも、これからの発展にはきっと驚くはずです。開発は現在も続い
  ているのですから。

  4.2.  Linux のネットワーク機能についての情報源

  Linux のネットワーク機能についての情報はさまざまなところから入手できま
  す。

  コンサルタント業者がたくさんあります。そのリストは LinuxPorts
  Consultants Database <http://www.linuxports.com/> から入手できます。

  現在の Linux カーネルのネットワークコードのメンテナンスをしている Alan
  Cox はネットワーク機能の現状と今後について紹介したページを公開していま
  す: www.uk.linux.org <http://www.uk.linux.org/NetNews.html>

  もう一つお勧めの情報源は Olaf Kirch が書いた Network Administrators
  Guide です。この文書は Linux Documentation Project
  <http://www.linuxdoc.org/> の成果の一つで、 Network Administrators
  Guide HTML version <http://metalab.unc.edu/LDP/LDP/nag/nag.html> を使
  えばインタラクティブに読むことができます。その他、さまざまな形式に変換
  したバージョンを metalab.unc.edu LDP ftp archive
  <ftp://metalab.unc.edu/pub/Linux/docs/LDP/network-guide/> から入手でき
  ます。 Olaf の著書はわかりやすく書かれており、Linux におけるネットワー
  ク関係の設定を、十分高いレベルで概説しています。

  Linux のネットワーク機能について論じるニュースグループもあります。
  comp.os.linux.networking です。 [訳注: 日本語のニュースグループとして
  は fj.os.linux.networking があります]

  Linux のネットワーク機能について質問できるメーリングリストもあります。
  このメーリングリストに参加するには、以下のようなメールを送ってくださ
  い。

       To: majordomo@vger.rutgers.edu
       Subject: anything at all
       Message:

       subscribe linux-net

  IRC にもさまざまなチャンネルがありますが、#linux チャンネルには Linux
  のネットワークに関する質問に答えてくれる人が多数います。

  何か問題を報告する際には、関係する情報を可能な限り付属させることをお忘
  れなく。使っているソフトウェアのバージョン、特にカーネルのバージョンや
  pppd や dip のバージョンは必須です。加えて、問題の本質をきちんと報告し
  てください。そのためには、出力されたエラーメッセージを正確に記録し、ど
  のようなコマンドを実行したかを詳しく記録しておきましょう。

  4.3.  Linux 限定でないネットワークに関する情報源

  TCP/IP ネットワークについての全般的な知識を得たいならば、以下の文書を
  読んでみることをお勧めします:

     TCP/IP 入門(tcp/ip introduction)
        この文書はテキスト版 <ftp://athos.rutgers.edu/runet/tcp-ip-
        intro.doc> あるいは Postscript 版
        <ftp://athos.rutgers.edu/runet/tcp-ip-intro.ps> を入手可能です。

     TCP/IP の管理(tcp/ip administration)
        この文書もテキスト版 <ftp://athos.rutgers.edu/runet/tcp-ip-
        admin.doc> と Postscript 版 <ftp://athos.rutgers.edu/runet/tcp-
        ip-admin.ps> があります。

  TCP/IP ネットワークについて、より詳細な情報を知りたい場合は、次の書籍
  が非常にお勧めです。

       Internetworking with TCP/IP, Volume 1: principles, protocols
       and architecture, by Douglas E. Comer, ISBN 0-13-227836-7,
       Prentice Hall publications, Third Edition, 1995

  Unix 互換の環境でネットワーク機能を使ったアプリケーションを書くために
  は以下の書籍が参考になるでしょう。

       Unix Network Programming, by W. Richard Stevens, ISBN
       0-13-949876-1, Prentice Hall publications, 1990

  この本の第2版ももうすぐ出版されます。新しい版は 3 分冊になります。詳し
  くは Prenice-Hall のウェブサイト <http://www.phptr.com/> で調べてくだ
  さい。

  comp.protocols.tcp-ip も見るとよいでしょう。

  インターネットと TCP/IP プロトコル群に関する特定の技術的な情報について
  は RFC が重要です。RFC とは `Request For Comment' の略で、インターネッ
  トで標準的に使われているプロトコルについて定義したものになっています。
  RFC は多くの ftp サイトに保存されており、何らかのサーチエンジンを使っ
  てキーワードから RFC のデータベースを検索できるような WWW のページもあ
  ります。

  RFC に関するページとしては、 Nexor RFC database
  <http://pubweb.nexor.co.uk/public/rfc/index/rfc.html> を紹介しておきま
  す。

  5.  ネットワークの設定に関する一般的な情報

  以下の節では実際にネットワークを設定する前に知っておいた方がよいことに
  ついてまとめておきます。これらは最も基本となる原理で、あなたが実際に張
  ろうとしているネットワークの実際の種類によらず、全てのネットワークに適
  用されます。

  5.1.  何から始めるか?

  ネットワークを構築したり設定したりする前に用意しておくべきものがいくつ
  かあります。まず最も重要なものから。

  5.1.1.  最新のカーネルソース(なくてもかまいません)

  以下の点に注意してください:

  最近のディストリビューションのほとんどにはネットワーク機能を有効にした
  カーネルが付属しているので、カーネルを再コンパイルする必要はないと思い
  ます。よく知られているハードウェアを使っていればうまく動作するはずで
  す。例えば 3COM の NIC や NE2000 の NIC, Intel の NIC などです。しか
  し、カーネルを更新する必要がある状況になった場合には、以下の手順をご覧
  ください。

  現在お使いのカーネルには、おそらく使いたいネットワークに機能のサポート
  や使いたいネットワークカード用のドライバが組み込まれていないのでしょ
  う。カーネルのソースを入手して、適切なオプションを指定し、カーネルを再
  構築する必要があるでしょう。

  ただし、これは RedHat, Caldera, Debian, SuSE といったメジャーなディス
  トリビューションを使っている場合にはもはや当てはまりません。一般的なハ
  ードウェアを使っている限りは、ごく特殊な機能を使わなければカーネルを再
  コンパイルする必要はないはずです。

  最新のカーネルは常に ftp.cdrom.com
  <ftp://ftp.cdrom.com/pub/linux/sunsite/kernel.org/pub/linux/kernel> か
  ら入手できます。これは公式サイトではありませんが、大きい帯域幅を持ち、
  たくさんのユーザを受け入れることができます。公式サイトは kernel.org で
  すが、できるだけ ftp.cdrom.com を使ってください。 ftp.kernel.org は非
  常に負荷が高い状態です。ミラーサイトを使ってください。

  [訳注: 日本では ftp.jp.kernel.org <ftp://ftp.jp.kernel.org/> を利用す
  るとよいでしょう]

  通常カーネルのソースは /usr/src/linux ディレクトリに展開します。パッチ
  の当て方やカーネルの構築方法については Kernel-HOWTO <Kernel-
  HOWTO.html> を読んでください。カーネルモジュールの設定方法については
  ``Modules mini-HOWTO'' をご覧ください。また、カーネルソースと
  Documentation ディレクトリに入っている README ファイルは、気合いの入っ
  た読者には非常に有益な情報が書かれています。

  特別に言及しない限り、安定版のカーネルを使うことをお勧めします (バー
  ジョン番号の 2 つめの数字が偶数のバージョンです)。開発版のカーネル (2
  つめの数字が奇数のバージョン)は内部構造が大きく変わっていたり、その他
  さまざまな変更が行なわれているため、今まで動いていたソフトウェアがうま
  く動かないかもしれません。自分でそれらの問題を解決したり、それらのソフ
  トウェアに潜む問題を解決できないのであれば、開発版のカーネルは使わない
  ほうがいいでしょう。

  その一方、この文書で説明する機能の一部はバージョン 2.1 のカーネルの開
  発段階で導入されたものです。そこで選ばなければなりません: 2.2 カーネル
  と全てのツールが更新されたディストリビューションを待って 2.0 に留まる
  か、2.1 を入手し、その新機能を利用するのに必要な各種補助プログラムを探
  し回るかです。この節を書いている 1998 年 8 月の時点では、2.1.115 が最
  新バージョンで、じきに 2.2 が出るものと考えられています。

  5.1.2.  最新のネットワークツール

  ネットワークツールとは、Linux のネットワークデバイスを設定するためのプ
  ログラムです。これらのプログラムを用いてネットワークデバイスにアドレス
  を割り当てたり、経路情報を設定したりします。

  最近の Linux ディストリビューションには、大抵ネットワークツールも含ま
  れています。ですから、システムはディストリビューションからインストール
  していて、ネットワークツールはまだインストールしていないようなら、イン
  ストールしてください。

  ディストリビューションを使わずにシステムを構築した場合には、ネットワー
  クツールはソースコードを入手してコンパイルする必要があります。しかし、
  これはそんなに難しい作業ではありません。

  ネットワークツールは Bernd Eckenfels がメンテナンスしており、
  ftp.inka.de <ftp://ftp.inka.de/pub/comp/Linux/networking/NetTools/> か
  ら入手可能です。ここは ftp.uk.linux.org
  <ftp://ftp.uk.linux.org/pub/linux/Networking/base/> にミラーされていま
  す。

  また、RedHat の最新パッケージを net-tools-1.51-3.i386.rpm
  <ftp://ftp.cdrom.com/pub/linux/redhat/redhat-6.0/i386/base/> から入手
  できます。
  お使いのカーネルのバージョンにあったバージョンを入手して、インストール
  の際は付属の文書の指示に従ってください。

  この文書を執筆している時点での最新版のネットワークツールをコンパイルし
  てインストールするには以下のようにします:

               user% tar xvfz net-tools-1.33.tar.gz
               user% cd net-tools-1.33
               user% make config
               user% make
               root# make install

  RedHat のパッケージを使う場合には以下のようにします:

               root# rpm -U net-tools-1.51-3.i386.rpm

  さらに、ファイアウォールを設定したり、IP マスカレード機能を使いたい場
  合は、 ipfwadm コマンドも必要です。ipfwadm の最新版は ftp.xos.nl
  <ftp://ftp.xos.nl/pub/linux/ipfwadm> から入手できます。このコマンドに
  もいくつかのバージョンがあるので、カーネルのバージョンに合ったものを入
  手してください。Linux のファイアウォール機能は 2.1 の開発中に変更さ
  れ、カーネル 2.2 では ipchains に置き換えられたので注意してください。
  ipfwadm はカーネル 2.0 でしか使えません。以下のディストリビューション
  には 2.0 以前のカーネルが付属していることがわかっています。

               Redhat 5.2 以前
               Caldera 2.2 より前のバージョン
               Slackware 4.x より前のバージョン
               Debian 2.x より前のバージョン

  この文書の執筆時点での最新版をインストールするには、 The Linux
  Documentation Project <http://www.linuxdoc.org/> にある IPChains HOWTO
  を読んでください。

  バージョン 2.2(または 2.1 後期)のカーネルを使っている場合は、 ipfwadm
  はファイアウォールの設定を行うための正しいプログラムではありません。こ
  のバージョンの NET-3-HOWTO では今のところファイアウォールの新しい設定
  方法は扱いません。ipchains に関する詳しい情報が必要ならば、先に紹介し
  た HOWTO を見てください。

  5.1.3.  各種ネットワーク用アプリケーションプログラム

  ネットワークアプリケーションプログラムとは、telnet や ftp などと、それ
  らのサーバプログラムのことです。これらの大部分は、以前は David Holland
  がメンテナンスしていましたが、現在は netbug@ftp.uk.linux.org がメンテ
  ナンスしています。配布物は ftp.uk.linux.org
  <ftp://ftp.uk.linux.org/pub/linux/Networking/base> から入手可能です。

  5.1.4.  IP アドレスの説明

  インターネットプロトコル用のアドレスは 4 バイトから構成されています。
  アドレスは「ドット区切りの 10 進表記」で表示するのが普通です。この書き
  方では、それぞれのバイトを 10 進数(0-255)に変換し、頭の 0 は省略し、各
  バイトを `.' で区切って示します。通常、ホストやルータの持つネットワー
  クインターフェイスそれぞれに 1 つの IP アドレスを割り当てます。目的に
  よっては、一台のマシンの複数のポートに同じ IP アドレスを付けることも可
  能ですが、複数のインターフェイスには、それぞれ独自の IP アドレスを付け
  るのが普通です。

  インターネットプロトコルで構成されたネットワークは、一連の IP アドレス
  が集まって構成されています。1つのネットワークの IP アドレスには共通部
  分が必要です。1つのネットワーク全体に共通なアドレスの部分をアドレスの
  「ネットワーク部」と呼びます。残りの部分を「ホスト部」と呼びます。1つ
  のネットワークの中で共通しているネットワークアドレス分のビット数をネッ
  トマスクと呼び、アドレスのうちどこまでがネットワーク部で、どこからがホ
  スト部かを定義しています。例えば、以下のような場合を考えてください。

          -----------------        ---------------
          ホストアドレス           192.168.110.23
          ネットワークマスク       255.255.255.0
          ネットワーク部           192.168.110.
          ホスト部                            .23
          -----------------        ---------------
          ネットワークアドレス     192.168.110.0
          ブロードキャストアドレス 192.168.110.255
          -----------------        ---------------

  ホストに付けられたアドレスのうち、ネットマスクとビットごとに論理
  積(AND)を取ったものがネットワークアドレスになります。すなわち、ネット
  ワークアドレスは、それぞれのネットワークに割り当てられたアドレスの最小
  のものになります。つまり、ネットワークアドレスはアドレスのホスト部を全
  て 0 にしたものです。

  ネットワークに接続されているホストは自分自身のアドレスに送られたパケッ
  トを受けとりますが、それ以外にも「ブロードキャストアドレス」という特別
  に設定されたアドレスに送られたパケットも受けとります。ブロードキャスト
  アドレスは、ネットワーク上にいる全てのホストにパケットを送りたい場合に
  利用する特別のアドレスです。経路情報や各種の警告メッセージなどはブロー
  ドキャストアドレスへ送出され、ネットワーク上にいる全てのホストが同時に
  受けとることができます。ブロードキャストアドレスはそのネットワークで利
  用可能な最大の IP アドレスにすることが慣例になっています。例えば、上記
  の例ではブロードキャストアドレスは 192.168.110.255 になっています。何
  らかの理由からネットワークアドレスとブロードキャストアドレスを同じにし
  ているサイトがあるかもしれません。実用上はどちらにしておいても大差はあ
  りませんが、ネットワーク上の全てのホストは同じブロードキャストアドレス
  を使わなければなりません。

  IP プロトコルの開発の早期の段階で、管理上の理由から、いくつかの IP 番
  号のグループがネットワークを構成するようになり、またこれらのネットワー
  クがグループ分けされて、いわゆる「クラス」へと発展しました。 IP アドレ
  スにおけるクラスはそのネットワークで使用できるホストの数を決定します。
  ネットワークのクラスは以下のように分けられています。

               ---------------------------------------------------------------
               |ネットワーク  | ネットマスク  | ネットワークアドレス         |
               |  のクラス    |               |                              |
               ---------------------------------------------------------------
               |    A         | 255.0.0.0     | 0.0.0.0    - 127.255.255.255 |
               |    B         | 255.255.0.0   | 128.0.0.0  - 191.255.255.255 |
               |    C         | 255.255.255.0 | 192.0.0.0  - 223.255.255.255 |
               |マルチキャスト| 240.0.0.0     | 224.0.0.0  - 239.255.255.255 |
               ---------------------------------------------------------------

  どのような IP アドレスを使うかは何をしたいかに依存します。以下に示すよ
  うな作業を組みあわせて、必要なアドレスを決めてください。

     既存のIPネットワークにLinuxマシンをインストールする場合
        既存のIPネットワークにLinuxマシンを接続したい場合、ネットワーク
        の管理者に相談して以下の情報を教えてもらってください:

        o  ホストの IP アドレス

        o  ネットワークアドレス

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

        o  ネットマスク

        o  ルータのアドレス

        o  ドメインネームサーバのアドレス

        これらの情報を使ってあなたのLinuxマシンのネットワークデバイスを
        設定します。正しい設定をしない限りネットワークは使えません。

     インターネットへ接続しないネットワークを新しく構築する場合
        インターネットへ接続する予定の無いプライベートなネットワークを構
        築する場合、どのような IP アドレスを使っても構いません。しかしな
        がら、このようなネットワークに使うべき IP アドレスは予め決められ
        ています。以下に示すアドレスを使えば、インターネットとはパケット
        をやりとりできないため、誤ってインターネットに接続してしまっても
        安全です。RFC1597では以下のアドレスがプライベートネットワーク用
        に割り当てられています。

             --------------------------------------------------------------
             |    プライベートネットワーク用に予約されたアドレス          |
             --------------------------------------------------------------
             |ネットワーク| ネットマスク  | ネットワークアドレス          |
             |  のクラス  |               |                               |
             --------------------------------------------------------------
             |    A       | 255.0.0.0     | 10.0.0.0    - 10.255.255.255  |
             |    B       | 255.255.0.0   | 172.16.0.0  - 172.31.255.255  |
             |    C       | 255.255.255.0 | 192.168.0.0 - 192.168.255.255 |
             --------------------------------------------------------------

     プライベートネットワーク用のアドレスもクラスごとに用意されているの
     で、まず構築したいネットワークの規模を考えて、それにふさわしい規模
     のクラスの IP アドレスを使ってください。

  5.2.  設定コマンドの置き場所は?

  Linux の起動方法にはいくつかの流儀があります。カーネルが起動したとき、
  まず実行されるのが init と呼ばれるプログラムです。 init は起動されると
  設定ファイルである /etc/inittab を読みこみ、システムの起動作業を実行し
  ます。init にはいくつかの種類がありますが、全体としては Miguel van
  Smoorenburg が開発した System V 系のものに収束しました。

  init プログラム自体は同じですが、システムの起動の仕方の設定はディスト
  リビューションごとに異なります。

  /etc/inittab ファイルには、普通は以下のような行があります。

               si::sysinit:/etc/init.d/boot

  この行は実際の起動方法を管理するシェルスクリプトを指定しています。この
  ファイルは MS-DOS の AUTOEXEC.BAT と同等の機能を果します。

  通常、他のいくつものスクリプトが boot スクリプトから呼び出されます。
  ネットワークの設定も、このようなスクリプトのどれかで行われます。

  以下の表にシステムごとの違いをまとめました。

       ---------------------------------------------------------------------------
       ディストリ  | インタフェースの設定/経路設定  | サーバの初期化
       ビューション|                                |
       ---------------------------------------------------------------------------
       Debian      | /etc/init.d/network            | /etc/rc2.d/*
       ---------------------------------------------------------------------------
       Slackware   | /etc/rc.d/rc.inet1             | /etc/rc.d/rc.inet2
       ---------------------------------------------------------------------------
       RedHat      | /etc/rc.d/init.d/network       | /etc/rc.d/rc3.d/*
       ---------------------------------------------------------------------------

  Debian と RedHat はシステムのサービスを起動するスクリプトをディレクト
  リ全体を使って管理しています(設定情報は普通、これらのファイルの中には
  ありません。例えば RedHat は全てのシステム情報を /etc/sysconfig ディレ
  クトリの下に置いており、起動スクリプトはここから情報を取得します)。起
  動プロセスを把握したければ、筆者のお勧めは /etc/inittab と init に付属
  の文書を調べることです。 Linux Journal にもシステムの初期化に関する記
  事が載る予定です。この記事が WWW で公開され次第、この文書からもリンク
  を張ります。

  最近のディストリビューションには、一般的なネットワークインターフェイス
  を設定するためのプログラムは予め含まれています。次に示すような設定用の
  プログラムがある場合、手動で設定する前に、これらを使って必要な設定が可
  能かチェックしてみてください。

               -----------------------------------------
               ディストリ  | ネットワーク設定プログラム
               ビューション|
               -----------------------------------------
               RedHat      | /usr/bin/netcfg
               Slackware   | /sbin/netconfig
               -----------------------------------------

  5.3.  ネットワークインターフェイスの作成

  多くの Unix では /dev ディレクトリにネットワークデバイス用のスペシャル
  ファイルがありますが、Linux の場合は違います。Linux ではネットワークデ
  バイスはソフトウェアによって動的に作成されるので、デバイスファイルは不
  要です。

  ほとんどの場合、ネットワークデバイスは、デバイスドライバがハードウェア
  を検出して初期化する際に自動的に作成されます。例えばイーサネットデバイ
  スドライバは、 eth[0..n] というインターフェイスをイーサネットハード
  ウェアに順に割り当てていきます。最初に検出されたイーサネッカードが
  eth0、次が eth1 のようになります。

  例外もいくつかあり (注目すべきは slip と ppp)、これが使うネットワーク
  デバイスはデバイスドライバではなくユーザプログラムが作成します。それぞ
  れのデバイスに付けられる番号は、デバイスドライバが割り当てるのと同様に
  順に振られていきますが、起動時にデバイスが自動的に作成されるということ
  はありません。なぜこのようになっているのかと言うと、イーサネットデバイ
  スとは異なり、slip や ppp デバイスは、マシンの稼働中に必要な数が変化す
  るからです。詳細については後述します。

  5.4.  ネットワークインターフェイスの設定

  ネットワークの設定に必要なプログラムと情報が揃ったら、ネットワークイン
  ターフェイスの設定を始めましょう。ネットワークインターフェイスの設定と
  は、ネットワークデバイスに適切なアドレスを割り当てたり、その他ネットワ
  ークデバイスを設定するための適切な値を指定することです。このためのプロ
  グラムがifconfig(interface configure)コマンドです。

  ifconfig は、通常以下のような書式で使います:

          root# ifconfig eth0 192.168.0.1 netmask 255.255.255.0 up

  この例では、``eth0''イーサネットインターフェイスに `192.168.0.1' とい
  う IP アドレスと `255.255.255.0' というネットマスクを設定しています。
  コマンドの後ろにある `up' はインターフェイスをアクティブにする指定です
  が、これはデフォルトの動作なので、普通は省略できます。インターフェイス
  を停止させるには、単に ``ifconfig eth0 down'' を実行してください。

  カーネルはインターフェイスを設定する際、あるデフォルト値を想定します。
  例えば、あるインターフェイスに対してネットワークアドレスとブロードキャ
  ストアドレスを設定できますが、上記の例のようにこれを設定しなかった場合
  には、カーネルは指定したネットマスクに基づいて、適切な値を推測します。
  ネットマスクを与えなかった場合には、IP アドレスが属するネットワークク
  ラスに基づいて設定が行われます。上記の例では、このインターフェイスにク
  ラス C のネットワークアドレスが割り当てられたことをカーネルが認識し、
  ネットワークアドレスとして `192.168.0.0' を、ブロードキャストアドレス
  として `192.168.0.255 を自動的に割り当てます。

  ifconfigコマンドで指定できるオプションはいろいろあります。もっとも重要
  なものを列挙すると、

     up このオプションはインターフェイスを利用可能(アクティブ)にします。

     down
        このオプションはインターフェイスを停止させます。

     [-]arp
        このオプションは、このインターフェイスで ARP(Address
        ResolutionProtocol) を使うかどうかを指定します。

     [-]allmulti
        このオプションは、全てのハードウェアマルチキャストパケットの受信
        を有効にするか無効にするかを指定します。ハードウェアマルチキャス
        トを使うと、特殊な終点アドレスに向けられたパケットを複数のホスト
        で受け取ることができます。デスクトップ用のビデオ会議アプリケー
        ションを使っている場合にはこのオプションは重要ですが、普通は使わ
        れません。

     mtu N
        このパラメータはデバイスの MTU(Maximum Transfer Unit)を設定しま
        す。

     netmask <アドレス>
        このパラメータはデバイスが接続しているネットワークのネットワーク
        マスクを設定します。

     irq <IRQ 値>
        このパラメータは特定の種類のハードウェアにしか使えませんが、デバ
        イスのハードウェアの IRQ を設定します。

     [-]broadcast [アドレス]
        このパラメータで、指定したブロードキャストアドレス宛のデータグラ
        ムを受け取るかどうかを設定できます。

     [-]pointopoint [アドレス]
        このパラメータは、slip や ppp などの一対一接続の場合の接続先アド
        レスを指定します。

     hw <type> <アドレス>
        このパラメータは特定の種類のネットワークデバイスのハードウェアア
        ドレスを設定します。イーサネットの場合はそれほど役に立ちません
        が、AX.25 のようなネットワークの場合には便利です。

  ifconfig コマンドはあらゆるネットワークインターフェイスに使用可能で
  す。pppdや dip といったユーザレベルのプログラムには、必要なデバイスを
  作成すると自動的にそれらを設定するものがあります。この場合 ifconfig を
  手動で使う必要はありません。

  5.5.  リゾルバの設定

  リゾルバ(Name Resolver) は Linux の標準ライブラリの一部です。リゾルバ
  の主な機能は、人間にとって分かりやすい ftp.funet.fi のようなホスト名を
  128.214.248.6 のような IP アドレスに変換することです。

  5.5.1.  名前に含まれるものは?

  すでにインターネットのホスト名については御存知だと思いますが、それらが
  どういう意味で、どのように構成されているかについては御存知ないかもしれ
  ません。インターネットのドメイン名は階層構造、すなわち木のような構造に
  なっています。ドメイン とは、一つのまとまり、すなわち複数のホスト名を
  一つのグループにまとめたものです。ドメイン はサブドメイン に分割されて
  いるかもしれません。トップレベルドメイン とはサブドメインではないドメ
  インです。トップレベルドメインについては RFC-920 で規定されています。
  非常に有名なトップレベルドメインを以下に示します:

     COM
        営利組織

     EDU
        教育機関

     GOV
        政府機関

     MIL
        軍事機関

     ORG
        その他の組織

     NET
        インターネット関連の組織

     Country Designator
        特定の国を示す 2 文字のコード

  歴史的経緯から、国を表さないトップレベルドメインに属するほとんどのドメ
  インはアメリカ合衆国にある組織が使っています。ただし、アメリカ合衆国も
  独自の国コードである `.us' を持っています。現在では、この話は .com や
  .org には当てはまりません。アメリカ国外の会社もこれらのドメインを使っ
  ています。

  これらのトップレベルドメインそれぞれにはサブドメインがあります。国を示
  す 2 文字のコードがトップレベルドメインになっている場合、サブドメイン
  としてcom や edu, gov, mil, org といった組織の種別を示すドメインが来ま
  す。例えば com.au と gov.au はオーストラリアの営利組織と政府機関です。
  これは一般的な決まりではない点に注意してください。というのも、実際の方
  針はそれぞれのドメインのドメイン名管理機関によって異なるからです。

  次のレベルはたいていその組織や団体の名称になります。それより細かいレベ
  ルのドメインはそれぞれの組織によって異なりますが、よくあるのは部門別に
  サブドメインを設定する方法です。しかし、このレベル以下はどのようなサブ
  ドメインを作ることも可能なので、それぞれの組織ごとに、ネットワークの管
  理者がふさわしい分け方を設定しています。

  もっとも左に位置する名前が、たいていの場合、そのマシンに付けられた独自
  の名前で、ホスト名と呼ばれます。ホスト名よりも右側の部分をドメイン名と
  呼び、両者を合せた完全な名前を「完全に記述された名前(Fully Qualified
  Domain Name(FQDN))」と呼びます。

  Terry のホストを例にしましょう。完全に記述された名前は
  `perf.no.itg.telstra.com.au' です。この場合、ホスト名は `perf' でドメ
  イン名は no.itg.telstra.com.au です。ドメイン名のうち、トップドメイン
  名は彼の国であるオーストラリアを示し、彼のメールアドレスは営利組織なの
  で次のレベルのドメインは .com です。会社の名前は `telestra' で、それ以
  下のサブドメイン名の構造は組織の構造を反映したものになっています。ここ
  に示した例では、彼のマシンはネットワーク管理部門(no, Network
  Operations)の情報技術グループ(itg, Information Technology Group)に属し
  ています。

  普通、名前はずっと短くなっています。例えば、筆者の ISP は
  ``systemy.it'' ですし、筆者が所属する非営利の組織は ``linux.it'' で
  す。どちらにも com や org といったサブドメインはないので、筆者のホスト
  は単に ``morgana.systemy.it'' であり、 rubini@linux.it が有効なメール
  アドレスです。ドメインの所有者にはホスト名やサブドメインを登録する権利
  がある点に注意してください。例えば、筆者が属する LUG は pluto.linux.it
  というドメインを使っています。なぜなら、linux.it の所有者が LUG のため
  にサブドメインを開放してくれたからです。

  5.5.2.  必要な情報

  まず、あなたのホストがどういうドメインに属しているかを知る必要がありま
  す。リゾルバは名前の変換サービスを `ドメインネームサーバ(DNS)' に問い
  合わせるので、利用可能なネームサーバの IP アドレスも知っておく必要があ
  ります。

  関連するファイルは 3 つあり、それらを順に見ていくことにします。

  5.5.3.  /etc/resolv.conf

  /etc/resolv.conf はリゾルバの使う一番重要な設定ファイルです。このファ
  イルの書式はごく簡単で、各行に 1 つのキーワードを配したテキストファイ
  ルになっています。よく使われるキーワードは以下の 3 種です:

     domain
        このキーワードはローカルのドメイン名を設定します。

     search
        このキーワードはホスト名を検索する際に用いるドメイン名のリストを
        指定します。

     nameserver
        このキーワードは、名前を解決する際に使うドメインネームサーバの
        IP アドレスを指定します。複数のサーバを指定できます。

  例として、以下の /etc/resolv.conf を見てみましょう:

               domain maths.wu.edu.au
               search maths.wu.edu.au wu.edu.au
               nameserver 192.168.10.1
               nameserver 192.168.12.1

  この例ではドメイン名を付けずにホスト名のみ指定した場合に、デフォルトで
  追加するドメイン名として maths.wu.edu.au を指定しています。ホスト名に
  maths.wu.edu.au を付けた FQDN が見つからなかった場合、ドメイン名を
  wu.edu.au にして再度調べます。ネームサーバのエントリは 2 つ設定してあ
  り、リゾルバは 2 つのネームサーバに問い合わせます。

  5.5.4.  /etc/host.conf

  /etc/host.conf ファイルはリゾルバの動作方法を設定するファイルです。こ
  のファイルのフォーマットの詳細は `resolv+' の man ページにあります。ほ
  とんど全ての環境では、以下の設定のままでいいでしょう:

               order hosts,bind
               multi on

  この設定の場合、リゾルバはネームサーバに問い合わせる前に、まず自分自身
  の持つ /etc/hosts ファイルをチェックします(order hosts,bind)。そし
  て、/etc/hosts ファイルに複数の IP アドレスが登録されていた場合、最初
  のアドレスだけでなく、全てのアドレスを報告します(multi on)。

  5.5.5.  /etc/hosts

  /etc/hosts ファイルは、ローカルのホストの IP アドレスを登録しておく表
  です。この表に登録されているホストの IP アドレスについては DNS を引く
  必要がありません。/etc/hosts の欠点は、登録しているホストの IP アドレ
  スが変わった場合、手動でこのファイルを更新しなければならないことです。
  きちんと管理されたシステムでは、このファイルに登録されるホスト名は
  loopback インターフェイスを示すアドレスとローカルのホストのアドレスの
  みです。

          # /etc/hosts
          127.0.0.1      localhost loopback
          192.168.0.1    this.host.name

  一行目が示すように、一つの行に複数のホスト名を登録できます。この例では
  127.0.0.1 はループバックインターフェイスの IP アドレスです。

  5.5.6.  ネームサーバの実行

  ローカルでネームサーバを実行したければ、これを行うのは簡単です。 DNS-
  HOWTO <DNS-HOWTO.html> と、お使いのバージョンの BIND (Berkeley
  Internet Name Domain)に含まれている文書を読んでください。

  [訳注: DNS-HOWTO の日本語訳は DNS-HOWTO
  <http://www.linux.or.jp/JF/JFdocs/DNS-HOWTO.html> にあります]

  5.6.  ループバックインターフェイスの設定

  ループバックインターフェイスとは、自分自身に接続するために用意された特
  別な種類のインターフェイスです。このようなインターフェイスを用意してい
  るのにはいくつかの理由があります。例えば、実際のネットワークに接続せず
  にネットワーク用のソフトウェアをテストするなどの目的に使えます。慣例と
  して、ループバックインターフェイスには `127.0.0.1' というアドレスが使
  われます。ですから、どんなマシンを使っていようとも telnet で 127.0.0.1
  に接続すれば、自分自身に接続することになります。

  ループバックインターフェイスの設定は簡単で、次のようにするだけです(た
  だし、普通はこの作業は標準の初期化スクリプトが実行することに注意してく
  ださい)。

               root# ifconfig lo 127.0.0.1
               root# route add -host 127.0.0.1 lo

  route コマンドについては次節で説明します。

  5.7.  経路制御(ルーティング)

  経路制御は大きな話題であり、それだけで分厚い本を書くことができます。一
  部の人を別にすれば、ほとんどの人はごく単純な経路制御しか必要ないと思い
  ますので、以下ではごく基本的な話題についてのみ扱うことにします。より詳
  細な情報が必要ならば、この文書の最初に示した各種の文献に当たってくださ
  い。

  まず定義から始めましょう。IP 経路制御とは何でしょう? 私が使っている定
  義を以下に示します:

       IP 経路制御とは、複数のネットワークに接続しているホストが受
       けとった IP データグラムをどのネットワークに送るかを決めるこ
  とです。

  例を使って示した方がいいでしょう。よくあるオフィス用のルータを想像して
  ください。このルータはインターネットへの PPP 接続や、ワークステーショ
  ンの繋がっている多数のイーサネットセグメントや、別のオフィスへの PPP
  接続などを備えていることでしょう。このルータがデータグラムを受けとった
  際、そのデータグラムを次にどのポートへ送り出すかを決めるのが IP 経路制
  御です。ルータではない普通のホストにも経路制御が必要です。なぜなら、
  ネットワークに接続している全てのホストは上述した自分自身を指すループ
  バックインターフェイスとネットワーク上にある他のマシンと接続するための
  インターフェイス(それはイーサネットだったり、シリアルポートを使った
  PPP や SLIP だったりします)の 2 つのインターフェイスを持っているため、
  どちらのインターフェイスにパケットを送り出すか決める必要があるからで
  す。

  さて、実際の経路制御はどのように行なわれるのでしょう? それぞれのホスト
  は経路情報を登録した経路表(ルーティングテーブル)と呼ばれるリストを持っ
  ています。この表の各行には通常 3 つの欄があります。最初の欄は目的地と
  なるアドレス、2 つめはデータグラムが送られるべきインターフェイス名、3
  つめは必須ではありませんが、お隣のネットワークへデータグラムを転送する
  ホストの IP アドレスです。最後の欄はゲートウェイフィールドと言いま
  す。Linux では /proc/net/route に経路表が登録されているため、以下のコ
  マンドで経路表を見ることができます:

               user% cat /proc/net/route

  あるいは以下のコマンドも使えます:

               user% /sbin/route -n
               user% netstat -r

  経路制御の方法自体はごく簡単です。データグラムを受けとれば、その目的地
  アドレス(誰宛に送られたのか)をチェックして、経路表の各行と比較します。
  そのアドレスにもっともよく一致する行が選択され、データグラムはその行が
  指定するインターフェイスへ送られます。その行にゲートウェイフィールドが
  登録されていれば、データグラムは指定されたインターフェイスを経由してそ
  のホストに送られます。ゲートウェイフィールドが無い場合、目的地アドレス
  はその行が指定したインターフェイスが接続しているネットワーク上にあるも
  のとみなされます。

  この経路表を操作するには `route' という専用のコマンドを使います。この
  コマンドは引数をカーネルのシステムコールに変換して、カーネルの経路表に
  追加したり、削除したり、変更したりします。

  簡単な例を示します。イーサネットのネットワークを使っていると想像してく
  ださい。ネットワークはクラス C で、ネットワークアドレスは 192.168.1.0
  です。あなたのマシンの IP アドレスは 192.168.1.10 、インターネットに接
  続しているルータのアドレスは 192.168.1.1 になっています。

  インターフェイスを設定するための最初のステップは、上述した通り
  `ifconfig' です。

               root# ifconfig eth0 192.168.1.10 netmask 255.255.255.0 up

  次に、経路表にエントリを登録して、「目的地アドレスとして 192.168.1.*
  に一致するデータグラムが届いたら、イーサネットデバイスに送る」というこ
  とをカーネルに教える必要があります。そのためには以下のコマンドを使いま
  す。

               root# route add -net 192.168.1.0 netmask 255.255.255.0 eth0

  `-net' という引数に注意してください。この指定で route プログラムはこの
  アドレスがネットワークであると認識します。ここで -host を指定すると、
  一つの IP アドレスのみを指定した経路になります。

  この経路を登録することで、あなたのいるイーサネットセグメント上にいる全
  てのホストと IP 接続できます。しかし、同じセグメント上にいないホストの
  場合はどうするのでしょう?

  起りうる全てのネットワークへの経路を登録することは不可能ですので、特別
  の仕組みが用意されています。この仕組みを「既定の経路(デフォルトルー
  ト)」と呼びます。「既定の経路」は全ての目的地アドレスにマッチします
  が、優先順位が低く、他にマッチする行があった場合、そちらの方が優先され
  ることになります。「既定の経路」の考え方は単純で、「その他全てをここに
  送る」ということです。今考えているネットワークでは以下のように「既定の
  経路」を設定します:

               root# route add default gw 192.168.1.1 eth0

  `gw' の指定により、 route コマンドはその次の引数がゲートウェイまたはル
  ータの IP アドレスまたはホスト名であると認識します。このエントリに一致
  する全てのデータグラムはこのアドレスに送られ、以降の経路制御はこのゲー
  トウェイかルータが考えることになります。

  以上をまとめると次のようになります:

               root# ifconfig eth0 192.168.1.10 netmask 255.255.255.0 up
               root# route add -net 192.168.1.0 netmask 255.255.255.0 eth0
               root# route add default gw 192.168.1.1 eth0

  ネットワークを設定している `rc' ファイルを詳細に調べると少なくともその
  一つにこれとよく似た設定が見つかるはずです。これはごく一般的な設定で
  す。

  次に多少複雑な経路の設定を見てみましょう。先に考えたルータを設定してい
  ると想像してください。このルータは PPP でインターネットに接続し、複数
  の LAN セグメントが接続されています。具体的には 3 つのイーサネットセグ
  メントと 1 つの PPP 接続があると考えましょう。その場合、経路設定は以下
  のようになるでしょう。

               root# route add -net 192.168.1.0 netmask 255.255.255.0 eth0
               root# route add -net 192.168.2.0 netmask 255.255.255.0 eth1
               root# route add -net 192.168.3.0 netmask 255.255.255.0 eth2
               root# route add default ppp0

  このルータのつながったネットワークを使っているそれぞれのワークステー
  ションは、先に述べた、より簡単な形式の設定になり、ルータのみがネットワ
  ークへの経路を別々に登録することになります。それぞれのワークステーショ
  ンの場合、「既定の経路」を使ってルータにデータグラムを送りますが、ルー
  タの場合はそれらを適切な経路に送り出す必要があります。上記のルータの設
  定でデフォルトの経路の設定に`gw' が無いのを不思議に思うかもしれません
  が、その理由は簡単で、PPP や SLIP といったシリアル経由の接続は一対一の
  接続になっているからです。接続先が一台のマシンになっているため、他に選
  択の余地が無く、そのマシンをゲートウェイとして設定する意味は無いわけで
  す。イーサネットや arcnet、トークンリングといった種類のネットワークの
  場合、それらのネットワーク上には多数のホストがあるので gw オプションを
  指定する必要があります。

  5.7.1.  さて、routed プログラムは何をしているのでしょう?

  上述した経路設定は単純なネットワーク構成に適しており、取り得る経路は一
  つしかありませんでした。もっと複雑なネットワーク構成になれば設定はもう
  少し複雑になります。幸いなことに、大部分の人はそのような設定を使う必要
  はありません。

  上述してきた「手動経路設定」すなわち「静的経路設定」の大きな問題点は、
  ネットワークの中のマシンやどこかの接続がダウンした場合、データグラムを
  別の経路へ送るようにするには、(別の経路がある場合だけですが)設定を変更
  するために必要なコマンドを手動で実行しなければならないことです。通常、
  この作業は面倒で、手間がかかり、非実用的で、トラブルの原因になりがちで
  す。そのため、ネットワークにトラブルが生じた場合、別の経路を探して自動
  的に経路表を変更するための様々な技術が開発されてきました。これらはまと
  めて「動的経路制御プロトコル」と呼ばれています。

  一般的な動的経路制御プロトコルのいくつかについては御存知かもしれませ
  ん。多分、これらのプロトコルの中で最も有名なものは RIP(Routing
  Information Protocol) と OSPF(Open Shortest Path First Protocol)でしょ
  う。RIP は小〜中規模な組織や、一つのビルの中といった小規模なネットワー
  クで最も広く使われているプロトコルです。OSPF は新しく開発されたプロト
  コルで、大規模なネットワークの設定やネットワークの中に多数の経路があり
  うる場合により適しています。これらのプロトコルを実装したプログラムとし
  て、`routed' - RIP のみ、と `gated' - RIP と OSPF、その他に対応、があ
  ります。 `routed' プログラムはたいていの Linux の配布パッケージに含ま
  れており、上述した `NetKit' パッケージにも入っています。

  具体的な例を使って動的経路制御プロトコルがどのように働くのか見てみま
  しょう。以下のようなネットワークを考えます。

           192.168.1.0 /                         192.168.2.0 /
              255.255.255.0                         255.255.255.0
            -                                     -
            |                                     |
            |   /-----\                 /-----\   |
            |   |     |ppp0   //    ppp0|     |   |
       eth0 |---|  A  |------//---------|  B  |---| eth0
            |   |     |     //          |     |   |
            |   \-----/                 \-----/   |
            |      \ ppp1             ppp1 /      |
            -       \                     /       -
                     \                   /
                      \                 /
                       \               /
                        \             /
                         \           /
                          \         /
                           \       /
                            \     /
                         ppp0\   /ppp1
                            /-----\
                            |     |
                            |  C  |
                            |     |
                            \-----/
                               |eth0
                               |
                          |---------|
                          192.168.3.0 /
                             255.255.255.0

  図のように、A、B、C の 3 つのルータがあります。それぞれのルータにはク
  ラス C の IP ネットワーク(ネットマスク 255.255.255.0)が設定された一つ
  のイーサネットのセグメントが接続されています。また、PPP を使って他のル
  ータに接続され、ネットワークは三角形になっています。

  ルータ A の経路表が以下のようになるのは明らかなはずです:

               root# route add -net 192.168.1.0 netmask 255.255.255.0 eth0
               root# route add -net 192.168.2.0 netmask 255.255.255.0 ppp0
               root# route add -net 192.168.3.0 netmask 255.255.255.0 ppp1

  この設定はルータ A と B の間の接続が切れない限り正しく動きます。A と B
  の間の接続が切れると、A に接続されたイーサネット上のホストから B に接
  続されたイーサネット上のホストへは接続できなくなります。なぜなら、ルー
  タ A から B への経路は A の ppp0 を使うことになっており、この接続が切
  れているためです。一方、A と C の間の接続は生きているので、A のイーサ
  ネット上のホストから C のイーサネット上のホストへは通信できます。一
  方、B と C の間の接続は生きているので C のイーサネット上のホストから B
  のイーサネット上のホストへも通信できます。

  さて、ここで A は C と通信でき、C は B に通信できるとしたら、A から B
  へのデータグラムは C を経由して B に送ることが可能なはずです。このよう
  な問題を解決するために RIP のような動的経路制御プロトコルが開発されま
  した。A、B、C それぞれのルータで経路制御デーモンが動いていれば、どれか
  一つの接続が切れても、そのネットワークの状態を反映するように自動的に経
  路表が調整されます。経路制御デーモンの設定は簡単で、それぞれのルータで
  2 つのことをするだけです。ルータ A の場合、

               root# route add -net 192.168.1.0 netmask 255.255.255.0 eth0
               root# /usr/sbin/routed

  経路制御デーモン routed は起動時に使用可能なネットワークポート全てを自
  動的に探して、そのホストの経路表を更新できるようにそれぞれのネットワー
  クデバイスへメッセージを送ると同時に、他のホストから送られてくるメッセ
  ージを受けとります。

  以上はごく簡単な動的経路制御の説明ですが、充分使えるはずです。より詳細
  な説明が必要ならばこの文書の最初に挙げた参考文献を参照してください。

  動的経路制御についての重要なポイントは以下の通りです:

  1. 目的地まで複数の経路があり、その中から一つの経路を選ばなければなら
     ない状況にないかぎり、あなたの Linux マシンで動的経路制御デーモンを
     動かす必要はありません。これは例えば、IP マスカレードを使おうとして
     いる場合などです。

  2. 動的経路制御デーモンは、ネットワークの状態の変化に応じて自動的に経
     路表を変更します。

  3. RIP は小〜中規模のネットワークに適しています。

  5.8.  ネットワーク経由の各種サービスとサーバの設定

  ネットワーク経由の各種サービスとそのためのサーバを起動すれば、遠隔地に
  いるユーザが、ネットワーク経由であなたの Linux マシンを使うことができ
  ます。サーバプログラムはネットワークポートを監視します。ネットワークポ
  ートは特定のホストの特定のサービスを示す手段であり、telnet によるアク
  セスと ftp によるアクセスをサーバが区別する方法です。遠隔地のユーザが
  サーバマシンとの接続を確立すると、そのポートを監視しているサーバプログ
  ラム (ネットワークデーモンプログラム)は接続を受け付けて動作します。
  ネットワークデーモンの動作方法には 2 つの種類があり、どちらの方法も実
  際に用いられています。これらを以下に示します:

     スタンドアローン型
        ネットワークサービス用のプログラムは予め起動されて受け持ちのポー
        トを監視しており、接続があれば自分で必要なサービスを提供します。

     inetd 経由で起動するタイプ
        ined サーバはネットワーク接続を受けつけるための特別のデーモンプ
        ログラムです。このプログラムは接続を受け付けたとき、必要とされる
        プログラムを設定ファイルに従って起動します。どのサービスポートも
        tcp プロトコルと udp プロトコルのどちらを使うようにも設定できま
        す。ポートは別のファイルに記述されますが、これについては後述しま
        す。

  設定すべき重要なファイルは 2 つあります。ポート番号をサービス名に対応
  づける /etc/services と、inetd デーモンの設定ファイルである
  /etc/inetd.conf ファイルです。

  5.8.1.  /etc/services

  /etc/services ファイルは、人間にとって分かりやすいサービス名と計算機が
  扱いやすいポート番号を対応させる単純なデータベースです。このファイルの
  書式はごく単純で、普通のテキストファイルの各行にデータベースのエントリ
  が記述されています。それぞれのエントリは任意の数の空白文字(タブかスペ
  ース)で分離された 3 つのフィールドから構成されます。また、#から後はコ
  メントとして無視されます。フィールドの構成は以下のようになっています:

    name      port/protocol        aliases     # comment

     name
        は一語で書かれ、記述するサービスを示します。

     port/protocol
        このフィールドはさらに 2 つの部分に分かれます。

     port
        この行が示すサービスを提供するためのポート番号です。よく使われる
        サービスには予めポート番号が割り当てられています。詳しくは
        RFC-1340 をご覧ください。

     protocol
        このフィールドには tcp または udp を指定します。

        注意しておかなければならないことは、18/tcp と 18/udp は全く異な
        る意味を持つということです。1つのサービスが同じポートの tcp と
        udp を使わなければならない技術的な理由はありません。普通はこの常
        識通りに指定が行われ、/etc/services に両方のエントリが現れるのは
        特定のサービスが tcp でも udp でも使える場合だけです。

     aliases
        はこのサービスの参照に使える別名を設定します。

  ある行の `# 以降に書かれた部分はコメントとして無視されます。

  5.8.1.1.  /etc/services ファイルの実例

  最近の Linux の各種ディストリビューションでは /etc/services ファイルが
  予め用意されています。もし 0 からシステムを組みあげなければならない場
  合のために、古い Debian <http://www.debian.org/> ディストリビューショ
  ンからコピーした /etc/services の例を以下に紹介します:

       # /etc/services:
       # $Id: NET3-4-HOWTO.sgml,v 1.14 2000/12/18 02:12:43 morimoto Exp $
       #
       # Network services, Internet style
       #
       # Note that it is presently the policy of IANA to assign a single well-known
       # port number for both TCP and UDP; hence, most entries here have two entries
       # even if the protocol doesn't support UDP operations.
       # Updated from RFC 1340, ``Assigned Numbers'' (July 1992).  Not all ports
       # are included, only the more common ones.

       tcpmux          1/tcp                           # TCP port service multiplexer
       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
       qotd            17/tcp          quote
       msp             18/tcp                          # message send protocol
       msp             18/udp                          # message send protocol
       chargen         19/tcp          ttytst source
       chargen         19/udp          ttytst source
       ftp-data        20/tcp
       ftp             21/tcp
       ssh             22/tcp                          # SSH Remote Login Protocol
       ssh             22/udp                          # SSH Remote Login Protocol
       telnet          23/tcp
       # 24 - private
       smtp            25/tcp          mail
       # 26 - unassigned
       time            37/tcp          timserver
       time            37/udp          timserver
       rlp             39/udp          resource        # resource location
       nameserver      42/tcp          name            # IEN 116
       whois           43/tcp          nicname
       re-mail-ck      50/tcp                          # Remote Mail Checking Protocol
       re-mail-ck      50/udp                          # Remote Mail Checking Protocol
       domain          53/tcp          nameserver      # name-domain server
       domain          53/udp          nameserver
       mtp             57/tcp                          # deprecated
       bootps          67/tcp                          # BOOTP server
       bootps          67/udp
       bootpc          68/tcp                          # BOOTP client
       bootpc          68/udp
       tftp            69/udp
       gopher          70/tcp                          # Internet Gopher
       gopher          70/udp
       rje             77/tcp          netrjs
       finger          79/tcp
       www             80/tcp          http            # WorldWideWeb HTTP
       www             80/udp                          # HyperText Transfer Protocol
       link            87/tcp          ttylink
       kerberos        88/tcp          kerberos5 krb5  # Kerberos v5
       kerberos        88/udp          kerberos5 krb5  # Kerberos v5
       supdup          95/tcp
       # 100 - reserved
       hostnames       101/tcp         hostname        # usually from sri-nic
       iso-tsap        102/tcp         tsap            # part of ISODE.
       csnet-ns        105/tcp         cso-ns          # also used by CSO name server
       csnet-ns        105/udp         cso-ns
       rtelnet         107/tcp                         # Remote Telnet
       rtelnet         107/udp
       pop-2           109/tcp         postoffice      # POP version 2
  pop-2           109/udp
  pop-3           110/tcp                         # POP version 3
  pop-3           110/udp
  sunrpc          111/tcp         portmapper      # RPC 4.0 portmapper TCP
  sunrpc          111/udp         portmapper      # RPC 4.0 portmapper UDP
  auth            113/tcp         authentication tap ident
  sftp            115/tcp
  uucp-path       117/tcp
  nntp            119/tcp         readnews untp   # USENET News Transfer Protocol
  ntp             123/tcp
  ntp             123/udp                         # Network Time Protocol
  netbios-ns      137/tcp                         # NETBIOS Name Service
  netbios-ns      137/udp
  netbios-dgm     138/tcp                         # NETBIOS Datagram Service
  netbios-dgm     138/udp
  netbios-ssn     139/tcp                         # NETBIOS session service
  netbios-ssn     139/udp
  imap2           143/tcp                         # Interim Mail Access Proto v2
  imap2           143/udp
  snmp            161/udp                         # Simple Net Mgmt Proto
  snmp-trap       162/udp         snmptrap        # Traps for SNMP
  cmip-man        163/tcp                         # ISO mgmt over IP (CMOT)
  cmip-man        163/udp
  cmip-agent      164/tcp
  cmip-agent      164/udp
  xdmcp           177/tcp                         # X Display Mgr. Control Proto
  xdmcp           177/udp
  nextstep        178/tcp         NeXTStep NextStep       # NeXTStep window
  nextstep        178/udp         NeXTStep NextStep       # server
  bgp             179/tcp                         # Border Gateway Proto.
  bgp             179/udp
  prospero        191/tcp                         # Cliff Neuman's Prospero
  prospero        191/udp
  irc             194/tcp                         # Internet Relay Chat
  irc             194/udp
  smux            199/tcp                         # SNMP Unix Multiplexer
  smux            199/udp
  at-rtmp         201/tcp                         # AppleTalk routing
  at-rtmp         201/udp
  at-nbp          202/tcp                         # AppleTalk name binding
  at-nbp          202/udp
  at-echo         204/tcp                         # AppleTalk echo
  at-echo         204/udp
  at-zis          206/tcp                         # AppleTalk zone information
  at-zis          206/udp
  z3950           210/tcp         wais            # NISO Z39.50 database
  z3950           210/udp         wais
  ipx             213/tcp                         # IPX
  ipx             213/udp
  imap3           220/tcp                         # Interactive Mail Access
  imap3           220/udp                         # Protocol v3
  ulistserv       372/tcp                         # UNIX Listserv
  ulistserv       372/udp
  #
  # UNIX specific services
  #
  exec            512/tcp
  biff            512/udp         comsat
  login           513/tcp
  who             513/udp         whod
  shell           514/tcp         cmd             # no passwords used
  syslog          514/udp
  printer         515/tcp         spooler         # line printer spooler
  talk            517/udp
  ntalk           518/udp
  route           520/udp         router routed   # RIP
  timed           525/udp         timeserver
  tempo           526/tcp         newdate
  courier         530/tcp         rpc
  conference      531/tcp         chat
  netnews         532/tcp         readnews
  netwall         533/udp                         # -for emergency broadcasts
  uucp            540/tcp         uucpd           # uucp daemon
  remotefs        556/tcp         rfs_server rfs  # Brunhoff remote filesystem
  klogin          543/tcp                         # Kerberized `rlogin' (v5)
  kshell          544/tcp         krcmd           # Kerberized `rsh' (v5)
  kerberos-adm    749/tcp                         # Kerberos `kadmin' (v5)
  #
  webster         765/tcp                         # Network dictionary
  webster         765/udp
  #
  # From ``Assigned Numbers'':
  #
  #> The Registered Ports are not controlled by the IANA and on most systems
  #> can be used by ordinary user processes or programs executed by ordinary
  #> users.
  #
  #> Ports are used in the TCP [45,106] to name the ends of logical
  #> connections which carry long term conversations.  For the purpose of
  #> providing services to unknown callers, a service contact port is
  #> defined.  This list specifies the port used by the server process as its
  #> contact port.  While the IANA can not control uses of these ports it
  #> does register or list uses of these ports as a convenience to the
  #> community.
  #
  ingreslock      1524/tcp
  ingreslock      1524/udp
  prospero-np     1525/tcp                # Prospero non-privileged
  prospero-np     1525/udp
  rfe             5002/tcp                # Radio Free Ethernet
  rfe             5002/udp                # Actually uses UDP only
  bbs             7000/tcp                # BBS service
  #
  #
  # Kerberos (Project Athena/MIT) services
  # Note that these are for Kerberos v4 and are unofficial.  Sites running
  # v4 should uncomment these and comment out the v5 entries above.
  #
  kerberos4       750/udp         kdc     # Kerberos (server) udp
  kerberos4       750/tcp         kdc     # Kerberos (server) tcp
  kerberos_master 751/udp                 # Kerberos authentication
  kerberos_master 751/tcp                 # Kerberos authentication
  passwd_server   752/udp                 # Kerberos passwd server
  krb_prop        754/tcp                 # Kerberos slave propagation
  krbupdate       760/tcp         kreg    # Kerberos registration
  kpasswd         761/tcp         kpwd    # Kerberos "passwd"
  kpop            1109/tcp                # Pop with Kerberos
  knetd           2053/tcp                # Kerberos de-multiplexor
  zephyr-srv      2102/udp                # Zephyr server
  zephyr-clt      2103/udp                # Zephyr serv-hm connection
  zephyr-hm       2104/udp                # Zephyr hostmanager
  eklogin         2105/tcp                # Kerberos encrypted rlogin
  #
  # Unofficial but necessary (for NetBSD) services
  #
  supfilesrv      871/tcp                 # SUP server
  supfiledbg      1127/tcp                # SUP debugging
  #
  # Datagram Delivery Protocol services
  #
  rtmp            1/ddp                   # Routing Table Maintenance Protocol
  nbp             2/ddp                   # Name Binding Protocol
  echo            4/ddp                   # AppleTalk Echo Protocol
  zip             6/ddp                   # Zone Information Protocol
  #
  # Debian GNU/Linux services
  rmtcfg          1236/tcp                # Gracilis Packeten remote config server
  xtel            1313/tcp                # french minitel
  cfinger         2003/tcp                # GNU Finger
  postgres        4321/tcp                # POSTGRES
  mandelspawn     9359/udp        mandelbrot      # network mandelbrot

  # Local services

  実際には、新しいサービスが作られるたびに /etc/services ファイルは大き
  くなっていきます。自分が使っている /etc/services が不完全かもしれない
  と不安であれば、新しいディストリビューションから /etc/services をコピ
  ーしてくるとよいでしょう。

  5.8.2.  /etc/inetd.conf

  /etc/inetd.conf ファイルは inetd サーバデーモンの設定ファイルです。こ
  のファイルはあるサービスへの要求が来たとき、 inetd がどのように処理す
  るかを指定します。受けつけるサービスそれぞれについて、どのネットワーク
  デーモンをどのように起動するかについて inetd に指定してやらねばなりま
  せん。

  このファイルも書式はごく単純です。普通のテキストファイルで各行に提供す
  べきサービスが記述してあります。# 以降の部分はコメントとして無視されま
  す。各行には任意の数の空白文字(タブかスペース)で区切られた 7 つの欄が
  あります。一般的な書式は以下の通りです:

         service  socket_type  proto  flags  user  server_path  server_args

     service
        /etc/services ファイルに指定したそれぞれのサービス名です。

     socket_type
        この欄はこのエントリが使用するソケットの種類です。使えるのは
        stream, dgram, raw, rdm, seqpacket です。詳細は技術的な話になる
        ので省略しますが、経験則で言うと、tcp を使ったほぼ全てのサービス
        は stream を使い、udp を使ったほぼ全てのサービスは dgram を使い
        ます。これ以外のソケットを使うのはごく限られた特殊なサーバだけで
        す。

     proto
        このエントリが使うプロトコルを示します。ここでの指定は
        /etc/services の対応するエントリと一致しておらねばならず、たいて
        いは tcp か udp のどちらかです。Sun の RPC(Remoto Procedure
        Call)を使ったサービスでは rpc/tcp か rpc/udp を使うことがありま
        す。

     flags
        このフィールドには 2 種類しか設定がありません。 wait か nowait
        かのどちらかです。この欄は、inetd が起動したネットワークサービス
        用デーモンが起動後すぐにソケットを解放して、即座に次の接続リクエ
        ストが受付け可能となるのか、ネットワークサービス用デーモンが動い
        ている間は新しい接続を受けつけずに待つのか、を指定します。この項
        目の指定方法を説明するのもちょっと難しいのですが、経験則で言うと
        tcp を使ったサーバでは nowait に、udp を使ったサーバでは wait に
        なっているはずです。いくつか例外もありますので、不確実な場合は例
        を見てください。

     user
        このフィールドには、指定したネットワークサービスを起動するユーザ
        名を指定します。このユーザ名は /etc/passwd に登録されていなけれ
        ばなりません。ユーザを指定しておくのはセキュリティ上も役立ちま
        す。起動するユーザを nobody にしておけば、ネットワークサーバのセ
        キュリティが破られても被害を最小限に留めることが可能です。もっと
        も、この欄はたいていの場合 root になっています。なぜならば、ほと
        んどのサービスでは正しく機能するためにルート権限が必要だからで
        す。

     server_path
        この欄は実際に実行するサーバプログラムを絶対パスで指定します。

     server_args
        この欄は行の残りの部分全てからなり、なくても構いません。この欄は
        サーバデーモンプログラムを起動する際に渡すコマンドライン引数を指
        定するために使います。

  5.8.2.1.  /etc/inetd.conf の例

  /etc/services ファイルと同じく、最近の Linux ディストリビューションに
  は充分な /etc/inetd.conf ファイルが付属しています。ここでも Debian
  <http://www.debian.org/> ディストリビューションからコピーしてきた
  /etc/inetd.conf の例を示すことにしましょう。

  # /etc/inetd.conf:  see inetd(8) for further informations.
  #
  # Internet server configuration database
  #
  #
  # Modified for Debian by Peter Tobias <tobias@et-inf.fho-emden.de>
  #
  # <service_name> <sock_type> <proto> <flags> <user> <server_path> <args>
  #
  # Internal services
  #
  #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
  time            stream  tcp     nowait  root    internal
  time            dgram   udp     wait    root    internal
  #
  # These are standard services.
  #
  telnet  stream  tcp     nowait  root    /usr/sbin/tcpd  /usr/sbin/in.telnetd
  ftp     stream  tcp     nowait  root    /usr/sbin/tcpd  /usr/sbin/in.ftpd
  #fsp    dgram   udp     wait    root    /usr/sbin/tcpd  /usr/sbin/in.fspd
  #
  # Shell, login, exec and talk are BSD protocols.
  #
  shell   stream  tcp     nowait  root    /usr/sbin/tcpd  /usr/sbin/in.rshd
  login   stream  tcp     nowait  root    /usr/sbin/tcpd  /usr/sbin/in.rlogind
  #exec   stream  tcp     nowait  root    /usr/sbin/tcpd  /usr/sbin/in.rexecd
  talk    dgram   udp     wait    root    /usr/sbin/tcpd  /usr/sbin/in.talkd
  ntalk   dgram   udp     wait    root    /usr/sbin/tcpd  /usr/sbin/in.ntalkd
  #
  # Mail, news and uucp services.
  #
  smtp    stream  tcp     nowait  root    /usr/sbin/tcpd  /usr/sbin/in.smtpd
  #nntp   stream  tcp     nowait  news    /usr/sbin/tcpd  /usr/sbin/in.nntpd
  #uucp   stream  tcp     nowait  uucp    /usr/sbin/tcpd  /usr/lib/uucp/uucico
  #comsat dgram   udp     wait    root    /usr/sbin/tcpd  /usr/sbin/in.comsat
  #
  # Pop et al
  #
  #pop-2  stream  tcp     nowait  root    /usr/sbin/tcpd  /usr/sbin/in.pop2d
  #pop-3  stream  tcp     nowait  root    /usr/sbin/tcpd  /usr/sbin/in.pop3d
  #
  # `cfinger' is for the GNU finger server available for Debian.  (NOTE: The
  # current implementation of the `finger' daemon allows it to be run as `root'.)
  #
  #cfinger stream tcp     nowait  root    /usr/sbin/tcpd  /usr/sbin/in.cfingerd
  #finger stream  tcp     nowait  root    /usr/sbin/tcpd  /usr/sbin/in.fingerd
  #netstat        stream  tcp     nowait  nobody  /usr/sbin/tcpd  /bin/netstat
  #systat stream  tcp     nowait  nobody  /usr/sbin/tcpd  /bin/ps -auwwx
  #
  # Tftp service is provided primarily for booting.  Most sites
  # run this only on machines acting as "boot servers."
  #
  #tftp   dgram   udp     wait    nobody  /usr/sbin/tcpd  /usr/sbin/in.tftpd
  #tftp   dgram   udp     wait    nobody  /usr/sbin/tcpd  /usr/sbin/in.tftpd /boot
  #bootps dgram   udp     wait    root    /usr/sbin/bootpd        bootpd -i -t 120
  #
  # Kerberos authenticated services (these probably need to be corrected)
  #
  #klogin         stream  tcp     nowait  root    /usr/sbin/tcpd  /usr/sbin/in.rlogind -k
  #eklogin        stream  tcp     nowait  root    /usr/sbin/tcpd  /usr/sbin/in.rlogind -k -x
  #kshell         stream  tcp     nowait  root    /usr/sbin/tcpd  /usr/sbin/in.rshd -k
  #
  # Services run ONLY on the Kerberos server (these probably need to be corrected)
  #
  #krbupdate      stream tcp      nowait  root    /usr/sbin/tcpd  /usr/sbin/registerd
  #kpasswd        stream  tcp     nowait  root    /usr/sbin/tcpd  /usr/sbin/kpasswdd
  #
  # RPC based services
  #
  #mountd/1       dgram   rpc/udp wait    root    /usr/sbin/tcpd  /usr/sbin/rpc.mountd
  #rstatd/1-3     dgram   rpc/udp wait    root    /usr/sbin/tcpd  /usr/sbin/rpc.rstatd
  #rusersd/2-3    dgram   rpc/udp wait    root    /usr/sbin/tcpd  /usr/sbin/rpc.rusersd
  #walld/1        dgram   rpc/udp wait    root    /usr/sbin/tcpd  /usr/sbin/rpc.rwalld
  #
  # End of inetd.conf.
  ident           stream  tcp     nowait  nobody  /usr/sbin/identd        identd -i

  5.9.  その他のネットワークに関連した設定ファイル

  他にもさまざまなネットワークに関する設定ファイルがあります。通常これら
  を修正する必要はありませんが、どのようなファイルが存在し、それらは何を
  設定しているかを知っておいても損は無いでしょう。

  5.9.1.  /etc/protocols

  /etc/protocols ファイルは、 TCP/IP パケットに埋めこまれている各種プロ
  トコルの識別番号とプロトコルを結びつけるデータベースです。このファイル
  を使えば、プログラムから特定のプロトコルを識別番号ではなく名前で参照で
  きるようになり、tcpdump のようなプログラムも、番号ではなくプロトコル名
  で出力するようになります。このファイルの一般的な書式は以下の通りです:

         protocolname  number  aliases

  Debian <http://www.debian.org/> ディストリビューションに付属の
  /etc/protocols ファイルは以下の通りです:

  # /etc/protocols:
  # $Id: NET3-4-HOWTO.sgml,v 1.14 2000/12/18 02:12:43 morimoto Exp $
  #
  # Internet (IP) protocols
  #
  #       from: @(#)protocols     5.1 (Berkeley) 4/17/89
  #
  # Updated for NetBSD based on RFC 1340, Assigned Numbers (July 1992).

  ip      0       IP              # internet protocol, pseudo protocol number
  icmp    1       ICMP            # internet control message protocol
  igmp    2       IGMP            # Internet Group Management
  ggp     3       GGP             # gateway-gateway protocol
  ipencap 4       IP-ENCAP        # IP encapsulated in IP (officially ``IP'')
  st      5       ST              # ST datagram mode
  tcp     6       TCP             # transmission control protocol
  egp     8       EGP             # exterior gateway protocol
  pup     12      PUP             # PARC universal packet protocol
  udp     17      UDP             # user datagram protocol
  hmp     20      HMP             # host monitoring protocol
  xns-idp 22      XNS-IDP         # Xerox NS IDP
  rdp     27      RDP             # "reliable datagram" protocol
  iso-tp4 29      ISO-TP4         # ISO Transport Protocol class 4
  xtp     36      XTP             # Xpress Tranfer Protocol
  ddp     37      DDP             # Datagram Delivery Protocol
  idpr-cmtp       39      IDPR-CMTP       # IDPR Control Message Transport
  rspf    73      RSPF            # Radio Shortest Path First.
  vmtp    81      VMTP            # Versatile Message Transport
  ospf    89      OSPFIGP         # Open Shortest Path First IGP
  ipip    94      IPIP            # Yet Another IP encapsulation
  encap   98      ENCAP           # Yet Another IP encapsulation

  5.9.2.  /etc/networks

  /etc/networks ファイルは /etc/hosts ファイルとよく似た機能を持ってお
  り、ネットワークアドレスとネットワーク名の対応表になっていま
  す。/etc/hosts ファイルとの違いは各行に 2 つの欄しか無いことで、各行は
  以下のように構成されます:

         networkname networkaddress

  例えばこのようになります:

               loopnet    127.0.0.0
               localnet   192.168.0.0
               amprnet    44.0.0.0

  route コマンドを使う際、目的地がネットワークで、そのネットワークアドレ
  スが /etc/networks に登録されていれば、route コマンドの出力はアドレス
  ではなく名前になります。

  5.10.  ネットワークのセキュリティとアクセス制御

  まず最初に注意しておきますが、悪意を持った攻撃からマシンとネットワーク
  のセキュリティを守るのは複雑な技術が必要になります。私自身この分野につ
  いてはとてもエキスパートとは言えません。そのため、以下に有益であろう手
  段を紹介しますが、もしセキュリティについて真剣に考えるならば自分自身で
  調べてみることをお勧めします。 Security-HOWTO <Security-HOWTO.html> を
  含めて、インターネット上にはこの問題についての情報が豊富にあります。

  重要な経験則は「使うつもりのないサーバは起動しない」ことです。Linux の
  各種ディストリビューションでは予め全てのサービスが設定され、それらが自
  動的に起動するようになっています。最低限の安全を確保するために、まず
  /etc/inted.conf に目を通して、使うつもりのないサービスをコメントアウ
  ト(行頭に # を付ける)しておきましょう。コメントアウトしておいた方がい
  いサービスは shell、login、 exec、uucp、ftp といったサービスと、
  finger, netstat, systat といった情報提供用サービスです。

  セキュリティとアクセス制御のメカニズムにはさまざまな種類がありますの
  で、以下ではごく基本的なものだけを説明します。

  5.10.1.  /etc/ftpusers

  /etc/ftpusers ファイルは、特定のユーザを ftp 経由でログインさせないた
  めの簡単な仕組みです。/etc/ftpusers は ftp 接続があった際に ftp デーモ
  ンプログラム ftpd が読みこみます。このファイルは単に ftp を許可しない
  ユーザを列挙しただけのものです。このファイルは以下のような内容です:

               # /etc/ftpusers - users not allowed to login via ftp
               root
               uucp
               bin
               mail

  5.10.2.  /etc/securetty

  /etc/securetty ファイルを使うと、どの tty デバイスから root がログオン
  できるかを指定できます。 /etc/securetty ファイルは login プログラム(通
  常は /bin/login)が読みます。このファイルにはルートのアクセスを許可する
  tty を列挙します。その他の tty からはルートでアクセスできません。

               # /etc/securetty - tty's on which root is allowed to login
               tty1
               tty2
               tty3
               tty4

  5.10.3.  tcpd を使ったホスト別アクセス制御機構

  tcpd プログラムは /etc/inetd.conf で見たように、指定されたサービスをよ
  り安全に実行するために、ログインとアクセス制御の機能を提供します。

  inetd から起動されると、tcpd は指定したサービスへのアクセスを許可する
  か拒否するかを記述した 2 つのファイルを読み込みます。

  tcpd は /etc/hosts.allow と /etc/hosts.deny の 2 つのファイルをこの順
  に調べ、一致する記述があるかどうかをチェックします。一致する記述がなけ
  ればそのサービスは全ての人に許可しているものとみなします。以下では、こ
  れらのファイルについて順に説明していきます。詳しくはそれぞれの man ペ
  ージを読んでください(まず hosts_access(5) から始めるのがよいでしょ
  う)。

  5.10.3.1.  /etc/hosts.allow

  /etc/hosts.allow ファイルは /usr/sbin/tcpd 用の設定ファイルで
  す。hosts.allow ファイルにはどのマシンからの接続を許可するかの設定を記
  述します。

  このファイルの書式はごく単純です。

               # /etc/hosts.allow
               #
               # <service list>: <host list> [: command]

     service list
        は、このルールを適用するサーバプログラムをコンマで区切って記述し
        ます。サーバプログラムには ftpd telnetd fingerd などがあります。

     host list
        ホスト名をコンマで区切って記述します。ホスト名の代わりに IP アド
        レスを使うことも可能です。ワイルドカードキャラクタを使って複数の
        ホストや IP アドレスを指定可能です。例えば、gw.vk2ktj.ampr.org
        と書くと 1 つのホストを指定したことになりますが、.uts.edu.au と
        するとこの文字列で終るホスト(このドメインに属するホスト)全てを指
        定したことになります。44. とすると、この IP アドレスで始まるホス
        ト全てに一致します。設定を簡単にするためにいくつか特別のキーワー
        ドが用意してあります。例えば ALL は全てのホスト名にマッチし、
        LOCAL は . を含まないホスト名、すなわちそのマシンと同じドメイン
        にあるマシンにマッチし、PARANOID は登録されているホスト名と IP
        アドレスがマッチしない全てのマシン(名前を詐称しているマシン)に一
        致します。もう一つ、役に立つキーワードに EXCEPT があります。これ
        は例外リストになります。例については後述します。

     command
        省略してもよいパラメータで、この行の規則が適用された際に実行され
        るコマンドへのフルパスを指定します。この機能を使えば、接続してき
        たホストに誰がログインしているかを調べたり、誰かが接続しようとし
        たときにメールなどの手段を用いて管理者に報せることが可能です。こ
        こには様々な変数が用意されており、たとえば %h は接続してきたホス
        ト名(ホスト名が分らない場合には IP アドレス)に変換され、%d  は呼
        び出されたデーモン名に変換されます。

  例を示します:

         # /etc/hosts.allow
         #
         # Allow mail to anyone
         in.smtpd: ALL
         # All telnet and ftp to only hosts within my domain and my host at home.
         telnetd, ftpd: LOCAL, myhost.athome.org.au
         # Allow finger to anyone but keep a record of who they are.
         fingerd: ALL: (finger @%h | mail -s "finger from %h" root)

  5.10.3.2.  /etc/hosts.deny

  /etc/hosts.deny も /usr/sbin/tcpd プログラムの設定ファイルであり、どの
  ホストからの接続を拒否するかを設定します。

  以下に簡単な例を示します:

         # /etc/hosts.deny
         #
         # Disallow all hosts with suspect hostnames
         ALL: PARANOID
         #
         # Disallow all hosts.
         ALL: ALL

  PARANOID の指定は実際のところ不要です。なぜならば、その次のエントリで
  全ての接続を拒否しているからです。必要に応じてこれらのエントリのどちら
  かをデフォルトにするのもいいでしょう。

  /etc/hosts.deny で ALL:ALL を設定しておき、有効にしたいサービスとホス
  トだけを /etc/hosts.allow で許可するのが最も安全な設定でしょう。

  5.10.4.  /etc/hosts.equiv

  hosts.equiv ファイルは、パスワード無しにあなたのマシンにアクセスできる
  ホストとユーザを指定します。この機能は全てのマシンがあなたの管轄下にあ
  る安全な環境では便利ですが、それ以外の状況ではセキュリティ的には危険で
  す。あなたのマシンのセキュリティは、このファイルに登録したホストの中の
  セキュリティが最も弱いマシンと同じレベルになってしまいます。セキュリ
  ティを高めるためにはこの機能は使わないようにして、各ユーザにも .rhosts
  ファイルを使わないようにさせましょう。

  5.10.5.  ftp デーモンの適切な設定

  多くのサイトで、匿名(anonymous) ftp サーバを動かして、特定のユーザ ID
  が無い人々にもファイルのダウンロードやアップロードを許可しています。こ
  の機能を使う場合は ftp デーモンが匿名アクセスを正しく処理できるように
  設定されているかを確認してください。 ftpd(8) の man ページは、この設定
  のためにかなりの紙幅を費やしているので、それらの指示に従って設定してい
  るか、常に注意してください。重要なポイントは /etc/passwd ファイルのコ
  ピーを匿名 ftp 用の /etc/ ディレクトリで使わないことです。絶対に必要な
  アカウント以外は passwd ファイルから削除しておきましょう。そうしないと
  総当たり式の攻撃でパスワードを解読されてしまう危険性があります。

  5.10.6.  ファイアウォール

  あなたのマシンやサーバにまでデータグラムが届きさえしないようにすること
  はセキュリティ的に優れた方法です。この方法については Firewall-HOWTO
  <Firewall-HOWTO.html> で詳しく説明されています。(それよりずっと簡単で
  すが)本文書でも後述します。

  5.10.7.  その他のお勧め

  宗教的なところもありますが、その他の注意しておくべきポイントを述べてお
  きます。

     sendmail デーモン
        これは有名なプログラムですが、しばしばセキュリティ的な問題につい
        ても報告されます。どうするかはおまかせしますが、私は sendmail は
        動かさないことにしました。

     NFS とその他 Sun の RPC を使うサービス
        これについても慎重になるべきです。これらのサービスはさまざまな方
        法で悪用可能です。NFS のようなサービスの代わりを見つけるのは困難
        ですが、これらを設定する際には誰にマウント許可を与えるかに充分注
        意する必要があります。

  6.  IP 関係、イーサネット関係の情報

  この章では、イーサネットと IP に固有の情報を説明します。この章に含まれ
  る内容は、以前の版で「それぞれのネットワーク技術についての情報」という
  章に含まれていた内容から、筆者が特に面白いと思ったものをピックアップし
  て別個にまとめたものです。 LAN を引いている人なら誰でも、この章の内容
  は役に立つはずです。

  6.1.  イーサネット

  イーサネットのデバイス名は `eth0', `eth1', `eth2'のようになります。カ
  ーネルが検出した最初のカードが `eth0'で、以下カードが検出する順に番号
  が振られていきます。

  デフォルトでは Linux カーネルはイーサネットデバイスを一つしか検出しな
  いので、それ以上のボードをカーネルに検出させるためには、コマンドライン
  引数で指定する必要があります。

  Linux でイーサネットカードを使う方法の詳細については Ethernet-HOWTO
  <Ethernet-HOWTO.html> を参照してください。

  お使いのイーサネットカードをサポートするようにカーネルをきちんと再構築
  してしまえば設定そのものは簡単です。

  設定は通常、以下のようになります(ほとんどのディストリビューションは、
  イーサネットをサポートするように設定すれば自動的にこの設定も行うはずで
  す):
               root# ifconfig eth0 192.168.0.1 netmask 255.255.255.0 up
               root# route add -net 192.168.0.0 netmask 255.255.255.0 eth0

  ほとんどのイーサネットデバイスは Donald Becker
  becker@CESDIS.gsfc.nasa.gov が開発しました。

  6.2.  EQL - 複数回線のトラフィックイコライザ

  EQL のデバイス名は `eql' です。標準のカーネルソースでは一台のマシンで
  一つの EQL デバイスしか使えないかもしれません。EQL を使えば、 PPP や
  slip、plip といった二点間接続を複数用意して、それらを一つの論理的な接
  続のように利用できます。たいていの場合、高速の専用線よりも低速回線を複
  数まとめた方が安価に回線速度を稼げます。

  カーネルのコンパイルオプション:

               Network device support  --->
                   [*] Network device support
                   <*> EQL (serial line load balancing) support

  この機能を使うためには、接続先のマシンも EQL 機能を持っていなければい
  けません。Linux、 Livingstone Portmaster シリーズ以降のダイアルインサ
  ーバなどがこの機能をサポートしています。

  EQL を設定するには、 metalab.unc.edu
  <ftp://metalab.unc.edu/pub/linux/system/Serial/eql-1.2.tar.gz> から入
  手できる EQL 用ツールが必要になります。

  EQL の設定はごく簡単です。まず最初に eql インターフェイスを設定しま
  す。 eql インターフェースは他のネットワークデバイスとほとんど同じで
  す。 IP アドレスや mtu は ifconfig を用いて下記のように設定します。

               root# ifconfig eql 192.168.10.1 mtu 1006

  次に、使おうとしている回線それぞれを手動で起動します。二点間接続を複数
  用意することになるでしょう。どのように起動するかは使う接続の種類に依存
  しますので、詳しい情報はそれぞれの接続形態について説明した章をご覧くだ
  さい。

  最後にシリアル接続を EQL デバイスに結びつけます。これは「スレーブ化
  (enslalving)」と呼ばれ、eql_enslave コマンドによって以下のように行いま
  す:

          root# eql_enslave eql sl0 28800
          root# eql_enslave eql ppp0 14400

  eql_enslave コマンドに与える「推定回線速度(estimated speed)」パラメー
  タは、直接には何もしません。このパラメータは EQL デバイスがデータグラ
  ムをそれぞれの回線からどのような割合で受けるかを決定するために使われる
  ので、この数字をうまく調整して最適値を探してください。

  EQL デバイスから回線を開放するには、以下のように eql_emancipate コマン
  ドを使います:

               root# eql_emancipate eql sl0

  他の二点間接続と同じく、EQL デバイスを使った経路制御も可能ですが、その
  場合実際のシリアルデバイスではなく eql デバイスを経路に使います。例え
  ば、以下のように経路を設定できます:

               root# route add default eql

  EQL ドライバは Simon Janes  simon@ncm.com が開発しました。

  6.3.  IP パケット統計情報の取得(Linux 2.0 用)

  カーネルに IP パケット統計情報の取得機能(IP accounting 機能)を組み込め
  ば、ネットワークの使用記録を取ることができます。記録できるデータは、最
  後にカウンタをリセットしてからやりとりしたパケット数とデータのバイト数
  です。カテゴリごとに異なるルールを指定でき、目的に応じた設定が可能で
  す。このオプションはカーネル 2.1.102 でなくなりました。古い ipfwadm ベ
  ースのファイアウォールが ``ipfwchains'' によって置き換えられたからで
  す。

  カーネルのコンパイルオプション:

               Networking options  --->
                   [*] IP: accounting

  カーネルに必要な機能を組み込んで再起動した後、ipfwadm コマンドを使って
  IP パケット統計取得機能を設定します。IP パケットの統計情報を細分するた
  めの方法はいろいろあります。以下に実際に使えそうな簡単な設定例を示して
  みます。詳細については ipfwadm の man ページを読んでください。

  状況設定: PPP 経由でインターネットに接続されたイーサネットのネットワー
  クがあるとします。イーサネットのネットワーク上にはさまざまなサービスを
  提供しているマシンがあり、ftp や WWW といったトラフィックがどれくらい
  生じているかを知りたいとします。また tcp, udp 全体についても同様のこと
  を知りたいとします。

  以下のようなコマンド群を実行することになります。シェルスクリプトの形に
  まとめて示します:

               #!/bin/sh
               #
               # Flush the accounting rules
               ipfwadm -A -f
               #
               # Set shortcuts
               localnet=44.136.8.96/29
               any=0/0
               # Add rules for local ethernet segment
               ipfwadm -A in  -a -P tcp -D $localnet ftp-data
               ipfwadm -A out -a -P tcp -S $localnet ftp-data
               ipfwadm -A in  -a -P tcp -D $localnet www
               ipfwadm -A out -a -P tcp -S $localnet www
               ipfwadm -A in  -a -P tcp -D $localnet
               ipfwadm -A out -a -P tcp -S $localnet
               ipfwadm -A in  -a -P udp -D $localnet
               ipfwadm -A out -a -P udp -S $localnet
               #
               # Rules for default
               ipfwadm -A in  -a -P tcp -D $any ftp-data
               ipfwadm -A out -a -P tcp -S $any ftp-data
               ipfwadm -A in  -a -P tcp -D $any www
               ipfwadm -A out -a -P tcp -S $any www
               ipfwadm -A in  -a -P tcp -D $any
               ipfwadm -A out -a -P tcp -S $any
               ipfwadm -A in  -a -P udp -D $any
               ipfwadm -A out -a -P udp -S $any
               #
               # List the rules
               ipfwadm -A -l -n
               #

  ``ftp-data'' や ``www'' といった名前は /etc/services における設定を参
  照します。最後のコマンドはそれぞれの IP パケット統計の取得規則を列挙
  し、集めたデータの合計値を表示します。

  IP パケット統計情報を解析する際に注意すべきなのは、マッチしたすべての
  規則における各合計エリアに対して(転送バイト数やパケット数が)それぞれ足
  しこまれるということです。このため、差として現れる値を得るには多少の計
  算が必要です。例えば、ftp でも www でもないデータ量を知るためには、全
  てのポートにマッチする規則より得た転送量から、ftp や www といった個々
  のプロトコルで転送したデータ量を引く必要があります。

  root# ipfwadm -A -l -n
  IP accounting rules
   pkts bytes dir prot source               destination          ports
      0     0 in  tcp  0.0.0.0/0            44.136.8.96/29       * -> 20
      0     0 out tcp  44.136.8.96/29       0.0.0.0/0            20 -> *
     10  1166 in  tcp  0.0.0.0/0            44.136.8.96/29       * -> 80
     10   572 out tcp  44.136.8.96/29       0.0.0.0/0            80 -> *
    252 10943 in  tcp  0.0.0.0/0            44.136.8.96/29       * -> *
    231 18831 out tcp  44.136.8.96/29       0.0.0.0/0             * -> *
      0     0 in  udp  0.0.0.0/0            44.136.8.96/29       * -> *
      0     0 out udp  44.136.8.96/29       0.0.0.0/0            * -> *
      0     0 in  tcp  0.0.0.0/0            0.0.0.0/0            * -> 20
      0     0 out tcp  0.0.0.0/0            0.0.0.0/0            20 -> *
     10  1166 in  tcp  0.0.0.0/0            0.0.0.0/0            * -> 80
     10   572 out tcp  0.0.0.0/0            0.0.0.0/0            80 -> *
    253 10983 in  tcp  0.0.0.0/0            0.0.0.0/0            * -> *
    231 18831 out tcp  0.0.0.0/0            0.0.0.0/0            * -> *
      0     0 in  udp  0.0.0.0/0            0.0.0.0/0            * -> *
      0     0 out udp  0.0.0.0/0            0.0.0.0/0            * -> *

  6.4.  IPパケット統計取得(Linux 2.2 用)

  新しい IP パケット統計取得機能は「IP Firewall Chains」を通じて利用しま
  す。詳しくは IP chains のホームページ
  <http://www.adelaide.net.au/~rustcorp/ipfwchains/ipfwchains.html> を見
  てください。特に注意すべきなのは、フィルタの設定には ipfwadm ではなく
  ipchains を使う必要がある点です(最新版カーネルの Documentation/Changes
  より)。

  6.5.  IP エイリアス

  1 つのネットワークデバイスに複数個の IP アドレスを設定できると便利な用
  途がいくつかあります。インターネットサービスプロバイダ(ISP)はよくこの
  機能を用いて、顧客に合わせて「カスタマイズした」WWW サービスや ftp サ
  ービスを提供しています。ここに書いている以上の情報については、 ``IP-
  Alias mini-HOWTO'' をご覧ください。

  カーネルのコンパイルオプション:

               Networking options  --->
                   ....
                   [*] Network aliasing
                   ....
                   <*> IP: aliasing support

  IP_Alias 機能を組み込んだカーネルを構築してインストールしてしまえば、
  この機能を設定するのはごく簡単です。alias 機能は、実際のネットワークデ
  バイスに仮想的なネットワークデバイスを関連づけて追加します。仮想的なデ
  バイスに割りあてる名前は、<devname>:<virtual dev num> の形で、
  eth0:0、ppp0:10 のようになります。ifname:number 形式のデバイスは、メイ
  ンのインタフェースの設定後でなければ設定できない点に注意してください。

  たとえば、 2 つの異なった IP サブネットワークをサポートしているイーサ
  ネットネットワークに接続したマシンがあるとして、同時に双方のサブネット
  にアクセスしたい場合、以下のようにします。

               root# ifconfig eth0 192.168.1.1 netmask 255.255.255.0 up
               root# route add -net 192.168.1.0 netmask 255.255.255.0 eth0

               root# ifconfig eth0:0 192.168.10.1 netmask 255.255.255.0 up
               root# route add -net 192.168.10.0 netmask 255.255.255.0 eth0:0

  エイリアスを削除する場合、仮想的なデバイス名の後に `-' を付けて
  ifconfig します。

               root# ifconfig eth0:0- 0

  仮想デバイスを削除すれば、関連した経路も全て自動的に削除されます。

  6.6.  IP ファイアウォール(Linux 2.0 用)

  IP ファイアウォールとファイアウォール全般については Firewall-HOWTO
  <Firewall-HOWTO.html> の方がずっと詳しく扱っています。IP ファイアウォ
  ールを使えば、許可した IP アドレスからのデータグラム以外は通さないよう
  に設定できます。ファイアウォールの設定には、入ってくるデータグラムに対
  するもの、出ていくデータグラムに対するもの、内部で転送(forward)するデ
  ータグラムに対するものの 3 種類があります。入ってくるデータグラムに対
  するルールはネットワークデバイスが受けとったデータグラムに対して適用さ
  れ、出ていくデータグラムに対するルールはネットワークデバイスが送出する
  データグラムに適用されます。転送するデータグラムに対するルールは、受け
  とったものの、自分宛てではないデータグラム、すなわち別の経路に送り出す
  データグラムに適用されます。

  カーネルのコンパイルオプション:

               Networking options  --->
                   [*] Network firewalls
                   ....
                   [*] IP: forwarding/gatewaying
                   ....
                   [*] IP: firewalling
                   [ ] IP: firewall packet logging

  IP ファイアウォール機能は ipfwadm コマンドを使って設定します。以前にも
  述べましたが、私はセキュリティについての専門家ではありません。以下に応
  用可能な簡単な例を紹介しますが、セキュリティが重要な問題ならば、ご自分
  で研究して必要な設定を開発してください。

  IP ファイアウォール機能の最も一般的な使い方は、Linux マシンをルータや
  ファイアウォールゲートウェイとして用い、ローカルネットワークをネットワ
  ーク外部からの許可されていないアクセスから守ることでしょう。

  以下の設定は Arnt Gulbrandsen <agulbra@troll.no> が報告してくれたもの
  に基づいています。

  以下に用いる例では、下図のような設定で、Linux マシンをファイアウォール
  /ルータにしています。

       -                                   -
        \                                  | 172.16.37.0
         \                                 |   /255.255.255.0
          \                 ---------      |
           |  172.16.174.30 | Linux |      |
       NET =================|  f/w  |------|    ..37.19
           |    PPP         | router|      |  --------
          /                 ---------      |--| Mail |
         /                                 |  | /DNS |
        /                                  |  --------
       -                                   -

  ファイアウォールを設定するためのコマンドは、通常 rc ファイルにまとめ
  て、システムの起動時に自動的に実行するように設定します。セキュリティを
  最大限に強化するには、ネットワークインターフェイスが設定されてからこれ
  らの設定を行うべきですが、ファイアウォールマシンをリブートした際に誰か
  がイタズラするのを防ぐため、ネットワーク設定の前に実行する必要があるか
  もしれません。

          #!/bin/sh

          # Flush the 'Forwarding' rules table
          # Change the default policy to 'accept'
          #
          /sbin/ipfwadm -F -f
          /sbin/ipfwadm -F -p accept
          #
          # .. and for 'Incoming'
          #
          /sbin/ipfwadm -I -f
          /sbin/ipfwadm -I -p accept

          # First off, seal off the PPP interface
          # I'd love to use '-a deny' instead of '-a reject -y' but then it
          # would be impossible to originate connections on that interface too.
          # The -o causes all rejected datagrams to be logged. This trades
          # disk space against knowledge of an attack of configuration error.
          #
          /sbin/ipfwadm -I -a reject -y -o -P tcp -S 0/0 -D 172.16.174.30

          # Throw away certain kinds of obviously forged packets right away:
          # Nothing should come from multicast/anycast/broadcast addresses
          #
          /sbin/ipfwadm -F -a deny -o -S 224.0/3 -D 172.16.37.0/24
          #
          # and nothing coming from the loopback network should ever be
          # seen on a wire
          #
          /sbin/ipfwadm -F -a deny -o -S 127.0/8 -D 172.16.37.0/24

          # accept incoming SMTP and DNS connections, but only
          # to the Mail/Name Server
          #
          /sbin/ipfwadm -F -a accept -P tcp -S 0/0 -D 172.16.37.19 25 53
          #
          # DNS uses UDP as well as TCP, so allow that too
          # for questions to our name server
          #
          /sbin/ipfwadm -F -a accept -P udp -S 0/0 -D 172.16.37.19 53
          #
          # but not "answers" coming to dangerous ports like NFS and
          # Larry McVoy's NFS extension.  If you run squid, add its port here.
          #
          /sbin/ipfwadm -F -a deny -o -P udp -S 0/0 53 \
                  -D 172.16.37.0/24 2049 2050

          # answers to other user ports are okay
          #
          /sbin/ipfwadm -F -a accept -P udp -S 0/0 53 \
                  -D 172.16.37.0/24 53 1024:65535

          # Reject incoming connections to identd
          # We use 'reject' here so that the connecting host is told
          # straight away not to bother continuing, otherwise we'd experience
          # delays while ident timed out.
          #
          /sbin/ipfwadm -F -a reject -o -P tcp -S 0/0 -D 172.16.37.0/24 113

          # Accept some common service connections from the 192.168.64 and
          # 192.168.65 networks, they are friends that we trust.
          #
          /sbin/ipfwadm -F -a accept -P tcp -S 192.168.64.0/23 \
                  -D 172.16.37.0/24 20:23

          # accept and pass through anything originating inside
          #
          /sbin/ipfwadm -F -a accept -P tcp -S 172.16.37.0/24 -D 0/0

          # deny most other incoming TCP connections and log them
          # (append 1:1023 if you have problems with ftp not working)
          #
          /sbin/ipfwadm -F -a deny -o -y -P tcp -S 0/0 -D 172.16.37.0/24

          # ... for UDP too
          #
          /sbin/ipfwadm -F -a deny -o -P udp -S 0/0 -D 172.16.37.0/24

  よいファイアウォールの設定は多少トリッキーになっているものですが、ここ
  に示した例は出発点として十分役に立つはずです。設定方法の詳細については
  ipfwadm の man ページを参照してください。ファイアウォールを設定する場
  合、周囲の人にたずねて、信頼するに足る情報源からのアドバイスを可能な限
  り受けてください。そして、設定が正しく機能しているかどうか、外部から確
  認してもらいましょう。

  6.7.  IP ファイアウォール (Linux 2.2 用)

  新しいファイアウォール機能は ``IP Firewall Chains'' を使って利用できま
  す。詳しくは IP chains のホームページ
  <http://www.adelaide.net.au/~rustcorp/ipfwchains/ipfwchains.html> を見
  てください。特に注意すべきなのは、フィルタの設定には ipfwadm ではなく
  ipchains を使う必要がある点です(最新版カーネルの Documentation/Changes
  より)。

  この説明は非常に古くなっていることは筆者らもわかっており、この節を書き
  直すべく現在作業中です。1999 年の 8 月には新しい版を出すのでお待ちくだ
  さい。

  6.8.  IPIP カプセル化

  IP データグラムの中に IP データグラムをカプセル化して入れると、なんの
  役に立つんでしょうか? 前もって使い途を知っていなければ、この手法はきっ
  と奇妙に思えることでしょう。では、これがよく使われる目的を 2 つ示しま
  しょう。モバイル IP と IP マルチキャストです。もっとも広く使われている
  けれど、ほとんど知られていない利用目的としてはアマチュア無線がありま
  す。

  カーネルのコンパイルオプション:

               Networking options  --->
                   [*] TCP/IP networking
                   [*] IP: forwarding/gatewaying
                   ....
                   <*> IP: tunneling

  IP トンネルデバイスは `tunl0', `tunl1' 等となります。

  「でも、どうしてこんなものを使うの?」かって? はいはい、説明しましょ
  う。今までの IP 経路制御では、IP ネットワークはネットワークアドレスと
  ネットワークマスクから構成されることになっていました。これにより、連続
  した一連のアドレスの全てに対して 1 つの経路制御エントリを使った経路制
  御が行えました。これは大変便利ですが、ある特定のネットワークの一部に接
  続している間は特定の IP アドレスしか使えないということでもあります。ほ
  とんどの場合はこれでも大丈夫なのですが、あなたがモバイル派であれば、
  ずっと 1 つの場所に接続したままというわけにはいかないと思います。
  IP/IP カプセル化(IP トンネリング)を使うと、自分の IP アドレス宛のデー
  タグラムに IP の皮をかぶせて別の IP アドレスに送ることによって、この制
  限を克服できます。しばらく別の IP ネットワークで作業をすることが分かっ
  ていれば、自分の元々のネットワーク上のマシンがあなたの IP アドレス宛の
  データグラムを受け付け、これを現在一時的に使っているアドレスに送るよう
  に設定できます。

  6.8.1.  トンネリングを行うネットワーク設定

        192.168.1/24                          192.168.2/24

            -                                     -
            |      ppp0 =            ppp0 =       |
            |  aaa.bbb.ccc.ddd  fff.ggg.hhh.iii   |
            |                                     |
            |   /-----\                 /-----\   |
            |   |     |       //        |     |   |
            |---|  A  |------//---------|  B  |---|
            |   |     |     //          |     |   |
            |   \-----/                 \-----/   |
            |                                     |
            -                                     -

  この図は、IPIP カプセル化が必要となる別の理由、すなわち仮想プライベー
  トネットワーク(virtual private networking, VPN)を示しています。この例
  では、ダイアルアップによる単純なインターネット接続をしているマシンが 2
  台あることを前提とします。それぞれのホストは IP アドレスを 1 つだけ割
  り当てられています。これらのマシンの後ろには、予約済みの IP ネットワー
  クアドレスを使う設定のプライベートな LAN がいくつかあります。このと
  き、ネットワーク A 上のホストとネットワーク B 上のホストを、あるネット
  ワーク経路を使って正しくインターネットに接続しているかのように接続した
  いとします。IPIP カプセル化を使うとこれが可能になります。カプセル化で
  は、ネットワーク A と B のホストをインターネット上の別のホストと通信さ
  せるという問題は解決されないので注意してください。 これを行うには、さ
  らに IP マスカレード等の技が必要となります。カプセル化は普通、マシンを
  ルータのように機能させることで実現します。

  Linux によるルータ `A' は、以下のようなスクリプトを使って設定します:

          #!/bin/sh
          PATH=/sbin:/usr/sbin
          mask=255.255.255.0
          remotegw=fff.ggg.hhh.iii
          #
          # Ethernet configuration
          ifconfig eth0 192.168.1.1 netmask $mask up
          route add -net 192.168.1.0 netmask $mask eth0
          #
          # ppp0 configuration (start ppp link, set default route)
          pppd
          route add default ppp0
          #
          # Tunnel device configuration
          ifconfig tunl0 192.168.1.1 up
          route add -net 192.168.2.0 netmask $mask gw $remotegw tunl0

  Linux によるルータ `B' も同様のスクリプトを使って設定します:

               #!/bin/sh
               PATH=/sbin:/usr/sbin
               mask=255.255.255.0
               remotegw=aaa.bbb.ccc.ddd
               #
               # Ethernet configuration
               ifconfig eth0 192.168.2.1 netmask $mask up
               route add -net 192.168.2.0 netmask $mask eth0
               #
               # ppp0 configuration (start ppp link, set default route)
               pppd
               route add default ppp0
               #
               # Tunnel device configuration
               ifconfig tunl0 192.168.2.1 up
               route add -net 192.168.1.0 netmask $mask gw $remotegw tunl0

  以下のコマンド

               route add -net 192.168.1.0 netmask $mask gw $remotegw tunl0

  は、「192.168.1.0/24宛の全てのデータグラムを、終点アドレスが
  aaa.bbb.ccc.ddd である IPIP カプセル化データグラムの中に送ること」と読
  みます。

  設定は両端で対になる点に注意してください。トンネルデバイスは、経路を指
  定するために受け取ったデータグラムを入れた IP データグラムの終点とし
  て、経路の中で `gw' を使います。そのマシンは IPIP データグラムのカプセ
  ル化解除の方法を知っていなければなりません。つまり、トンネルデバイスが
  設定されていなければなりません。

  6.8.2.  トンネリングを行うホストの設定

  ネットワーク全体でまとめて経路制御を行う必要はありません。例えば、1 つ
  の IP アドレスだけの経路を指定することもできます。この場合には、「リモ
  ート」のマシンのtunl デバイスにホームの IP アドレスを設定し、A 側では
  トンネルデバイスを通じて、ネットワークの経路制御ではなくホストの経路制
  御(および Proxy Arp)を行うだけです。構成図を正しく書き直してみましょ
  う。今度の場合は、両方がインターネットに完全に接続し、かつホスト `A'
  がサポートしているリモートのネットワークの一部であるかのように動作させ
  たいホスト `B' があるだけです:

        192.168.1/24

            -
            |      ppp0 =                ppp0 =
            |  aaa.bbb.ccc.ddd      fff.ggg.hhh.iii
            |
            |   /-----\                 /-----\
            |   |     |       //        |     |
            |---|  A  |------//---------|  B  |
            |   |     |     //          |     |
            |   \-----/                 \-----/
            |                      also: 192.168.1.12
            -

  Linux によるルータ `A' は以下のシェルスクリプトを使って設定します:

               #!/bin/sh
               PATH=/sbin:/usr/sbin
               mask=255.255.255.0
               remotegw=fff.ggg.hhh.iii
               #
               # Ethernet configuration
               ifconfig eth0 192.168.1.1 netmask $mask up
               route add -net 192.168.1.0 netmask $mask eth0
               #
               # ppp0 configuration (start ppp link, set default route)
               pppd
               route add default ppp0
               #
               # Tunnel device configuration
               ifconfig tunl0 192.168.1.1 up
               route add -host 192.168.1.12 gw $remotegw tunl0
               #
               # Proxy ARP for the remote host
               arp -s 192.168.1.12 xx:xx:xx:xx:xx:xx pub

  Linux ホスト `B' は以下のシェルスクリプトを使って設定します:

               #!/bin/sh
               PATH=/sbin:/usr/sbin
               mask=255.255.255.0
               remotegw=aaa.bbb.ccc.ddd
               #
               # ppp0 configuration (start ppp link, set default route)
               pppd
               route add default ppp0
               #
               # Tunnel device configuration
               ifconfig tunl0 192.168.1.12 up
               route add -net 192.168.1.0 netmask $mask gw $remotegwtunl0

  このような設定は、モバイル IP を考えるとよりはっきりします。モバイル
  IP では、1 つのホストがインターネット上であちこちに移動しつつ、その間
  ずっと 1 つの IP アドレスを使い続けられると便利です。実際のモバイル IP
  の扱い方については、モバイル IP の節を参照してください。

  6.9.  IP マスカレード(IP Masquerade)

  インターネットに接続するためにダイアルアップ接続を使っている人もたくさ
  んいることでしょう。こういった接続を用いているほとんどの人は、 ISP か
  ら IP アドレスを 1 つしかもらえません。 1 台のホストが完全にネットワー
  クにアクセスするには、普通は IP アドレスが 1 つあれば十分だからで
  す。IP マスカレード(IP Masquerade)というのは、1 つの IP アドレスを複数
  のコンピュータで使うためのうまい仕掛けです。IP マスカレードを使えば、
  「マスカレード(masquerade, 変装)」という言葉の通り、他のホストをダイア
  ルアップ接続しているマシンに見せかけて IP アドレスを共有できます。ただ
  し注意点も少しあって、マスカレード機能はほぼ確実に片方向の通信でしか動
  作しません。つまり、マスカレードされているホストは自分からの接続は行え
  ますが、リモートホストからの接続を受け付けることはできません。したがっ
  て、talk 等のネットワークサービスは動作しませんし、 ftp 等のサービスは
  パッシブ(PASV)モードで動作するように設定しなければなりません。幸運なこ
  とに、telnet, WWW,  irc を含む大部分のネットワークサービスはうまく動作
  します。

  カーネルのコンパイルオプション:

               Code maturity level options  --->
                   [*] Prompt for development and/or incomplete code/drivers
               Networking options  --->
                   [*] Network firewalls
                   ....
                   [*] TCP/IP networking
                   [*] IP: forwarding/gatewaying
                   ....
                   [*] IP: masquerading (EXPERIMENTAL)

  普通の場合、あなたの Linux マシンには slip か PPP ダイアルアップ接続機
  能が組み込まれている事でしょう (あたかもスタンドアロンのマシンであるか
  のように)。さらに、そのマシンには別のネットワークデバイス (多分イーサ
  ネット) が設定されていて、ネットワークが一つ割り振られていることになっ
  ているでしょう。マスカレード経由で接続するホストはこの 2 つめのネット
  ワーク上にあります。イーサネットネットワーク上にある各マシンのデフォル
  トの経路には、 IP マスカレードを組み込んでインターネットとのゲートウェ
  イになっている、この Linux マシンを指定します。

  よくある IP マスカレードの設定は下図のようになります:

       -                                   -
        \                                  | 192.168.1.0
         \                                 |   /255.255.255.0
          \                 ---------      |
           |                | Linux | .1.1 |
       NET =================| masq  |------|
           |    PPP/slip    | router|      |  --------
          /                 ---------      |--| host |
         /                                 |  |      |
        /                                  |  --------
       -                                   -

  IPFWADM を使った IP マスカレード

  この設定を行うため最も適切なコマンドは以下のようになります:

               # Network route for ethernet
               route add -net 192.168.1.0 netmask 255.255.255.0 eth0
               #
               # Default route to the rest of the internet.
               route add default ppp0
               #
               # Cause all hosts on the 192.168.1/24 network to be masqueraded.
               ipfwadm -F -a m -S 192.168.1.0/24 -D 0.0.0.0/0

  ipchains を使った IP マスカレード

  これは ipfwadm を使う場合と似ていますが、コマンドの構造が変わっていま
  す:

               # Network route for ethernet
               route add -net 192.168.1.0 netmask 255.255.255.0 eth0
               #
               # Default route to the rest of the internet.
               route add default ppp0
               #
               # Cause all hosts on the 192.168.1/24 network to be masqueraded.
               ipchains -A forward -s 192.168.1.0/24 -j MASQ

  IP マスカレード機能の詳しい説明は IP Masquerade Resource Page
  <http://www.hwy401.com/achau/ipmasq/> にあります。また、IP マスカレー
  ドに関する非常に詳しい説明として、 ``IP-Masquerade mini-HOWTO'' があり
  ます。この文書には、Linux を使った IP マスカレードサーバと他の OS を組
  み合わせて使うための設定も載っています。

  (注: 上記 uri は 2000/12 現在到達不能なようです。代りに Linux IP
  Masquerade Resource <http://ipmasq.cjb.net/> をご覧ください。)

  6.10.  IP 透過プロキシ(IP Transparent Proxy)

  IP transparent proxy 機能を使えば、別のマシンへのサービスリクエストや
  サーバへのアクセスをこのマシンにリダイレクトすることができます。この機
  能は、Linux マシンをルータ兼プロキシサーバとして使っている場合に便利
  で、外部のネットワークへ要求されたリクエストを全てローカルのプロキシサ
  ーバで処理できるようになります。

  カーネルのコンパイルオプション:

               Code maturity level options  --->
                       [*] Prompt for development and/or incomplete code/drivers
               Networking options  --->
                       [*] Network firewalls
                       ....
                       [*] TCP/IP networking
                       ....
                       [*] IP: firewalling
                       ....
                       [*] IP: transparent proxy support (EXPERIMENTAL)

  透過プロキシ機能は ipfwadm コマンドで設定します。

  役立ちそうな設定例を以下に示しておきます:

               root# ipfwadm -I -a accept -D 0/0 telnet -r 2323

  この例を実行した場合、任意のホストの telnet(23 番)ポートに接続しようと
  すると、透過プロキシホストの 2323 番ポートにリダイレクトされます。この
  ポートでサービスを実行すれば、telnet 接続を転送したりログを残す等、必
  要に応じた動作をさせられます。

  さらに面白い例として、全ての http トラフィックをローカルのキャッシュに
  リダイレクトすることもできます。しかし、プロキシサーバが使うプロトコル
  はネイティブの http: とは異なります。つまり、http クライアントは
  www.server.com:80 に接続して /path/page を要求しますが、ローカルキャッ
  シュに接続した場合は proxy.local.domain:8080 に接続して
  www.server.com/path/page を要求しなければなりません。

  http リクエストにローカルプロキシのフィルタをかけるには、 transproxy
  と呼ばれる小さなサーバ(WWW で入手できます)を間に置いて、プロトコルを一
  致させる必要があります。transproxy を 8081 番ポートで動作させるには、
  以下のコマンドを実行します:

               root# ipfwadm -I -a accept -D 0/0 80 -r 8081

  こうすると、transproxy は外部サーバにアクセスしようとする全ての接続を
  受け取り、プロトコルの相違点を直した後に、これをローカルのプロキシに渡
  します。

  6.11.  IPv6

  やっと IP ネットワークについて理解し始めたところだというのに、ルールが
  変ってしまうなんて…、と思われるかもしれません。IPv6 とは Internet
  Protocol Version 6 の省略形です。IPv6 は、現在インターネットコミュニ
  ティが直面している IP アドレスの枯渇問題に対応することを主目的に開発さ
  れています。IPv6 のアドレスは 16 バイト長(128 ビット)になっています。
  それ以外にも、IPv6 では主として単純化のためのさまざまな変更が施され
  て、既存の IPv4 ネットワークよりも管理しやすいようになっています。

  Linux 2.2.*シリーズには、既に IPv6 の実装が動作していますが、まだ完全
  ではありません。

  この次世代のインターネット技術を試してみたい場合や必要な場合は、
  www.terra.net <http://www.terra.net/ipv6/> から入手できる IPv6-FAQ を
  まず読んでみましょう。

  6.12.  モバイル IP(Mobile IP)

  「IP の可搬性(IP mobility)」とは、ある場所でインターネットに接続してい
  るホストが、別の場所に移っても IP アドレスを変更せずに接続できたり、接
  続を切らずに場所を移動できることです。通常、IP アドレスを割り当てられ
  ているホストは、接続場所を変更すれば IP アドレスも変更しなければなりま
  せん。IP mobility 機能を使えば、ポータブルマシンにも決まった IP アドレ
  スを割り当て、自動ルーティング機能とIP カプセル化(トンネリング)機能を
  使い、ポータブルマシン宛のデータグラムを、そのマシンが現在実際に使って
  いる IP アドレスに送ることができます。

  Linux 用に IP mobility ツール一式を開発しようというプロジェクトが進行
  中です。プロジェクトの進行状況とツールは Linux Mobile IP Home Page
  <http://anchor.cs.binghamton.edu/~mobileip/> から入手できます。

  6.13.  マルチキャスト

  通常、TCP/IP は接続先のマシンを指定した一対一の接続形態を取りますが、
  IP マルチキャスト機能を使えば、異なる IP ネットワーク上にある任意の数
  のホストへ、同時に IP データグラムを送ることが可能になります。この機能
  は、インターネット全体へ音声やビデオの素材を「放送」するなど、さまざま
  な新しいアプリケーションのために開発されました。

  カーネルのコンパイルオプション:

       Networking options  --->
               [*] TCP/IP networking
               ....
               [*] IP: multicasting

  IP マルチキャストを使うには、ツール一式と多少のネットワークの設定が必
  要です。Linux のマルチキャスト対応に関する詳しい情報については
  Multicast-HOWTO <Multicast-HOWTO.html> をご覧ください。

  6.14.  NAT - ネットワークアドレス変換(Network Address Translation)

  IP ネットワークアドレス変換機能(NAT)は、Linux の IP マスカレード機能の
  兄貴分が標準化されたもの、と思ってだいたいかまいません。NAT は
  RFC-1631 で詳しく仕様が決められています(RFC 文書はお近くの RFC アーカ
  イブから入手してください)。NAT にできて IP マスカレードにはできない機
  能があるので、会社規模のファイアウォールの経路設計や大規模な設備で用い
  るには NAT の方がずっと適切です。

  Linux 2.0.29 用の NAT のアルファ版の実装は Michael.Hasenstein
  Michael.Hasenstein@informatik.tu-chemnitz.de が開発しました。 Michaels
  が作成した文書と実装は以下の場所から入手できます:

  Linux IP Network Address Web Page <http://www.csn.tu-
  chemnitz.de/HyperNews/get/linux-ip-nat.html>

  新しい Linux 2.2.x でも、経路制御アルゴリズムに NAT 機能の一部が入って
  います。

  6.15.  Traffic Shaper - 許可する帯域幅の変更

  traffic shaper は、ユーザが定義したようにトラフィックを制限するインタ
  フェースデバイスを新しく作成するドライバです。このデバイスは、実際の送
  信を行う物理的なネットワークデバイスに依存します。また、ネットワークト
  ラフィックに対しては送信用の routed として使えます。

  traffic shaper は Linux 2.1.15 で導入され、Linux 2.0.36 にバックポー
  ト(訳注: 開発版カーネルの機能を安定版カーネルに移植すること) されまし
  た(traffic shaper は、Alan Cox が配布している 2.0.36-pre-patch-2 に含
  まれています。Alan Cox は Linux 2.0 用の shaper デバイスの作者でありメ
  ンテナです)。

  traffic shaper はモジュールとしてコンパイルしなければなりません。この
  デバイスは shapecfg コマンドを以下のように使って設定します:

               shapecfg attach shaper0 eth1
               shapecfg speed shaper0 64000

  shaper デバイスは送信するトラフィックの帯域幅の制御しかできません。と
  いうのも、パケットは経路表に従って shaper デバイス経由で送信されるから
  です。したがって、「始点アドレスを使った経路制御」機能を利用すれば、
  Linux ルータを使っている特定のホストの全体の帯域幅を制限できます。

  Linux 2.2 は最初からこのような経路制御に対応しています。Linux 2.0 でこ
  の機能が必要ならば Mike McLagan によるパッチを調べてください。このパッ
  チは ftp.invlogic.com にあります。shaper デバイスに関するの詳しい情報
  については、Documentationnetworking/shaper.txt/ を見てください。

  受信するパケットの(試験的な)調整を試してみたければ、 rshaper-1.01 を試
  すとよいでしょう(さらに新しいバージョンがあるかもしれません)。これは
  ftp.systemy.it <ftp://ftp.systemy.it/pub/develop> から入手できます。

  6.16.  Linux 2.2 における経路制御

  最新版の Linux であるバージョン 2.2 では、経路制御のポリシーは非常に柔
  軟に設定できます。申し訳ありませんが、解説については本文書の次の版を待
  つか、カーネルのソースを読むかしてください。

  7.  一般的な PC ハードウェアの使用

  7.1.  ISDN

  ISDN(Integrated Services Digital Network)とは、汎用のディジタル・ス
  イッチ・ネットワークの規格の一種です。ISDN の `call' は、目的地との一
  対一の同期的な接続を張ります。ISDN のデータは、通常、複数のチャネルに
  分割された高速回線を経由して運ばれます。ISDN のチャネルには 2 つの種類
  があります。 `B チャネル' は実際のデータを転送します (同時に複数チャネ
  ルを利用できます)。一方 `D チャネル' と呼ばれる回線は、接続確立などの
  各種の制御情報を ISDN 交換機に送信します (一本だけ使われます)。オース
  トラリアを例にとると、ISDN は 2Mbps の回線を使って送られますが、その回
  線は 30 本の 64kbps B チャネルと 1 本の 64kbps D チャネルに分割されて
  おり、これらのチャネルを同時にいくつでも使用可能です。すなわち、 30 本
  のチャネルをバラバラに使って 30 の接続先に 64kbps で接続可能ですし、2
  本のチャネルを同時使って 15 の接続先に 128kbps で接続することも可能で
  す。また、数本のチャネルだけを使って、残りはアイドルのままにしておくこ
  ともできます。一つのチャネルは送信にも受信にも使えます。ISDN の元々の
  目的は、電話会社が同じ回線で、特別な設定変更をしなくても、(音声をディ
  ジタル化した)一般の電話と、家庭や会社へのデータ通信サービスを行えるよ
  うにすることでした。

  [訳注: 日本の NTT では、一般ユーザ用には 64kbps の B チャネル 2 本と
  16kbps の D チャネルをまとめた「INSネット64」を、企業向けには B チャネ
  ル 23 本と D チャネル 1 本をまとめた「INSネット 1500」を提供していま
  す。] コンピュータを ISDN サービスに接続するにはいくつかの方法がありま
  すが、 TA(Terminal Adaptor)を使うのもその一つです。TA とは、ISDN サー
  ビスを契約した際に回線業者が設置してくれるネットワークの終端ユニットに
  接続して、複数のシリアルインターフェイスを提供する装置です。これらのイ
  ンターフェイスの一つを使って回線接続や設定用のコマンドをやりとりし、残
  りのインターフェイスが実際のネットワークデバイスに接続して、接続の確立
  後にデータをやりとりするために使われます。この種の設定の場合、Linux は
  特別の設定無しに ISDN を使えます。 TA のポートを、他のシリアルデバイス
  と同様に扱えばよいのです。もう一つ、Linux マシンに ISDN カードを装着し
  て、カーネルに ISDN 機能を組み込み、Linux から直接プロトコルを操作して
  接続を行うこともできます(ただし、日本国内で使用可能な ISDN カードはサ
  ポートされていません)。

  カーネルのコンパイルオプション:

               ISDN subsystem  --->
                       <*> ISDN support
                       [ ] Support synchronous PPP
                       [ ] Support audio via ISDN
                       < > ICN 2B and 4B support
                       < > PCBIT-D support
                       < > Teles/NICCY1016PC/Creatix support

  Linux の ISDN 機能は以下に示すような内蔵 ISDN カードをサポートしていま
  す。以下のカードがカーネルの設定時の選択肢として表示されます:

  o  ICN 2B と 4B

  o  Octal PCBIT-D

  o  Teles ISDN カードとその互換カード

  必要なソフトウェアをダウンロードしなければならないカードもありますが、
  そのためには専用のプログラムが別に必要です。

  Linux の ISDN 機能をどのように設定するかの詳細については
  /usr/src/linux/Documentation/isdn/ にある各文書と www.lrz-muenchen.de
  <http://www.lrz-muenchen.de/~ui161ab/www/isdn/> にある isdn4linux とい
  う FAQ をご覧ください(英語版を見るためには English を選ぶことをお忘れ
  なく)。

  PPP についてのメモ。PPP プロトコルは非同期、同期を問わずに使えますが、
  現在広く使われている Linux 用の PPP デーモン pppd は非同期モードしかサ
  ポートしていません。PPP を ISDN 経由で使いたい場合、特別に修正したバー
  ジョンが必要になります。そのバージョンがどこで入手できるかも上記の文書
  で紹介されています。

  7.2.  PLIP (Linux 2.0 の場合)

  PLIP のデバイス名は `plip0', `plip1, plip2 です。

  カーネルのコンパイルオプション:

               Network device support  --->
                   <*> PLIP (parallel port) support

  plip(Parallel Line IP)は、SLIP と同様に、2 台のマシンの間で一対一 接続
  の機能を提供します。ただし、シリアルポートではなくプリンタ用のパラレル
  ポートを使って接続する点が異なります(ケーブルの結線表については、後述
  する結線表の節を参照してください)。パラレルポートは一度に複数ビットを
  転送できるので、plip を使えば通常のシリアルポートを使った接続よりは高
  速な接続が可能になります。また、最も単純なパラレルポートであるプリンタ
  ポートといえど、 16550AFN UART シリアルポートを十分代替できるので、比
  較的高価な後者を購入せずにすみます (内蔵のシリアルポートが動作の遅い
  16450 UART の時に必要)。 PLIP はシリアル接続と比べて CPU を消費するの
  で、イーサネットカードを何枚か安価に入手できる場合にはきっと使わない方
  がよいでしょう。しかし、他に使えるものがない場合には非常に役立つでしょ
  う。接続がうまくできている場合、転送速度としては 20KB/秒 程度が期待で
  きるはずです。

  PLIP デバイスドライバは、パラレルデバイスドライバとパラレルポートのハ
  ードウェアを取り合います。どちらのドライバも使いたければ、両方のドライ
  バをモジュールとしてコンパイルして、PLIP 用に使いたいポートとプリンタ
  ドライバ用に使いたいポートを選べるようにしましょう。カーネルモジュール
  の設定については ``Mudules mini-HOWTO'' を見てください。

  ラップトップ機の中には、プリンタでは使っていないけれど PLIP には必要な
  信号を扱えないようなチップを使っていて、PLIP が使用できないようなもの
  もあります。

  Linux の plip インターフェイスは Crynwyr Packet Driver PLIP と互換性が
  あるので、Linux マシンと DOS マシンを PLIP 経由で接続して、さまざまな
  TCP/IP ソフトウェアを使うことができます。

  2.0.* 系列のカーネルでは、plip デバイスは以下のように I/O ポートと IRQ
  に対応します:

               device  i/o     IRQ
               ------  -----   ---
               plip0   0x3bc   5
               plip1   0x378   7
               plip2   0x278   2

  お使いのパラレルポートの設定が上記の組み合わせと異なる場合、 ifconfig
  コマンドの `irq' オプションを使ってポートの IRQ を変えることができま
  す(ROM BIOS でプリンタポートが IRQ を使うか否かを設定できる場合、忘れ
  ずに IRQ を使うように設定しておいてください)。別の方法としては、モジュ
  ールを使っているならば insmod のコマンドラインで ``io='' と ``irq=''
  を指定できます。以下に例を示します:

               root# insmod plip.o io=0x288 irq=5

  PLIP の動作は 2 つのタイムアウト値によって制御されます。ほとんどの場合
  はデフォルト値のままで大丈夫でしょう。コンピュータが非常に遅い場合に
  は、タイムアウト値を増やす必要があるかもしれませんが、この場合に実際に
  増やすのは通信相手のコンピュータのタイムアウト値です。カーネルを再コン
  パイルせずにタイマ設定を変更できる plipconfig というプログラムがありま
  す。これは多くの Linux ディストリビューションに付属しています。

  plip インタフェースを設定するには、以下のコマンドを実行する (またはシ
  ステムの起動スクリプトに追加する)必要があります:

               root# /sbin/ifconfig plip1 localplip pointopoint remoteplip
               root# /sbin/route add remoteplip plip1

  ここで、使われるポートの I/O アドレスは 0x378 です。 localplip と
  remoteplip の部分は PLIP ケーブル上の通信で使われるホスト名か IP アド
  レスです。筆者は、localplip と remoteplip を /etc/hosts データベースに
  登録しています。

          # plip entries
          192.168.3.1   localplip
          192.168.3.2   remoteplip

  pointtopoint パラメータは SLIP の場合と同じ意味で、接続のもう一方の端
  にいるマシンのアドレスを設定します。

  ほとんどの場合、plip インターフェイスは SLIP インターフェイスと同様に
  使えます。ただし plip は dip や slattach を使う必要もなければ、使うこ
  ともできません。

  PLIP に関する詳しい情報は ``PLIP mini-HOWTO'' に載っています。

  7.3.  PLIP (Linux 2.2 の場合)

  バージョン 2.1 のカーネルの開発中に、パラレルポートのサポートが変更さ
  れ、設定がもっとうまくできるようになりました。

  カーネルのコンパイルオプション:

               General setup  --->
                   [*] Parallel port support
               Network device support  --->
                   <*> PLIP (parallel port) support

  新しい PLIP コードは古いコードのように動作しますが(前の節の説明と同様
  に ifconfig コマンドと route コマンドを使います)、パラレルポートのサポ
  ートが改良されたためにデバイスの初期化方法は変わっています。

  「最初」の PLIP デバイスは常に ``plip0'' になります。ここで「最初」と
  言っているのはシステムが最初に検出したという意味で、これはイーサネット
  デバイスの動作と似ています。実際に使われているパラレルポート
  は、/proc/parport に示されている利用可能なポートのどれかです。例えば、
  パラレルポートが 1 つしかなければ、 /proc/parport/0 というディレクトリ
  しかないはずです。

  パラレルポートが使っている IRQ 番号をカーネルが検出できなかった場合に
  は、``insmod plip'' は失敗します。この場合には、 /proc/parport/0/irq
  に正しい番号を書き込んで、insmod を再び実行すれば大丈夫です。

  パラレルポートの管理に関する完全な説明は Documentation/parport.txt
  ファイルに書かれています。このファイルはカーネルソースに含まれていま
  す。

  7.4.  PPP

  PPP のデバイス名は `ppp0', `ppp1' のようになります。最初のデバイスが
  `0' で、以後は順に番号が付きます。

  カーネルのコンパイルオプション:

               Networking options  --->
                   <*> PPP (point-to-point) support

  PPP の設定については PPP-HOWTO <PPP-HOWTO.html> で詳しく説明されていま
  す。

  7.4.1.  pppd  を使ってインターネットと常時接続する方法

  もし運良くインターネットへの常時接続が可能な環境にいて、 PPP 接続が切
  れた場合には自動的にリダイアルしたいという場合には、以下の簡単な技を
  使って実現できます。

  以下のコマンドで root から起動できるように PPP を設定します。

       # pppd

  /etc/ppp/options ファイルに `-detach' オプションを指定することを忘れず
  に。その上で、以下の行を /etc/inittab に加え、getty の設定に用います。

       pd:23:respawn:/usr/sbin/pppd

  こうしておけば、init プログラムが pppd の立ち上げと監視を行い、pppd が
  死んだ場合は自動的に再起動します。

  7.5.  SLIP クライアント

  SLIP のデバイス名は `sl0', `sl1' などになります。最初のデバイスが `0'
  で、残りは順に番号が振られます。

  カーネルのコンパイルオプション:

               Network device support  --->
                   [*] Network device support
                   <*> SLIP (serial line) support
                   [ ]  CSLIP compressed headers
                   [ ]  Keepalive and linefill
                   [ ]  Six bit SLIP encapsulation

  SLIP(Serial Line Internet Protocol)を使えば、モデム経由の電話回線や、
  なんらかの専用線のようなシリアル回線上で TCP/IP 接続を実現できます。も
  ちろん SLIP を使うためには、地元の SLIP サーバ に接続しなければいけま
  せんが、世界中の大学や商用プロバイダが SLIP 接続を提供しています。

  [訳注: 日本では SLIP 接続よりも PPP 接続の方が主流です。]

  SLIP はシリアルポートを経由して IP データグラムを送りますので、シリア
  ルデバイスを制御する必要があります。SLIP のデバイス名は sl0、 sl1 など
  ですが、これらとシリアルデバイスとの関係はどのようになっているのでしょ
  うか? SLIP のプログラムは ioctl (I/O control) システムコールを使ってシ
  リアルデバイスを SLIP デバイスに変換しています。このためのプログラムが
  dip と slattach です。

  7.5.1.  dip

  dip (Dialup IP)とは、シリアルデバイスの回線速度を設定したり、モデムに
  電話をかけさせて自動的にリモートサーバにログインしたり、サーバから送ら
  れるログイン時のメッセージの中から割り当てられた IP アドレスを見つけた
  り、必要に応じて ioctl を使いシリアルポートを SLIP モードに変えたりす
  る多機能なプログラムです。dip には強力なスクリプト機能があり、ログイン
  手続きを自動実行できます。

  dip は metalab.unc.edu
  <ftp://metalab.unc.edu/pub/Linux/system/Network/serial/dip/dip337o-
  uri.tgz> にあります。

  インストールするには、以下の手順を実行してください:

               user% tar xvzf dip337o-uri.tgz
               user% cd dip-3.3.7o
               user% vi Makefile
               root# make install

  このパッケージに入っている Makefile は uucp というグループがあることを
  前提にしています。環境に合わせて、このグループを dip や SLIP にしてく
  ださい。

  7.5.2.  slattach

  slattach は dip に比べるとずいぶん単純なプログラムです。非常に簡単に使
  えますが、dip ほどの機能は持っていません。 slattach はスクリプト機能も
  なく、シリアルデバイスを SLIP デバイスに変換する機能しか持っていませ
  ん。slattach を使う場合には、 IP アドレスなどの情報が予め分っており、
  さらに起動前にシリアル接続が確立されていなければいけません。slattach
  は、シリアル回線を経由してサーバに直結していたり、シリアルの専用回線を
  使っている際に便利なプログラムです。

  7.5.3.  どんな場合にどれを使うべきか?

  dip は、モデムを経由して SLIP サーバに接続する場合か、一時的な接続を張
  る場合に使います。専用回線でサーバと接続しており、接続のために特別の処
  理が不要の場合は slattach が便利です。詳細については「恒久的な SLIP 接
  続」の節を参照してください。

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

  まず第一に、SLIP の場合はイーサネットのネットワークとは異なり、接続の
  両端に一台ずつのマシンしかありません。ethernet の場合はケーブルを繋げ
  ばすぐに使えますが、SLIP の場合、接続形態にもよりますが、ネットワーク
  接続を開始するには何らかの初期化処理が必要です。

  dip の場合、システムの起動時には設定できず、シリアル接続の準備ができた
  段階で起動することになります。この手順は自動化できます。 slattach の場
  合、rc.inet1 の中で設定するのがいいでしょう。この方法については後述し
  ます。

  SLIP サーバには動的に IP アドレスを割り当てるタイプのサーバと予め決
  まった IP アドレスを使うタイプのサーバの 2 種があります。また、ほとん
  どの SLIP サーバが、電話をかけてログインする時にはユーザ名とパスワード
  の入力を求めます。dip を使えば、この処理を自動化できます。

  7.5.4.  予め決まった IP アドレスを使う SLIP サーバ

  予め割り当てておいた IP アドレスを使うタイプのサーバでは、事前に専用の
  IP アドレスを各クライアントに割り当てて、各クライアントは接続の際にそ
  の IP アドレスで SLIP ポートを設定します。この種の SLIP サーバでは、モ
  デムからの着信に答えて、ユーザ名とパスワードの入力を促してユーザを確認
  した後、あなた用の IP アドレス向けのデータグラムはすべてその SLIP デバ
  イスに送るように経路制御情報を設定します。この種のサーバを使っている場
  合は、自分のホスト名と IP アドレスは予め決まっていますから、
  /etc/hosts に書いておくことも可能です。また rc.inet2 や host.conf,
  resolv.conf, /etc/HOSTNAME, rc.local などを通常のイーサネット接続と同
  様に設定することができます。rc.inet1 を設定する場合、SLIP 接続用に特別
  のコマンドを設定する必要はありません。ネットワークインターフェイスを設
  定するなどの作業は dip の仕事です。必要な情報は dip に与え、dip がモデ
  ムを使って電話をかけ、接続が確立してから必要な設定を実行するようにしま
  す。

  接続先の SLIP サーバがこの種の設定の場合、次に「DIP の使い方」の節に進
  んで、dip の設定方法を調べてください。

  7.5.5.  接続時に IP アドレスを割り当てるタイプのサーバ

  動的な SLIP サーバとは、予め用意してある複数の IP アドレスの中から、接
  続のたびに異なる IP アドレスをクライアントに割り当てるタイプのサーバで
  す。この場合、接続のたびに割り当てられる IP アドレスは異なり、あなたが
  今使っているアドレスも、ログアウト後は誰か別の人に割り当てられることに
  なります。SLIP サーバを設定するネットワークの管理者は、予め SLIP で使
  うための IP アドレスを複数個用意しておき、新しく接続してきたマシンには
  使っていない IP アドレスを割り当てるように設定します。この場合、ログイ
  ンプロセスの中でウェルカム・メッセージとともに割り当てた IP アドレスが
  示され、その接続の間はその IP アドレスを使って通信します。

  この種のサーバを使う場合も、予め IP アドレスを割り当てるタイプのサーバ
  とほぼ同じ設定になりますが、接続の度に割り当てられた IP アドレスを使っ
  て SLIP デバイスを設定するというステップが余計に必要になります。

  ここでも dip がこの大変な作業を引き受けてくれます。 dip はログイン処理
  をするだけでなく、ウェルカムメッセージの中に示される IPアドレスを自動
  的に読みこんで、それを使って SLIP デバイスを設定してくれます。

  接続先の SLIP サーバがこの種の設定の場合は、「DIP の使い方」の節へ進ん
  で dip の設定方法を覚えてください。

  7.5.6.  DIP の使い方

  今までに述べてきたように、dip を使えば SLIP サーバへ電話をかけてログイ
  ンするという処理が自動的にできます。ログインすれば、 dip は自動的に
  ifconfig とroute コマンドを使って SLIP デバイスを設定します。

  dip を使うためには、`dip スクリプト' を書く必要があります。 `dip スク
  リプト' は、基本的に dip が理解できるコマンドを並べたもので、dip で実
  行したいコマンドを、どのように実行するかを記述しておきます。どのように
  書くかは、dip プログラムに付属の sample.dip をご覧ください。dip は多数
  のオプションを有する強力なプログラムなので、ここではその詳細に触れるこ
  とができません。 dip の man や README、サンプルファイルを調べてくださ
  い。

  パッケージに付属のsample.dip ファイルは、予め割り当てられた IP アドレ
  スを使うような設定になっています。動的に IP アドレスを割り当てるタイプ
  のサーバの場合は、サーバが割り当てた IP アドレスを読み、自動的に SLIP
  デバイスに設定するようなコマンド例を参照してください (新しいバージョン
  の dip パッケージに入っています)。以下に示すサンプルは dip337j-uri.tgz
  に付属の sample.dip をもとに修正したバージョンで、この例を元に設定して
  いくのがいいでしょう。以下の部分を /etc/dipscript ファイルにセーブし
  て、お使いの環境に合うように修正してください。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  exit:
  exit

  上記のサンプルスクリプトでは 動的に IP アドレスを割り当てるタイプの
  SLIP サーバに接続するように設定しています。予め IP アドレスの分ってい
  る SLIP サーバでは、dip337j-uri.tgz に付属の dsample.dip を使ってくだ
  さい。

  dip に get $local コマンドを与えれば、 dip は接続先から送られてきたテ
  キストの中から IP アドレスのように見える文字列(例えば `.' で区切られた
  数字)を探します。この修正は、動的に IP アドレスを割り当てるタイプの
  SLIP サーバ用で、サーバから与えられる IP アドレスを読み取る過程を自動
  化できます。

  上記の例では、自動的に SLIP 接続をデフォルトの経路に指定します。既に
  ethenet ネットワークに接続していて、デフォルトの経路はそちらにしたいよ
  うな場合には、上記のスクリプトから default を指定している行を削除して
  ください。このスクリプトが終了してから ifconfig コマンドを使って sl0
  デバイスができていることを確認します。これが SLIP デバイスです。必要な
  らば、dip コマンドが終了してから ifocnfig や route コマンドを使って手
  動で設定してください。

  dip では mode コマンドを使って、複数のプロトコルの中から使うべきプロト
  コルを指定できます。もっともよく使われているプロトコルは SLIP に圧縮機
  能を組み込んだ cSLIP です。接続の両端が同じプロトコルを使う必要がある
  ので、サーバの選んだプロトコルと同じものを使っているかを確認してくださ
  い。

  上記のスクリプトはたいていのエラーには耐えられるように頑丈に作ってあり
  ます。より詳しい情報は dip の man ページをご覧ください。少し工夫をすれ
  ば、設定した時間内にサーバへ接続できなければ自動的にリダイアルしたり、
  複数のサーバを順に試してみるような機能を組み込むことも可能です。

  7.5.7.  専用線と slattach を使って恒久的な SLIP 接続を行う方法

  2 台のマシンをシリアルケーブルでつないでいたり、2 台のマシンを専用線や
  常時接続しているシリアル回線で接続しているような環境ならば、シリアル接
  続を設定するために dip を使う必要はありません。そのような接続の設定に
  は、より利用の簡単な slattach の機能で十分です。

  専用回線の場合、起動時に実行される rc.inet1 で必要な設定を行うのがいい
  でしょう。実際のところ、必要なのはシリアルデバイスを正しいスピードに設
  定して、SLIP モードに変更するだけです。slattach を使えば、この作業は一
  つのコマンドで実現できます。以下のコマンドを rc.inet1 ファイルに追加し
  てください。

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

  ここで、

     IPA.IPA.IPA.IPA
        は、あなたのマシンの IP アドレスで、

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

  slattach は指定したシリアルデバイスに空いている最初の SLIP デバイスを
  割り当てます。slattach の割り当てるデバイス名は sl0 から始まり、次に割
  り当てるデバイス名は sl1、のようになります。

  slattach に -p 引数を指定すれば、異なるプロトコルを設定可能です。この
  機能を使って、圧縮の有無によって SLIP か cSLIP を使い分ける場合がよく
  あります。注意：圧縮の有無は接続の両端で同じ設定にする必要があります。

  7.6.  SLIP サーバ

  インターネットなどのネットワークに接続したマシンがあり、電話を経由して
  接続してきた他の人に各種のサービスを提供したい場合、あなたのマシンをサ
  ーバとして設定する必要があります。接続のためのシリアル回線のプロトコル
  に SLIP を使った場合、設定の仕方には 3 種類の方法があります。それぞれ
  の方法を以下に示しますが、私のお薦めは最初の sliplogin を使う方法で
  す。この方法が一番設定も理解も簡単です。でも他の方法についても説明しま
  すので、どれを使うかは御自分で判断してください。

  7.6.1.  sliplogin  を使った SLIP サーバの設定

  sliplogin は通常の login シェルの代わりに使う SLIP ユーザ用のプログラ
  ムで、端末の回線を SLIP モードに変更します。sliplogin を使えば、 Linux
  マシンを静的アドレスサーバにも動的アドレスサーバにも設定できます。前者
  は予めユーザごとに割り当てておいた IP アドレスを使い、後者では予め用意
  しておいた IP アドレスの中から接続の度に IP アドレスを割り当てることに
  なります。

  接続過程は通常のログインプロセスとほぼ同じで、まずユーザ名とパスワード
  が必要です。しかしながら、その後はログインシェルが立ちあがる代わりに設
  定ファイル(/etc/slip.hosts)に記述されたログイン名に従って sliplogin が
  実行されます。設定ファイルのユーザ名が確認されれば、回線を 8 ビットす
  べてが通過するように設定して、ioctl コールを使って回線を SLIP モードに
  変更します。この過程が終了したら、設定の最終段階へと進みます。
  sliplogin はシェルスクリプトを起動して、指定した IP アドレスやネットマ
  スクに従って SLIP デバイスを設定し、適切な経路を定義します。このための
  スクリプトは通常 /etc/slip.login と呼ばれていますが、getty のようにユ
  ーザごとに設定することもでき、そのような場合は
  /etc/slip.login.loginame にユーザごとの設定スクリプトを用意します。

  sliplogin を使うためには設定ファイルがいくつか必要です。以下に、それら
  をどこから入手してどのように設定するかを説明します。必要なファイルは以
  下の通りです:

  o  /etc/passwd は電話経由で接続してくるユーザのアカウントを設定しま
     す。 /etc/slip.hosts には、それぞれのユーザごとの情報を設定します。

  o  /etc/slip.login には、ユーザに対して行う必要がある経路制御の設定を
     行います。

  o  /etc/slip.tty は、「動的な IP アドレス割り当て」用のサーバを設定す
     る場合に限って必要となるファイルで、割り当てるアドレスの表になって
     います。

  o  /etc/slip.logout には、ユーザが接続を切ったりログアウトした際の後始
     末のためのコマンドを設定します。

  7.6.1.1.  sliplogin  の入手先

  すでにディストリビューションの一部として sliplogin をインストール済み
  かもしれませんが、そうでなければ metalab.unc.edu
  <ftp://metalab.unc.edu/pub/linux/system/Network/serial/sliplogin-2.1.1.tar.gz>
  から入手できます。この tar ファイルには、ソースとコンパイル済みのバイ
  ナリ、man ページが入っています。

  sliplogin を実行できるのは、その権限を持ったユーザだけなので、以下のよ
  うなエントリを/etc/group ファイルに登録する必要があります。

        ..
       slip::13:radio,fred
        ..

  sliplogin パッケージをインストールすれば、Makefile が自動的に
  sliplogin のグループを slipにし、このグループに属するユーザだけが
  sliplogin プログラムを実行できるようになります。上の例では radio と
  fred のみが sliplogin を実行できます。

  必要なバイナリを/sbin ディレクトリにインストールし、 manページを man
  ページの 8 章に登録してください。以下のようにします。

  # cd /usr/src
  # gzip -dc .../sliplogin-2.1.1.tar.gz | tar xvf -
  # cd sliplogin-2.1.1
  # < shadow パスワードを使わない場合は Makefile を編集してください >
  # make install

  インストール前に自分でプログラムを再コンパイルする場合、make install
  の前に make clean してください。どこか別のディレクトリにインストールす
  る場合は Makefile の install の指定を変更します。

  詳しくは、パッケージに付属の README ファイルをご覧ください。

  7.6.1.2.  SLIP ホスト用の /etc/passwd

  通常、SLIP で接続してくる人向けに特別のエントリを /etc/passwd に用意す
  る必要があります。よく行なわれているのは、接続してくるホスト名の頭に大
  文字の `S' を付けて登録する方法です。今回紹介した例の場合、 radio 用に
  は以下のような /etc/passwd エントリを追加します:

       Sradio:FvKurok73:1427:1:radio SLIP login:/tmp:/sbin/sliplogin

  実際にはアカウント名には特に意味が無いので、自分にとって分りやすい名前
  を付けてかまいません。

  注意: 電話をかけてくる人はシェルを使うわけではないので、専用のホーム
  ディレクトリを用意する必要はありません。/tmp あたりを指定しておけばい
  いでしょう。また、通常のログインシェルの代わりに sliplogin を指定して
  いることに注意してください。

  7.6.1.3.  /etc/slip.hosts  の設定

  /etc/slip.hosts ファイルは、sliplogin がチェックするファイルで、電話を
  かけてくる人のログイン名と必要な設定を登録しておきます。IP アドレスや
  ネットマスクの設定をするのもこのファイルになります。以下に示す例では 2
  つのエントリがあり、radio には予め IP アドレスを割り当て、albert には
  動的に IP アドレスを割りあてます。

       #
       Sradio   44.136.8.99   44.136.8.100  255.255.255.0  normal      -1
       Salbert  44.136.8.99   DYNAMIC       255.255.255.0  compressed  60
       #

  /etc/slip.hosts ファイルのエントリを以下に示します:

  1. 電話をかけてきた人のログイン名

  2. サーバーマシン、すなわちこのマシンの IP アドレス

  3. 電話をかけてきたホストに割り当てる IP アドレス。この欄が DYNAMIC に
     なっていれば、後述する /etc/slip.tty ファイルにある情報に従って IP
     アドレスを割り当てます。注意: この機能を使うには、最低でもバージョ
     ン 1.3 以上の sliplogin が必要です。

  4. 電話をかけてきたマシンに設定するネットマスクは、クラス C の場合
     255.255.255.0 のように、ドットで区切った 10 進表記で指定します。

  5. 圧縮やその他の slip の機能を有効/無効にする slip モードの設定です。
     指定できる値は "normal" または "compressed" です。

  6. timeout パラメータで指定した時間以上データグラムのやりとりが無い場
     合、自動的に接続を切ります。負の値を指定すれば timeout 機能は無効に
     なります。

  7. 省略可能な引数。

  注意: 2 つめと 3 つめの欄には、ホスト名でもドット区切の 10 進表記の IP
  アドレスでも指定可能です。ホスト名を指定した場合、そのホスト名が IP ア
  ドレスに変換できなければなりません。変換できない場合、スクリプトは異常
  終了します。あるホスト名が IP アドレスに変換できるかどうかを調べるに
  は、そのホスト名に対して telnet してみるのがいいでしょう。もし Trying
  nnn.nnn.nnn... というメッセージが出れば、そのマシンでは指定したホスト
  名を IP アドレスに変換できています。`Unknown host' というメッセージが
  出る場合は変換できていません。変換できない場合はドット区切の 10 進表記
  を使うか、リゾルバの設定を修正しましょう (詳しくは 名前の解決(Name
  resolution) の節を参照してください)。

  slip でよく使うモードは以下の 2 つです:

     normal
        通常の非圧縮の SLIP

     compressed
        van Jacobsen のヘッダ圧縮を可能にするモード(cSLIP)

  通常これらは排他的なので、どちらか一方のみを指定します。その他指定可能
  なオプションについては man ページを参照してください。

  7.6.1.4.  /etc/slip.login  ファイルの設定

  sliplogin が /etc/slip.hosts ファイルを調べた結果、電話をかけてきたマ
  シン名が見つかれば、その IP アドレスとネットマスクを使って
  /etc/slip.login スクリプトを実行し、 SLIP インターフェイスを実際に設定
  します。

  sliplogin パッケージと共に配布されているサンプルの /etc/slip.login
  ファイルは以下のようになっています:

  #!/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 ...
  #   SLIPunit ttyspeed   pid   the arguments from the slip.host entry
  #
  /sbin/ifconfig $1 $5 pointopoint $6 mtu 1500 -trailers up
  /sbin/route add $6
  arp -s $6 <hw_addr> pub
  exit 0
  #

  お気づきのように、このスクリプトでは ifconfig と route を使って自分の
  IP アドレスと接続先の IP アドレス、ネットマスクを設定し、SLIP デバイス
  を使って接続先への経路を設定しているだけです。必要な設定は slattach コ
  マンドで設定することもできます。

  サーバマシンと同じイーサネット上にいるホストから、電話を経由して接続し
  てきているホストへ接続するために、arp コマンドで代理 ARP(Proxy ARP)を
  設定していることにも注意してください。 <hw_addr>欄は、このマシンのイー
  サネットカードのハードウェアアドレスを指定します。イーサネットのネット
  ワークに接続していないサーバの場合はこの行を指定する必要はありません。

  7.6.1.5.  /etc/slip.logout  ファイルの設定

  接続が切れた場合、シリアルデバイスを元の状態に戻して、再度電話を受けら
  れるように設定しておきましょう。このために使うのが /etc/slip.logout
  ファイルです。このファイルの構造はごく単純で、 /etc/slip.login ファイ
  ルと同じ引数を取ります。

               #!/bin/sh -
               #
               #               slip.logout
               #
               /sbin/ifconfig $1 down
               arp -d $6
               exit 0
               #

  このスクリプトがやっているのはインターフェイスを `down' させて、以前に
  登録された経路を削除するだけです。同時に arp コマンドで設定していた代
  理 ARP も削除します。この作業もサーバマシンがイーサネットに接続してい
  ない場合は必要ありません。

  7.6.1.6.  /etc/slip.tty  ファイル の設定

  動的に IP アドレスを割り当てる場合(すなわち /etc/slip.hosts に DYNAMIC
  というキーワードを指定したエントリを作った場合)、割り当てるポート用の
  IP アドレスを登録するための /etc/slip.tty ファイルを設定しなければなり
  ません。ただし、このファイルが必要になるのは、ユーザへのアドレス割り当
  てをサーバに動的に行わせる場合だけです。

  このファイルは SLIP 接続を受けつける tty デバイスのリストになってお
  り、それぞれのポートに接続してきたユーザに割り当てる IP アドレスを登録
  しておきます。

  このファイルのフォーマットは以下のようになっています:

       # 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
       #

  この例では /dev/ttyS0 に接続してきた /etc/slip.hosts ファイルのリモー
  トアドレス欄に DYNAMIC と指定してあるホストに 192.168.0.100 の IP アド
  レスを割り当てます。

  このように、固有のアドレスの不要なユーザにはポートごとに割り当てたアド
  レスを使うことが可能です。この機能を使えば必要な IP アドレスは少なくて
  済みます。

  7.6.2.  dip  を使った SLIP サーバ

  以下に説明する情報のいくつかは dip の man ページから引用したことを最初
  に白状しておきます。この man ページでは Linux を SLIP サーバにする方法
  について簡単に紹介してあります。また、以下の記述は dip337o-uri.tgz
  パッケージ用のもので、その他のバージョンの dip には当てはまらないこと
  も多いので御注意ください。

  dip には input モード動作があります。ここでは起動したユーザのエントリ
  を用い、 /etc/diphosts ファイルの設定に従って自動的にシリアル回線を
  SLIP 接続として設定します。このモードに入るには、 dip を diplogin とい
  う名前で起動します。この機能を使えば dip を使って SLIP サーバを構築で
  きます。この際にはログインシェルに diplogin を用いた特別なアカウントを
  用意します。

  この方法を使う場合、まず以下のようにシンボリックリンクを設定します:

       # ln -sf /usr/sbin/dip /usr/sbin/diplogin

  次に /etc/passwd と /etc/diphosts ファイルの双方に必要なエントリを追加
  します。必要なエントリの形式を以下に示します:

  dip を使って SLIP サーバを作る場合、dip を(input モードで)ログインシェ
  ルとして使うための特別の設定が必要になります。SLIP 用のアカウントに
  は、大文字の `S' を頭に付けた `Sfredm' などを使うのがいいでしょう。

  SLIP ユーザ用の /etc/passwd ファイルのエントリの例は以下のようになりま
  す:

  Sfredm:ij/SMxiTlGVCo:1004:10:Fred:/tmp:/usr/sbin/diplogin
  ^^         ^^        ^^  ^^   ^^   ^^   ^^
  |          |         |   |    |    |    \__ diplogin をログインシェルに
  |          |         |   |    |    \_______ ホームディレクトリ
  |          |         |   |    \____________ ユーザ名
  |          |         |   \_________________ ユーザのグループ ID
  |          |         \_____________________ ユーザ ID
  |          \_______________________________ 暗号化したパスワード
  \__________________________________________ SLIP を使うユーザ名

  ユーザがログインした後、login がユーザ名を確認し、 diplogin コマンドを
  実行します。dip は diplogin というコマンド名で起動されると、自動的にロ
  グインシェルとして機能します。diplogin は、まず getuid() ファンクショ
  ンコールを使って自分を起動したユーザのユーザ ID を調べます。その
  後、/etc/diphosts ファイルの最初のエントリを見て、そのユーザ ID か接続
  があったデバイスの tty 名を調べ、その設定に従って適切な設定を行いま
  す。diphosts にユーザ名のエントリを作るか、サーバのデフォルトの設定を
  使って、ユーザごとに静的な IP アドレスの割り当てと動的な割り当てを混在
  させるような方法を取るかは判断におまかせします。

  dip コマンドは input モードで起動されれば、自動的に「代理 ARP」のエン
  トリを追加するので、arp コマンドを手動で実行する必要はありません。

  7.6.2.1.  /etc/diphosts  の設定

  /etc/diphosts は dip が用いるファイルで、リモートホストの設定を前もっ
  てここに書いておきます。このファイルに設定するリモートホストは電話をか
  けて接続してくるユーザーのマシンの場合もあれば、あなたが Linux マシン
  を用いて接続する先のホストの場合もあります。

  /etc/diphosts の一般的な書式は以下の通りです:

        ..
       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
        ..

  各欄の意味は以下の通りです:

  1. ログイン名: は getpwuid(getuid()) で得られる名前か tty 名が使われま
     す。

  2. 未使用: passwd との互換性のためのフィールドです。

  3. リモートアドレス: 接続先のホストの IP アドレスを数字か名前で指定し
     ます。

  4. ローカルアドレス: このマシンの IP アドレスです。これも名前か数字で
     指定します。

  5. ネットマスクk: ドット区切りの 10 進表記で記述します。

  6. コメント欄: 何を書いても構いません。

  7. プロトコル: SLIP, CSLIP 等。

  8. MTU: 10進表記

  SLIP でアクセスしてくる人用の /etc/net/diphosts のエントリの例は以下の
  ようになります:

       Sfredm::145.71.34.1:145.71.34.2:255.255.255.0:SLIP uwalt:SLIP,296

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

       Sfredm::145.71.34.1:145.71.34.2:255.255.255.0:SLIP uwalt:CSLIP,1006

  また、この例ではリモートアドレスが 145.71.34.1、MTU が 1006 である
  cSLIP 対応接続を指定しています。

  お分りのように、予め割り当てた IP アドレスを使って接続してくるユーザ用
  には /etc/diphosts にエントリを設けておく必要があります。また、特定の
  ポートにアクセスしたユーザ全てに同じ IP アドレスを割り当てるような設定
  の場合は tty デバイスのエントリを用意して、ユーザ名のエントリは作りま
  せん。少なくとも、どのモデムに当っても適切な設定が行われるように、それ
  ぞれの tty デバイスごとの設定はしておくことをお忘れなく。

  ユーザがログインしてくれば、通常のログイン名とパスワードの入力プロンプ
  トが表示されます。そのプロンプトに対して SLIP ログイン用のユーザ名とパ
  スワードを入力します。それらが正しければ特にメッセージは表示されず、自
  動的に接続端を SLIP モードに変更します。すると、ユーザが接続可能にな
  り、 diphosts ファイルの指定に従って設定されるようになるはずです。

  7.6.3.  dSLIP  パッケージを使った SLIP サーバ

  Matt Dillon <dillon@apollo.west.oic.com> は、 SLIP の着信のみならず、
  発信にも使えるパッケージを作りました。彼のパッケージでは、小さなプログ
  ラムとスクリプトが集まって必要な設定を行います。スクリプトの一つは
  tcsh を使うので、このパッケージを使うには tcsh をインストールする必要
  があります。また Matt は、スクリプトの一つで必要となる expect のバイナ
  リパッケージも配布しています。このパッケージを使いこなすには expect を
  使った経験があるといいでしょうが、だからといって後込みすることはありま
  せん。

  このパッケージには、Matt が書いた詳しい README ファイルが付属している
  ので、ここではそれを繰り返すことはしません。

  dSLIP パッケージは以下のサイトから入手できます。

  apollo.west.oic.com

       /pub/linux/dillon_src/dSLIP203.tgz

  あるいは、以下のサイトからも入手できます。

  metalab.unc.edu

       /pub/Linux/system/Network/serial/dSLIP203.tgz

  make install する前に README ファイルを読んで、適切な /etc/passwd と
  /etc/group エントリを作ることをお忘れなく。

  8.  その他のネットワーク技術

  以下の各節では特定のネットワーク技術を説明します。それぞれの節は独立し
  ているので、ある節を読むのに別の節の情報は特に必要ありません。話題はア
  ルファベット順に並べています。

  8.1.  ARCNet

  ARCNet のデバイス名は `arc0e', `arc1e', `arc2e' あるいは `arc0s',
  `arc1e', arc2e' のようになります。最初に検出されたカードが `arc0e' ま
  たは `arc0s' で、それ以降は検出された順に番号が振られます。デバイス名
  の最後の s や e はパケットをイーサネットにカプセル化するか、 RFC1051
  の形式にするかを示します。

  カーネルのコンパイルオプション:

               Network device support  --->
                   [*] Network device support
                   <*> ARCnet support
                   [ ]   Enable arc0e (ARCnet "Ether-Encap" packet format)
                   [ ]   Enable arc0s (ARCnet RFC1051 packet format)

  ARCnet カードをサポートするようにカーネルを作成すれば、カードの設定は
  簡単です。

  通常は以下のように設定します:

               root# ifconfig arc0e 192.168.0.1 netmask 255.255.255.0 up
               root# route add -net 192.168.0.0 netmask 255.255.255.0 arc0e

  詳細については /usr/src/linux/Documentation/networking/arcnet.txt と
  /usr/src/linux/Documentation/networking/arcnet-hardware.txt をご覧くだ
  さい。

  ARCNet の機能は Avery Pennarrun apenwarr@foxnet.net が開発しました。

  8.2.  Appletalk ( AF_APPLETALK )

  Appletalk 機能は既存のネットワークデバイスを使うので特別のデバイス名は
  不要です。

  カーネルのコンパイルオプション:

               Networking options  --->
                   <*> Appletalk DDP

  Appletalk 機能を使えば、Linux を Apple のネットワークと協働させ、プリ
  ンタやディスクといったリソースを Linux と Apple 製のコンピュータの間で
  共有できます。この機能を使うには netatalk と呼ばれるソフトが別途必要で
  す。ミシガン大学で `Research System Unix Group' というチームを率いてい
  る Wesley Craig netatalk@umich.edu が、 Appletalk のプロトコルスタック
  とその他有益なプログラムをまとめた netatalk と呼ばれるプログラムを開発
  しました。 netatalk パッケージは Linux の配布パッケージに含まれている
  かもしれませんし、見つからなければミシガン大学
  <ftp://terminator.rs.itd.umich.edu/unix/netatalk/> から FTP で入手でき
  ます。

  このパッケージをコンパイルしてインストールするには以下のようにします。

               user% tar xvfz .../netatalk-1.4b2.tar.Z
               user% make
               root# make install

  実際に make を実行してソフトウェアをコンパイルする前に、 `Makefile' を
  編集するとよいでしょう。特に、後でファイル群がインストールされる先を定
  義する変数である DESTDIR は変更しておきましょう。デフォルト値の
  /usr/local/atalk でも十分安全です。

  8.2.1.  Appletalk 用ソフトウェアの設定

  Appletalk を動作させるためにまずしなければならないことは、
  /etc/services に適切な設定があるかどうかを確かめることです。必要なエン
  トリは以下の通りです:

         rtmp  1/ddp   # Routing Table Maintenance Protocol
         nbp   2/ddp   # Name Binding Protocol
         echo  4/ddp   # AppleTalk Echo Protocol
         zip   6/ddp   # Zone Information Protocol

  次に /usr/local/atalk/etc ディレクトリ(またはパッケージのインストール
  先のディレクトリ)に Appletalk の設定ファイルを作ります。

  最初に作成すべきファイルは /usr/local/atalk/etc/atalkd.conf です。この
  ファイルには Apple のマシンのネットワークが接続しているネットワークデ
  バイス名のみを登録しておきます。

         eth0

  Appletalk デーモンプログラムが実行されると、このファイルに設定情報が追
  加されます。

  8.2.2.  Linux のファイルシステムを Appletalk 経由で提供する方法

  Linux マシンのファイルシステムを提供して、ネットワーク上の Apple のマ
  シンから使えます。

  このためには /usr/local/atalk/etc/AppleVolumes.system ファイルを作成し
  ます。もう一つ、 /usr/local/atalk/etc/AppleVolumes.default というファ
  イルもあり、このファイルは AppleVolumes.system と全く同じ形式で、ゲス
  トアカウントでも利用できるファイルシステムを設定します。

  これらのファイルを設定する詳しい方法や各種のオプションについては afpd
  の man ページをご覧ください。

  以下に簡単な例を示します:

         /tmp Scratch
         /home/ftp/pub "Public Area"

  この例では /tmp ファイルシステムを `Scratch' という名で、 ftp の
  public ディレクトリを `Public Area' という名で、それぞれ AppleShare に
  提供しています。`Scratch' や `Public Area' といったボリューム名は必須
  ではなく、指定しなければデーモンが自動的に命名してくれますが、付けてお
  いても問題はありません。

  8.2.3.  AppleTalk 経由での Linux のプリンタの共有

  Linux マシンに接続されたプリンタを Apple 製のマシンと共有するのも簡単
  で、AppleTalk のプリンタ・アクセス・プロトコル・デーモン papd を使いま
  す。このプログラムは、Apple マシンからのプリントリクエストを受けつけて
  スプールし、lpr デーモンに渡して Linux マシンのプリンタに出力します。

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

  papd.conf の設定例を以下に示します:

         TricWriter:\
            :pr=lp:op=cg:

  この設定で `TricWriter' というプリンタ名が Appletalk 上に設定され、そ
  のプリンタに送られた出力は lpd を使って Linux の `lp' プリン
  タ(/etc/printcap ファイルで設定されている lp プリンタです)に出力されま
  す。 `op=cg' の指定は Linux マシンのユーザ `cg' がプリンタの使用者にな
  ることを意味します。

  8.2.4.  appletalk ソフトウェアの起動

  さて以上で、この基本的な設定を試す準備ができました。netatalk パッケー
  ジには rc.atalk ファイルが含まれていますので、 netatalk を起動するには
  以下のようにします。

               root# /usr/local/atalk/etc/rc.atalk

  これで必要なデーモン類が全て起動するはずです。エラーが出なければ、ソフ
  トウェアはコンソールにそれぞれの段階のメッセージを示していくはずです。

  8.2.5.  appletalk ソフトウェアのテスト

  netatalk が正しく機能しているかを確認するには、Apple のマシンを使っ
  て、アップルメニューから「セレクタ」を選び、AppleShare をクリックして
  Linux マシンが表示されるかどうかを確かめます。

  8.2.6.  netatalk の注意点

  o  場合によっては、IP ネットワークを設定する以前に Appletalk 機能を起
     動しなければいけないかもしれません。netatalk が起動しなかったり、
     netatalk が起動すると IP ネットワークにトラブルが生じたりする場合、
     netatalk を /etc/rc.d/rc.inet1 以前に起動してください。

  o  afpd(Apple Filing Protocol Daemon)は HDD をひどく散らかします。マウ
     ントポイントの下には、.AppleDesktop と Network Trash Folder という
     ファイルが作られます。さらに、アクセスがあった全てのディレクトリに
     はリソースフォーク等を保存するための .AppleDouble が作られます。で
     すから、/ を afpd で公開する前にはくれぐれもよく考えてください。さ
     もないと大変な時間をかけて後始末をする羽目になってしまいます。

  o  afpdは Mac に対して平文のパスワードを求めます。これはセキュリティ的
     には問題なので、afpd をインターネット等の外部ネットワークに接続した
     マシンで起動する際には十分注意してください。さもないと、誰か悪い人
     に被害を与えられて後悔することになるかもしれません。

  o  netstat や ifconfig といった既存のネットワーク診断ツールは
     AppleTalk をサポートしていません。必要ならば /proc/net/ 以下のディ
     レクトリに用意されている情報を調べてください。

  8.2.7.  さらに詳しい情報について

  Linux で AppleTalk を設定する方法のより詳しい説明については
  thehamptons.com <http://thehamptons.com/anders/netatalk/> で公開されて
  いる Anders Brownworth の Linux Netatalk-HOWTO を参照してください。

  8.3.  ATM

  Werner Almesberber <werner.almesberger@lrc.di.epfl.ch> は Linux で
  ATM(Asynchronous Transfer Mode)をサポートするための計画を統括していま
  す。この計画の現状は lrcwww.epfl.ch <http://lrcwww.epfl.ch/linux-atm/>
  で見ることができます。

  8.4.  AX25 ( AF_AX25 )

  AX.25 デバイスの名称は 2.0.* カーネルでは `sl0' や `sl1' ですが、2.1.*
  カーネルでは `ax0' や `ax1' になっています。

  カーネルのコンパイルオプション:

               Networking options  --->
                   [*] Amateur Radio AX.25 Level 2

  AX25 と Netrom, Rose プロトコルについては AX25-HOWTO <AX25-HOWTO.html>
  に詳しく説明されています。これらのプロトコルはパケット通信の実験で世界
  中のアマチュア無線のオペレータに使われています。

  これらのプロトコルのほとんどは Jonathon Naylor jsn@cs.not.ac.uk が実装
  しました。

  8.5.  DECNet

  DECNet のサポートも現在開発中です。将来の 2.1.* シリーズで公開されるは
  ずです。

  8.6.  FDDI

  FDDI のデバイス名は `fddi0'、`fddi1'、 `fddi2' などになります。カーネ
  ルが検出した最初のカードが `fddi0' で、その後は検出した順に番号が振ら
  れていきます。

  Larry Stefani lstefani@ultranet.com が DEC 製の EISA バスと PCI バスの
  FDDI カード用のドライバを開発しました。

  カーネルのコンパイルオプション:

          Network device support  --->
              [*] FDDI driver support
              [*] Digital DEFEA and DEFPA adapter support

  FDDI ドライバを組み込んだカーネルを構築すれば、FDDI インターフェイスの
  設定はイーサネットインターフェイスの設定とほぼ同じです。適切な FDDI イ
  ンターフェイスの名称を指定して ifconfig と route コマンドで設定しま
  す。

  8.7.  フレームリレー

  フレームリレーのデバイス名のうち、DLCI にカプセル化するデバイス名は
  `dlci00', `dlci01' 等になり、FRAD のデバイス名は `sdla0', `sdla1 等に
  なります。

  フレームリレーは新しいネットワーク技術で、「突発的」に膨大なデータ転送
  が起こるような種類の通信向けに設計されています。フレームリレーネットワ
  ークに接続するにはフレームリレー・アクセス・デバイス(FRAD : Frame
  Relay Access Device)を使います。Linux では RFC-1490 に定義されている、
  フレームリレー上に IP 接続を乗せる機能がサポートされています。

  カーネルのコンパイルオプション:

               Network device support  --->
                   <*> Frame relay DLCI support (EXPERIMENTAL)
                   (24)   Max open DLCI
                   (8)   Max DLCI per device
                   <*>   SDLA (Sangoma S502/S508) support

  フレームリレー対応と設定用ツールは Mike McLagan mike.mclagan@linux.org
  が開発しました。

  現在サポートされている FRAD は Sangoma Technologies
  <http://www.sangoma.com/> 製の S502A, S502E, S508 だけです。

  カーネルに必要な機能を組み込んで再構築した後、 FRAD と DLCI デバイスを
  設定するには、フレームリレー設定用プログラムが必要になります。これらは
  ftp.invlogic.com <ftp://ftp.invlogic.com/pub/linux/fr/frad-0.15.tgz>
  から入手できます。このプログラムをコンパイルしてインストールするのは簡
  単ですが、大元の Makefile が無いために手動でやる作業がかなりあります。

               user% tar xvfz .../frad-0.15.tgz
               user% cd frad-0.15
               user% for i in common dlci frad; make -C $i clean; make -C $i; done
               root# mkdir /etc/frad
               root# install -m 644 -o root -g root bin/*.sfm /etc/frad
               root# install -m 700 -o root -g root frad/fradcfg /sbin
               rppt# install -m 700 -o root -g root dlci/dlcicfg /sbin

  上記のコマンドは sh の記法を使っているので注意してください。 sh 系でな
  く csh 系のシェル(tcsh 等)を使っている場合は、 for ループの書き方が異
  なります。

  必要なファイルをインストールした後、/etc/frad/router.conf ファイルを作
  る必要があります。以下に、例として付いてきたファイルを多少修正したもの
  を雛型として紹介します。

  # /etc/frad/router.conf
  # This is a template configuration for frame relay.
  # All tags are included. The default values are based on the code
  # supplied with the DOS drivers for the Sangoma S502A card.
  #
  # A '#' anywhere in a line constitutes a comment
  # Blanks are ignored (you can indent with tabs too)
  # Unknown [] entries and unknown keys are ignored
  #

  [Devices]
  Count=1                 # number of devices to configure
  Dev_1=sdla0             # the name of a device
  #Dev_2=sdla1            # the name of a device

  # Specified here, these are applied to all devices and can be overridden for
  # each individual board.
  #
  Access=CPE
  Clock=Internal
  KBaud=64
  Flags=TX
  #
  # MTU=1500              # Maximum transmit IFrame length, default is 4096
  # T391=10               # T391 value    5 - 30, default is 10
  # T392=15               # T392 value    5 - 30, default is 15
  # N391=6                # N391 value    1 - 255, default is 6
  # N392=3                # N392 value    1 - 10, default is 3
  # N393=4                # N393 value    1 - 10, default is 4

  # Specified here, these set the defaults for all boards
  # CIRfwd=16             # CIR forward   1 - 64
  # Bc_fwd=16             # Bc forward    1 - 512
  # Be_fwd=0              # Be forward    0 - 511
  # CIRbak=16             # CIR backward  1 - 64
  # Bc_bak=16             # Bc backward   1 - 512
  # Be_bak=0              # Be backward   0 - 511

  #
  #
  # Device specific configuration
  #
  #

  #
  # The first device is a Sangoma S502E
  #
  [sdla0]
  Type=Sangoma            # Type of the device to configure, currently only
                          # SANGOMA is recognized
  #
  # These keys are specific to the 'Sangoma' type
  #
  # The type of Sangoma board - S502A, S502E, S508
  Board=S502E
  #
  # The name of the test firmware for the Sangoma board
  # Testware=/usr/src/frad-0.10/bin/sdla_tst.502
  #
  # The name of the FR firmware
  # Firmware=/usr/src/frad-0.10/bin/frm_rel.502
  #
  Port=360                # Port for this particular card
  Mem=C8                  # Address of memory window, A0-EE, depending on card
  IRQ=5                   # IRQ number, do not supply for S502A
  DLCIs=1                 # Number of DLCI's attached to this device
  DLCI_1=16               # DLCI #1's number, 16 - 991
  # DLCI_2=17
  # DLCI_3=18
  # DLCI_4=19
  # DLCI_5=20
  #
  # Specified here, these apply to this device only,
  # and override defaults from above
  #
  # Access=CPE            # CPE or NODE, default is CPE
  # Flags=TXIgnore,RXIgnore,BufferFrames,DropAborted,Stats,MCI,AutoDLCI
  # Clock=Internal        # External or Internal, default is Internal
  # Baud=128              # Specified baud rate of attached CSU/DSU
  # MTU=2048              # Maximum transmit IFrame length, default is 4096
  # T391=10               # T391 value    5 - 30, default is 10
  # T392=15               # T392 value    5 - 30, default is 15
  # N391=6                # N391 value    1 - 255, default is 6
  # N392=3                # N392 value    1 - 10, default is 3
  # N393=4                # N393 value    1 - 10, default is 4

  #
  # The second device is some other card
  #
  # [sdla1]
  # Type=FancyCard        # Type of the device to configure.
  # Board=                # Type of Sangoma board
  # Key=Value             # values specific to this type of device

  #
  # DLCI Default configuration parameters
  # These may be overridden in the DLCI specific configurations
  #
  CIRfwd=64               # CIR forward   1 - 64
  # Bc_fwd=16             # Bc forward    1 - 512
  # Be_fwd=0              # Be forward    0 - 511
  # CIRbak=16             # CIR backward  1 - 64
  # Bc_bak=16             # Bc backward   1 - 512
  # Be_bak=0              # Be backward   0 - 511

  #
  # DLCI Configuration
  # These are all optional. The naming convention is
  # [DLCI_D<devicenum>_<DLCI_Num>]
  #

  [DLCI_D1_16]
  # IP=
  # Net=
  # Mask=
  # Flags defined by Sangoma: TXIgnore,RXIgnore,BufferFrames
  # DLCIFlags=TXIgnore,RXIgnore,BufferFrames
  # CIRfwd=64
  # Bc_fwd=512
  # Be_fwd=0
  # CIRbak=64
  # Bc_bak=512
  # Be_bak=0

  [DLCI_D2_16]
  # IP=
  # Net=
  # Mask=
  # Flags defined by Sangoma: TXIgnore,RXIgnore,BufferFrames
  # DLCIFlags=TXIgnore,RXIgnore,BufferFrames
  # CIRfwd=16
  # Bc_fwd=16
  # Be_fwd=0
  # CIRbak=16
  # Bc_bak=16
  # Be_bak=0

  /etc/frad/router.conf ファイルが設定できれば、残る作業は実際のデバイス
  を設定するだけです。これは通常のネットワークデバイスの設定よりも少し複
  雑なだけですが、DLCI カプセル化デバイス以前に FRAD デバイスを設定する
  ことをお忘れなく。これらのコマンドは数が多いので、シェルスクリプトにし
  ておくのがよいでしょう:

               #!/bin/sh
               # Configure the frad hardware and the DLCI parameters
               /sbin/fradcfg /etc/frad/router.conf || exit 1
               /sbin/dlcicfg file /etc/frad/router.conf
               #
               # Bring up the FRAD device
               ifconfig sdla0 up
               #
               # Configure the DLCI encapsulation interfaces and routing
               ifconfig dlci00 192.168.10.1 pointopoint 192.168.10.2 up
               route add -net 192.168.10.0 netmask 255.255.255.0 dlci00
               #
               ifconfig dlci01 192.168.11.1 pointopoint 192.168.11.2 up
               route add -net 192.168.11.0 netmask 255.255.255.0 dlci00
               #
               route add default dev dlci00
               #

  8.8.  IPX ( AF_IPX )

  IPX プロトコルは Novell の NetWare(tm) LAN 環境で広く使われているプロ
  トコルです。Linux はこのプロトコルもサポートしており、ネットワークの端
  末としても、IPX のルータとしても機能します。

  カーネルのコンパイルオプション:

               Networking options  --->
                   [*] The IPX protocol
                   [ ] Full internal IPX network

  IPX プロトコルと NCPFS については IPX-HOWTO <IPX-HOWTO.html> で詳しく
  説明されています。

  8.9.  NetRom ( AF_NETROM )

  NetRom のデバイス名は `nr0', `nr1' になります。

  カーネルのコンパイルオプション:

               Networking options  --->
                   [*] Amateur Radio AX.25 Level 2
                   [*] Amateur Radio NET/ROM

  AX25 と Netrom, Rose プロトコルについては AX25-HOWTO <AX25-HOWTO.html>
  に詳しく説明されています。これらのプロトコルはパケット通信の実験で世界
  中のアマチュア無線のオペレータに使われています。

  これらのプロトコルのほとんどは Jonathon Naylor jsn@cs.not.ac.uk が実装
  しました。

  8.10.  Rose プロトコル (AF_ROSE)

  2.1.* カーネルでは、Rose デバイスの名前は `rs0', rs1' などのようになり
  ます。Rose デバイスは 2.1.* カーネルでないと使えません。

  カーネルのコンパイルオプション:

               Networking options  --->
                   [*] Amateur Radio AX.25 Level 2
                   <*> Amateur Radio X.25 PLP (Rose)

  AX25, Netrom, Rose の各プロトコルについては AX25-HOWTO
  <AX25-HOWTO.html> に詳しく説明されています。これらのプロトコルはパケッ
  ト通信の実験で世界中のアマチュア無線のオペレータに使われています。

  これらのプロトコルのほとんどは Jonathon Naylor jsn@cs.not.ac.uk が実装
  しました。

  8.11.  SAMBA - `NetBEUI', `NetBios',  `CIFS' のサポート

  SAMBA は Session Menagement Block プロトコルを実装したものです。Samba
  を使えば、Microsoft やその他のシステムから Linux のディスクをマウント
  したり、プリンタを使うことが可能になります。

  SAMBA とその設定方法は SMB-HOWTO <SMB-HOWTO.html> で詳しく解説されてい
  ます。

  8.12.  STRIP (Starmode Radio IP) 機能

  STRIP のデバイス名は `st0', `st1' になります。

  カーネルのコンパイルオプション:

               Network device support  --->
                       [*] Network device support
                       ....
                       [*] Radio network interfaces
                       < > STRIP (Metricom starmode radio IP)

  STRIP プロトコルはスタンフォード大学の MosquitoNet Project
  <http://mosquitonet.Stanford.EDU/mosquitonet.html> と呼ばれる研究プロ
  ジェクトが開発した、 Metricom 社の無線モデム用のプロトコルです。

  Metricom 社の無線装置は、シリアルポートに接続し、スペクトル拡散法を
  使って 100Kbps での通信を可能にしています。Metricom の無線装置について
  の情報については Metricom Web Server <http://www.metricom.com/> をご覧
  ください。

  現在のところ、標準のネットワークツールやユーティリティは STRIP ドライ
  バをサポートしていないので、MosquitoNet の WWW サーバから必要な改造版
  のツールをダウンロードする必要があります。どのソフトウェアが必要かにつ
  いては MosquitoNet STRIP Page
  <http://mosquitonet.Stanford.EDU/strip.html> を見てください。

  設定方法を簡単に述べると、改造された slattach プログラムを使ってシリア
  ルの tty デバイスを STRIP 用に設定して、`st[0-9]' デバイスをイーサネッ
  トのように設定します。ただし一つ重要な違いがあります。これは STRIP で
  は ARP プロトコルを技術的な理由から サポートしていないことで、サブネッ
  トのホストごとに ARP エントリを手動で設定してやる必要があります。でも
  これはそれほど大変な仕事でないことが分るでしょう。

  8.13.  トークンリング

  トークンリングのデバイス名は `tr0' や `tr1' のようになります。トークン
  リングは IBM の提案した LAN プロトコルで、同時に 1つの LAN 上のノード
  しかデータの転送をしないようにして、通信のコリジョン (衝突)を防ぐよう
  になっています。このために使われるのが「トークン」で、この「トークン」
  がそれぞれのノードを順に回り、「トークン」を持ったノードのみがデータを
  送ることができます。データを送り終ればトークンを次のノードに送ります。
  このように、トークンが全てのノードを順に巡るので「トークンリング」とい
  う名前になっています。

  カーネルのコンパイルオプション:

               Network device support  --->
                       [*] Network device support
                       ....
                       [*] Token Ring driver support
                       < > IBM Tropic chipset based adaptor support

  トークンリングの設定はネットワークデバイスの名称が異なるだけでイーサ
  ネットの場合と同じです。

  8.14.  X.25

  X.25 は回路ベースのパケットスイッチングプロトコルで、C.C.I.T.T. (世界
  中のほとんどの地域のテレコミュニケーション会社の標準規格を作る団体)が
  定義しています。X.25 と LAPB プロトコルの実装は現在進行中で、最新の
  2.1.* カーネルに進行中の作業が組み込まれています。

  Linux における X.25 の実装については Jonathon Naylor jsn@cs.nott.ac.uk
  が開発のリーダーになっており、専用のメーリングリストもあります。メーリ
  ングリストに参加するには、本文に "subscribe linux-x25" とだけ書いたメ
  ールを majordomo@vger.rutgers.edu 宛に送ってください。

  設定用ツールも初期バージョンが Jonathon の ftp サイト
  ftp.cs.nott.ac.uk <ftp://ftp.cs.nott.ac.uk/jsn/> から入手できます。

  8.15.  WaveLan カード

  Wavelan のデバイス名は `eth0', `eth1' のようになります。

  カーネルのコンパイルオプション:

       Network device support  --->
               [*] Network device support
               ....
               [*] Radio network interfaces
               ....
               <*> WaveLAN support

  WaveLAN カードはスペクトラム拡散法(spread spectrum)を使った無線 LAN カ
  ードで、カードそのものはイーサネットと同じように扱え、イーサネットカー
  ドと同じ方法で設定できます。

  WaveLAN カードについての情報は Wavelan.com <http://www.wavelan.com/>
  から入手できます。

  9.  ケーブルと接続方法

  ハンダごてを握ったことがある人ならば、2 台の Linux マシンを接続するた
  めのケーブルも簡単に自作できます。以下に示す結線図が参考になるでしょ
  う。

  9.1.  シリアル用クロスケーブル

  全てのクロスケーブルが同じわけではありません。多くのクロスケーブルは、
  適切な信号が来ているとコンピュータに思わせて、送信と受信のデータを入れ
  替えるような細工をしています。この種のケーブルでも動作しますが、この場
  合はハードウェアフロー制御よりも効率が悪い(XON/XOFF を使った) ソフト
  ウェアフロー制御を使わなければいけません。以下に示す配線なら 2 台のマ
  シンの間で最適な信号のやりとりができ、ハードウェア(RTS/CTS を使った)フ
  ロー制御も可能です。

  ピン名称  ピン                              ピン
  Tx Data    2  -----------------------------  3
  Rx Data    3  -----------------------------  2
  RTS        4  -----------------------------  5
  CTS        5  -----------------------------  4
  Ground     7  -----------------------------  7
  DTR        20 -\---------------------------  8
  DSR        6  -/
  RLSD/DCD   8  ---------------------------/-  20
                                           \-  6

  9.2.  パラレルポート用ケーブル(PLIP ケーブル)

  PLIP プロトコルを使って 2 台のマシンを接続する場合、以下に示すケーブル
  を使えば、どんな種類のパラレルポートでも接続できます。

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

  注意:

  o  アスタリスク(*)が記されているピンは接続しないこと。

  o  18,19,20,21,22,23,24 はアースです。

  o  お使いのケーブルが金属シールドされている場合、シールドは DB-25 コネ
     クタと一端でのみ接続してください。

     警告: 配線を間違えた PLIP ケーブルを使うとコントロールカードが破壊
     されるかもしれません。 全ての配線をダブルチェックして、将来の不要な
     手間や頭痛のタネが無くなるように、十分注意して配線してください。

  長い PLIP ケーブルでも使えるかもしれませんが、これはできるだけ避けるべ
  きです。仕様で許されているケーブルの長さは 1 メートル程度です。長い
  PLIP ケーブルを使う時には特に注意してください。というのも、雷や電線、
  無線の発信器のような強力な電磁波の発生源がコントローラと干渉し、これを
  壊してしまうことさえあるからです。遠く離れた 2 台のコンピュータを接続
  する必要が本当にある場合は、10base2 用のイーサネットカードを使い、同軸
  ケーブルで接続すべきでしょう。

  9.3.  10base2 (細い同軸の)イーサネットケーブル

  10base2 は直径約 5 mm の 52Ωの同軸ケーブルを使うイーサネットケーブル
  の規格です。10base2 でマシンを接続する場合、いくつか覚えておかなければ
  ならない重要な決まりがあります。まず第一に、ケーブルの 両端にターミネ
  ータを付けること。52Ωの抵抗値をもつターミネータを付ければ、ケーブルの
  端に達した信号は反射されずに吸収されます。ターミネータを付けないとイー
  サネットは不安定になり、全く使えなくなることもあります。通常、コンピュ
  ータを接続する部分には「T 型」のコネクタを使うので、配線は以下のような
  形になります:

        |==========T=============T=============T==========T==========|
                   |             |             |          |
                   |             |             |          |
                 -----         -----         -----      -----
                 |   |         |   |         |   |      |   |
                 -----         -----         -----      -----

  この図のうち、両端にある `|' はターミネータで、 `======'は両端に BNC
  プラグを付けた同軸ケーブル、`T' は「T 型コネクタ」を表します。「T 型コ
  ネクタ」間の同軸ケーブルと PC のイーサネットカードとの接続の長さは可能
  な限り短くしましよう。理想的には「T 型コネクタ」から直接イーサネットに
  接続する形が最善です。

  9.4.  ツイストペア(Twisted Pair)イーサネットケーブル

  2 枚のツイストペアタイプのイーサネットカードを接続したいだけなら、ハブ
  無しに直結しても構いません。そのためのケーブルの配線は Ethernet-HOWTO
  <Ethernet-HOWTO.html> に書いてあります。

  10.  この文書で使われている用語の解説

  以下に、この文書に現われる重要な用語について簡単に説明します。

     ARP
        Address Resolution Protocol の頭文字を取った語で、ネットワーク上
        のマシンが IP アドレスをハードウェアアドレス(MAC アドレス)と対応
        付けるために使うプロトコルです。

     ATM
        Asynchronous Transfer Mode の頭文字を取った語です。 ATM ネットワ
        ークでは、データを一定サイズのパケットにまとめて 2 点間で効率的
        に転送できるようになっています。ATM は回路切替え型のパケットネッ
        トワーク技術です。

     クライアント(client)
        ユーザがいる側のシステムで使うソフトウェアを指します。これには例
        外もあり、X11 ウィンドウシステムではユーザ側にサーバがあり、クラ
        イアントがリモートで動きます。クライアントとは、サーバが提供する
        サービスを受けるプログラムやシステムです。slip や ppp といった一
        対一接続の場合、電話をかけるなど接続を開始する側をクライアントと
        呼び、呼び出される側をサーバと呼びます。

     データグラム(datagram)
        データグラムとは、あるデータのかたまりに、宛先/送り元アドレスな
        どが含まれたヘッダの付いたもので、 IP ネットワークで転送されるデ
        ータの基本単位です。「パケット」と呼ばれることもあります。

     DLCI
        DLCI とはデータ接続識別子 (Data Link Connection Identifier)のこ
        とで、フレームリレーネットワークを経由した仮想 2 点間接続を区別
        するために使われます。DLCI は通常フレームリレーネットワークのプ
        ロバイダが割り当てます。

     フレームリレー(Frame Relay)
        フレームリレーとは、散発的に多量のデータをやりとりする必要のある
        ネットワークに適した技術です。多数のフレームリレーのユーザーが同
        じネットワーク容量を共有するのでフレームリレーのコストは安くて済
        み、各ユーザは少しずつ異なるタイミングでデータをやりとりします。

     ハードウェアアドレス(hardware address)
        ハードウェアアドレスとはネットワークの MAC 層(Media ACcess
        layer)でホストを識別するためのアドレスです。この例にはイーサネッ
        トアドレスと AX.25 アドレスがあります。

     ISDN
        ISDN は Integrated Services Dedicated Network の頭文字です。
        ISDN は通信会社が音声やデータを各家庭に運ぶための標準規格です。
        技術的には、ISDN は回路切替え型のデータネットワークです。

     ISP
        Internet Service Provider の頭文字です。ISP とはインターネットへ
        の接続を提供する会社や組織です。

     IP アドレス(IP address)
        IP アドレスとはネットワーク上の TCP/IP ホストを識別するための番
        号です。 IP アドレスは 4 バイト長で、通常「ドット区切りの 10 進
        表記」、すなわち各バイトを 10 進数で表記し、バイト間を `.' で区
        切ったかたちで記述されます。

     最大セグメントサイズ(MSS)
        最大セグメントサイズ(MSS, Maximum Segment Size)とは、一時に送信
        できるデータの最大量です。データが細分化されないためには MSS は
        (MTU - IP ヘッダ) バイト以上が必要です。

     最大転送単位(MTU)
        最大転送単位(MTU, Maximum Transmission Unit)とは、より小さな断片
        に分割せずに IP インターフェイスから送信できる最大のデータグラム
        の大きさを示すパラメータです。MTU は、分割されたくないデータグラ
        ムの大きさよりも大きくしなければいけません。ただし、この設定はロ
        ーカルな断片化を避けるためのもので、経路上のどこかでより小さな
        MTU が設定されていれば、そこで分割されるかもしれません。よく使わ
        れる値としては、イーサネットインターフェイスでは 1500 バイ
        ト、SLIP インターフェイスでは 576 バイトです。
     経路(route)
        経路とは、目的地に達するまでにデータグラムが通過していく通り道で
        す。

     サーバ(server)
        通常、ユーザから遠い側にあるソフトウェアかシステムを指します。サ
        ーバはなんらかのサービスをクライアントに提供します。サーバの例と
        しては、 ftp や NFS(Networked File System), DNS(Domain Name
        Server) 等があります。slip や ppp といった一対一(peer to peer)シ
        ステムの場合、サーバは電話で呼び出される側を指し、クライアントは
        呼び出す側を指します。

     ウィンドウ(window)
        ウィンドウ(window)とは、受信端が一度に受けとれるデータ量の最大値
        です。

  11.  ISP 用の Linux?

  Linux を ISP に使いたいのであれば、 Linux ISP homepage
  <http://www.anime.net/linuxisp/> を見ることをお勧めします。このページ
  には必要な情報へのポインタが豊富に登録されています。

  12.  謝辞

  本文書に貢献してくださった以下の方々に感謝します(順不同です): Terry
  Dawson, Axel Boldt, Arnt Gulbrandsen, Gary Allpike, Cees de Groot,
  Alan Cox, Jonathon Naylor, Claes Ensson, Ron Nessim, John Minack,
  Jean-Pierre Cocatrix, Erez Strauss

  13.  著作権

  著作権に関する情報

  The NET-3-HOWTO, information on how to install and configure
  networking support for Linux. Copyright (c) 1997 Terry Dawson, 1998
  Alessandro Rubini, 1999 {POET} - LinuxPorts

  This program is free software; you can redistribute it and/or modify
  it under the terms of the GNU General Public License as published by
  the Free Software Foundation; either version 2 of the License, or (at
  your option) any later version. This program is distributed in the
  hope that it will be useful, but WITHOUT ANY WARRANTY; without even
  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
  PURPOSE. See the GNU General Public License for more details. You
  should have received a copy of the GNU General Public License along
  with this program; if not, write to the: Free Software Foundation,
  Inc., 675 Mass Ave, Cambridge, MA 02139, USA.

  14.  日本語版について

  日本語訳は Linux Japanese FAQ Project が行いました。翻訳に関するご意見
  は JF プロジェクト <JF@linux.or.jp> 宛に連絡してください。

  改訂履歴を以下に示します。

     v1.5j, 1 Jan 2000
        翻訳: 藤原 輝嘉 <fujiwara@linux.or.jp>

        訳語統一・校正:

        o  佐藤 亮一 <rsato@ipf.de>

        o  佐野 武俊 <xlj06203@nifty.ne.jp>

        o  武井 伸光 <takei@cc.kochi-u.ac.jp>

        o  中野 武雄 <nakano@apm.seikei.ac.jp>

        v.1.5j の翻訳にあたっては、こじまみつひろさんによる Linux
        NET-3-HOWTO の翻訳(1997/07/07 版)から多くの部分を流用させていた
        だきました。深く感謝します。

