<!doctype linuxdoctr system>

<!-- This is the Linux NET-3-HOWTO. It describes how to install and configure
	networking support for Linux. Any comments or feedback should
	be directed to the author terry@perf.no.itg.telstra.com.au
 -->

<article>

<title>Linux NET-3-HOWTO, Linux Networking.
<author>Terry Dawson, VK2KTJ, <tt/terry@perf.no.itg.telstra.com.au/
<date>v1.0, 22 February 1997
<trans> こじまみつひろ <tt/isle@st.rim.or.jp/(1997/07/07)

<abstract>
<!-- 
The Linux Operating System boasts kernel based networking support written
almost entirely from scratch. The performance of the TCP/IP implementation
in recent kernels makes it a worthy alternative to even the best of its peers.
This document aims to describe how to install and configure the Linux
networking software and associated tools.
-->

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

</abstract>

<!-- Table of contents -->

<toc>

<!-- Begin the document -->
<sect><heading>前のバージョンからの変更点
<p>
<verb>
追加:
	いっぱい。
修正/更新:
	全て。
</verb>

<sect><heading>はじめに
<p>
<!-- 
The original NET-FAQ was written by Matt Welsh and I to answer frequently
asked questions about networking for Linux at a time before the Linux
Documentation Project had formally started. It covered the very early
development versions of the Linux Networking Kernel. The NET-2-HOWTO superceded
the NET-FAQ and was one of the original LDP HOWTO documents, it covered what
was called version 2 and later version 3 of the Linux kernel Networking
software. This document in turn supercedes it and relates only to version 3 of
the Linux Networking Kernel.
-->

元々の NET-FAQ は、Linux Documentation Project が始まる前に、しばしば
質問されていた Linux のネットワークに関する疑問に答えるために Matt
Welsh と私が書きました。この NET-FAQ が扱っていたのは、開発最初期のネッ
トワーク機能についてでした。最初の LDP HOWTO ドキュメントの一つとして
まとめられた NET-2-HOWTO が NET-FAQ に取って代わり、Linux カーネルの 
NET-2 ないし NET-3 と呼ばれるネットワーク機能について解説していました。
この文書(NET3-HOWTO)は NET-2-HOWTO に取って代わるもので、最近のカーネ
ルの NET-3 ネットワークコードについてのみ扱うことにしました。

<p>
<!-- 
Previous versions of this document became quite large because of the
enormous amount of material that fell within its scope. To help reduce this
problem a number of HOWTO's dealing with specific networking topics have
been produced. This document will provide pointers to them where relevant
and cover those areas not yet covered by other documents.
-->

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

<sect1><heading>フィードバック
<p>
<!-- 
I always appreciate feedback and especially value contributions. Please
direct any feedback or contributions to me by
<url url="mailto:terry@perf.no.itg.telstra.com.au" name="email">.
-->

各種のフィードバック、特に情報の追加は歓迎します。それらは直接私(<url
url="mailto:terry@perf.no.itg.telstra.com.au" name="email">)までメール
してください。日本語訳に関わることは<url
url="mailto:isle@st.rim.or.jp" name="訳者">へお願いします。

<sect><heading>この HOWTO 文書の使い方(NET-3-HOWTO-HOWTO ?)
<p>
<!-- 
The format of this document is differs from earlier versions. I've
now regrouped the sections so that there is informative material at the
beginning which you can skip if you are not interested, generic material
next which you must ensure you understand before proceeding to the technology
specific sections in the rest of the document.
-->

この文書の形式は以前のバージョンとは大きく異なっています。各章を整理し
て、4 章で Linux のネットワーク機能についての概論的な解説をし、5 章で
ネットワークについての一般的な知識を解説し、6 章でそれぞれのネットワー
ク技術ごとに解説し、7 章で必要なケーブル類を説明しています。
4 章の概論的な部分は興味が無ければ飛ばし
てくださって結構です。5 章のネットワークに関する一般的な知識
は、6 章のネットワーク機能ごとの技術的な話題を理解するために必要となり
ます。


この HOWTO の読み方を簡単に説明します。

<p>
<descrip>
<!-- 
<tag>Read the generic sections</tag>These sections apply to every, or nearly
every, technology described later and so are very important for you to
understand.
-->

<tag>概論的な話題の章を読む</tag>
この HOWTO では、前半で概論的な話題を扱っています。これらの章では、後
半に出てくるそれぞれの技術についての詳細を全て、あるいはほぼ全て説明し
ていますので、後半の話題の理解するのに役立つことでしょう。

<!-- 
<tag>Consider your network</tag>You should know how your network is, or will
be, designed and exactly what hardware and technology types you will be
implementing.
-->

<tag>使っているネットワークについて考える</tag>

自分の使っているネットワークがどうなっているか、これからどうしていくべ
きか、どのようなハードウェアやネットワーク技術が必要か、きちんと考えて
みましょう。

<!-- 
<tag>Read the technology specific sections related to your requirements</tag>
When you know what you want you can address each component in turn. These
sections cover only details specific to a particular technology.
-->

<tag>必要に応じてそれぞれのネットワーク技術の詳細についての章を読む</tag>
何が必要かが分かれば、どのような情報が必要かもおのずと分かります。この
文書の後半の各章は、それぞれある特定の技術の詳細について説明しています。

<!-- 
<tag>Do the configuration work</tag>You should actually try to configure
your network and take careful note of any problems you have.
-->

<tag>ネットワークを設定してみる</tag>

実際にネットワークを設定してみて、どのような問題が起きたかを詳細に記録しま
しょう。

<!-- 
<tag>Look for further help if needed</tag>If you experience problems that
this document does not help you to resolve then read the section related to
where to get help or where to report bugs.
-->
<tag>必要ならばさらなる情報を探しましょう</tag>

この文書では解決できない問題が生じたら、どこで質問すればよいか、
またどこにバグレポートすべきかを説明した章を読んでください。

<!-- 
<tag>Have fun!</tag>Networking is fun, enjoy it.
-->
<tag>楽しんでね！</tag>
ネットワークは本質的に面白いものです。楽しんでくださいね。

</descrip>

<sect><heading>Linux のネットワーク機能について
<p>
<sect1><heading> Linux カーネルのネットワーク機能の開発小史
<p>
<!-- 
Developing a brand new kernel implementation of the TCP/IP protocol stack
that would perform as well as existing implementations was not an easy task.
The decision not to port one of the existing implementations was made at a
time when there was some uncertainty as to whether the existing
implementations may become encumbered by restrictive copyrights because of the
court case put by U.S.L., and when there was a lot of fresh enthusiasm for
doing it differently and perhaps even better than had already been done.
-->

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

<p>
<!-- 
The original volunteer to lead development of the kernel network code was
Ross Biro <tt/&lt;biro@yggdrasil.com>/. Ross produced a simple and
incomplete but mostly usable implementation set of routines that were
complemented by an ethernet driver for the WD-8003 network interface card.
This was enough to get many people testing and experimenting with the software
and some people even managed to connect machines in this configuration to live
internet connections. The pressure within the Linux community driving
development for networking support was building and eventually the cost of a
combination of some unfair pressure applied to Ross and his own personal
commitments outweighed the benefit he was deriving and he stepped down as
lead developer. Ross's efforts in getting the project started and accepting
the responsibility for actually producing something useful in such
controversial circumstances were what catalysed all future work and were
therefore an essential component of the success of the current product.
-->

カーネルに組みこまれたネットワークコードの開発を最初にリードしたボラン
ティアは Ross Biro <tt/&lt;biro@yggdrasil.com>/ でした。彼は、単純で機
能的には不十分ながら、まずまず使いものになるネットワークコードと 
WD-8003 ネットワークカード用のドライバを作成しました。このコードを使っ
て多くの人々がソフトウェアのテストや実験をし、実際にインターネットに接
続した人たちもいました。しかし、Linux コミュニティの中でネットワーク機
能の開発に対する要望が高まるにつれ、Ross にのしかかる責任が増えてしま
い、彼はネットワーク機能の開発のリーダを降りました。しかし、このプロジェ
クトを開始した Ross の努力と、さまざまに物議を醸す状況の中で彼が責任
を持って開発したある程度実用になるコードは、現在のカーネルの成功したネッ
トワークコードに結実しています。

<p>
<!-- 
Orest Zborowski <tt/&lt;obz@Kodak.COM>/ produced the original BSD socket
programming interface for the Linux kernel. This was a big step forward
as it allowed many of the existing network applications to be ported to
linux without serious modification.
-->
Orest Zborowski <tt/&lt;obz@Kodak.COM>/ が Linux カーネルに BSD のソケッ
トプログラムインターフェイスを組みこみました。このインターフェイスを使
えば、多数のネットワーク・アプリケーションが重大な変更をせずに移植できる
ようになりました。

<p>
<!-- 
Somewhere about this time Laurence Culhane <tt/&lt;loz@holmes.demon.co.uk>/
developed the first drivers for Linux to support the SLIP protocol. These
enabled many people who did not have access to Ethernet networking to
experiment with the new networking software. Again, some people took this
driver and pressed it into service to connect them to the Internet. This
gave many more people a taste of the possibilities that could be realised
if Linux had full networking support and grew the number of users actively
using and experimenting with the networking software that existed.
-->

同じころ Laurence Culhane <tt/&lt;loz@holmes.demon.co.uk>/ が SLIP プ
ロトコルをサポートする最初のドライバを開発しました。これにより、イーサ
ネットを持たない多くの人々もネットワーク用のソフトウェアのテストができ
るようになりました。このドライバを利用してインターネットに接続した人も
います。

このドライバの成功により、Linux に充分なネットワーク機能が組みこまれれ
ば、より多くのユーザが積極的にそれを利用し、既存のネットワークソフトウェ
アを実験するようになるだろう、と感じる人がますます増えるようになりまし
た


<p>
<!-- 
One of the people that had also been actively working on the task of building
networking support was Fred van Kempen <tt/&lt;waltje@uwalt.nl.mugnet.org>/.
After a period of some uncertainty following Ross's resignation from the lead
developer position Fred offered his time and effort and accepted the role
essentially unopposed. Fred had some ambitious plans for the direction that
he wanted to take the Linux networking software and he set about progressing
in those directions. Fred produced a series of networking code called the
`NET-2' kernel code (the `NET' code being Ross's) which many people were
able to use pretty much usefully. Fred formally put a number of innovations
on the development agenda, such as the dynamic device interface, Amateur Radio
AX.25 protocol support and a more modularly designed networking implementation.
Fred's NET-2 code was used by a fairly large number of enthusiasts, the number
increasing all the time as word spread that the software was working.
The networking software at this time was still a large number of patches to
the standard release of kernel code and was not included in the normal release.
The NET-FAQ and subsequent NET-2-HOWTO's described the then fairly complex
procedure to get it all working. Fred's focus was on developing innovations to
the standard network implementations and this was taking time. The community
of users was growing impatient for something that worked reliably and satisfied
the 80% of users and, as with Ross, the pressure on Fred as lead developer rose.
-->

もう一人、熱心にネットワーク機能を開発したのが Fred van Kempen
<tt/&lt;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 にかかるプレッシャーが強まってきました。

<p>
<!-- 
Alan Cox <tt/&lt;iialan@www.linux.uk.org>/ proposed a solution to the
problem designed to resolve the situation. He proposed that he would take
Fred's NET-2 code and debug it, making it reliable and stable so that it
would satisfy the impatient user base while relieving that pressure from
Fred allowing him to continue his work. Alan set about doing this, with some
good success and his first version of Linux networking code was called
`Net-2D(ebugged)'. The code worked reliably in many typical configurations and
the user base was happy. Alan clearly had ideas and skills of his own to
contribute to the project and many discussions relating to the direction the
NET-2 code was heading ensued. There developed two distinct schools within the
Linux networking community, one that had the philosophy of `make it work
first, then make it better' and the other of `make it better first'. Linus
ultimately arbitrated and offered his support to Alan's development efforts
and included Alan's code in the standard kernel source distribution.
This placed Fred in a difficult position. Any continued development would
lack the large user base actively using and testing the code and this would
mean progress would be slow and difficult. Fred continued to work for a short
time and eventually stood down and Alan came to be the new leader of the Linux
networking kernel development effort.
-->

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

<p>
<!-- 
Donald Becker <tt>&lt;becker@cesdis.gsfc.nasa.gov></tt> soon revealed his
talents in the low level aspects of networking and produced a huge range of
ethernet drivers, nearly all of those included in the current kernels were
developed by Donald. There have been other people that have made significant
contributions, but Donald's work is prolific and so warrants special mention.
-->

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

<p>
<!-- 
Alan continued refining the NET-2-Debugged code for some time while working on
progressing some of the matters that remained unaddressed on the `TODO' list.
By the time the Linux <tt/1.3.*/ kernel source had grown its teeth the kernel
networking code had migrated to the NET-3 release on which current versions
are based. Alan worked on many different aspects of the networking code and
with the assistance of a range of other talented people from the Linux
networking community grew the code in all sorts of directions. Alan produced
dynamic network devices and the first standard AX.25 and IPX implementations.
Alan has continued tinkering with the code, slowly restructuring and enhancing
it to the state it is in today.
-->

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

<p>
<!-- 
PPP support was added by Michael Callahan <tt/&lt;callahan@maths.ox.ac.uk>/
and Al Longyear <tt/&lt;longyear@netcom.com>/ this too was critical to
increasing the number of people actively using linux for networking.
-->

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

<p>
<!-- 
Jonathon Naylor <tt/&lt;jsn@cs.nott.ac.uk>/ has contributed by significantly
enhancing Alan's AX.25 code, adding NetRom protocol support. The AX.25/NetRom
support itself is quite significant, because no other operating system can
boast standard native support for these protocols beside Linux.
-->

Jonathon Naylor<tt/&lt;jsn@cs.nott.ac.uk>/は Alan の AX.25 コードを引
きついでさまざまな機能を強化し、NetRom プロトコルもサポートしました。
Linux 以外の OS で AX.25/NetRom プロトコルを組みこんだ OS は存在しない
ため、この機能も Linux の特色として重要な役割を果しています。

<p>
<!-- 
There have of course been hundreds of other people who have made significant
contribution to the development of the Linux networking software. Some of these
you will encounter later in the technology specific sections, other
people have contributed modules, drivers, bug-fixes, suggestions, test
reports and moral support. In all cases each can claim to have played a part
and offered what they could. The Linux kernel networking code is an excellent
example of the results that can be obtained from the Linux style of anarchic
development, if it hasn't yet surprised you, it is bound to soon enough,
the development hasn't stopped.
-->

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

<sect1><heading>Linux のネットワーク機能についての情報源
<p>
<!-- 
There are a number of places where you can find good information about
Linux networking.
-->

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

<p>
<!-- 
Alan Cox, the current maintainer of the Linux kernel networking code maintains
a world wide web page that contains highlights of current and new developments
in linux Networking at:
<url url="http://www.uk.linux.org/NetNews.html"
	name="www.uk.linux.org">.
-->
<p>

現在の Linux カーネルのネットワークコードのメンテナンスをしている Alan
Cox はネットワーク機能の現状と今後について紹介したページを公開しています。

<url url="http://www.uk.linux.org/NetNews.html"
	name="www.uk.linux.org">

<!-- 
Another good place is a book written by Olaf Kirch entitled the
<tt/Network Administrators Guide/. It is a work of the
<url url="http://sunsite.unc.edu/LDP/" name="Linux Documentatation Project">
and you can read it interactively at
<url url="http://sunsite.unc.edu/LDP/LDP/nag/nag.html"
	name="Network Administrators Guide HTML version">
or you can obtain it in various formats by ftp from the
<url url="ftp://sunsite.unc.edu/pub/Linux/docs/LDP/network-guide/"
	name="sunsite.unc.edu LDP ftp archive">. Olaf's book is quite
comprehensive and provides a good high level overview of network configuration
under linux.
-->

もう一つお勧めの情報源は Olaf Kirch が書いた <tt>Network
Administrators Guide</tt> です。この文書は <url
url="http://sunsite.unc.edu/LDP/" name="Linux Documentatation
Project"> の成果の一つで、
<url url="http://sunsite.unc.edu/LDP/LDP/nag/nag.html"
	name="Network Administrators Guide HTML version">
を使えば HTML 版を読むことができます。その他、さまざまな形式に変換した
バージョンを
<url url="ftp://sunsite.unc.edu/pub/Linux/docs/LDP/network-guide/"
	name="sunsite.unc.edu LDP ftp archive"> から入手できます。
Olaf の著書はわかりやすく書かれており、Linux におけるネットワーク関係
の設定の概要についての高度な情報が提供されています。

<p>
<!-- 
There is a newsgroup in the Linux news heirarchy dedicated to networking
and related matters, it is:
<url url="news:comp.os.linux.networking" name="comp.os.linux.networking">
-->

Linux のネットワーク機能について論じるニュースグループもあります。
<url url="news:comp.os.linux.networking" name="comp.os.linux.networking">
です。

<p>
<!-- 
There is a mailing list to which you can subscribe where you may ask questions
relating to Linux networking. To subscribe you should send a mail message:
-->

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

<tscreen><verb>
To: majordomo@vger.rutgers.edu
Subject: anything at all
Message:

subscribe linux-net
</verb></tscreen>
<p>
<!-- 
On the various IRC networks there are often <tt/&num;linux/ channels on
which people will be able to answer questions on linux networking.
-->

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

<p>
<!-- 
Please remember when reporting any problem to include as much relevant detail
about the problem as you can. Specifically you should the versions of
software that you are using, especially the kernel version, the version of
tools such as <em/pppd/ or <em/dip/, and the exact nature of the problem
you are experiencing. This means taking note of the exact syntax of any error
messages you receive, and of any commands that you are issuing.
-->

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

<sect1><heading>linux に限定しないネットワークに関する情報源

<p>
<!-- 
If you are after some basic tutorial information on TCP/IP networking
generally, then I recommend you take a look at the following documents:
-->
TCP/IP ネットワークについての全般的な知識を得たいならば、以下の文書を
読んでみることをお勧めします。

<descrip>
<tag>TCP/IP全般について(tcp-ip-intro.doc)</tag>
この文書は<url url="ftp://athos.rutgers.edu/runet/tcp-ip-intro.doc"
	name="テキスト版">あるいは
<url url="ftp://athos.rutgers.edu/runet/tcp-ip-intro.ps"
	name="postscript 版"> を入手可能です。

<!-- 
<tag>TCP/IP administration
</tag>
this document comes as both a
<url url="ftp://athos.rutgers.edu/runet/tcp-ip-admin.doc"
	name="text version"> and a
<url url="ftp://athos.rutgers.edu/runet/tcp-ip-admin.ps"
	name="postscript version">
-->

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

</descrip>

<!-- 
If you are after some more detailed information on tcp/ip networking then
I highly recommend:
-->

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

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

ISBN 0-13-474321-0
Prentice Hall publications.
</verb></tscreen>
<!-- 
If you are wanting to learn about how to write network applications in
a Unix compatible environment then I also highly recommend:
-->

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

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

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

<p>
<!-- 
You might also try the
<url url="news:comp.protocols.tcp-ip" name="comp.protocols.tcp-ip"> newsgroup.
-->

TCP/IP に関するニュースグループもあります(<url
url="news:comp.protocols.tcp-ip" name="comp.protocols.tcp-ip">)。

<p>
<!-- 
An important source of specific technical information relating to the Internet
and the tcp/ip suite of protocols are RFC's. RFC is an acronym for
`Request For Comment' and is the standard means of submitting and documenting
Internet protocol standards. There are many RFC repositories. Many of these
sites are ftp sites and other provide World Wide Web access with an associated
search engine that allows you to search the RFC database for particular
keywords.
-->

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

<p>
<!-- 
One possible source for RFC's is at:
<url url="http://pubweb.nexor.co.uk/public/rfc/index/rfc.html"
	name="Nexor RFC database">.
-->

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

<sect><heading>ネットワークに関する一般的な設定に関する情報

<p>
<!-- 
The following subsections you will pretty much need to know and understand
before you actually try to configure your network. They are fundamental
principles that apply regardless of the exact nature of the network you
wish to deploy.
-->

以下の節では実際にネットワークを設定する前に知っておいた方がよいことに
ついてまとめておきます。これらは、どのようなネットワーク機能を使う場合に
も基本となることです。

<sect1><heading>何から始めるか？

<p>
<!-- 
Before you start building or configuring your network you will need some
things. The most important of these are:
-->

ネットワークを構築したり、ネットワークを設定する前に用意しておくべき必
要なものがいくつかあります。以下にもっとも重要なものを説明します。

<sect2><heading>最新のカーネルソース

<p>
<!-- 
Because the kernel you are running now might not yet have support for the
network types or cards that you wish to use you will probably need the
kernel source so that you can recompile the kernel with the appropriate
options.
-->

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

<p>
<!-- 
You can always obtain the latest kernel source from:
<url url="ftp://ftp.funet.fi/pub/Linux/PEOPLE/Linus/v2.0" name="ftp.funet.fi">.
-->

最新のカーネルソースは
<url url="ftp://ftp.funet.fi/pub/Linux/PEOPLE/Linus/v2.0" name="ftp.funet.fi">
から入手できます。
<p>

<!-- 
Normally the kernel source will be untarred into the <tt>/usr/src/linux</tt>
directory. For information on how to apply patches and build the kernel you
should read the <url url="Kernel-HOWTO.html" name="Kernel-HOWTO">.
For information on how to configure kernel modules you should read the
<url url="Module-HOWTO.html" name="Module-HOWTO">.
-->

通常、カーネルのソースは <tt>/usr/src/linux</tt> ディレクトリに展開し
ます。パッチのあて方やカーネルの構築の仕方については <url
url="Kernel-HOWTO.html" name="Kernel-HOWTO"> を読んでください。カーネ
ルモジュールについては<url url="Module-HOWTO.html"
name="Module-HOWTO"> を御覧ください。

<p>
<!-- 
Unless specifically stated otherwise, I recommend you stick with the standard
kernel release (the one with the even number as the second digit in the version
number). Development release kernels (the ones with the odd second digit) may
have structural or other changes that may cause problems working with the other
software on your system. If you are uncertain that you could resolve those
sorts of problems in addition to the potential for there being other software
errors, then don't use them.
-->

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

<sect2><heading>最新のネットワークツール

<p>
<!-- 
The network tools are the programs that you use to configure linux network
devices. These tools allow you to assign addresses to devices and configure
routes for example.
-->

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

<p>
<!-- 
Most modern linux distributions are supplied with the network tools, so if
you have installed from a distribution and haven't yet installed the network
tools then you should do so.
-->

最近の Linux の配布パッケージ(Slackware や Red Hat といったディストリ
ビューション)には、たいてい、ネットワークツールも含まれています。しか
し、それらの配布パッケージを使っていてもネットワークツールをインストー
ルしていない場合、まずそれらをインストールするところから始めましょう。

<p>
<!-- 
If you haven't installed from a distribution then you will need to source and
compile the tools yourself. This isn't difficult.
-->

Slackware や Red Hat といった配布パッケージを使わずに構築したシステム
の場合、ネットワークツールはソースコードを入手してコンパイルする必要が
ありますが、これはそう難しい作業ではありません。

<p>
<!-- 
The network tools are now maintained by Bernd Eckenfels and are available at:
<url url="ftp://ftp.inka.de/pub/comp/Linux/networking/NetTools/"
	name="ftp.inka.de"> and are mirrored at:
<url url="ftp://ftp.linux.uk.org/pub/linux/Networking/PROGRAMS/NetTools/"
	name="ftp.linux.uk.org">.
-->

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

<p>
<!-- 
Be sure to choose the version that is most appopriate for the kernel you
wish to use and follow the instructions in the package to install.
-->

お使いのカーネルのバージョンにあったバージョンを入手して、インストール
の際は付属の文書の指示に従ってください。

<p>
<!-- 
To install and configure the version current at the time of the writing you
need do the following:
-->

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

<verb>
#
# cd /usr/src
# tar xvfz net-tools-1.32-alpha.tar.gz
# cd net-tools-1.32-alpha
# make config
# make
# make install
#
</verb>
<!-- 
Additionally, if you intend configuring a firewall or using the IP masquerade
feature you will require the <em>ipfwadm</em> command. The latest version of
it may be obtained from:
	<url url="ftp:/ftp.xos.nl/pub/linux/ipfwadm" name="ftp.xos.nl">. Again
there are a number of versions available. Be sure to pick the version that
most closely matches your kernel.
-->

加えて、ファイアウォールを設定したり、IP masquerade 機能を使いたい場合
は、<em>ipfwadm</em> コマンドも必要です。<tt>ipfwadm</tt> の最新版は
<url url="ftp://ftp.xos.nl/pub/linux/ipfwadm" name="ftp.xos.nl"> から入
手できます。このコマンドにもいくつかのバージョンがあり、カーネルのバー
ジョンに合ったものを入手してください。

<p>
<!-- 
To install and configure the version current at the time of the writing you
need do the following:
-->

この文書の執筆時点での最新版をインストールするには以下のようにします。

<verb>
#
# cd /usr/src
# tar xvfz ipfwadm-2.3.0.tar.gz
# cd ipfwadm-2.3.0
# make
# make install
#
</verb>

<sect2><heading>各種ネットワーク用アプリケーションプログラム

<p>
<!-- 
The network application programs are programs such as <em>telnet</em> and
<em>ftp</em> and their respective server programs. David Holland
<tt/&lt;dholland@hcs.harvard.edu>/ now manages a distribution of the most
common of these. You may obtain it from:
<url url="ftp://ftp.uk.linux.org/pub/linux/Networking/base"
	name="ftp.uk.linux.org">.
-->

ネットワークアプリケーションプログラムとは、<em>telnet</em> や 
<em>ftp</em> などと、それらのサーバプログラムのことです。これらの大部
分は David Holland <tt/&lt;dholland@hcs.harvard.edu>/ がメンテナンスし
ており、<url url="ftp://ftp.uk.linux.org/pub/linux/Networking/base"
name="ftp.uk.linux.org"> から入手可能です。

<p>
<!-- 
To install and configure the version current at the time of the writing you
need do the following:
-->

執筆時点での最新版をインストールするには以下のようにします。

<verb>
#
# cd /usr/src
# tar xvfz /pub/net/NetKit-B-0.08.tar.gz
# cd NetKit-B-0.08
# more README
# vi MCONFIG
# make
# make install
#
</verb>

<sect2><heading>IP アドレス

<p>
<!-- 
Internet Protocol Addresses are composed of four bytes. The convention is
to write addresses in what is called `dotted decimal notation'. In this form
each byte is converted to a decimal number (0-255) dropping any leading
zero's unless the number is zero, and written with each byte seperated by a
`.' character. By convention each interface of a host or router has an IP
address. It is legal for the same IP address to be used on each port of a
single machine in some circumstances but usually each interface will have its
own address.
-->

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

<p>
<!-- 
Internet Protocol Networks are contiguous sequences of IP addresses. All
addresses within a network have a number of digits within the address in
common. The portion of the address that is common amongst all addresses
within the network is called the `network portion' of the address. The
remaining digits are called the `host portion'. The number of bits that
are shared by all addresses within a network is called the netmask and it
is role of the netmask to determine which addresses belong to the network it
is applied to and which don't. For example, consider the following:
-->

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

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

<!-- 
Any address that is 'bitwise anded' with its netmask will reveal the address
of the network it belongs to. The network address is therefore always the
lowest numbered address within the range of addresses on the network, and
always has the host portion of the address coded all zeroes.
-->

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

<p>
<!-- 
The broadcast address is a special address that every host on the network
listens to in addition to its own unique address. This address is the one
thhat datagrams are sent to if every host on the network is meant to receive
it. Certain types of data like routing information and warning messages
are transmitted to the broadcast address so that every host on the network
can receive it simultaneously. There are two commonly used standards for
what the broadcast address should be. The most widely accepted one is to
use the highest possible address on the network as the broadcast address.
In the example above this would be <tt>192.168.110.255</tt>. For some reason
other sites have adopted the convention of using the network address as the
broadcast address. In practice it doesn't matter very much which you use
but you must make sure that every host on the network is configured with the
same broadcast address.
-->

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

<p>
<!-- 
For administrative reasons some time early in the development of the IP
protocol some arbitrary groups of addresses were formed into networks and
these networks were grouped into what are called classes. These classes
provide a number of standard size networks that could be allocated. The ranges
allocated are:
-->

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

<verb>
----------------------------------------------------------
| Network | Netmask       | Network Addresses            |
| Class   |               |                              |
----------------------------------------------------------
|    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 |
|Multicast| 240.0.0.0     | 224.0.0.0  - 239.255.255.255 |
----------------------------------------------------------
</verb>

<p>
<!-- 
What addresses you should use depends on exactly what it is that you
are doing. You may have to use a combination of the following activities
to get all the addresses you need:
-->

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

<descrip>
<!-- 
<tag>Installing a linux machine on an existing IP network</tag>If you wish to
install a linux machine onto an existing IP network then you should contact
whoever administers the network and ask them for the following information:
-->
<tag>既存のIPネットワークにLinuxマシンをインストールする場合</tag>

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

<itemize>
<item>ホストの IP アドレス
<item>ネットワークアドレス
<item>ブロードキャストアドレス
<item>ネットマスク
<item>ルータアドレス
<item>ネームサーバのアドレス
</itemize>

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


<!-- 
You should then configure your linux network device with those details.
You can not make them up and expect your configuration to work.
<tag>Building a brand new network that will never connect to the Internet</tag>
If you are building a private network and you never intend that network to
be connected to the Internet then you can choose whatever addresses you like.
However, for safety and consistency reasons there have been some IP network
addresses that have been reserved specifically for this purpose. These are
specified in RFC1597 and are as follows:
-->


<tag>インターネットへ接続しないネットワークを新しく構築する場合</tag>

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

<verb>
-----------------------------------------------------------
|       プライベートネットワーク用のアドレス              |
-----------------------------------------------------------
| Network | Netmask       | Network Addresses             |
| Class   |               |                               |
-----------------------------------------------------------
|    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 |
-----------------------------------------------------------
</verb>

<!-- 
You should first decide how large you want your network to be and then
choose as many of the addresses as you require.
-->

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

</descrip>

<p>

<sect1><heading>設定コマンドの置き場所は?

<p>

<!-- 
There are a few different approaches to Linux system boot procedures. After
the kernel boots, it always executes a program called `<em/init/'. The
<em/init/ program then reads its configuration file called
<tt>/etc/inittab</tt> and commences the boot process. There are a few different
flavours of <em/init/ and it is this variation that is the largest cause of
variation between distributions or machines.
-->

Linux の起動方法にはいくつかの流儀があります。カーネルが起動したとき、
まず実行されるのが <em>init</em> と呼ばれるプログラムです。
<em>init</em> は起動されると設定ファイルである <tt>/etc/inittab</tt> 
を読みこみ、システムの起動作業を実行します。<em>init</em> にはいくつか
の種類があり、この違いが配布パッケージやマシンごとのもっとも大きな違い
になっています。

<p>
<!-- 
Usually the <tt>/etc/inittab</tt> file contains an entry looking something
like:
-->

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

<tscreen><verb>
si::sysinit:/etc/init.d/boot
</verb></tscreen>

<!-- 
This line specifies the name of the shell script file that actually manages
the boot sequence. This file is somewhat equivalent to the <tt/AUTOEXEC.BAT/
file in MS-DOS.
-->

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

<p>
<!-- 
There are usually other scripts that are called by the boot script, and often
the network is configured within one of many of these.
-->

通常、いくつものスクリプトが boot スクリプトから呼びだされ、ネットワー
ク用の設定スクリプトも boot スクリプトから呼びだされます。

<p>
<!-- 
The following table may be used as a guide for your system:
-->

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

<tscreen><verb>
-------------------------------------------------------------------------------
Distrib. |ネットワークの初期化                        |サーバの起動
-------------------------------------------------------------------------------
Debian   |/etc/init.d/network                         |/etc/init.d/netbase     
         |                                            |/etc/init.d/netstd_init
         |                                            |/etc/init.d/netstd_nfs
         |                                            |/etc/init.d/netstd_misc
-------------------------------------------------------------------------------
Slackware|/etc/rc.d/rc.inet1                          |/etc/rc.d/rc.inet2 
-------------------------------------------------------------------------------
RedHat   |/etc/sysconfig/network-scripts/ifup-<ifname>|/etc/rc.d/init.d/network
-------------------------------------------------------------------------------
</verb></tscreen>

<!-- 
Most modern distributions include a program that will allow you to configure
many of the common sorts of network interfaces. If you have one of these then
you should see if it will do what you want before attempting a manual
configuration.
-->

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

<tscreen><verb>
-----------------------------------------
Distrib   | ネットワーク設定用ツール
-----------------------------------------
RedHat    | /sbin/netcfg
Slackware | /sbin/netconfig
-----------------------------------------
</verb></tscreen>


<sect1><heading>ネットワークインターフェイスの作成

<p>
<!-- 
In many Unix operating systems the network devices have appearances in the
<em>/dev</em> directory. This is not so in Linux. In Linux the network devices
are created dynamically in software and thus do not require device files to
be present.
-->

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

<p>
<!-- 
In the majority of cases the network devices is automatically created by the
device driver while it is initialising and has located your hardware. For
example, the ethernet device driver creates <tt/eth[0..n]/ interfaces
sequentially as it locates your ethernet hardware. The first ethernet card
found becomes <tt/eth0/, the second <tt/eth1/ etc.
-->

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

<p>
<!-- 
In some cases though, notably <em/slip/ and <em/ppp/, the network devices
are created through the action of some user program. The same sequential
device numbering applies, but the devices are not created automatically
at boot time. The reason for this is that unlike ethernet devices, the number
of active <em/slip/ or <em/ppp/ devices may vary during the uptime of the
machine. These cases will be covered in more detail in later sections.
-->

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

<sect1><heading>ネットワークインターフェイスの設定

<p>
<!-- 
When you have all of the programs you need and your address and network
information you can configure your network interfaces. When we talk about
configuring a network interface we are talking about the process of assigning
appropriate addresses to a network device, and to setting appropriate values
for other configurable paramaters of a network device. The program most
commonly used to do this is the <em/ifconfig/ (interface configure) command.
-->

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

<p>
<!-- 
Typically you would use a command similar to the following:
-->

<tt>ifconfig</tt> は、通常、以下のような書式で使います。

<tscreen><verb>
# ifconfig eth0 192.168.0.1 netmask 255.255.255.0 up
</verb></tscreen>
<!-- 
In this case I'm configuring an ethernet interface `<tt/eth0/' with the
IP address `<tt/192.168.0.1/' and a network mask of `<tt/255.255.255.0/'.
The `<em/up/' that trails the command tells the interface that it should
become active.
-->

この例では、``<tt>eth0</tt>''イーサネットインターフェイスを 
`<tt>192.168.0.1</tt>' という IP アドレスと `<tt>255.255.255.0</tt>' 
というネットマスクで設定し、`<em>up</em>' コマンドでインターフェイスを
使用可能にしています。

<p>
<!-- 
The kernel assumes certain defaults when configuring interfaces. For example,
you may specify the network address and broadcast address for an interface,
bit if you don't, as in my example above, then the kernel will make reasonable
guesses as to what they should be based on the class of the IP address
configured. In my example the kernel would assume that it is a class-C network
being configured on the interface and configure a network address of
`<tt/192.168.0.0/' and a broadcast address of `<tt/192.168.0.255/' for the
interface.
-->

カーネルはインターフェイスのデフォルトの設定値を知っています。上記の例
でインターフェイスにネットワークアドレスとブロードキャストアドレスを設
定しても構いませんが、例のように、それらを指定しなければ自動的にカーネ
ルが IP アドレスのクラスに従って適切な値を設定してくれます。上記の例で
は、このインターフェイスに class-C のネットワークアドレスが割りあてら
れたことをカーネルが認識し、ネットワークアドレスとして 
`<tt>192.168.0.0</tt>' を、ブロードキャストアドレスとして 
`<tt>192.168.0.255</tt> を自動的に割りあてます。

<p>
<!-- 
There are many other options to the <em/ifconfig/ command. The most important
of these are:
-->

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

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

<tag/down/
このオプションではインターフェイスを使用停止にします。

<tag/[-]arp/
このオプションで ARP(Address Resolution Protocol)を使うかどうかの指定
ができます。

<tag/[-]allmulti/
<!-- 
this option enables or disables the use of promiscuous mode
on this interface. Promiscuous mode is where a device can be commanded to
accept packets even if they are not destined for this device. This is very
important for programs like <em/tcpdump/ and other packet snoopers.
-->
このオプションで promiscuous モードの有無を指定します。promiscuous モー
ドとは、そのデバイス宛ではないパケットも受けつけるモードです。
<em>tcpdump</em> などのパケット snooper を使う場合はこの指定が必要です。

<tag/mtu N/
<!-- 
this parameter allows you to set the <em/MTU/ of this device.
-->
このパラメータはデバイスの <em>MTU</em>(Maximum Transfer Unit)を設定し
ます。

<tag/netmask addr/
<!-- 
this parameter allows you to set the network mask of the
network this device belongs to.
-->
このパラメータはデバイスが接続しているネットワークのネットワークマスク
を設定します。

<tag/irq addr/
<!-- 
this parameter only works on certain types of hardware, but
allows you to set the IRQ of the hardware of this device.
-->
このパラメータは特定の種類のハードウェアにしか使えませんが、デバイスの
ハードウェアの IRQ を設定します。

<tag/[-]broadcast [addr]/
<!-- 
this parameter allows you to enable and set the
accepting of datagrams destined to the broadcast address, or to disable
reception of these datagrams.
-->

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

<tag/[-]pointopoint [addr]/
<!-- 
this parameters allows you to set the address of
the machine at the remote end of a point to point link such as for <em/slip/
or <em/ppp/.
-->
このパラメータは <em>slip</em> や <em>ppp</em> などの一対一接続の場合
の接続先アドレスの指定です。

<tag/hw &lt;type> &lt;addr>/
<!-- 
this parameter allows you to set the hardware address
of certain types of network devices. This is not often useful for ethernet,
but is useful for other network types such as AX.25.
-->
このパラメータは特定の種類のネットワークデバイスのハードウェアアドレス
を設定します。Ethernet の場合はそれほど役に立ちませんが、AX.25 のよう
なネットワークの場合に必要な機能です。

</descrip>
<!-- 
You may use the <em/ifconfig/ command on any network interface. Some user
programs such as <em/pppd/ and <em/dip/ automatically configure the network
devices as they create them, so manual use of <em/ifconfig/ is unnecessary.
-->
<em>ifconfig</em> コマンドはあらゆるネットワークインターフェイスに使用
可能です。<em>pppd</em>や <em>dip</em> といったユーザレベルのプログラ
ムは必要なデバイスを作成すれば自動的にそれらを設定するので 
<em>ifconfig</em> を手動で使う必要はなくなります。

<sect1><heading>リゾルバの設定

<p>
<!-- 
The `<em/Name Resolver/' is a part of the linux standard library. Its prime
function is to provide a service to convert human-friendly hostnames like
`<tt/ftp.funet.fi/' into machine friendly IP addresses such as
<tt/128.214.248.6/.
-->

<em>リゾルバ(Name Resolver)</em> は Linux の標準ライブラリに含まれてい
ます。リゾルバの主な機能は人間向きの <tt>ftp.funet.fi</tt> のようなホ
スト名を <tt>128.214.248.6</tt> のような IP アドレスに変換することです。

<p>
<sect2><heading>ホスト/ドメイン名とは？
<p>
<!-- 
You will probably be familiar with the appearance of Internet host names, but
may not understand how they are constructed, or deconstructed. Internet
domain names are heirarchial in nature, that is, they have a tree-like
structure. A `<em/domain/' is a family, or group of names. A `<em/domain/' may
be broken down into `<em/subdomain/'. A `<em/toplevel domain/' is a domain
that is not a subdomain. The Top Level Domains are specified in RFC-920. Some
examples of the most common top level domains are:
-->

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

<descrip>
<tag/COM/ 営利組織
<tag/EDU/ 教育機関
<tag/GOV/ 政府機関
<tag/MIL/ 軍事機関
<tag/ORG/ その他の組織
<tag/Country Designator/ 国を示す 2 文字のコード
</descrip>

<!-- 
Each of these top level domains has subdomains. The top level domains based on
country name are used next broken down into subdomains based on the 
<tt/com/, <tt/edu/, <tt/gov/, <tt/mil/ and <tt/org/ domains. So for example
you end up with: <tt/com.au/ and <tt/gov.au/ for commercial and government
organisations in Australia. For historical reasons most domains belonging to
one of the non-country based top level domains are for organisations within
the United States, although the United States also has its own country code
`<tt/.us/'.
-->

これらのトップレベル・ドメインはそれぞれサブドメインを持っています。国
を示す 2 文字のコードがトップレベル・ドメインになっている場合、サブド
メインとして<tt/com/ や <tt/edu/、 <tt/gov/、 <tt/mil/、 <tt/org/ といっ
た組織の種別を示すドメインが来ます。例えば <tt>com.au</tt> と 
<tt>gov.au</tt> はオーストラリアの営利組織と政府機関です。歴史的な理由
から、トップレベル・ドメインとして国名を示すコードの無いドメインは米国
の組織に限られています。もっとも、米国にも <tt>.us</tt> という国名を示
すコードはあります。

<p>
<!-- 
The next level of division usually represents the name of the organisation.
Further subdomains vary in nature, often the next level of subdomain is based
on the departmental structure of the organisation but it may be based on
any criterion considered reasonable and meaningful by the network adminstrators
for the organisation.
-->

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

<p>
<!-- 
The very left most portion of the name is always the unique name assigned to
the host machine and is called the `<em/hostname/', the portion of the name
to the right of the hostname is called the `<em/domainname/' and the complete
name is called the `<em/Fully Qualified Domain Name/'.
-->

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

<p>
<!-- 
To use my own email host as an example, the fully qualified domain name is
`<tt/perf.no.itg.telstra.com.au/'. This means that the host name is `<tt/perf/'
and the domain name is `<tt/no.itg.telstra.com.au/'. The domain name is based
on a top level domain based on my country, Australia and as my email address
belongs to a commercial organisation we have `<tt/.com/' as the next level
domain. The name of the company is (was) `<tt/telstra/' and our internal
naming structure is based on organisational structure, in my case, my machine
belongs to the Information Technology Group, Network Operations section.
-->

私が使っている電子メールのホストを例に取ると、FQDN は 
`<tt/perf.no.itg.telstra.com.au/' です。この場合、ホスト名は 
`<tt>perf</tt>' でドメイン名は <tt>no.itg.telstra.com.au</tt> です。ド
メイン名のうち、トップドメイン名は私のいる国、オーストラリアを示す 2 
文字のコード(<tt>au</tt>)になっており、その次のレベルは営利組織を
示す <tt>.com</tt> です。会社の名前は `<tt>telestra</tt>' で、それ以下のサ
ブドメイン名の構造は組織の構造を反映したものになっており、ここに示した
例では、私のマシンはインフォメーション・テクノロジー・グループ
(<tt>itg</tt>)のネットワーク・オペレーション(<tt>no</tt>)部門に属して
います。

<sect2><heading> 必要な情報

<p>
<!-- 
You will need to know what domain your hosts name will belong to. The name
resolver software provides this name translation service by making
requests to a `<em/Domain Name Server/', so you will need to know the IP
address of a local nameserver that you can use.
-->

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

<p>
<!-- 
There are three files you need to edit, I'll cover each of these in turn.
-->

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

<sect2><heading>/etc/resolv.conf
<p>
<!-- 
The <tt>/etc/resolv.conf</tt> is the main configuration file for the name
resolver code. Its format is quite simple. It is a text file with one keyword
per line. There are three keywords typically used, they are:
-->

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

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

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

<tag/nameserver/
このキーワードは名前を変換する際に使うドメイン・ネーム・サーバの IP ア
ドレスを指定します。複数のサーバを指定可能です。

</descrip>
<!-- 
An example <tt>/etc/resolv.conf</tt> might look something like:
-->

例として、以下の <tt>/etc/resolv.conf</tt> を見てみましょう。
<tscreen><verb>
domain maths.wu.edu.au
search maths.wu.edu.au wu.edu.au
nameserver 192.168.10.1
nameserver 192.168.12.1
</verb></tscreen>
<!-- 
This example specifies that the default domain name to append to unqualified
names (ie hostnames supplied without a domain) is <tt/maths.wu.edu.au/, and
that if the host is not found in that domain to also try the <tt/wu.edu.au/
domain directly. Two nameservers entry are supplied, each of which may be
called upon by the name resolver code to resolve the name.
-->

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

<sect2><heading>/etc/host.conf
<p>
<!-- 
The <tt>/etc/host.conf</tt> file is where you configure some items that
govern the behavious of the name resolver code. The format of this file
is described in detail in the `<tt/resolv+/' man page. In nearly all
circumstances the following example will work for you:
-->

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

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

<!-- 
This configuration tells the name resolver to check the <tt>/etc/hosts</tt>
file before attempting to query a nameserver and to return all valid addresses
for a host found in the <tt>/etc/hosts</tt> file instead of just the first.
-->

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

<sect2><heading>/etc/hosts
<p>
<!-- 
The <tt>/etc/hosts</tt> file is where you put the name and IP address of local
hosts. If you place a host in this file then you do not need to query the
domain name server to get its IP Address. The disadvantage of doing this is
that you must keep this file up to date yourself if the IP address for that
host changes. In a well managed system the only hostnames that usually appear
in this file are an entry for the loopback interface, and the local hosts name.
-->

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

<tscreen><verb>
# /etc/hosts
127.0.0.1      localhost loopback
192.168.0.1    this.host.name
</verb></tscreen>
<!-- 
You may specify more than one host name per line as demonstrated by the first
entry, which is a standard entry for the loopback interface.
-->

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

<sect1><heading>ループバックインターフェイスの設定
<p>
<!-- 
The `<tt/loopback/' interface is a special type of interface that allows you
to make connections to yourself. There are various reasons why you might want
to do this, for example, you may wish to test some network software without
interfering with anybody else on your network. By convention the IP address
`<tt/127.0.0.1/' has been assigned specifically for loopback. So no matter
what machine you go to, if you open a telnet connection to <tt/127.0.0.1/
you will always reach the local host.
-->

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

<p>
<!-- 
Configuring the loopback interface is simple and you should ensure you do.
-->

ループバックインターフェイスの設定は簡単で、次のようにするだけです。

<tscreen><verb>
# ifconfig lo 127.0.0.1
# route add -host 127.0.0.1 lo
</verb></tscreen>
<!-- 
We'll talk more about the <em/route/ command in the next section.
-->

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

<sect1><heading> 経路制御(ルーティング)
<p>
<!-- 
Routing is a big topic. It is easily possible to write large volumes
of text about it. Most of you will have fairly simple routing requirements,
some of you will not. I will cover some basic fundamentals of routing only.
If you are interested in more detailed information then I suggest you
refer to the references provided at the start of the document.
-->

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

<p>
<!-- 
Let's start with a definition. What is IP routing ? Here is one that
I'm using:
-->

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

<p>
<!-- 
<quote>IP Routing is the process by which a host with multiple network
connections decides where to deliver IP datagrams it has received.</quote>
-->

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

<p>
<!-- 
It might be useful to illustrate this with an example. Imagine a typical
office router, it might have a PPP link off the the Internet, a number of
ethernet segments feeding the workstations and another PPP link off to
another office. When the router receives a datagram on any of its network
connections, routing is the mechanism that it uses to determine which port
it should send the datagram to next. Simple hosts also need to route, all
Internet hosts have two network devices, one is the loopback interface
described above and the other is the one it uses to talk to the rest of
the network, perhaps an ethernet, perhaps a PPP or SLIP serial port.
-->

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

<p>
<!-- 
Ok, so how does routing work ? Each host keeps a special list of routing
rules, called a routing table. This table contains rows which typically
contain at least at least three fields, the first is a destination address,
the second is the name of the interface to which the datagram is to be routed
and the third is optionally the IP address of another machine which will
carry the datagram on its next step through the network. In linux you
can see this table by using the following command:
-->

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

<tscreen><verb>
# cat /proc/net/route
</verb></tscreen>
<!-- 
The routing process is fairly simple: an incoming datagram is received,
the destination address (who it is for) is examined and compared with
each entry in the table. The entry that best matches that address is
selected and the datagram is forwarded to the specified interface. If the
gateway field is filled then the datagram is forwarded to that host via
the specified interface, otherwise the destination address is assumed to
be on the network supported by the interface.
-->

経路制御の方法自体はごく簡単です。データグラムを受けとれば、その目的地
アドレス(誰宛に送られたのか)をチェックして、経路表の各行と比較します。
そのアドレスにもっともよく一致する行が選択され、データグラムはその行が
指定するインターフェイスへ送られます。

その行にゲートウェイフィールドが登録されていれば、データグラムは指定さ
れたインターフェイスを経由してそのホストに送られます。ゲートウェイフィー
ルドが無い場合、目的地アドレスはその行が指定したインターフェイスが接続
しているネットワーク上にあるものと見なされます。

<p>
<!-- 
To manipulate this table a special command is used. This command takes
command line arguments and converts them into kernel system calls that
request the kernel to add, delete or modify entries in the routing table.
The command is called `<em/route/'.
-->

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

<p>
<!-- 
A simple example. Imagine you have an ethernet network. You've been told
it is a class-C network with an address of <tt/192.168.1.0/. You've been
supplied with an IP address of <tt/192.168.1.10/ for your use and have
been told that <tt/192.168.1.1/ is a router connected to the Internet.
-->

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

<p>
<!-- 
The first step is to configure the interface as described earlier. You would
use a command like:
-->

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

<tscreen><verb>
# ifconfig eth0 192.168.1.10 netmask 255.255.255.0 up
</verb></tscreen>
<!-- 
You now need to add an entry into the routing table to tell the kernel that
datagrams for all hosts with addresses that match <tt/192.168.1.*</tt> should
be sent to the ethernet device. You would use a command similar to:
-->

次に、目的地アドレスとして <tt>192.168.1.*</tt> に一致するデータグラム
が届けば、イーサネットデバイスに送るような経路表をカーネルに登録する必
要があります。そのためには以下のコマンドを使います。

<tscreen><verb>
# route add -net 192.168.0.0 netmask 255.255.255.0 eth0
</verb></tscreen>
<!-- 
Note the use of the `<tt/-net/' argument to tell the route program that this
entry is a network route. Your other choice here is a `<tt/host/' route which
is a route that is specific to one IP address.
-->

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

<p>
<!-- 
This route will enable you to establish IP connections with all of the hosts
on your ethernet segment. But what about all of the IP hosts that aren't on
your ethernet segment ?
-->

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

<p>
<!-- 
It would be a very difficult job to have to add routes to every possible
destination network, so there is a special trick that is used to simplify this
task. The trick is called the `<tt/default/' route. The <tt/default/ route
matches every possible destination, but poorly, so that if any other entry
exists that matches the required address it will be used instead of the
<tt/default/ route. The idea of the <tt/default/ route is simply to enable
you to say "and everything else should go here". In the example I've contrived
you would use an entry like:
-->

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

<tscreen><verb>
# route add default gw 192.168.1.1 eth0
</verb></tscreen>
<!-- 
The `<tt/gw/' argument tells the route command that the next argument is
the IP address, or name, of a gateway or router machine which all datagrams
matching this entry should be directed to for further routing.
-->

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

<p>
<!-- 
So, your complete configuration would look like:
-->

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

<tscreen><verb>
# ifconfig eth0 192.168.1.10 netmask 255.255.255.0 up
# route add -net 192.168.0.0 netmask 255.255.255.0 eth0
# route add default gw 192.168.1.1 eth0
</verb></tscreen>
<!-- 
If you take a close look at your network `<tt/rc/' files you will find
that at least one of them looks very similar to this. This is a very common
configuration.
-->

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

<p>
<!-- 
Let's now look at a slightly more complicated routing configuration. Let's
imagine we are configuring the router we looked at earlier, the one supporting
the PPP link to the Internet and the lan segments feeding the workstations in
the office. Lets imagine the router has three ethernet segments and one PPP
link. Our routing configuration would look something like:
-->

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

<tscreen><verb>
# route add 192.168.1.0 netmask 255.255.255.0 eth0
# route add 192.168.2.0 netmask 255.255.255.0 eth1
# route add 192.168.3.0 netmask 255.255.255.0 eth2
# route add default ppp0
</verb></tscreen>

<!-- 
Each of the workstations would use the simpler form presented above, only the
router needs to specify each of the network routes seperately because for
the workstations the <tt/default/ route mechanism will capture all of them
letting the router worry about splitting them up appropriately. You may be
wondering why the default route presented doesn't specify a `<tt/gw/'.
The reason for this is simple, serial link protocols such as PPP and slip
only ever have two hosts on their network, one at each end. To specify the
host at the other end of the link as the gateway is pointless and redundant
as there is no other choice, so you do not need to specify a gateway for
these types of network connections. Other network types such as ethernet,
arcnet or token ring do require the gateway to be specified as these networks
support large numbers of hosts on them.
-->

このルータのつながったネットワークを使っているワークステーションそれぞ
れは、先に述べたより簡単な形式の設定になり、ルータのみがネットワークへ
の経路を別々に登録することになります。それぞれのワークステーションの場
合、「既定の経路」を使ってルータにデータグラムを送りますが、ルータの場
合はそれらを適切な経路に送りだす必要があります。

上記のルータの設定でデフォルトの経路の設定に`<tt>gw</tt>' が無いのを不
思議に思うかも知れませんが、その理由は簡単で、PPP や SLIP といったシリ
アル経由の接続は一対一の接続になっているからです。接続先が一台のマシン
になっているため、他に選択の余地が無く、そのマシンをゲートウェイとして
設定する意味は無いわけです。ethenet や arcnet、トークンリングといった
種類のネットワークの場合、それらのネットワーク上には多数のホストがある
ので <tt>gw</tt> オプションを指定する必要があります。

<sect2><heading>さて、routed プログラムは何をしているのでしょう？

<p>
<!-- 
The routing configuration described above is best suited to simple network
arrangements where there only ever single possible paths to destinations.
When you have a more complex network arrangement things get a little more
complicated. Fortunately for most of you this won't be an issue.
-->

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

<p>
<!-- 
The big problem with `manual routing' or `static routing' as described, is
that if a machine or link fails in your network then the only way you can
direct your datagrams another way, if another way exists, is by manually
intervening and executing the appopriate commands. Naturally this is
clumsy, slow, impractical and hazard prone. Various techniques have been
developed to automatically adjust routing tables in the event of network
failures where there are alternate routes, all of these techniques are
loosely grouped by the term `dynamic routing protocols'.
-->

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

<p>
<!-- 
You may have heard of some of the more common dynamic routing protocols. The
most common are probably RIP (Routing Information Protocol) and OSPF (Open
Shortest Path First Protocol). The Routing Information Protocol is very common
on small networks such as small-medium sized corporate networks or building
networks. OSPF is more modern and more capable at handling large network
configurations and better suited to environments where there is a large number
of possible paths through the network. Common implementations of these
protocols are: `<em/routed/' - RIP, and `<em/gated/' - RIP, OSPF and others.
The `<em/routed/' program is normally supplied with your Linux distribution
or is included in the `NetKit' package detailed above.
-->

一般的な動的経路制御プロトコルのいくつかについては御存知かも知れません。
多分、これらのプロトコルの中で最も有名なものは RIP(Routing Information
Protocol) と OSPF(Open Shortest Path First Protocol)でしょう。RIP は小〜
中規模な組織や、一つのビルの中といった小規模なネットワークで最も広く使
われているプロトコルです。OSPF は新しく開発されたプロトコルで、大規模
なネットワークの設定やネットワークの中に多数の経路がありうる場合により
適しています。

これらのプロトコルを実装したプログラムとして、`<em>routed</em>' - RIP 
のみ、と `<em>gated</em>' - RIP と OSPF、その他に対応、があります。
`<em>routed</em>' プログラムはたいていの Linux の配布パッケージに含ま
れており、上述した `NetKit' パッケージにも入っています。

<p>
<!-- 
An example of where and how you might use a dynamic routing protocol might
look something like the following:
-->

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

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

</verb></tscreen>
<!-- 
We have three routers A, B and C. Each supports one ethernet segment with
a Class C IP network (netmask 255.255.255.0). Each router also has a PPP link
to each of the other routers. The network forms a triangle.
-->

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

<p>
<!-- 
It should be clear that the routing table at router A could look like:
-->

ルータ A の経路表は以下のようになります。

<tscreen><verb>
# route add -net 192.168.1.0 netmask 255.255.255.0 eth0
# route add -net 192.168.2.0 netmask 255.255.255.0 ppp0
# route add -net 192.168.3.0 netmask 255.255.255.0 ppp1
</verb></tscreen>
<!-- 
This would work just fine until the link between router A and B should fail.
If that link failed then with the routing entry shown above hosts on the
ethernet segment of A could not reach hosts on the ethernet segment on B
because their datagram would be directed to router A's ppp0 link which is
broken. They could still continue to talk to hosts on the ethernet segment
of C, and hosts on the C's ethernet segment could still talk to hosts on
B's ethernet segment because the link between B and C is still intact.
-->

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

<p>
<!-- 
But wait, if A can talk to C, and C can still talk to B, why shouldn't A
route its datagrams for B via C and let C send them to B ? This is exactly
the sort of problem that dynamic routing protocols like RIP were designed
to solve. If each of the routers A, B and C were running a routing daemon
then their routing tables would be automatically adjusted to reflect the
new state of the network should any one of the links in the network fail.
To configure such a network is simple, at each router you need only do
two things. In this case for Router A:
-->

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

<tscreen><verb>
# route add -net 192.168.1.0 netmask 255.255.255.0 eth0
# /usr/sbin/routed
</verb></tscreen>

とします。

<!-- 
The `<em/routed/' routing daemon automatically finds all active network
ports when it starts and sends and listens for messages on each of the
network devices to allow it to determine and update the routing table
on the host.
-->

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

<p>
<!-- 
This has been a very brief explanation of dynamic routing and where you would
use it. If you want more information then you should refer to the suggested
references listed at the top of the document.
-->

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

<p>
The important points relating to dynamic routing are:

動的経路制御についての重要なポイントは以下の通りです。
<enum>
<!-- 
<item>You only need to run a dynamic routing protocol daemon when your Linux
machine has the possibility of selecting multiple possible routes to a
destination.
-->

<item>目的地まで複数の経路があり、その中から一つの経路を選ばなければな
らない状況にないかぎり、あなたの Linux マシンで動的経路制御デーモンを
動かす必要はありません。

<!-- 
<item>The dynamic routing daemon will automatically modify your routing table
to adjust to changes in your network.
-->

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

<!-- 
<item>RIP is suited to small to medium sized networks.
-->

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

</enum>

<sect1><heading>ネットワーク経由の各種サービスとサーバの設定

<p>
<!-- 
Network servers and services are those programs that allow a remote user to
make user of your Linux machine. The remote user establishes a network
connection to your machine and the server program, or network daemon,
listening on that port accepts the connection and executes. There are
two ways that network daemons may operate. Both are commonly employed in
practice. The two ways are:
-->

ネットワーク経由の各種サービスとそのためのサーバを起動すれば、遠隔地に
いるユーザが、ネットワーク経由であなたの Linux マシンを使うことができ
ます。誰かがネットワーク経由で接続してくると、あらかじめ起動されている
サーバプロブラムか、各種サーバプログラムを起動するためのデーモンプログ
ラム(inetd)が、どのポートへの接続かを確認し、接続を受けつけると共にプ
ログラムを実行します。ネットワークデーモンの動作方法には 2 つの種類が
あり、2 つの種類とも実際に用いられています。それらは、

<descrip>
<!-- 
<tag>standalone</tag>
the network daemon program listens on the designated
network port and when an incoming connection is made it manages the network
connection itself to provide the service.
-->
<tag>スタンドアローン・タイプ</tag>

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

<!-- 
<tag>slave to the <em/inetd/ server</tag>
the <em/inetd/ server is a special
network daemon program that specialises in managing incoming network
connections. It has a configuration file which tells it what program needs
to be run when an incoming connection is received on a particular combination
of tcp or udp and service port. The ports are described in another file that
we will talk about soon.
-->
<tag>inetd 経由で起動するタイプ</tag>

<em>ined</em> サーバはネットワーク接続を受けつけるための特別のデーモン
プログラムです。このプログラムは設定ファイルに従って tcp と udp、接続
ポートの組み合わせから、必要なサービスを提供するためのプログラムを決定
し、そのプログラムを起動します。ポートを指定するためのファイルは別にあ
ります。

</descrip>
<!-- 
There are two important files that we need to configure. They are the
<tt>/etc/services</tt> file which assigns names to port numbers and the
<tt>/etc/inetd.conf</tt> file which is the configuration file for the
<em/inetd/ network daemon.
-->

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

<sect2><heading>/etc/services
<p>
<!-- 
The <tt>/etc/services</tt> file is a simple database that associates a
human friendly name to a machine friendly service port. Its format is
quite simple. The file is a text file with each line representing and
entry in the database. Each entry is comprised of three fields seperated by
any number of whitespace (tab or space) characters. The fields
are:
-->

<tt>/etc/services</tt> ファイルはサービス名とポート番号の対応を示した
単純なデータベースです。このファイルの書式はごく単純で、普通のテキスト
ファイルの各行にデータベースへのエントリが記述されています。それぞれの
エントリは任意の数の空白文字(タブかスペース)で分離された 3 つの欄から
構成されます。また、&num;から後はコメントとして無視されます。欄の構成
は

<verb>
name      port/protocol        aliases     # comment
</verb>

となっています(&num;はコメント部です)。

<descrip>
<tag>name</tag> は一語でこの行の内容を表わします。

<tag>port/protocol</tag> この欄は 2 つの部分に分かれます。
	<descrip>
<!-- 
	<tag>port</tag>a number that specifies the port number the named
	service will be available on. Most of the common services have
	assigned service numbers. These are described in <tt>RFC-1340</tt>.
-->

	<tag>port</tag>はこの行が示すサービスを提供するためのポート番号で
	す。よく使われるサービスにはあらかじめポート番号が割りあてられてい
	ます。詳細については <tt>RFC-1340</tt> を御覧ください。

<!-- 
	<tag>protocol</tag>this subfield may be set to either <tt>tcp</tt>
	or <tt>udp</tt>.
-->

	<tag>protocol</tag>欄はこのサービスが <tt>tcp</tt> と <tt>udp</tt> 
	のどちらを使うかを指定します。

	</descrip>
<!-- 
It is important to note that an entry of <tt>18/tcp</tt> is very different
from an entry of <tt>18/udp</tt> and that there is no technical reason why
the same service needs to exist on both. Normally common sense prevails
and it is only if a particular service is available via both <tt>tcp</tt>
and <tt>udp</tt> that you will see an entry for both.
<tag>aliases</tag>other names that may be used to refer to this service entry.
-->

注意しておかなければならないことは、<tt>18/tcp</tt> と <tt>18/udp</tt> 
は全く異なる意味を持つということです。1つのサービスが同じポートの tcp 
と udp を使わなければならない技術的な理由はありません。しかしながら、
常識的な意味から、特定のサービスが <tt>tcp</tt> でも <tt>udp</tt> でも
使える場合、それらは同じポートを使うようになっており、
<tt>/etc/services</tt> にそのような例がいくつか見つかるでしょう。

<tag>aliases</tag> はこのサービスを参照する別名を設定します。

</descrip>
<!-- 
Any text appearing in a line after a `<tt/&num;/' character is ignored and treated
as a comment.
-->

<!-- 
`<tt>&num;</tt> 以降の行はコメントとして無視されます。
-->

<sect3>/etc/services ファイルの実例

<p>
<!-- 
All modern linux distributions provide a good <tt>/etc/services</tt> file.
Just in case you happen to be building a machine from the ground up, here is
a copy of the <tt>/etc/services</tt> file supplied with the
<url url="http://www.debian.org/" name="Debian"> distribution.
-->

最近の Linux の各種配布パッケージには、 <tt>/etc/services</tt> ファイ
ルはあらかじめ用意されていますが、もし 0 からシステムを組みあげなけれ
ばならない場合のために、以下に <url url="http://www.debian.org/"
name="Debian"> システムからコピーした <tt>/etc/services</tt> の例を紹
介します。

<tscreen><verb>
# /etc/services:
# $Id: NET-3-HOWTO.sgml,v 1.1 2002/03/16 12:16:41 mdk Exp $
#
# 各種ネットワークサービス、インターネットスタイル。
#
# 一つの特権(well-known)ポートに TCP と UDP 双方を割りあてるのが最近の IANA 
# の方針なので注意してください。そのため、UDP をサポートしていないプロト
# コルでも、以下に示すポートのほとんどに TCP と UDP 双方のエントリがあり
# ます。RFC 1340 ``Assigned Numbers''(July 1982) からバージョンアップし
# ていますが、全てのポートが含まれているわけではなく、よく使われるものだ
# けを記載しています。

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
#
# ``Assingned Numbers'' によると、、
# > 登録されているポートは IANA が管理しているわけではなく、以下のポート
# > についてはほとんどのシステムで通常のユーザ権限で起動された通常のプロセ
# > スやプログラムから操作可能です。

#> ポートとは TCPに関する RFC で定義されいる長時間の通信を支える論理的な
#> 接続端の名称です。名称不明の呼び出し元に答える目的で各種サービスの
#> 接続用ポートが定義されています。このリストはサーバプロセスが使う接続
#> 用のポートです。IANA がこれらのポートを管理することは不可能なので、
#> 以下のリストは単に慣例を示しているに過ぎません。

#
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(Athena/MIT プロジェクト)サービスの使うポート。以下は
# Kerberos v4 用の非公式のものです。v4 の Kerberos を使っているサイトで
# は以下の行を使って、上述の v5 用のエントリはコメントアウトし
# てください。

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
#
# 非公式だが必要な(NetBSD 用)サービス
#
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
</verb></tscreen>

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

<p>
<!-- 
The <tt>/etc/inetd.conf</tt> file is the configuration file for the
<em/inetd/ server daemon. Its function is to tell <em/inetd/ what to do
when it receives a connection request for a particular service. For each
service that you wish to accept connections for you must tell <em/inetd/
what network server daemon to run, and how to run it.
-->

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

<p>
<!-- 
Its format is also fairly simple. It is a text file with each line describing
a service that you wish to provide. Any text in a line following a `<tt/&num/'
is ignored and considered a comment. Each line contains seven fields seperated
by any number of whitespace (tab or space) characters. The general format
is as follows:
-->

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

<tscreen><verb>
service  socket_type  proto  flags  user  server_path  server_args
</verb></tscreen>

ここで、
<descrip>
<tag>service</tag> は <tt>/etc/services</tt> ファイルに指定したそれぞ
れのサービス名です。

<!-- 
this field describes the type of socket that this
entry will consider relevant, allowable values are: <tt/stream/, <tt/dgram/,
<tt/raw/, <tt/rdm/, or <tt/seqpacket/. This is a little technical in nature,
but as a rule of thumb nearly all <tt/tcp/ based services use <tt/stream/ and
nearly all <tt/udp/ based services use <tt/dgram/. It is only very special
types of server daemons that would use any of the other values.
-->

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

<!-- 
the protocol to considered valid for this entry. This should
match the appropriate entry in the <tt>/etc/services</tt> file and will
typically be either <tt/tcp/ or <tt/udp/. Sun RPC (Remote Procedure Call) based
servers will use <tt>rpc/tcp</tt> or <tt>rpc/udp</tt>.
-->

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

<!-- 
<tag>flags</tag>
there are really only two possible settings for this field.
This field setting tells <em/inetd/ whether the network server program frees
the socket after it has been started, and therefore whether <em/inetd/ can
start another one on the next connection request, or whether <em/inetd/ should
wait and assume that any server daemon already running will handle the new
connection request. Again this is a little tricky to work out, but as a rule
of thumb all <tt/tcp/ servers should have this entry set to <tt/nowait/ and
most <tt/udp/ servers should have this entry set to <tt/wait/. Be warned
there are some notable exceptions to this, so let the example guide you if
you are not sure.
-->

<tag>flags</tag> は <tt>wait</tt> か <tt>nowait</tt> かのどちらかです。
この欄は、<tt>inetd</tt> が起動したネットワークサービス用デーモンが、
起動後はソケットを解放するため、即座に次の接続リクエストを受けつける
ことが可能か、ネットワークサービス用デーモンが動いている間は新しい接続
を受けつけずに待つかの指定です。この項目も多少トリッキーな方法で実現し
ていますが、一般的に言うと <tt>tcp</tt> を使ったサーバは 
<tt>nowait</tt> で、<tt>udp</tt> を使ったサーバは <tt>wait</tt> になっ
ているはずです。いくつか例外もありますので、不確実な場合は先に示した例
を見てください。

<!-- 
<tag>user</tag>
this field describes which user account from
<tt>/etc/passwd</tt> will be set as the owner of the network daemon when it
is started. This is often useful if you want to safeguard against security
risks. You can set the user of an entry to the <tt/nobody/ user so that
if the network server security is breached the possible damage is minimised.
Typically this field is set to <tt/root/ though, because many servers require
root priveledges in order to function correctly.
-->

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

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

<tag>server_args</tag>
<!-- 
this field comprises the rest of the line and is
optional. This field is where you place any command line arguments that you
wish to pass to the server daemon program when it is launched.
-->

この欄は必須ではありませんが、ここから行末までを、サーバプログラムを
起動する際に渡すコマンドライン引数に用いられます。

</descrip>

<sect3>/etc/inetd.conf の例

<p>
<!-- 
As for the <tt>/etc/services</tt> file all modern distributions will include
a good <tt>/etc/inetd.conf</tt> file for you to work with. Here, for
completeness is the <tt>/etc/inetd.conf</tt> file from the
<url url="http://www.debian.org/" name="Debian"> distribution.
-->

<tt>/etc/services</tt> ファイルと同様、最近の Linux の配布パッケージで
は充分な <tt>/etc/inetd.conf</tt> ファイルが付属しています。ここでも 
<url url="http://www.debian.org/" name="Debian">  パッケージからコピー
してきた <tt>/etc/inetd.conf</tt> の例を示すことにしましょう。

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

<sect1><heading>その他のネットワークに関連した設定ファイル

<p>
<!-- 
There are a number of miscellaneous files relating to network configuration
under linux that you might be interested in. You may never have to modify
these files, but it is worth describing them so you know what they contain
and what they are for.
-->

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

<sect2><heading>/etc/protocols
<p>
<!-- 
The <tt>/etc/protocols</tt> file is a database that maps protocol id numbers
against protocol names. This is used by programmers to allow them to
specify protocols by name in their programs and also by some programs
such as <em>tcpdump</em> to allow them to display names instead of numbers
in their output. The general syntax of the file is:
-->

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

<tscreen><verb>
protocolname  number  aliases
</verb></tscreen>

となります。

<!-- 
The <tt>/etc/protocols</tt> file supplied with the
<url url="http://www.debian.org/" name="Debian"> distribution is as
follows:
-->

<url url="http://www.debian.org/" name="Debian"> パッケージに付属の 
<tt>/etc/protocols</tt> ファイルは以下の通りです。

<tscreen><verb>
# /etc/protocols:
# $Id: NET-3-HOWTO.sgml,v 1.1 2002/03/16 12:16:41 mdk 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
</verb></tscreen>

<sect2><heading>/etc/networks
<p>
<!-- 
The <tt>/etc/networks</tt> file has a similar function to that of the
<tt>/etc/hosts</tt> file. It provides a simple database of network names
against network addresses. Its format differs in that there may be
only two fields per line, and that the fields are coded as:
-->

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

<tscreen><verb>
# networkname networkaddress
</verb></tscreen>

例えばこのようになります。
<!-- 
An example might look like:
-->
<tscreen><verb>
loopnet    127.0.0.0
localnet   192.168.0.0
amprnet    44.0.0.0
</verb></tscreen>

<!-- 
When you use commands like the <em>route</em> command, if a destination is
a network, and that network has an entry in the <tt>/etc/networks</tt> file
then the route command will display that network name instead of its
address.
-->

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

<sect1><heading>ネットワークのセキュリティとアクセス管理
<p>
<!-- 
Let me start this section by warning you that securing your machine and
and network against malicious attack is a complex art. I do not consider
myself an expert in this field at all, and while the following mechanisms I
describe will help, if you are serious about security then I recommend you
do some research of your own into the subject. There are many good references
on the Internet relating to the subject.
-->

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

<p>
<!-- 
An important rule of thumb is:
	`<bf>Don't run servers you don't intend to use</bf>'.
Many distributions come configured with all sorts of services configured and
automatically started. To ensure even a minimum level of safety you should go
through your <tt>/etc/inetd.conf</tt> file and comment out (<em>place a `&num;' at
the start of the line</em>) any entries for services you don't intend to use.
Good candidates are services such as: <tt/shell/, <tt/login/, <tt/exec/,
<tt/uucp/, <tt/ftp/, and informational services such as <tt/finger/,
<tt/netstat/ and <tt/systat/.
-->

まず第一にやるべきことは、<bf>必要の無いサーバは起動しない</bf> ことで
す。Linux の各種配布パッケージではあらかじめ全てのサービスが設定され、
それらは自動的に起動するようになっています。最低限の安全を確保するため
に、まず <tt>/etc/inted.conf</tt> に目を通して、使う必要の無いサービス
をコメントアウト(行頭に &num; を付ける)しておきましょう。コメントアウ
トしておいた方がいいサービスは <tt>shell</tt>、<tt>login</tt>、
<tt>exec</tt>、<tt>uucp</tt>、<tt>ftp</tt> といったサービスと、
<tt>finger</tt> や <tt>netstat</tt>、<tt>systat</tt> といった情報提供
用サービスです。

<p>
<!-- 
There are all sorts of security and access control mechanisms, I'll describe
the most elementary of them.
-->

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

<sect2><heading>/etc/ftpusers
<p>
<!-- 
The <tt>/etc/ftpusers</tt> file is a simple mechanism that allows you to
deny certain users from logging into your machine via ftp. The
<tt>/etc/ftpusers</tt> is read by the ftp daemon program (<em/ftpd/) when
an incoming ftp connection is received. The file is a simple list of those
users who are disallowed from logging in. It might looks something like:
-->

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

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

<sect2><heading>/etc/securetty
<p>
<!-- 
The <tt>/etc/securetty</tt> file allows you to specify which <tt/tty/ devices
<tt/root/ is allowed to login on. The <tt>/etc/securetty</tt> file is read
by the login program (usually <em>/bin/login</em>). Its format is a list of
the tty devices names allowed, on all others <tt/root/ login is disallowed:
-->

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

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

<sect2><heading>tcpd を使ったアクセスコントロール
<p>
<!-- 
The <em>tcpd</em> program you will have seen listed in the same
<tt>/etc/inetd.conf</tt> provides logging and access control mechanisms to
services it is configured to protect.
-->

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

<p>
<!-- 
When it is invoked by the <em>inetd</em> program it reads two files containing
access rules and either allows or denies access to the server it is protecting
accordingly.
-->

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

<p>
<!-- 
It will searches the rules files until the first match is found. If no
match is found then it assumes that access should be allowed to anyone.
The files it searches in sequence are: <tt>/etc/hosts.allow</tt>,
<tt>/etc/hosts.deny</tt>. I'll describe each of these in turn. For a complete
description of this facility you should refer to the appopriate <em>man</em>
pages (<tt>hosts_access(5)</tt> is a good starting point).
-->

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

<sect3><heading>/etc/hosts.allow
<p>
<!-- 
The <tt>/etc/hosts.allow</tt> file is a configuration file of the
<em>/usr/sbin/tcpd</em> program. The <tt>hosts.allow</tt> file contains
rules describing which hosts are <em>allowed</em> access to a service on
your machine.
-->

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

<p>
<!-- 
The file format is quite simple:
-->
このファイルの書式はごく単純です。

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

<descrip>
<tag><tt/service list/</tag>
<!-- 
is a comma delimited list of server names that this rule applies to.
Example server names are: <tt/ftpd/, <tt/telnetd/, and <tt/fingerd/.
-->
は、このルールを適用するサーバプログラムをコンマで区切って記述します。
サーバプログラムには <tt>ftpd</tt> <tt>telnetd</tt> <tt>fingerd</tt> 
などがあります。

<tag><tt/host list/</tag>
<!-- 
is a comma delimited list of host names. You may also use IP addresses
here. You may additionally specify hostnames or addresses using wildcard
characters to match groups of hosts. Examples include: <tt/gw.vk2ktj.ampr.org/
to match a specific host, <tt>.uts.edu.au</tt> to match any hostname ending in
that string, <tt>44.</tt> to match any IP address commencing with those digits.
There are some special tokens to simplify configuration, some of these are:
<tt/ALL/ matches every host, <tt/LOCAL/ matches any host whose name does not
contain a `<tt/./' ie is in the same domain as your machine, and <tt/PARANOID/
matches any host whose name does not match its address (name spoofing). There
is one last token that is also useful. The <tt/EXCEPT/ token allows you to
provide a list with exceptions. This will be covered in an example later.
-->
はホスト名をコンマで区切って記述します。ホスト名の代りに IP アドレスを
使うことも可能です。ワイルドカードキャラクタを使って複数のホストや IP 
アドレスを指定可能です。例えば、<tt>gw.vk2ktj.ampr.org</tt> 
と書くと 1 つのホストを指定したことになりますが、<tt>.uts.edu.au</tt> 
とするとこの文字列で終るホスト(このドメインに属するホスト)全てを指定し
たことになります。<tt>44.</tt> とすると、この IP アドレスで始まるホス
ト全てに一致します。設定を簡単にするためにいくつか特別のキーワードが用
意してあります。例えば <tt>ALL</tt> は全てのホスト名にマッチし、
<tt>LOCAL</tt> は <tt>.</tt> を含まないホスト名、すなわちそのマシンと
同じドメインにあるマシンにマッチし、<tt>PARANOID</tt> は登録されている
ホスト名と IP アドレスがマッチしない全てのマシン(名前を詐称しているマ
シン)に一致します。もう一つ、役に立つキーワードに <tt>EXCEPT</tt> があ
ります。これは例外リストになります。例については後述します。

<tag><tt/command/</tag>
<!-- 
is an optional parameter. This parameter is the full pathname of a
command that would be executed everytime this rule is matched. It could for
example run a command that would attempt to identify who is logged onto the
connecting host, or to generate a mail message or some other warning to
a system administrator that someone is attempting to connect. There are a
number of expansions that may be included, some common examples are:
<tt/%h/ expands to the name of the connecting host or address if it doesn't
have a name, <tt/%d/ the daemon name being called.
-->
は必須ではないパラメータで、この行のルールが適用される際に実行されるコ
マンドへのフルパスを指定します。この機能を使えば、接続してきたホストに
誰がログインしているかを調べたり、誰かが接続しようとするとメールなどの
手段を用いて管理者に報せることが可能です。ここには様々な変数が用意され
ており、たとえば <tt>%h</tt> は接続してきたホスト名かホスト名が分らな
い場合には IP アドレスに変換され、<tt>%d </tt> は呼び出されたデーモン
名に変換されます。

</descrip>
<p>
以下に例を示します。
<tscreen><verb>
# /etc/hosts.allow
#
# メールは全ての人に許可
in.smtpd: ALL
# telnet と ftp は同じドメインのホストか自宅のホストにのみ許可
telnetd, ftpd: LOCAL, myhost.athome.org.au
# finger は全ての人に許可するが、誰が試みたかは記録
fingerd: ALL: (finger @%h | mail -s "finger from %h" root)
</verb></tscreen>

<sect3><heading>/etc/hosts.deny
<p>
<!-- 
The <tt>/etc/hosts.deny</tt> file is a configuration file of the
<em>/usr/sbin/tcpd</em> program. The <tt>hosts.deny</tt> file contains
rules describing which hosts are <em>disallowed</em> access to a service on
your machine.
-->

<tt>/etc/hosts.deny</tt> も <em>/usr/sbin/tcpd</em> プログラムの設定ファ
イルで、どのホストからの接続を拒否するかを設定します。
<p>
A simple sample would look something like this:

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

<tscreen><verb>
# /etc/hosts.deny
#
# ホスト名を詐称しているホストは不許可
ALL: PARANOID
#
# 全てのホストを不許可
ALL: ALL
</verb></tscreen>

<!-- 
The <tt>PARANOID</tt> entry is really redundant because the other entry traps
everything in any case. Either of these entry would make a reasonable default
depending on your particular requirement.
-->

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

<p>
<!-- 
Having an <tt>ALL: ALL</tt> default in the <tt>/etc/hosts.deny</tt> and then
specifically enabling on those services and hosts that you want in the
<tt>/etc/hosts.allow</tt> file is the safest configuration.
-->

<tt>/etc/hosts.deny</tt> で <tt>ALL:ALL</tt> を設定し、
<tt>/etc/hosts.allow</tt> で提供したいサービスのみを特定のホストに許可
するように設定するのが一番安全でしょう。

<sect2><heading>/etc/hosts.equiv
<p>
<!-- 
The <tt/hosts.equiv/ file is used to grant certain hosts and users access
rights to accounts on your machine without having to supply a password. This
is useful in a secure environment where you control all machines, but is a
security hazard otherwise. Your machine is only as secure as the least secure
of the trusted hosts. To maximise security, don't use this mechanism and
encourage your users not to use the <tt/.rhosts/ file as well.
-->

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


<sect2><heading>ftpデーモンを正しく設定する。
<p>
<!-- 
Many sites will be interested in running an anonymous <em/ftp/ server to
allow other people to upload and download files without requiring a specific
userid. If you decide to offer this facility make sure you configure the
<em/ftp/ daemon properly for anonymous access. Most <em/man/ pages for
<tt>ftpd(8)</tt> describe in some length how to go about this. You should
always ensure that you follow these instructions. An important tip is to
not use a copy of your <tt>/etc/passwd</tt> file in the anonymous account
<tt>/etc</tt> directory, make sure you strip out all account details except
those that you must have, otherwise you will be vulnerable to brute force
password cracking techniques.
-->

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

<sect2><heading>Network ファイアウォール
<p>
<!-- 
Not allowing datagrams to even reach your machine or servers is an excellent
means of security. This is covered in depth in the
<url url="Firewall-HOWTO.html" name="Firewall-HOWTO">.
-->

あなたのマシンやサーバにまでデータグラムが届かないようにすることはセキュ
リティ的に優れた方法です。この方法の詳細については 
<url url="Firewall-HOWTO.html" name="Firewall-HOWTO"> に解説があります。

<sect2><heading>その他のコメント
<p>
<!-- 
Here are some other, potentially religous suggestions for you to consider.
-->

多少宗教がかってきますが、その他の注意しておくべきポイントを述べておき
ます。

<descrip>
<tag>sendmail</tag>
<!-- 
despite its popularity the <em/sendmail/ daemon appears
with frightening regularity on security warning announcements. Its up to you,
but I choose not to run it.
-->

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

<!-- 
<tag>NFS and other Sun RPC services</tag>be wary of these. There are all sorts
of possible exploits for these services. It is difficult finding an option
to services like NFS, but if you configure them, make sure you are careful
with who you allow mount rights to.
-->

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

</descrip>

<sect><heading>それぞれのネットワーク技術についての情報

<p>
<!-- 
The following subsections are specific to particular network technologies.
The information contained in these sections does not necessarily apply to
any other type of network technology.
-->

以下の各セクションでは特定のネットワーク技術について扱います。それぞれの
セクションは独立していますので、あるセクションを読むのに別のセクション
の情報は特に必要ありません。


<sect1><heading>ARCNet
<p>
<!-- 
ARCNET device names are `<tt/arc0s/', `<tt/arc1e/', `<tt/arc2e/' etc. The first
card detected by the kernel is assigned `<tt/eth0/' and the rest are assigned
sequentially in the order they are detected. The letter at the end signifies
whether you've selected ethernet encapsulation packet format or RFC1051 packet
format.
-->

ARCNET のデバイス名は `<tt>arc0s</tt>'、`<tt>arc1e</tt>'、,
<tt>arc2e</tt>' などになります。最初に検出されたカードが 
`<tt>arc0s</tt>' で、以下は検出された順に番号が振られます。最後の s か 
e はパケットをイーサネットにカプセル化するか RFC1051 の形式にするかを
を示します。

<p>
<bf/カーネルコンパイル時のオプション/:
<tscreen><verb>
Network device support  --->
    [*] Network device support
    <*> ARCnet support
    [ ]   Enable arc0e (ARCnet "Ether-Encap" packet format)
    [ ]   Enable arc0s (ARCnet RFC1051 packet format)
</verb></tscreen>
<p>
<!-- 
Once you have your kernel properly built to support your ethernet card then
configuration of the card is easy.
-->

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

<p>
<!-- 
Typically you would use something like:
-->
設定は、通常、以下のように行います。

<tscreen><verb>
# ifconfig arc0e 192.168.0.1 netmask 255.255.255.0 up
# route add 192.168.0.0 netmask 255.255.255.0 arc0e
</verb></tscreen>
<!-- 
Please refer to the
<tt>/usr/src/linux/Documentation/networking/arcnet-hardware.txt</tt> file
for further information.
-->

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

<p>
<!-- 
ARCNet support was developed by Avery Pennarun, <tt/apenwarr@foxnet.net/.
-->

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

<sect1><heading>Appletalk (AF_APPLETALK)
<p>
<!-- 
The Appletalk support has no special device names as it uses existing network
devices.
-->

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

<p>
<bf/カーネルのコンパイル時のオプションでは/:
<tscreen><verb>
Networking options  --->
    <*> Appletalk DDP
</verb></tscreen>
を指定します。
<!-- 
Appletalk support allows your Linux machine to interwork with Apple networks.
An important use for this is to share resources such as printers and disks
between both your Linux and Apple computers. Additional software is required,
this is called <em/netatalk/. Wesley Craig <tt/netatalk@umich.edu/ represents
a team called the `Research Systems Unix Group' at the University of Michigan
and they have produced the <em/netatalk/ package which provides software that
implements the Appletalk protocol stack and some useful utilities.
The <em/netatalk/ package will either have been supplied with your Linux
distribution, or you will have to ftp it from its home site at the
<url url="ftp://terminator.rs.itd.umich.edu/unix/netatalk/"
	name="University of Michigan">
-->

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

<p>
<!-- 
To build and install the package do something like:
-->

このパッケージをコンパイルしてインストールするには以下のようにします。
<!-- 
- You may want to edit the `Makefile' at this point, specifically to change
  the DESTDIR variable which defines where the files will be installed later.
  The default of /usr/local/atalk is fairly safe.
-->
<tscreen><verb>
# cd /usr/src
# tar xvfz .../netatalk-1.4b2.tar.Z
-この時点で必要ならば `Makefile' を修正します。特に、プログラムのイン
ストール先である DESTDIR に注意してください。デフォルトでは 
/usr/local/atalk にインストールされます。

# make
- root になって:
# make install
</verb></tscreen>

<sect2><heading>Appletalk 用ソフトウェアの設定
<p>
<!-- 
The first thing you need to do to make it all work is add some new entries
to your <tt>/etc/services</tt> file. The entries to add are:
-->

通常、最初にしなければいけないことは <tt>/etc/services</tt> の設定です。
以下のエントリを追加します。

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

<!-- 
The next step is to create the appletalk configuration files in the
<tt>/usr/local/atalk/etc</tt> directory (or wherever you installed the
package).
-->

次に <tt>/usr/local/atalk/etc</tt> ディレクトリ(か、あなたの選んだイン
ストール先のディレクトリ)に appletalk の設定ファイルを作ります。

<p>
<!-- 
The first file to create is the
<tt>/usr/local/atalk/etc/atalkd.conf</tt> file.
Initially this file needs only one line that gives the name of the network
device that supports the network that your Apple machines are on:
-->

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

<tscreen><verb>
eth0
</verb></tscreen>
<!-- 
The Appletalk daemon program will add extra details after it is run.
-->

Appletalk デーモンプログラムが自動的にこのファイルに設定情報を追加しま
す。

<sect2><heading>Linux のファイルシステムを Appletalk 経由で提供するには。

<p>
<!-- 
You can export filesystems from your linux machine to the network so that
Apple machine on the network can share them.
-->

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

<p>
<!-- 
To do this you must configure the
-->

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

<!-- 
<tt>/usr/local/atalk/etc/AppleVolumes.system</tt> file. There is another
configuration file called <tt>/usr/local/atalk/etc/AppleVolumes.default</tt>
which has exactly the same format and describes which filesystems users
connecting with guest priveledges will receive.
<p>
Full details on how to configure these files and what the various options are
can be found in the <em>afpd</em> man page.
-->

これらのファイルを設定する際の詳細や各種のオプションについては 
<em>afpd</em> の man ページを御覧ください。

<p>
<!-- 
A simple example might look like:
-->
以下に簡単な例を示します。
<tscreen><verb>
/tmp Scratch
/home/ftp/pub "Public Area"
</verb></tscreen>

<!-- 
Which would export your <tt>/tmp</tt> filesystem as AppleShare Volume
`Scratch' and your ftp public directory as AppleShare Volume `Public Area'.
The volume names are not mandatory, the daemon will choose some for you,
but it won't hurt to specify them anyway.
-->

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

<sect2><heading>AppleTalk 経由で Linux のプリンタの共有
<p>
<!-- 
You can share your linux printer with your Apple machines quite simply.
You need to run the <em>papd</em> program which is the Appletalk
Printer Access Protocol Daemon. When you run this program it will accept
requests from your Apple machines and spool the print job to your local
line printer daemon for printing.
-->
Linux マシンに接続されたプリンタを Apple 製のマシンと共有するのも簡単
で、AppleTalk のプリンタ・アクセス・プロトコル・デーモン <em>papd</em> 
を使います。このプログラムは、Apple マシンからのプリントリクエストを受
けつけてスプールし、lpr デーモンに渡して Linux マシンのプリンタに出力
します。

<p>
<!-- 
You need to edit the <tt>/usr/local/atalk/etc/papd.conf</tt> file to configure
the daemon. The syntax of this file is the same as that of your usual
<tt>/etc/printcap</tt> file. The name you give to the definition is
registered with the Appletalk naming protocol, NBP.
-->

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

<p>
<!-- 
A sample configuration might look like:
-->
<tt>papd.conf</tt> は以下のような形式です。

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

<!-- 
Which would make a printer named `TricWriter' available to your Appletalk
network and all accepted jobs would be printed to the linux printer `<tt/lp/'
(as defined in the <tt>/etc/printcap</tt> file) using <em>lpd</em>. The entry
`<tt/op=cg/' says that the linux user `<tt/cg/' is the operator of the printer.
-->

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

<sect2><heading> appletalk ソフトウェアの起動
<p>
<!-- 
Ok, you should now be ready to test this basic configuration. There is an
<em>rc.atalk</em> file supplied with the <em>netatalk</em> package that should
work ok for you, so all you should have to do is:
-->

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

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

<!-- 
and all should startup and run ok. You should see no error messages and
the software will send messages to the console indicating each stage as it
starts.
-->

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

<sect2><heading>appletalk ソフトウェアのテスト

<p>
<!-- 
To test that the software is functioning properly, go to one of your Apple
machines, pull down the Apple menu, select the Chooser, click on AppleShare,
and your Linux box should appear.
-->

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

<sect2><heading>netatalk の注意点
<p>
<itemize>
<!-- 
<item>You may need to start the Appletalk support before you configure your
IP network. If you have problems starting the Appletalk programs, or if
after you start them you have trouble with your IP network, then try starting
the Appletalk software before you run your <tt>/etc/rc.d/rc.inet1</tt> file.
-->

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

<!-- 
<item>The <em>afpd</em> (Apple Filing Protocol Daemon) severely messes up your
hard disk. Below the mount points it creates a couple of directories:
<tt>.AppleDesktop</tt> and <tt>Network Trash Folder</tt>. Then, for each
directory you access it will create a <tt>.AppleDouble</tt> below it so it can
store resource forks, etc. So think twice before exporting <tt>/</tt>, you will
have a great time cleaning up afterwards.
-->
<item>
<em>afpd</em>(Apple Filing Protocol Daemon)は HDD にさまざまなファイル
を作ります。AppleTalk 用に指定したディレクトリに<tt>.AppleDesktop</tt> 
と <tt>Network Trash Folder</tt> を作り、それ以下の Mac からアクセスし
たディレクトリ全てにリソースフォークを保存するための <tt>.AppleDouble</tt>
 を作っていきます。ですから、<tt>/</tt> を <em>afpd</em> で公開す
るまえにはくれぐれもよく考えてください。さもないと後始末に大変な時間が
かかってします。

<!-- 
<item>The <em>afpd</em> program expects clear text passwords from the Macs.
Security could be a problem, so be very careful when you run this daemon on a
machine connected to the Internet, you have yourself to blame if somebody
nasty does something bad.
-->

<em>afpd</em>はMacから平文のパスワードを求めます。これはセキュリティ的
には問題になるので、<em>afpd</em> をインターネットなどの外部のネットワー
クに接続したマシンで起動する際には充分注意してください。

<!-- 
<item>The existing diagnostic tools such as <em>netstat</em> and
<em>ifconfig</em> don't support Appletalk. The raw information is available
in the <tt>/proc/net/</tt> directory if you need it.
-->

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

</itemize>

<sect2>更なる情報源

<p>
<!-- 
For a much more detailed description of how to configure Appletalk for Linux
refer to Anders Brownworth <em/Linux Netatalk-HOWTO/ page at
<url url="http://thehamptons.com/anders/netatalk/"
	name="thehamptons.com">.
-->

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

<sect1><heading>ATM
<p>
<!-- 
Werner Almesberger <tt>&lt;werner.almesberger@lrc.di.epfl.ch&gt;</tt> is
managing a project to provide Asynchronous Transfer Mode support for Linux.
Current information on the status of the project may be obtained from:
<url url="http://lrcwww.epfl.ch/linux-atm/"
	name="lrcwww.epfl.ch">.
-->
Werner Almesberber <tt>&lt;werner.almesberger@lrc.di.epfl.ch&gt;</tt> 
は Linux で ATM(Asynchronous Transfer Mode)をサポートするための計画を
統括しています。この計画の現状については
<url url="http://lrcwww.epfl.ch/linux-atm/"	name="lrcwww.epfl.ch">に紹
介されています。

<sect1><heading>AX25 (AF_AX25)
<p>
<!-- 
AX.25 device names are `<tt/sl0/', `<tt/sl1/', etc. in <tt/2.0.*/ kernels or
`<tt/ax0/', `<tt/ax1/', etc. in <tt/2.1.*/ kernels.
-->
AX.25 デバイスの名称は <tt>2.0.*</tt> カーネルでは `<tt>sl0</tt>' や 
`<tt>sl1</tt>' ですが、<tt>2.1.*</tt> カーネルでは `<tt>ax0</tt>' や 
`<tt>ax1</tt>' になっています。

<p>
<bf/Kernel Compile Options/:

カーネルを再構築する際に指定すべきオプションは：

<tscreen><verb>
Networking options  --->
    [*] Amateur Radio AX.25 Level 2
</verb></tscreen>

です。

<!-- 
The AX25, Netrom and Rose protocols are covered by the
 <url url="AX25-HOWTO.html" name="AX25-HOWTO">.
These protocols are used by Amateur Radio Operators world wide in packet
radio experimentation.
-->

AX25 と Netrom、Rose プロトコルは <url url="AX25-HOWTO.html"
name="AX25-HOWTO"> に解説されています。世界中のアマチュマ無線の愛好家
がこれらのプロトコルをパケット無線の実験につかっています。

<p>
<!-- 
Most of the work for implementation of these protocols has been done by
Jonathon Naylor, <tt/jsn@cs.not.ac.uk/.
-->

これらのプロトコルの大部分の実装は Jonathon Naylor
<tt/jsn@cs.not.ac.uk/ の手によるものです。

<sect1><heading>DECNet
<p>
<!-- 
Support for DECNet is currently being worked on. You should expect it to
appear in a late <tt/2.1.*/ kernel.
-->

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

<sect1><heading>EQL - multiple line traffic equaliser
EQL - 複数回線のトラフィック・イコライザー
<p>
<!-- 
EQL device name is `<tt/eql/'. With the standard kernel source you may have
only one EQL device per machine. EQL provides a means of utilising multiple
point to point lines such as PPP, slip or plip as a single logical link to
carry tcp/ip. Often this is cheaper to use multiple lower speed lines than to
have one high speed line installed.
-->

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

<p>
<bf/カーネルの再構築時には、/

<tscreen><verb>
Network device support  --->
    [*] Network device support
    <*> EQL (serial line load balancing) support
</verb></tscreen>
を指定します。

<p>
<!-- 
To support this mechanism the machine at the other end of the lines must also
support EQL. Linux, Livingstone Portmasters and newer dial-in servers support
compatible facilities.
-->

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

<p>
<!-- 
To configure EQL you will need the eql tools which are available from:
<url url="ftp://sunsite.unc.edu/pub/linux/system/Serial/eql-1.2.tar.gz"
	name="sunsite.unc.edu">.
-->
EQL を設定するには、
<url url="ftp://sunsite.unc.edu/pub/linux/system/Serial/eql-1.2.tar.gz"
	name="sunsite.unc.edu"> から入手できる EQL 用ツールが必要になりま
す。

<p>
<!-- 
Configuration is fairly straightforward. You start by configuring the eql
interface. The eql interface is just like any other network device. You
configure the IP address and mtu using the <em/ifconfig/ utility, so something
like:
-->

EQL の設定はごく簡単で、他のネットワークデバイスと同じ形式で eql イン
ターフェイスを設定するところから始まります。IP アドレスや mtu は 
<em>ifconfig</em> を用いて下記のように設定します。

<tscreen><verb>
ifconfig eql 192.168.10.1 mtu 1006
route add default eql
</verb></tscreen>
<p>
<!-- 
Next you need to manually initiate each of the lines you will use. These may
be any combination of point to point network devices. How you initiate the
connections will depend on what sort of link they are, refer to the
appropriate sections for further information.
-->

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

<p>
<!-- 
Lastly you need to associate the serial link with the EQL device, this is
called `enslaving' and is done with the <em/eql_enslave/ command as shown:
-->

最後にシリアル接続を EQL デバイスに結びつけます。これは「スレーブ化
(enslalving)」と呼ばれ、<em>eql_enslave</em> コマンドで以下のように設
定します。

<tscreen><verb>
eql_enslave eql sl0 28800
eql_enslave eql ppp0 14400
</verb></tscreen>
<!-- 
The `<em>estimated speed</em>' parameter you supply <em/eql_enslave/ doesn't
do anything directly. It is used by the EQL driver to determine what share of
the datagrams that device should receive, so you can fine tune the balancing of
the lines by playing with this value.
-->

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

<p>
<!-- 
To disassociate a line from an EQL device you use the <em/eql_emancipate/
command as shown:
-->

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

<tscreen><verb>
eql_emancipate eql sl0
</verb></tscreen>
<p>
<!-- 
You add routing as you would for any other point to point link, except your
routes should refer to the <tt/eql/ device rather than the actual serial
devices themselves, typically you would use:
-->

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

<tscreen><verb>
route add default eql0
</verb></tscreen>
<p>
<!-- 
The EQL driver was developed by Simon Janes, <tt/simon@ncm.com/.
-->

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

<sect1><heading>Ethernet
<p>
<!-- 
Ethernet device names are `<tt/eth0/', `<tt/eth1/', `<tt/eth2/' etc. The first
card detected by the kernel is assigned `<tt/eth0/' and the rest are assigned
sequentially in the order they are detected.
-->

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

<p>
<!-- 
To learn how to make your ethernet card working under Linux you should refer
to the <url url="Ethernet-HOWTO.html" name="Ethernet-HOWTO">.
-->

Linux で ethernet カードを使う方法の詳細については <url
url="Ethernet-HOWTO.html" name="Ethernet-HOWTO"> を参照してください。
<p>
<!-- 
Once you have your kernel properly built to support your ethernet card then
configuration of the card is easy.
-->

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

<p>
<!-- 
Typically you would use something like:
-->

通常、以下のように設定します。

<tscreen><verb>
# ifconfig eth0 192.168.0.1 netmask 255.255.255.0 up
# route add 192.168.0.0 netmask 255.255.255.0 eth0
</verb></tscreen>
<p>
<!-- 
Most of the ethernet drivers were developed by Donald Becker,
<tt/becker@CESDIS.gsfc.nasa.gov/.
-->

ほとんどの ethernet デバイスは Donald Becker
<tt/becker@CESDIS.gsfc.nasa.gov/ が開発しました。

<sect1><heading>FDDI
<p>
<!-- 
FDDI device names are `<tt/fddi0/', `<tt/fddi1/', `<tt/fddi2/' etc. The first
card detected by the kernel is assigned `<tt/fddi0/' and the rest are assigned
sequentially in the order they are detected.
-->

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

<p>
<!-- 
Lawrence V. Stefani, <tt/stefani@lkg.dec.com/, has developed a driver for
the Digital Equipment Corporation FDDI EISA and PCI cards.
-->

Lawrence V. Stefani  <tt/stefani@lkg.dec.com/ が DEC 製の EISA バスと 
PCI バスの FDDI カード用のドライバを開発しました。

<p>
<bf/カーネルの再構築の際には以下のオプションを指定します/:

<tscreen><verb>
Network device support  --->
    [*] FDDI driver support
    [*] Digital DEFEA and DEFPA adapter support
</verb></tscreen>

<!-- 
When you have your kernel built to support the FDDI driver and installed,
configuration of the FDDI interface is almost identical that for an ethernet
interface. You just specify the appropraite FDDI interface name in the
<em/ifconfig/ and <em/route/ comands.
-->

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

<sect1><heading>フレームリレー
<p>
<!-- 
The Frame Relay device names are `<tt/dlci00/', `<tt/dlci01/' etc for the
DLCI encapsulation devices and `<tt/sdla0/', `<tt/sdla1/' etc for the FRAD(s).
-->

フレームリレーのデバイス名のうちDLCI にカプセル化するデバイス名は 
`<tt>dlci00</tt>'、`<tt>dlci01</tt>' 等で、FRAD のデバイス名は
 `<tt>sdla0</tt>'、`<tt>sdla1</tt> 等になります。
<p>
<!-- 
Frame Relay is a new networking technology that is designed to suit data
communications traffic that is of a `bursty' or intermittent nature. You
connect to a Frame Relay network using a Frame Relay Access Device (FRAD).
The Linux Frame Relay supports IP over Frame Relay as described in RFC-1490.
-->

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

<p>
<bf/カーネルの再構築の際に指定すべき項目は:/
<tscreen><verb>
Network device support  --->
    <*> Frame relay DLCI support (EXPERIMENTAL)
    (24)   Max open DLCI
    (8)   Max DLCI per device
    <*>   SDLA (Sangoma S502/S508) support
</verb></tscreen>
<p>
<!-- 
Mike McLagan, <tt/mike.mclagan@linux.org/, developed the Frame Relay support
and configuration tools.
-->

フレームリレー機能と設定用ツールは Mike McLagan
<tt/mike.mclagan@linux.org/ が開発しました。

<p>
<!-- 
Currently the only FRAD suported are the
<url url="http://www.sangoma.com/"
	name="Sangoma Technologies">
<tt/S502A/, <tt/S502E/ and <tt/S508/.
-->

現在サポートされている FRAD は <url url="http://www.sangoma.com/"
	name="Sangoma Technologies"> 製の<tt/S502A/と <tt/S502E/、
<tt/S508/のみです。

<p>
<!-- 
To configure the FRAD and DLCI devices after you have rebuilt your kernel
you will need the Frame Relay configuration tools. These are available from
<url url="ftp://ftp.invlogic.com/pub/linux/fr/frad-0.15.tgz"
	name="ftp.invlogic.com">.
Compiling and installing the tools is straightforward, but the lack of a
top level Makefile makes it a fairly manual process:
-->

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

<tscreen><verb>
# cd /usr/src
# tar xvfz .../frad-0.15.tgz
# cd frad-0.15
# for i in common dlci frad; do cd $i; make clean; make; cd ..; done
# mkdir /etc/frad
# install -m 644 -o root -g root bin/*.sfm /etc/frad
# install -m 700 -o root -g root frad/fradcfg /sbin
# install -m 700 -o root -g root dlci/dlcicfg /sbin
</verb></tscreen>

<!-- 
After installing the tools you need to create an <tt>/etc/frad/router.conf</tt>
file. You can use this template, which is a modified version of one of the
example files:
-->

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

<tscreen><verb>
# /etc/frad/router.conf
# これはフレームリレー用の設定ファイルの雛型です
# 設定可能な項目を全て含んでいます。指定しているデフォルト値は Sangoma
# S502A カード用の DOS ドライバに基づくものです。

# '#' 以下はコメントと見なされます。
# 空白は無視されます(タブコードを使ってインデントしても構いません)
# 定義されていない [] フィールドやキーは無視されます

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

# ここでの設定は全てのデバイスに適用される。また、それぞれのデバイスご
# との設定で上書きすることも可能
#
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

# この指定は全てのボードのデフォルト値
# 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


#
#
# デバイスごとの設定
#
#

#
# 最初のデバイスは Sangoma S502E
#
[sdla0]
Type=Sangoma            # Type of the device to configure, currently only 
                        # SANGOMA is recognised
#
# 以下は 'Sangoma' タイプのボード用の設定
#
# ボードの種類 - S502A, S502E, S508 のいずれか
Board=S502E
#
# Sangoma  ボードのテスト用ファームウェア名
# Testware=/usr/src/frad-0.10/bin/sdla_tst.502
#
# FR 用ファームウェア名
# 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
</verb></tscreen>

<!-- 
When you've built your <tt>/etc/frad/router.conf</tt> file the only step
remaining is to configure the actual devices themselves. This is only a
little trickier than a normal network device configuration, you need to
remember to bring up the FRAD device before the DLCI encapsulation devices.
-->

<tt>/etc/frad/router.conf</tt> ファイルが設定できれば、残る作業は実際
のデバイスを設定するだけです。これは通常のネットワークデバイスより
も多少複雑で、DLCI カプセル化デバイス以前に FRAD デバイスを設定するこ
とをお忘れなく。

<tscreen><verb>
# 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 192.168.10.0 netmask 255.255.255.0 dlci00
#
ifconfig dlci01 192.168.11.1 pointopoint 192.168.11.2 up
route add 192.168.11.0 netmask 255.255.255.0 dlci00
#
route add default dev dlci00
#
</verb></tscreen>

<sect1><heading>IP アカウンティング
<p>
<!-- 
The IP accounting features of the Linux kernel allow you to collect and
analyse some network usage data. The data collected comprises the number
of packets and the number of bytes accumulated since the figures were
last reset. You may specify a variety of rules to categorise the
figures to suit whatever purpose you may have.
-->

カーネルに組みこまれた IP アカウント機能を使えばネットワークの使用記録
を取ることができます。記録できるデータは、最後にカウンタをリセットして
からやりとりしたパケット数とデータのバイト数です。カテゴリごとに異なる
ルールを指定可能で、目的に応じた設定が可能です。

<p>
<bf/カーネルのコンパイル時のオプション/:
<tscreen><verb>
Networking options  --->
    [*] IP: accounting
</verb></tscreen>

<!-- 
After you have compiled and installed the kernel you need to use the
<em/ipfwadm/ command to configure IP accounting. There are many different
ways of breaking down the accounting information that you might choose.
I've picked a simple example of what might be useful to use, you should
read the <em/ipfwadm/ man page for more information.
-->

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

<p>
<!-- 
Scenario: You have a ethernet network that is linked to the internet via
a PPP link. On the ethernet you have a machine that offers a number of
services and that you are interested in knowing how much traffic is generated
by each of telnet, rlogin, ftp and world wide web traffic.
-->

条件: PPP 経由でインターネットに接続された ethernet のネットワークがあ
るとします。ethernet のネットワーク上にはさまざまなサービスを提供して
いるマシンがあり、telnet や rlogin、ftp、WWW といったトラフィックがど
れくらい生じているかを知りたいとします。

<p>
<!-- 
You might use a command set that looks like the following:
-->
そのためには以下のようなコマンドを実行します。
<tscreen><verb>
#
# Flush the accounting rules
ipfwadm -A -f
#
# Add rules for local ethernet segment
ipfwadm -A in -a -P tcp -D 44.136.8.96/29 20
ipfwadm -A out -a -P tcp -S 44.136.8.96/29 20
ipfwadm -A in -a -P tcp -D 44.136.8.96/29 23
ipfwadm -A out -a -P tcp -S 44.136.8.96/29 23
ipfwadm -A in -a -P tcp -D 44.136.8.96/29 80
ipfwadm -A out -a -P tcp -S 44.136.8.96/29 80
ipfwadm -A in -a -P tcp -D 44.136.8.96/29 513
ipfwadm -A out -a -P tcp -S 44.136.8.96/29 513
ipfwadm -A in -a -P tcp -D 44.136.8.96/29
ipfwadm -A out -a -P tcp -D 44.136.8.96/29
ipfwadm -A in -a -P udp -D 44.136.8.96/29
ipfwadm -A out -a -P udp  -D 44.136.8.96/29
ipfwadm -A in -a -P icmp -D 44.136.8.96/29
ipfwadm -A out -a -P icmp -D 44.136.8.96/29
#
# Rules for default
ipfwadm -A in -a -P tcp -D 0/0 20
ipfwadm -A out -a -P tcp -S 0/0 20
ipfwadm -A in -a -P tcp -D 0/0 23
ipfwadm -A out -a -P tcp -S 0/0 23
ipfwadm -A in -a -P tcp -D 0/0 80
ipfwadm -A out -a -P tcp -S 0/0 80
ipfwadm -A in -a -P tcp -D 0/0 513
ipfwadm -A out -a -P tcp -S 0/0 513
ipfwadm -A in -a -P tcp -D 0/0
ipfwadm -A out -a -P tcp -D 0/0
ipfwadm -A in -a -P udp -D 0/0
ipfwadm -A out -a -P udp  -D 0/0
ipfwadm -A in -a -P icmp -D 0/0
ipfwadm -A out -a -P icmp -D 0/0
#
# List the rules
ipfwadm -A -l -n
#
</verb></tscreen>
<!-- 
The last command lists each of the Accounting rules and displays the collected
totals.
-->

最後のコマンドがそれぞれのアカウント記録ルールとトータルの結果を表示し
ます。

<p>
<!-- 
An important point to note when analysing IP accounting is that <bf/totals for
all rules that match will be incremented/ so that to obtain differential
figures you need to perform appropriate maths. For example if I wanted to know
how much data was not ftp, telnet, rlogin or www I would substract the
individual totals from the rule that matches all ports.
-->

採取した IP のアカウント記録を分析する際の注意点としては、<bf>指定した
ルールに適合するデータのみが増加する</bf>という点で、必要なデータを得
るにはいくつかの換算が必要でしょう。例えば、ftp や telnet, rlogin, www 
以外でやりとりしたデータ量を知るためには、全てのポートに適合するルール
の転送量から、ftp や telnet といったプロトコルで転送したデータ量を引く
必要があります。

<tscreen><verb>
# 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 -> *
    0     0 in  tcp  0.0.0.0/0            44.136.8.96/29       * -> 23
    0     0 out tcp  44.136.8.96/29       0.0.0.0/0            23 -> *
   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 -> *
  242  9777 in  tcp  0.0.0.0/0            44.136.8.96/29       * -> 513
  220 18198 out tcp  44.136.8.96/29       0.0.0.0/0            513 -> *
  252 10943 in  tcp  0.0.0.0/0            44.136.8.96/29       * -> *
  231 18831 out tcp  0.0.0.0/0            44.136.8.96/29       * -> *
    0     0 in  udp  0.0.0.0/0            44.136.8.96/29       * -> *
    0     0 out udp  0.0.0.0/0            44.136.8.96/29       * -> *
    0     0 in  icmp 0.0.0.0/0            44.136.8.96/29       *
    0     0 out icmp 0.0.0.0/0            44.136.8.96/29       *
    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 -> *
    0     0 in  tcp  0.0.0.0/0            0.0.0.0/0            * -> 23
    0     0 out tcp  0.0.0.0/0            0.0.0.0/0            23 -> *
   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 -> *
  243  9817 in  tcp  0.0.0.0/0            0.0.0.0/0            * -> 513
  221 18259 out tcp  0.0.0.0/0            0.0.0.0/0            513 -> *
  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            * -> *
    0     0 in  icmp 0.0.0.0/0            0.0.0.0/0            *
    0     0 out icmp 0.0.0.0/0            0.0.0.0/0            *
# 
</verb></tscreen>

<sect1><heading>IP エイリアス
<p>
<!-- 
There are some applications where being able to configure multiple IP addresses
to a single network device is useful. Internet Service Providers often use this
facility to provide a `customised' to their World Wide Web and ftp offerings
for their customers.
-->

1つのネットワークデバイスに複数の IP アドレスを設定できれば便利なアプ
リケーションがあります。インターネットプロバイダ(ISP)は、よくこの機能
を使って WWW と ftp を顧客用に設定して提供しています。

<p>
<bf/カーネル設定時のオプションは:/:

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

<!-- 
After compiling and installing your kernel with IP_Alias support configuration
is very simple. The aliases are added to virtual network devices associated
with the actual network device. A simple naming convention applies to these
devices being <tt>&lt;devname>:&lt;virtual dev num></tt>, e.g. <tt/eth0:0/,
<tt/ppp0:10/ etc.
-->

IP_Alias 機能を組みこんだカーネルを構築してインストールすれば、この機
能を設定するのはごく簡単です。alias 機能は、実際のネットワークデバイス
に仮想的なネットワークデバイスを関係づけます。仮想的なデバイスに割りあ
てる名前は、<tt>&lt;devname>:&lt;virtual dev num></tt> の形で、
<tt/eth0:0/、<tt/ppp0:10/ のようになります。

<p>
<!-- 
For example, assume you have an ethernet network that supports two different
IP subnetworks simultaneously and you wish your machine to have direct access
to both, you could use something like:
-->

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

<tscreen><verb>
#
# ifconfig eth0:0 192.168.1.1 netmask 255.255.255.0 up
# route add -net 192.168.1.0 netmask 255.255.255.0 eth0:0
#
# ifconfig eth0:1 192.168.10.1 netmask 255.255.255.0 up
# route add -net 192.168.10.0 netmask 255.255.255.0 eth0:0
#
</verb></tscreen>

<!-- 
To delete an alias you simply add a `<tt/-/' to the end of its name and refer
to it and is as simple as:
-->

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

<tscreen><verb>
# ifconfig eth0:0- 0
</verb></tscreen>
<!-- 
All routes associated with that alias will also be deleted automatically.
-->

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

<sect1><heading>IP ファイアウォール
<p>
<!-- 
IP Firewall and Firewalling issues are covered in more depth in the
<url url="Firewall-HOWTO.html" name="Firewall-HOWTO">. IP Firewalling allows
you to secure your machine against unauthorised network access by filtering
or allowing datagrams from or to IP addresses that you nominate. There are
three different classes of rules, incoming filtering, outgoing filtering and
forwarding filtering. Incoming rules are applied to datagrams that are
received by a network device. Outgoing rules are applied to datagrams that
are to be transmitted by a network device. Forwarding rules are applied to
datagrams that are received and are not for this machine, ie datagrams that
would be routed.
-->

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

<p>
<bf/カーネルコンパイル時の設定は:/
<tscreen><verb>
Networking options  --->
    [*] Network firewalls
    ....
    [*] IP: forwarding/gatewaying
    ....
    [*] IP: firewalling
    [ ] IP: firewall packet logging
</verb></tscreen>

<!-- 
Configuration of the IP firewall rules is performed using the <em/ipfwadm/
command. As I mentioned earlier, security is not something I am expert at,
so while I will present an example you can use, you should do your own
research and develop your own rules if security is important to you.
-->

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

<p>
<!-- 
Probably the most common use of IP firewall is when you are using your
linux machine as a router and firewall gateway to protect your local
network from unauthorised access from outside your network.
-->

IP ファイアウォールが役に立つのは、Linux マシンをローカルなネットワー
クとインターネットなどの外部ネットワークとのルータ兼ファイアウォール用
ゲートウェイにしている際に、外部のネットワークからの不正なアクセスを防
止する場合などでしょう。

<p>
<!-- 
The following configuration is based on a contribution from Arnt Gulbrandsen,
<tt>&lt;agulbra@troll.no&gt;</tt>.
-->

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

<p>
<!-- 
The example describes the configuration of the firewall rules on the Linux
firewall/router machine illustrated in this diagram:
-->

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

<tscreen><verb>
-                                   -
 \                                  | 172.16.37.0
  \                                 |   /255.255.255.0
   \                 ---------      |
    |  172.16.174.30 | Linux |      |
NET =================|  f/w  |------|    ..37.19
    |    PPP         | router|      |  --------
   /                 ---------      |--| Mail |
  /                                 |  | /DNS |
 /                                  |  --------
-                                   -
</verb></tscreen>
<!-- 
The following commands would normally be placed in an <tt/rc/ file so that they
were automatically started each time the system boots. For maximum security
they would be performed after the network interfaces are configured, but
before the interfaces are actually brought up to prevent anyone gaining
access while the firewall machine is rebooting.
-->

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

<tscreen><verb>
#!/bin/sh

# IP forwarding に関するルールを初期化して
# default policy を 'accept' にする
#
/sbin/ipfwadm -F -f
/sbin/ipfwadm -F -p accept
#
#
# Incoming についても同様の設定をする。

/sbin/ipfwadm -I -f
/sbin/ipfwadm -I -p accept

# まず、PPP インターフェイスの封印を解く。私は '-a reject -y' よりも '-a
# deny' の方が好きだけど、その場合、そのインターフェイスから接続を開始す
# ることもできなくなる。-o を指定すると、拒否されたデータグラムは全て記
# 録される。これはにはかなりのディスク領域が必要なので、設定ミスによって
# 攻撃されているかどうかを知る必要がある場合にのみ設定すべき。

#
/sbin/ipfwadm -I -a reject -y -o -P tcp -S 0/0 -D 172.16.174.30

# ある種の偽装パケットは即座に拒否する。multicast/anycast/broadcast アド
# レスからのパケットは受けつけない。

#
/sbin/ipfwadm -F -a deny -o -S 224.0/3 -D 172.16.37.0/24
#
#
# 加えて、ループバックネットワークのアドレスを持つパケットも、回線経由で
# 来ることはない。

/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 the Mail/Name Server

Mail/Name サーバに限って SMTP と DNS 接続を受けつける。

#
/sbin/ipfwadm -F -a accept -P tcp -S 0/0 -D 172.16.37.19 25 53
#

# DNS は TCP と同様 UDP も使うので、内部のネームサーバの
# 問い合わせ用に設定する

/sbin/ipfwadm -F -a accept -P udp -S 0/0 -D 172.16.37.19 53
#
# しかしながら、NFS や Larry McVoy 作の拡張 NFS のような危険なポートへの
# パケットには応答しない。squid を動かしている場合、そのポートもここに記
# 述すること。

/sbin/ipfwadm -F -a deny -o -P udp -S 0/0 53 \
        -D 172.16.37.0/24 2049 2050

# それ以外の非特権ポートへの接続は許可する。

#
/sbin/ipfwadm -F -a accept -P udp -S 0/0 53 \
        -D 172.16.37.0/24 53 1024:65535

# identd に送られてきたパケットは reject する。ここでは 
# 'reject' を使い、接続元のホストに接続できないことを明
# 示して、再接続を試みないようにさせる。そうしないと、
# ident がタイムアウトするまで時間がかかることになる。

/sbin/ipfwadm -F -a reject -o -P tcp -S 0/0 -D 172.16.37.0/24 113

# 192.168.64 と 192.168.65 のネットワークは信頼してい
# るので、一般的なサービスは許可する。

/sbin/ipfwadm -F -a accept -P tcp -S 192.168.64.0/23 \
        -D 172.16.37.0/24 20:23

# 内部のネットワークからの接続は全て許可する。

/sbin/ipfwadm -F -a accept -P tcp -S 172.16.37.0/24 -D 0/0

# 外部からの TCP 接続のほとんどは拒否して、ログを取る。
# (ftp がうまく動かなければ 1:1023 を追加してみる)
#
/sbin/ipfwadm -F -a deny -o -y -P tcp -S 0/0 -D 172.16.37.0/24

#
# UDP についても同様の設定をする。

/sbin/ipfwadm -F -a deny -o -P udp -S 0/0 -D 172.16.37.0/24
</verb></tscreen>

<!-- 
Good firewall configurations are a little tricky. This example
should be a reasonable starting point for you. The <em/ipfwadm/
manual page offers some assistance in how to use the tool. If
you intend to configure a firewall, be sure to ask around and
get as much advice from sources you consider reliable and get
someone to test/sanity check your configuration from the outside.
-->

よいファイアウォールの設定は多少トリッキーになっているものですが、ここ
に示した例は合理的にできており、様々な設定を追加する基本に使えるでしょ
う。

設定方法の詳細については <em>ipfwadm</em> のマニュアルを参照してくださ
い。ファイアウォールを設定する場合、周囲の人にたずねて、信頼するに足る
情報源からのアドバイスを可能な限り受けてください。そして、設定が正しく
機能しているかどうか、外部から確認してもらいましょう。

<sect1><heading>IPX (AF_IPX)
<p>
<!-- 
The IPX protocol is most commonly utilised in Novell NetWare(tm) local area
network environments. Linux includes support for this protocol, and may be
configured to act as a network endpoint, or as a router for IPX.
-->

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

<p>
<bf/カーネル構築時のオプションは:/
<tscreen><verb>
Networking options  --->
    [*] The IPX protocol
    [ ] Full internal IPX network
</verb></tscreen>

<!-- 
The IPX protocol and the NCPFS are covered in greater depth in the
<url url="IPX-HOWTO.html" name="IPX-HOWTO">.
-->

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

<sect1><heading>IPv6
<p>
<!-- 
Just when you thought you were beginning to understand IP networking the
rules get changed! IPv6 is the shorthand notation for version 6 of the Internet
Protocol. IPv6 was developed primarily to overcome the concerns in the Internet
community that there would soon be a shortage of IP addresses to allocate. IPv6
addresses are 32 bytes long (128 bits). IPv6 incorporates a number of other
changes, mostly simplifications, that will make IPv6 networks more managable
than IPv4 networks.
-->

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

<p>
<!-- 
Linux already has a working, but not completed, IPv6 implementation in
the <tt/2.1.*/ series kernels.
-->

Linux <tt>2.1.*</tt>シリーズには、既に IPv6 の実装が動いていますが、ま
だ完全ではありません。

<p>
<!-- 
If you wish to experiment with this new generation Internet technology, or
have a requirement for it, then you should read the 
IPv6-FAQ which is available from <url url="http://www.terra.net/ipv6/"
	name="www.terra.net">.
-->

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

<sect1><heading>ISDN
<p>
<!-- 
The Integrated Services Digital Network (ISDN) is a series of standards
that specify a general purpose switched digital data network. An ISDN `call'
creates a synchronous point to point data service to the destination. ISDN
is generally delivered on a high speed link that is broken down into a number
of discreet channels. There are two different types of channels, the
`B Channels' which will actually carry the user data, and a single channel
called the `D channel' which is used to send control information to the ISDN
exchange to establish calls and other functions. In Australia for example,
ISDN may be delivered on a 2Mbps link that is broken into 30 discreet 64kbps
B channels with one 64kbps D channel. Any number of channels may be used at a
time and in any combination. You could for example establish 30 seperate calls
to 30 different destinations at 64kbps each, or you could establish 15 calls
to 15 different destinations at 128kbps each (two channels used per call), or
just a small number of calls and leave the rest idle. A channel may be used
for either incoming or outgoing calls. The original intention of ISDN was to
allow Telecommunications companies to provide a single data service which could
deliver either telephone (via digitised voice) or data services to your home
or business without requiring you to make any special configuration changes.
-->

ISDN(Integrated Services Digital Network)とは、汎用のディジタル・スイッ
チ・ネットワークの規格の一種です。ISDN の `call' は、目的地との一対一
の同期的な接続を張ります。ISDN のデータは、通常、複数のチャネルに分割
された高速回線を経由して運ばれます。ISDN のチャネルには 2 つの種類があ
り、`B チャネル' が実際のデータを転送し、`D チャネル' と呼ばれる回線が
接続の確立など各種の情報をやりとりするために使われます。

オーストラリアを例にとると、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」を提供しています。

<p>
<!-- 
There are a few different ways to connect your computer to an ISDN service.
One way is to use a device called a `Terminal Adaptor' which plugs into the
Network Terminating Unit that you telecommunications carrier will have
installed when you got your ISDN service, and presents a number of serial
interfaces. One of those interfaces is used to enter commands to establish
calls and configuration, and the others are actually connected to the network
devices that will use the data circuits when they are established. Linux will
work in this sort of configuration without modification, you just treat
the port on the Terminal Adaptor like you would treat any other serial device.
Another way, which is the way the kernel ISDN support is designed for allows
you to install an ISDN card into your Linux machine and then has your Linux
software handle the protocols and make the calls itself.
-->

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

<p>
<bf/カーネルコンパイル時のオプションは/:
<tscreen><verb>
ISDN subsystem  --->
	<*> ISDN support
	[ ] Support synchronous PPP
	[ ] Support audio via ISDN
	< > ICN 2B and 4B support
	< > PCBIT-D support
	< > Teles/NICCY1016PC/Creatix support
</verb></tscreen>

<!-- 
The Linux implementation of ISDN support a number of different types of
internal ISDN cards. These are those listed in the kernel configuration
options:
-->

Linux の ISDN 機能は以下に示すような内蔵 ISDN カードをサポートしていま
す。これらはカーネルの設定オプションとして選択します。

<itemize>
<item/ICN 2B and 4B/
<item/Octal PCBIT-D/
<item/Teles ISDN-cards and compatibles/
</itemize>
<!-- 
Some of these cards require software to be downloaded to them to make them
operational. There is a seperate utility to do this with.
-->

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

<p>
<!-- 
Full details on how to configure the Linux ISDN support is available from
the <tt>/usr/src/linux/Documentation/isdn/</tt> directory and an FAQ dedicated
to <em>isdn4linux</em> is available at
<url url="http://www.lrz-muenchen.de/~ui161ab/www/isdn/"
	name="www.lrz-muenchen.de">.
(You can click on the english flag to get an english version).
-->

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

<p>
<!-- 
<bf/A note about PPP/. The PPP suite of protocols will operate over
either asynchronous or synchronous serial lines. The commonly distributed
PPP daemon for Linux `<em/pppd/' supports only asynchronous mode. If you wish
to run the PPP protocols over your ISDN service you need a specially modified
version. Details of where to find it are available in the documentation
referred to above.
-->

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

<sect1><heading>IP Masquerade
<p>
<!-- 
Many people have a simple dialup account to connect to the Internet. Nearly
everybody using this sort of configuration is allocated a single IP address
by the Internet Service Provider. This is normally enough to allow only one
host full access to the network. IP Masquerade is a clever trick that enables
you to have many machines make use of that one IP address, by causing the
other hosts to look like, hence the term masquerade, the machine supporting
the dialup connection. There is a small caveat, and that is that the
masqerade function nearly always works only in one direction, that is the
masqueraded hosts can make calls out, but they cannot accept or receive
network connections from remote hosts. This means that some network services
do not work such as <em/talk/ and others such as <em/ftp/ must be configured
to operate in passive (PASV) mode to operate. Fortunately the most common
network services such as <em/telnet/, World Wide Web and <em/irc/ do work
just fine.
-->

インターネットに接続するためにダイアルアップ接続を使っている人も多数い
ることでしょう。通常、1 つのホストがネットワークに接続するためには 1 
つの IP アドレスがあれば充分なので、このような接続の場合、ISP からは、
1 つの IP アドレスしか与えられません。IP Masquerade というのは、1 つの 
IP アドレスを複数のコンピュータが使うための賢い仕組みです。IP
Masquerade を使えば、Masquerade(偽装)という名の通り、外部のホストから
はダイアルアップ接続しているマシンと通信しているように見せながら、内部
の複数のマシンから通信を行うことが可能になります。

<p>
<bf/カーネルコンパイル時のオプション/:
<tscreen><verb>
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)
</verb></tscreen>

<!-- 
Normally you have your linux machine supporting a slip or PPP dialup line
just as it would if it were a standalone machine. Additionally it would have
another network device configured, perhaps an ethernet, configured with one
of the reserved network addresses. The hosts to be masqueraded would be on
this second network. Each of these hosts would have the IP address of the
ethernet port of the linux machine set as their default gateway or router.
-->

通常、ネットワークに接続していないマシンでも slip か PPP ダイアルアッ
プ接続機能を組みこんでいることでしょう。IP Masquerade を使うには、それ
に加えて別のネットワークデバイス、たいていの場合はイーサネットになるで
しょう、を設定して、プライベートネットワーク用に用意されている IP アド
レスを使って設定します。Masquerade 経由で接続するホストはこの 2 つめの
ネットワーク上にあります。イーサネット・ネットワーク上にある各マシンで
は、デフォルトの経路に IP Masquerade を組みこんでインターネットとのゲー
トウェイになっている Linux マシンを指定します。

<p>
<!-- 
A typical configuration might look something like this:
-->

よくある IP Masquerade の設定は下図のようになります。

<tscreen><verb>
-                                   -
 \                                  | 192.168.1.0
  \                                 |   /255.255.255.0
   \                 ---------      |
    |                | Linux | .1.1 |
NET =================| masq  |------|
    |    PPP/slip    | router|      |  --------
   /                 ---------      |--| host |
  /                                 |  |      |
 /                                  |  --------
-                                   -
</verb></tscreen>
<!-- 
The most relevant commands for this configuration are:
-->

この環境でもっともふさわしい設定は、

<tscreen><verb>
# Network route for ethernet
route add 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 
</verb></tscreen>

<!-- 
You can get more information on the Linux IP Masquerade feature from the
<url url="http://www.hwy401.com/achau/ipmasq/"
	name="IP Masquerade Resource Page">
-->

IP Masquerade 機能についての詳細は<url
url="http://www.hwy401.com/achau/ipmasq/"
	name="IP Masquerade Resource Page">にあります。


<sect1><heading>IP 透過プロキシ(IP Transparent Proxy)
<p>
<!-- 
IP transparent proxy is a feature that enables you to redirect servers or
services destined for another machine to those services on this machine.
Typically this would be useful where you have a linux machine as a router
and also provides a proxy server. You would redirect all connections destined
for that service remotely to the local proxy server.
-->

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

<p>
<bf/カーネルコンパイル時のオプション/:
<tscreen><verb>
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)
</verb></tscreen>

<!-- 
Configuration of the transparent proxy feature is performed using the
<em/ipfwadm/ command.
-->
transparent proxy 機能は <em>ipfwadm</em> コマンドで設定します。

<p>
<!-- 
An example that might useful is as follows:
-->

便利な設定は以下のとおり。
<tscreen><verb>
ipfwadm -I -a accept -D 0/0 80 -r 8080
</verb></tscreen>
<!-- 
This example will cause any connection attempts to port 80 (www) on any host
to be redirected to port 8080 on this host. This could be used to ensure
that all WWW traffic from your network is automatically directed to a local
WWW cache program.
-->

この例では外部のあらゆるホストの 80 番のポート(www)への接続を全てこの
マシンの 8080 番のポートへリダイレクトします。こうしておけば、ローカル
のネットワークからの全ての WWW に関する接続リクエストが、自動的にこの
マシンの WWW キャッシュプログラムへ送られます。

<sect1><heading>モバイル IP(Mobile IP)
<p>
<!-- 
The term "IP mobility" describes the ability of a host that is able to
move its network connection from one point on the Internet to another without
changing its IP address or losing connectivity. Usually when an IP host
changes its point of connectivity it must also change its IP address.
IP Mobility overcomes this problem by allocating a fixed IP address to the
mobile host and using IP encapsulation (tunneling) with automatic routing
to ensure that datagrams destined for it are routed to the actual IP address
it is currently using.
-->

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

<p>
<!-- 
A project is underway to provide a complete set of IP mobility tools for Linux.
The Status of the project and tools may be obtained from the: 
<url url="http://anchor.cs.binghamton.edu/~mobileip/"
	name="Linux Mobile IP Home Page">.
-->

Linux 用に IP mobility ツール一式を開発しようというプロジェクトが進行
中です。進行状況については
<url url="http://anchor.cs.binghamton.edu/~mobileip/"
	name="Linux Mobile IP Home Page"> で公開されています。必要なツール
もこのページからダウンロードできるかも知れません。

<sect1><heading>Multicast
<p>
<!-- 
IP Multicast allows an arbitrary number of IP hosts on disparate IP networks
to have IP datagrams simultaneously routed to them. This mechanism is exploited
to provide Internet wide "broadcast" material such as audio and video
transmissions and other novel applications.
-->

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

<p>
<bf/カーネルコンパイル時のオプション/:
<tscreen><verb>
Networking options  --->
	[*] TCP/IP networking
	....
	[*] IP: multicasting
</verb></tscreen>
<p>
<!-- 
A suite of tools and some minor network configuration is required. One source
of information on how to install and configure these for Linux is provided at
<url url="http://www.teksouth.com/linux/multicast/"
	name="www.teksouth.com">.
-->

IP マルチキャストを使うには、そのためのプログラムとが必要で、ネットワー
クにもいくつか特別の設定をする必要があります。Linux の場合にどのように
設定するかの説明は<url url="http://www.teksouth.com/linux/multicast/"
	name="www.teksouth.com"> にあります。

<sect1><heading>NetRom (AF_NETROM)
<p>
<!-- 
NetRom device names are `<tt/nr0/', `<tt/nr1/', etc.
-->

NetRom のデバイス名は `<tt>nr0</tt>'、`<tt>nr1</tt>' になります。

<p>
<bf/カーネルコンパイル時のオプション/:
<tscreen><verb>
Networking options  --->
    [*] Amateur Radio AX.25 Level 2
    [*] Amateur Radio NET/ROM
</verb></tscreen>
<!-- 
The AX25, Netrom and Rose protocols are covered by the
 <url url="AX25-HOWTO.html" name="AX25-HOWTO">.
These protocols are used by Amateur Radio Operators world wide in packet
radio experimentation.
-->

AX25 と Netrom、 Rose プロトコルについては<url url="AX25-HOWTO.html"
name="AX25-HOWTO">で説明されています。これらのプロトコルはアマチュア無
線のオペレータの間のパケット通信によく使われています。

<p>
<!-- 
Most of the work for implementation of these protocols has been done by
Jonathon Naylor, <tt/jsn@cs.not.ac.uk/.
-->

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

<sect1><heading>PLIP
<p>
<!-- 
PLIP device names are `<tt/plip0/', `<tt/plip1/, etc. The first device
configured is numbered `<tt/0/' and the others are numbered sequentially.
-->

PLIP のデバイス名は `<tt>plip0</tt>'、`<tt>plip1</tt>' のようになりま
す。最初のデバイスが `<tt>0</tt>' 番になり、以後順に番号が付けられてい
きます。

<p>
<bf/カーネルコンパイル時のオプション/:
<tscreen><verb>
Networking options  --->
    <*> PLIP (parallel port) support
</verb></tscreen>                            
<p>
<!-- 
<em>plip</em> (Parallel Line IP), is like SLIP, in that it is used for
providing a <em>point to point</em> network connection between two machines,
except that it is designed to use the parallel printer ports on your machine
instead of the serial ports. Because it is possible to transfer more than one
bit at a time with a parallel port, it is possible to attain higher speeds
with the <em>plip</em> interface than with a standard serial device. In
addition, even the simplest of parallel ports, printer ports, can be used, in
lieu of you having to purchase comparatively expensive 16550AFN UART's for your
serial ports.
-->

<em>plip</em>(Parallel Line IP)は、SLIP と同様に、2 台のマシンの間で 
<em>一対一</em> 接続の機能を提供しますが、シリアルポートの代りにパラレ
ルプリンタのポートを使って接続します。パラレルポートの場合、一度に複数
のビットを転送できるので、<em>plip</em> を使えば通常のシリアルポートを
使った接続よりは高速な接続が可能になります。加えて、SLIP の場合、(内蔵の
シリアルポートが 16450 UARTならば)比較的高価な 16550AFN UART シリアル
ポートを別途購入する必要がありますが、パラレルプリンタポートは通常の 
PC にはあらかじめ付いています。

<p>
<!-- 
Please note that some laptops use chipsets that will not work with PLIP
because they do not allow some combinations of signals that PLIP relies on,
that printers don't use.
-->

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

<p>
<!-- 
The Linux <em>plip</em> interface is compatible with the <em>Crynwyr Packet
Driver PLIP</em> and this will mean that you can connect your Linux machine
to a DOS machine running any other sort of tcp/ip software via <em>plip</em>.
-->

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

<p>
<!-- 
When compiling the kernel, there is only one file that might need to be looked
at to configure <em>plip</em>. That file is
<tt>/usr/src/linux/driver/net/CONFIG</tt> and it contains <em>plip</em>
timers in mS. The defaults are probably ok in most cases. You will probably
need to increase them if you have an especially slow computer, in which case
the timers to increase are actually on the <bf>other</bf> computer.
-->

 <em>plip</em> を使うためにカーネルのコンパイルする際、設定に関するファ
イルが1つだけあります。それは<tt>/usr/src/linux/driver/net/CONFIG</tt>
で、このファイルで <em>plip</em> のタイマを mS 単位で設定します。たい
ていの場合はデフォルトの設定のままでいいはずですが、特に遅いコンピュー
タを使っている場合はこの値を増した方がいいでしょう。実際にこのタイマの
設定を増さなければいけないのは、遅いマシンの方です。

<p>
<!-- 
The driver assumes the following defaults:
-->

PLIP ドライバは以下のようなIOアドレスと IRQ をデフォルト値にしています。

<tscreen><verb>
device  i/o addr    IRQ
------  --------    -----
plip0	0x3BC		5
plip1	0x378		7
plip2	0x278		2 (9)
</verb></tscreen>
<p>
<!-- 
If your parallel ports don't match any of the above combinations then you
can change the IRQ of a port using the <em>ifconfig</em> command using the
`<tt/irq/' parameter. Be sure to enable IRQ's on your printer ports in your
ROM BIOS if it supports this option.
-->

お使いのパラレルポートの設定が上記の組み合わせと異なる場合、
<em>ifconfig</em> コマンドの `<tt>irq</tt>' オプションを使ってポートの 
IRQ を変えることができます。ROM BIOS でプリンタポートが IRQ を使うか否
かを設定できる場合、忘れずに IRQ を使うように設定しておいてください。

<p>
<!-- 
To configure a <em>plip</em> interface, you will need to <bf>add</bf> the
following lines to your network <tt>rc</tt> file:
-->

<em>plip</em> インターフェイスを使うには、ネットワーク用の <tt>rc</tt>
ファイルに以下のような設定を追加するのがいいでしょう。

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

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

<!-- 
The <em>pointopoint</em> parameter has the same meaning as for SLIP,
in that it specifies the address of the machine at the other end of the
link.
-->

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

<!-- 
In almost all respects you can treat a <em>plip</em> interface as though it
were a <em>SLIP</em> interface, except that neither <em>dip</em> nor
<em>slattach</em> need be, nor can be, used.
-->

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

<sect2><heading>PLIP ケーブルの結線図
<p>
<!-- 
<em>plip</em> has been designed to use cables with the same pinout as those
commonly used by the better known of the MS-DOS based pc-pc file transfer
programs.
-->

<em>plip</em> は、MS-DOS 上で PC 間のファイル転送によく使われている
(Interlink などの使う)ケーブルと同じケーブルが使えるように設計されています。

<p>
<!-- 
The pinout diagram (taken from <tt>/usr/src/linux/drivers/net/plip.c</tt>)
looks as follows:
-->

ピンの配線は以下の通りです(<tt>/usr/src/linux/drivers/net/plip.c</tt>
より)

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

<!-- 
Notes:
Do not connect the pins marked with an asterisk `*'.
Extra grounds are 18,19,20,21,22,23 and 24.
-->

注意：
アスタリスク `*' のマークの付いたピンは配線しません。
18,19,20,21,22,23,24 はアースに落します。

<p>
<!-- 
If the cable you are using has a metallic shield, it should be connected to the
metallic DB-25 shell at <bf>one end only</bf>.
-->

金属でシールドされているケーブルの場合、そのシールドは DB-25 コネクタ
と<bf>一端でのみ</bf>接続していなければいけません。

<p>
<!-- 
<bf>Warning: A miswired PLIP cable can destroy your controller card.</bf> Be
very careful and double check every connection to ensure you don't cause
yourself any unnecessary work or heartache.
-->

<bf>警告 : ケーブルの配線を間違えるとコントローラカードが壊れるかも知
れません。</bf> 不要なトラブルや頭痛の種を残さないように、充分注意して
全ての配線を二重にチェックしましょう。

<p>
<!-- 
While you may be able to run PLIP cables for long distances, you should
avoid it if you can. The specifications for the cable allow for a cable
length of about 1 metre or so. Please be very careful when running long
plip cables as sources of strong electromagnetic fields such as lightning,
power lines and radio transmitters can interfere with and sometimes even
damage your controller. If you really want to connect two of your computers
over a large distance you really should be looking at obtaining a pair of
thin-net ethernet cards and running some coaxial cable.
-->

PLIP で長い距離を結びたくなるかも知れませんが、PLIP は長い距離では使わ
ない方が安全です。PLIP のケーブルの仕様は、せいぜい 1 メートルくらいの
長さまでしか考慮していません。PLIP で長い距離を伸ばす場合、ケーブルの
近くに強い電磁場を出すような装置、例えば照明器具や電力線、無線の送信機
などを置かないようにしましょう。これらの器具は通信を妨害するだけでなく、
パラレルポートのコントローラにダメージを与える場合もあります。2 台のコ
ンピュータを長い距離を隔てて接続しなければならない場合、thin net 用の
イーサネットカードを使って、同軸ケーブルで接続するようにする方がいいで
しょう。

<sect1><heading>PPP
<p>
<!-- 
PPP devices names are `<tt/ppp0/', `<tt/ppp1/, etc. Devices are numbered
sequentially with the first device configured receiving `<tt/0/'.
-->

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

<p>
<bf/カーネルコンパイル時のオプション/:
<tscreen><verb>
Networking options  --->
    <*> PPP (point-to-point) support
</verb></tscreen>
<p>
<!-- 
PPP configuration is covered in detail in the
<url url="PPP-HOWTO.html" name="PPP-HOWTO">.
-->

PPP の設定についての詳細は<url url="PPP-HOWTO.html" name="PPP-HOWTO">
に詳しい解説があります。

<p>
<sect2><heading>pppdを使ってインターネットと恒久的な接続をするには

<p>
<!-- 
If you are fortunate enough to have a semi permanent connection to the net and
would like to have your machine automatically redial your PPP connection if it
is lost then here is a simple trick to do so.
-->

シリアル回線を使って常にインターネットへ接続できる場合、以下に示す方法
で接続が切れた場合に自動的にリダイアルできます。

<p>
<!-- 
Configure PPP such that it can be started by the <tt/root/ user by issuing the
command:
-->

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

<tscreen><verb>
# pppd
</verb></tscreen>
<!-- 
<bf/Be sure/ that you have the `<tt/-detach/' option configured in your
<tt>/etc/ppp/options</tt> file. Then, insert the following line into your
<tt>/etc/inittab</tt> file, down with the <em/getty/ definitions:
-->

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

<tscreen><verb>
pd:23:respawn:/usr/sbin/pppd
</verb></tscreen>
<!-- 
This will cause the <em/init/ program to spawn and monitor the <em/pppd/
program, and automatically restart it if it dies.
-->

こうしておけば、<em>init</em> プログラムが spawn して <em>pppd</em> を
モニターし、<em>pppd</em> が死んだ場合は自動的に起動できます。

<sect1><heading>Rose プロトコル (AF_ROSE)
<p>
<!-- 
Rose device names are `<tt/rs0/', `<tt/rs1/', etc. in <tt/2.1.*/ kernels.
Rose is available in the <tt/2.1.*/ kernels.
-->

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

<p>
<bf/カーネルコンパイル時のオプション/:
<tscreen><verb>
Networking options  --->
    [*] Amateur Radio AX.25 Level 2
    <*> Amateur Radio X.25 PLP (Rose)
</verb></tscreen>
<!-- 
The AX25, Netrom and Rose protocols are covered by the
 <url url="AX25-HOWTO.html" name="AX25-HOWTO">.
These protocols are used by Amateur Radio Operators world wide in packet
radio experimentation.
-->

AX25 と Netrom、Rose プロトコルについては  <url url="AX25-HOWTO.html"
name="AX25-HOWTO">が詳しく説明しています。これらのプロトコルはパケット
通信の実験でアマチュア無線のオペレータがよく使っています。

<p>
<!-- 
Most of the work for implementation of these protocols has been done by
Jonathon Naylor, <tt/jsn@cs.not.ac.uk/.
-->

<sect1><heading>SAMBA - `NetBEUI', `NetBios' 機能
<p>
<!-- 
SAMBA is an implementation of the Session Management Block protocol. Samba
allows Microsoft and other systems to mount and use your disks and printers.
-->

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

<p>
<!-- 
SAMBA and its configuration are covered in detail in the
<url url="SMB-HOWTO.html" name="SMB-HOWTO">.
-->

SAMBA とその設定の詳細は
<url url="SMB-HOWTO.html" name="SMB-HOWTO">に詳しく解説されています。

<sect1><heading>SLIP クライアント
<p>
<!-- 
SLIP devices are named `<tt/sl0/', `<tt/sl1/' etc. with the first device
configured being assigned `<tt/0/' and the rest incrementing sequentially
as they are configured.
-->

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

<p>
<bf/カーネルコンパイル時のオプション/:
<tscreen><verb>
Network device support  --->
    [*] Network device support
    <*> SLIP (serial line) support
    [ ]  CSLIP compressed headers
    [ ]  Keepalive and linefill
    [ ]  Six bit SLIP encapsulation
</verb></tscreen>
<p>
<!-- 
SLIP (Serial Line Internet Protocol) allows you to use tcp/ip over a serial
line, be that a phone line with a dialup modem, or a leased line of some sort.
Of course to use SLIP you need access to a <em>SLIP-server</em> in your
area. Many universities and businesses provide SLIP access all over the
world.
-->

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

&lsqb;訳注: 日本では SLIP 接続よりも PPP 接続の方が主流です。&rsqb;

<p>
<!-- 
Slip uses the serial ports on your machine to carry IP datagrams. To do this
it must take control of the serial device. Slip device names are named
<em>sl0</em>, <em>sl1</em> etc. How do these correspond to your serial
devices ? The networking code uses what is called an <em>ioctl</em> (i/o
control) call to change the serial devices into SLIP devices. There are
two programs supplied that can do this, they are called <em>dip</em> and
<em>slattach</em>
-->

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

<p>
<sect2><heading>dip
<p>
<!-- 
<em>dip</em> (Dialup IP) is a smart program that is able to set the speed of
the serial device, command your modem to dial the remote end of the link,
automatically log you into the remote server, search for messages sent to you
by the server and extract information for them such as your IP address and
perform the <em>ioctl</em> necessary to switch your serial port into
SLIP mode. <em>dip</em> has a powerful scripting ability and it is this
that you can exploit to automate your logon procedure.
-->

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

<p>
<!-- 
You can find it at:
<url url="ftp://sunsite.unc.edu/pub/Linux/system/Network/serial/dip/dip337o-uri.tgz" name="sunsite.unc.edu">.
<p>
-->

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

インストールするには、以下のようにしてください。

<!-- 
To install it, try the following:
-->
<tscreen><verb>
#
# cd /usr/src
# gzip -dc dip337o-uri.tgz | tar xvf -
# cd dip-3.3.7o

<edit Makefile>

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

<p>
<!-- 
The <tt>Makefile</tt> assumes the existence of a group called <em>uucp</em>,
but you might like to change this to either <em>dip</em> or <em>SLIP</em>
depending on your configuration.
-->

このパッケージに入っている <tt>Makefile</tt> は <em>uucp</em> というグ
ループが存在することを前提にしています。しかし、環境によっては、このグ
ループを <em>dip</em> や <em>SLIP</em> にすることもできます。

<sect2><heading>slattach

<p>
<!-- 
<em>slattach</em> as contrasted with <em>dip</em> is a very simple program,
that is very easy to use, but does not have the sophistication of <em>dip</em>.
It does not have the scripting ability, all it does is configure your
serial device as a SLIP device. It assumes you have all the information you
need and the serial line is established before you invoke it. <em>slattach</em>
is ideal to use where you have a permanent connection to your server, such as
a physical cable, or a leased line.
-->

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

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

<p>
<!-- 
You would use <em>dip</em> when your link to the machine that is your SLIP
server is a dialup modem, or some other temporary link. You would use
<em>slattach</em> when you have a leased line, perhaps a cable, between your
machine and the server and there is no special action needed to get the link
working. See section `Permanent Slip connection' for more information.
-->

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

<!-- 
Configuring SLIP is much like configuring an Ethernet interface (read section
`Configuring an ethernet device' above). However there are a few key
differences.
-->

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

<!-- 
First of all, SLIP links are unlike ethernet networks in that there is
only ever two hosts on the network, one at each end of the link. Unlike
an ethernet that is available for use as soon are you are cabled, with
SLIP, depending on the type of link you have, you may have to initialize
your network connection in some special way.
-->

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

<!-- 
If you are using <em>dip</em> then this would not normally be done at
boot time, but at some time later, when you were ready to use the link.
It is possible to automate this procedure. If you are using <em>slattach</em>
then you will probably want to add a section to your <em>rc.inet1</em> file.
This will be described soon.
-->

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

<!-- 
There are two major types of SLIP servers: Dynamic IP address servers and
static IP address servers. Almost every SLIP server will prompt you to
login using a username and password when dialing in. <em>dip</em> can
handle logging you in automatically.
-->

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

<sect2><heading>あらかじめ決まった IP アドレスを使う SLIP サーバ

<p>
<!-- 
A static SLIP server in one in which you have been supplied an IP address
that is exclusively yours. Each time you connect to the server, you will
configure your SLIP port with that address. The static SLIP server will
answer your modem call, possibly prompt you for a username and password,
and then route any datagrams destined for your address to you via that
connection. If you have a static server, then you may want to put entries
for your hostname and IP address (since you know what it will be) into your
<tt>/etc/hosts</tt>. You should also configure some other files such as:
<tt>rc.inet2</tt>, <tt>host.conf</tt>, <tt>resolv.conf</tt>,
<tt>/etc/HOSTNAME</tt> and <tt>rc.local</tt>. Remember that when configuring
<tt>rc.inet1</tt>, you don't need to add any special commands for your SLIP
connection since it is <em>dip</em> that does all of the hard work for you in
configuring your interface. You will need to give <em>dip</em> the appropriate
information and it will configure the interface for you after commanding the
modem to establish the call and logging you into your SLIP server.
-->

あらかじめ割りあてておいた IP アドレスを使うタイプのサーバでは、事前に
専用の IP アドレスを各クライアントに割りあてて、各クライアントは接続の
際にその IP アドレスで SLIP ポートを設定します。この種の SLIP サーバで
は、モデムからの着信に答えて、ユーザ名とパスワードの入力を促してユーザ
を確認した後、あなた用の IP アドレス向けのデータグラムはすべてその 
SLIP デバイスに送るように経路制御情報を設定します。

この種のサーバを使っている場合、自分のホスト名と IP アドレスはあらかじ
め決まっているので <tt>/etc/hosts</tt> に書いておくことも可能です。ま
た、<tt>rc.inet2</tt> や <tt>host.conf</tt>、<tt>resolv.conf</tt>、
<tt>/etc/HOSTNAME</tt> <tt>rc.local</tt> などを通常の ethernet 接続と
同様に設定することができます。<tt>rc.inet1</tt> を設定する場合、SLIP 
接続用に特別のコマンドを設定する必要はありません。ネットワークインター
フェイスを設定するなどの作業は <em>dip</em> の仕事です。必要な情報は
<em>dip</em> に与え、<em>dip</em> がモデムを使って電話をかけ、接続が成
立してから必要な設定を実行するようにします。

<!-- 
If this is how your SLIP server works then you can move to section `Using Dip'
to learn how to configure <em>dip</em> appropriately.
-->

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

<sect2><heading>接続時に IP アドレスを割りあてるタイプのサーバ

<p>
<!-- 
A <em>dynamic</em> SLIP server is one which allocates you an IP address
randomly, from a pool of addresses, each time you logon. This means that
there is no guarantee that you will have any particular address each time,
and that address may well be used by someone else after you have logged off.
The network administrator who configured the SLIP server will have assigned
a pool of address for the SLIP server to use, when the server receives a new
incoming call, it finds the first unused address, guides the caller through
the login process and then prints a welcome message that contains the IP
address it has allocated and will proceed to use that IP address for the
duration of that call.
-->

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

この場合、ログインプロセスの中でウェルカム・メッセージとともに割り当て
た IP アドレスが示され、その接続の間はその IP アドレスを使って通信しま
す。

<!-- 
Configuring for this type of server is similar to configuring for a static
server, except that you must add a step where you obtain the IP address that
the server has allocated for you and configure your SLIP device with that.
-->

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

<!-- 
Again, <em>dip</em> does the hard work and new versions are smart enough to
not only log you in, but to also be able to automatically read the IP address
printed in the welcome message and store it so that you can have it configure
your SLIP device with it.
-->

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

<!-- 
If this is how your SLIP server works then you can move to section `Using Dip'
to learn how to configure <em>dip</em> appropriately.
-->

接続先の SLIP サーバがこの種の設定の場合、次に <em>dip</em> の設定の仕方を知
るために「DIP の使い方」の節へ進んでください。

<sect2><heading>DIP の使いかた
<p>
<!-- 
As explained earlier, <em>dip</em> is a powerful program that can simplify
and automate the process of dialing into the SLIP server, logging you in,
starting the connection and configuring your SLIP devices with the
appropriate <em>ifconfig</em> and <em>route</em> commands.
-->

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

<!-- 
Essentially to use <em>dip</em> you'll write a `dip script', which is
basically a list of commands that <em>dip</em> understands that tell
<em>dip</em> how to perform each of the actions you want it to perform. See
<tt>sample.dip</tt> that comes supplied with <em>dip</em> to get an idea
of how it works. <em>dip</em> is quite a powerful program, with many options.
Instead of going into all of them here you should looks at the <em>man</em>
page, README and sample files that will have come with your version of
<em>dip</em>.
-->

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

<!-- 
You may notice that the <tt>sample.dip</tt> script assumes that you're using
a static SLIP server, so you know what your IP address is beforehand. For
dynamic SLIP servers, the newer versions of <em>dip</em> include a command
you can use to automatically read and configure your SLIP device with the
IP address that the dynamic server allocates for you. The following sample
is a modified version of the <tt>sample.dip</tt> that came supplied with
<em>dip337j-uri.tgz</em> and is probably a good starting point for you.
You might like to save it as <tt>/etc/dipscript</tt> and edit it to suit your
configuration:
-->

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

<tscreen><verb>
#
# sample.dip	Dialup IP connection support program.
#
# このファイルは DIP の使い方を示しています(いるべきです)。このファイル
# の設定で Annex タイプの動的 SLIP サーバと接続できるはずです。静的なア
# ドレスを使うタイプのサーバの場合、dip337-uri.tgz パッケージに付属の 
# sample.dip ファイルを使ってください。

#
#
# Version:	@(#)sample.dip	1.40	07/20/93
#
# Author:	Fred N. van Kempen, <waltje@uWalt.NL.Mugnet.ORG>
#

main:
# 次に接続先に名前とアドレスを設定します。私の使っているダイアルイン
# マシンは 'xs4all.hactic.nl'(== 193.78.33.42) です。

get $remote xs4all.hacktic.nl
# Set netmask on sl0 to 255.255.255.0
netmask 255.255.255.0
# Set the desired serial port and speed.
port cua02
speed 38400

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

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

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

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

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

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

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

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

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

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

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

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

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

exit:
exit
</verb></tscreen>

<!-- 
The above example assumes you are calling a <em>dynamic</em> SLIP server, if
you are calling a <em>static</em> SLIP server, then the <tt>sample.dip</tt>
file that comes with <em>dip337j-uri.tgz</em> should work for you.
-->

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

<p>
<!-- 
When <em>dip</em> is given the <em>get &dollar;local</em> command it 
searches the incoming text from the remote end for a string that looks like an
IP address, ie strings numbers separated by `.' characters. This modification
was put in place specifically for <em>dynamic</em> SLIP servers, so that the
process of reading the IP address granted by the server could be automated.
-->

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

<p>
<!-- 
The example above will automatically create a default route via your SLIP link,
if this is not what you want, you might have an ethernet connection that should
be your default route, then remove the <em>default</em> command from the script.
After this script has finished running, if you do an <em>ifconfig</em> command,
you will see that you have a device <em>sl0</em>. This is your SLIP device.
Should you need to, you can modify its configuration manually, after the
<em>dip</em> command has finished, using the <em>ifconfig</em> and
<em>route</em> commands.
-->

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

<!-- 
Please note that <em>dip</em> allows you to select a number of different
protocols to use with the <tt>mode</tt> command, the most common example is
<em>cSLIP</em> for SLIP with compression. Please note that both ends of the
link must agree, so you should ensure that whatever you select agrees with
what your server is set to.
-->

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

<!-- 
The above example is fairly robust and should cope with most errors. Please
refer to the <em>dip</em> man page for more information. Naturally you could,
for example, code the script to do such things as redial the server if it
doesn't get a connection within a prescribed period of time, or even try
a series of servers if you have access to more than one.
-->

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

<sect2><heading>専用線と slattach を使って恒久的な SLIP 接続を行うには。

<p>
<!-- 
If you have a cable between two machines, or are fortunate enough to have a
leased line, or some other permanent serial connection between your machine
and another, then you don't need to go to all the trouble of using
<em>dip</em> to set up your serial link. <em>slattach</em> is a very simple
to use utility that will allow you just enough functionality to configure your
connection.
-->

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

<!-- 
Since your connection will be a permanent one, you will want to add some
commands to your <tt>rc.inet1</tt> file. In essence all you need to do for
a permanent connection is ensure that you configure the serial device to
the correct speed and switch the serial device into SLIP mode. <em>slattach</em>
allows you to do this with one command. <bf>Add</bf> the following to your
<tt>rc.inet1</tt> file:
-->

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

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

Where:

ここで、
<descrip>
<tag>IPA.IPA.IPA.IPA</tag>
は、あなたのマシンの IP アドレスで、

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

</descrip>

<!-- 
<em>slattach</em> allocated the first unallocated SLIP device to the serial
device specified. <em>slattach</em> starts with <em>sl0</em>. Therefore
the first <em>slattach</em> command attaches SLIP device <em>sl0</em> to
the serial device specified and <em>sl1</em> the next time, etc.
-->

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

<!-- 
<em>slattach</em> allows you to configure a number of different protocols with
the <tt>-p</tt> argument. In your case you will use either <em>SLIP</em> or
<em>cSLIP</em> depending on whether you want to use compression or not.
Note: both ends must agree on whether you want compression or not.
-->

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

<sect1><heading>SLIP サーバ
<p>
<!-- 
If you have a machine that is perhaps network connected, that you'd like
other people be able to dial into and provide network services, then you
will need to configure your machine as a server. If you want to use SLIP
as the serial line protocol, then currently you have three options as to how
to configure your Linux machine as a SLIP server. My preference would be to
use the first presented, <em>sliplogin</em>, as it seems the easiest to
configure and understand, but I will present a summary of each, so you can
make your own decision.
-->

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

<sect2><heading>sliplogin を使った SLIP サーバの設定


<p>
<!-- 
<em/sliplogin/ is a program that you can use in place of the normal login
shell for SLIP users that converts the terminal line into a SLIP line. It
allows you to configure your Linux machine as either a <em/static address
server/, users get the same address everytime they call in, or a
<em/dynamic address server/, where users get an address allocated for
them which will not necessarily be the same as the last time they called.
-->

<em>sliplogin</em> は通常の login シェルの代りに使う SLIP ユーザ用のプ
ログラムで、端末の回線を SLIP モードに変更します。<em>sliplogin</em> 
を使えば、あらかじめユーザごとに割りあてておいた IP アドレスを使うサー
バ(静的サーバ)にも、あらかじめ用意しておいた IP アドレスの中から接続の
度に IP アドレスを割りあてるサーバ(動的サーバ)にも設定可能です。

<p>
<!-- 
The caller will login as per the standard login process, entering their username
and password, but instead of being presented with a shell after their login,
<em/sliplogin/ is executed which searches its configuration file
(<tt>/etc/slip.hosts</tt>) for an entry with a login name that matches that of
the caller. If it locates one, it configures the line as an 8bit clean line,
and uses an <em/ioctl/ call to convert the line discipline to SLIP. When
this process is complete, the last stage of configuration takes place, where
<em/sliplogin/ invokes a shell script which configures the SLIP interface
with the relevant ip address, netmask and sets appropriate routing in place.
This script is usually called <tt>/etc/slip.login</tt>, but in a similar manner
to <em/getty/, if you have certain callers that require special
initialisation, then you can create configuration scripts called
<tt>/etc/slip.login.loginname</tt> that will be run instead of the default
specifically for them.
-->

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

<p>
<!-- 
There are either three or four files that you need to configure to get
<em/sliplogin/ working for you. I will detail how and where to
get the software and how each is configured in detail. The files are:
-->

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

必要なファイルは以下の通りです。

<itemize>
<item><tt>/etc/passwd</tt>
は電話経由で接続してくるユーザのアカウントを設定します。

<item>
<tt>/etc/slip.hosts</tt> には、それぞれのユーザごとの情報を設定します。

<item><tt>/etc/slip.login</tt>
には、ユーザに必要な経路制御の設定を行います。

<item><tt>/etc/slip.tty</tt>
は、IP アドレスを自動的に割りあてる「動的サーバ」の設定の場合にのみ必
要なファイルで、割りあてるべきアドレスの表になっています。

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

</itemize>

<sect3><heading>sliplogin の入手先

<p>
<!-- 
You may already have the <em/sliplogin/ package installed as part of your
distribution, if not then <em/sliplogin/ can be obtained from:
<url url="ftp://sunsite.unc.edu/pub/linux/system/Network/serial/sliplogin-2.1.1.tar.gz" name="sunsite.unc.edu">.
The tar file contains both source, precompiled binaries and a <em/man/ page.
-->

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

<p>
<!-- 
To ensure that only authorised users will be able to run <em/sliplogin/
program, you should add an entry to your <tt>/etc/group</tt> file similar to
the following:
-->

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

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

<!-- 
When you install the <em/sliplogin/ package, the <tt/Makefile/ will
change the group ownership of the <em/sliplogin/ program to <tt/slip/,
and this will mean that only users who belong to that group will be able
to execute it. The example above will allow only users <tt/radio/ and <tt/fred/
to execute <em/sliplogin/.
-->

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

<p>
<!-- 
To install the binaries into your <tt>/sbin</tt> directory and the <em/man/
page into section 8, do the following:
-->

必要なバイナリを<tt>/sbin</tt> ディレクトリにインストールし、
<em>man</em>ページをマニュアルの 8 章に登録するには以下のようにしてく
ださい。

<tscreen><verb>
# cd /usr/src
# gzip -dc .../sliplogin-2.1.1.tar.gz | tar xvf -
# cd sliplogin-2.1.1
# <..edit the Makefile if you don't use shadow passwords..>
# make install
</verb></tscreen>

<!-- 
If you want to recompile the binaries before installation, add a
<tt/make clean/ before the <tt/make install/. If you want to install
the binaries somewhere else, you will need to edit the <tt/Makefile/
<em/install/ rule.
-->

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

<p>
<!-- 
Please read the <tt/README/ files that come with the package for more
information.
-->

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

<sect3><heading>SLIP ホスト用の /etc/passwd 
<p>
<!-- 
Normally you would create some special logins for Slip callers in your
<tt>/etc/passwd</tt> file. A convention commonly followed is to use the
<em/hostname/ of the calling host with a capital `S' prefixing it. So,
for example, if the calling host is called <tt/radio/ then you could
create a <tt>/etc/passwd</tt> entry that looked like:
-->

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

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

<!-- 
It doesn't really matter what the account is called, so long as it is
meaningful to you.
-->

実際には、アカウント名は特に意味が無いので、分りやすい名前を付けるよう
にてください。

<p>
<!-- 
Note: the caller doesn't need any special home directory, as they will not
be presented with a shell from this machine, so <tt>/tmp</tt> is a good choice.
Also note that <em>sliplogin</em> is used in place of the normal login shell.
-->

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

<sect3><heading>/etc/slip.hosts の設定
<p>
<!-- 
The <tt>/etc/slip.hosts</tt> file is the file that <em/sliplogin/
searches for entries matching the login name to obtain configuration details
for this caller. It is this file where you specify the ip address and netmask
that will be assigned to the caller and configured for their use. Sample
entries for two hosts, one a static configuration for host <tt/radio/ and
another, a dynamic configuration for user host <tt/albert/ might look like:
-->

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

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

<!-- 
The <tt>/etc/slip.hosts</tt> file entries are:
-->

<tt>/etc/slip.hosts</tt> ファイルのエントリは：

<enum>
<item>電話をかけてきた人のログイン名

<item>サーバーマシン、すなわちこのマシンの IP アドレス

<!-- 
<item>ip address that the caller will be assigned. If this field is coded
<tt/DYNAMIC/ then an ip address will be allocated based on the information
contained in your <tt>/etc/slip.tty</tt> file discussed later. <bf/Note:/
you must be using at least version 1.3 of sliplogin for this to work.
-->
<item>
電話をかけてきたホストに割り当てる IP アドレス。この欄が 
<tt>DYNAMIC</tt> になっていれば、後述する <tt>/etc/slip.tty</tt> ファ
イルにある情報に従って IP アドレスを割りあてます。<bf>注意 : </bf>この
機能を使うには、最低でもバージョン 1.3 以上の sliplogin が必要です。

<!-- 
<item>the netmask assigned to the calling machine in dotted decimal notation
eg 255.255.255.0 for a Class C network mask.
-->

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

<!-- 
<item>slip mode setting which allows you to enable/disable compression and
slip other features.
-->

<item>slip モードの設定によって圧縮の有無やその他の slip の機能を使う
ことも可能です。

<!-- 
<item>timeout parameter specified how long the line can remain idle (no
datagrams received) before the line is automatically disconnected. A negative
value disables this feature.
-->

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

<!-- 
<item>optional arguments.
-->
<item>
その他の引数。

</enum>

<!-- 
Note: You can use either hostnames or IP addresses in dotted decimal notation
for fields 2 and 3. If you use hostnames then those hosts must be resolvable,
that is, your machine must be able to locate an ip address for those hostnames,
otherwise the script will fail when it is called. You can test this by
trying trying to telnet to the hostname, if you get the
`<em/Trying nnn.nnn.nnn.../' message then your machine has been able to find
an ip address for that name. If you get the message `<em/Unknown host/', then
it has not. If not, either use ip addresses in dotted decimal notation, or fix
up your name resolver configuration (See section <tt/Name Resolution/).
-->

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

<p>
<!-- 
The most common slip modes are:
-->

slip でよく使うモードには

<descrip>
<tag>normal</tag>
通常の非圧縮の SLIP

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

</descrip>

の 2 つ があります。

<!-- 
Naturally these are mutually exclusive, you can use one or the other. For more
information on the other options available, refer to the <em>man</em> pages.
-->

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

<sect3><heading>/etc/slip.login ファイルの設定
<p>
<!-- 
After <em>sliplogin</em> has searched the <tt>/etc/slip.hosts</tt> and found
a matching entry, it will attempt to execute the <tt>/etc/slip.login</tt> file
to actually configure the SLIP interface with its ip address and netmask.
-->

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

<!-- 
The sample <tt>/etc/slip.login</tt> file supplied with the <em>sliplogin</em>
package looks like this:
-->

<em>sliplogin</em> パッケージと共に配布されている 
<tt>/etc/slip.login</tt> ファイルは以下のようになっています。

<tscreen><verb>
#!/bin/sh -
#
#       @(#)slip.login  5.1 (Berkeley) 7/1/90
#
# generic login file for a SLIP line.  sliplogin invokes this with
# the parameters:
#     $1       $2       $3    $4, $5, $6 ...
#   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
#
</verb></tscreen>

<!-- 
You will note that this script simply uses the <em>ifconfig</em> and
<em>route</em> commands to configure the SLIP device with its ipaddress,
remote ip address and netmask and creates a route for the remote address via
the SLIP device. Just the same as you would if you were using the
<em>slattach</em> command.
-->

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

<p>
<!-- 
Note also the use of <em>Proxy ARP</em> to ensure that other hosts on the same
ethernet as the server machine will know how to reach the dial-in host.
The <tt>&lt;hw_addr></tt> field should be the hardware address of the ethernet
card in the machine. If your server machine isn't on an ethernet network then
you can leave this line out completely.
-->

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

<sect3><heading>/etc/slip.logout ファイルの設定
<p>
<!-- 
When the call drops out, you want to ensure that the serial device is restored
to its normal state so that future callers will be able to login correctly.
This is achieved with the use of the <tt>/etc/slip.logout</tt> file. It is
quite simple in format and is called with the same argument as the
<tt>/etc/slip.login</tt> file.
-->

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

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

<!-- 
All it does is `down' the interface which will delete the manual route
previously created. It also uses the <em>arp</em> command to delete any proxy
arp put in place, again, you don't need the <em>arp</em> command in the script
if your server machine does not have an ethernet port.
-->

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

<sect3><heading>/etc/slip.ttyファイル
<p>
<!-- 
If you are using dynamic ip address allocation (have any hosts configured
with the <tt>DYNAMIC</tt> keyword in the <tt>/etc/slip.hosts</tt> file, then
you must configure the <tt>/etc/slip.tty</tt> file to list what addresses
are assigned to what port. You only need this file if you wish your server
to dynamically allocate addresses to users.
-->

動的に IP アドレスを割りあてる場合、すなわち、<tt>/etc/slip.hosts</tt> 
に <tt>DYNAMIC</tt> というキーワードを指定したエントリを作った場合、割
りあてるポート用の IP アドレスを登録するための <tt>/etc/slip.tty</tt> 
ファイルを設定しなければなりません。

<p>
<!-- 
The file is a table that lists the <em>tty</em> devices that will support
dial-in SLIP connections and the ip address that should be assigned to users
who call in on that port.
-->

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

<!-- 
Its format is as follows:
-->

このファイルのフォーマットは以下のようになっています。
<tscreen><verb>
# slip.tty    tty -> IP address mappings for dynamic SLIP
# format: /dev/tty?? xxx.xxx.xxx.xxx
#
/dev/ttyS0      192.168.0.100
/dev/ttyS1      192.168.0.101
#
</verb></tscreen>

<p>
<!-- 
What this table says is that callers that dial in on port <tt>/dev/ttyS0</tt>
who have their remote address field in the <tt>/etc/slip.hosts</tt> file
set to <tt>DYNAMIC</tt> will be assigned an address of <tt>192.168.0.100</tt>.
-->

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

<p>
<!-- 
In this way you need only allocate one address per port for all users who do
not require an dedicated address for themselves. This helps you keep the number
of addresses you need down to a minimum to avoid wastage.
-->

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

<sect2><heading>dip を使った SLIP サーバ
<p>
<!-- 
Let me start by saying that some of the information below came from the
<em>dip</em> man pages, where how to run Linux as a SLIP server is briefly
documented. Please also beware that the following has been based on
the <em>dip337o-uri.tgz</em> package and probably will not apply to other
versions of <em>dip</em>.
-->

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

<!-- 
<em>dip</em> has an input mode of operation, where it automatically locates
an entry for the user who invoked it and configures the serial line as
a SLIP link according to information it finds in the <tt>/etc/diphosts</tt>
file. This input mode of operation is activated by invoking <em>dip</em>
as <em>diplogin</em>. This therefore is how you use <em>dip</em> as a SLIP
server, by creating special accounts where <em>diplogin</em> is used as the
login shell.
-->

<em>dip</em> には input モードがあり、この機能を使えば、
<tt>/etc/diphosts</tt> ファイルの設定に従って、自動的にシリアル回線を 
SLIP 接続として設定可能です。このモードに入るには、
<em>dip</em> を <em>diplogin</em> という名前で起動します。この機能を使
えば <em>dip</em> を使って SLIP サーバを構築でき、その場合、
ログイン・シェルに <em>diplogin</em> を使います。

<!-- 
The first thing you will need to do is to make a symbolic link as follows:
-->

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

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

<!-- 
You then need to add entries to both your <tt>/etc/passwd</tt> and your
<tt>/etc/diphosts</tt> files. The entries you need to make are formatted
as follows:
-->

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

<!-- 
To configure Linux as a SLIP server with <em>dip</em>, you need to create some
special SLIP accounts for users, where <em>dip</em> (in input mode) is used as
the login shell. A suggested convention is that of having all SLIP accounts
begin with a capital `S', eg `Sfredm'.
-->

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

<!-- 
A sample <tt>/etc/passwd</tt> entry for a SLIP user looks like:
-->

SLIP ユーザ用の <tt>/etc/passwd</tt> ファイルのエントリはこのようにな
ります。

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

<!-- 
After the user logs in, the <em>login(1)</em> program, if it finds and verifies
the user ok, will execute the <em>diplogin</em> command. <em>dip</em>, when
invoked as <em>diplogin</em> knows that it should automatically assume that it
is being used a login shell. When it is started as <em>diplogin</em> the first
thing it does is use the <em>getuid()</em> function call to get the userid of
whoever has invoked it. It then searches the <tt>/etc/diphosts</tt> file for
the first entry that matches either the userid or the name of the <em>tty</em>
device that the call has come in on and configures itself appropriately.
By judicious decision as to whether to give a user an entry in the
<tt>diphosts</tt> file, or whether to let the user be given the default
configuration you can build your server in such a way that you can have
a mix of static and dynamically assigned address users.
-->

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

<!-- 
<em>dip</em> will automatically add a `Proxy-ARP' entry if invoked in input
mode, so you do not need to worry about manually adding such entries.
-->

<em>dip</em> コマンドは input モードで起動されれば、自動的に 
`Proxy-ARP' エントリを追加するので、<em>arp</em> コマンドを手動で実行
する必要はありません。

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

<p>
<!-- 
<tt>/etc/diphosts</tt> is used by <em>dip</em> to lookup preset
configurations for remote hosts. These remote hosts might be users
dialing into your linux machine, or they might be for machines that you dial
into with your linux machine.
-->

 <em>dip</em> が接続してきたホストを設定するために、
<em>/etc/diphosts</em> ファイルをあらかじめ用意しておきます。このファ
イルに設定するホストは電話をかけて接続してくるマシンの場合もあれば、あ
なたのマシンが接続する先のホストの場合もあります。

<!-- 
The general format for <tt>/etc/diphosts</tt> is as follows:
-->

<tt>/etc/diphosts</tt> の一般的な書式は以下の通りです：

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

The fields are:
-->

各欄の意味は : 
<enum>
<item><tt>login name</tt>:
は getpwuid(getuid()) で得た名前か tty 名が使われます

<item><tt>unused</tt>:
passwd との互換性のためのフィールドで、特に使ってはいません。

<item><tt>Remote Address</tt>:
接続先のホストの IP アドレスを数字か名前で指定します。

<item><tt>Local Address</tt>: 
このマシンの IP アドレスです。これも名前か数字で指定します。

<item><tt>Netmask</tt>: 
はドット区切り 10 進表記で登録します。

<item><tt>Comment field</tt>:
には何を書いても構いません。

<item><tt>protocol</tt>: SLIP, CSLIP など。

<item><tt>MTU</tt>: 10進表記
</enum>
<!-- 
An example <tt>/etc/net/diphosts</tt> entry for a remote SLIP user might be:
-->

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

<tscreen><verb>
Sfredm::145.71.34.1:145.71.34.2:255.255.255.0:SLIP uwalt:SLIP,296
</verb></tscreen>
<!-- 
which specifies a SLIP link with remote address of 145.71.34.1 and MTU of 296,
or:
-->

この例では 145.71.34.1 への SLIP 接続の MTU を 296 にしています。また、

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

この例では圧縮をかけた cSLIP を使って 145.71.34.1 のアドレスに MTU
1006 で接続します。

<!-- 
which specifies a cSLIP-capable link with remote address 145.71.34.1 and MTU
of 1006.
-->

<!-- 
Therefore, all users who you wish to be allowed a statically allocated dial-up
IP access should have an entry in the <tt>/etc/diphosts</tt> and if you want
users who call a particular port to have their details dynamically allocated
you must have an entry for the <tt>tty</tt> device and do not configure a
user based entry. You should remember to configure at least one entry for
each <tt>tty</tt> device that your dialup users use to ensure that a suitable
configuration is available for them regardless of which modem they call in on.
-->

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

<!-- 
When a user logs in, they will receive a normal login and password prompt, at
which they should enter their SLIP-login userid and password. If they check out
ok, then the user will see no special messages, they should just change into
SLIP mode at their end and then they should be able to connect ok and be
configured with the parameters from the <tt>diphosts</tt> file.
-->

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

<sect2><heading>dSLIPパッケージを使ったSLIPサーバ

<p>
<!-- 
Matt Dillon <tt>&lt;dillon@apollo.west.oic.com></tt> has written a package
that does not only dial-in but also dial-out SLIP. Matt's package is
a combination of small programs and scripts that manage your connections
for you. You will need to have <em>tcsh</em> installed as at least one
of the scripts requires it. Matt supplies a binary copy of the <em>expect</em>
utility as it too is needed by one of the scripts. You will most likely need
some experience with <em>expect</em> to get this package working to your
liking, but don't let that put you off.
-->

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

<p>
<!-- 
Matt has written a good set of installation instructions in the
README file, so I won't bother repeating them.
-->

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

<p>
<!-- 
You can get the <em>dSLIP</em> package from its home site at:
-->

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

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

<!-- 
or from:
-->

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

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

<!-- 
Read the <tt>README</tt> file and create the <tt>/etc/passwd</tt> and
<tt>/etc/group</tt> entries <bf>before</bf> doing a <tt>make install</tt>.
-->

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

<sect1><heading>STRIP (Starmode Radio IP) 機能
<p>
<!-- 
STRIP device names are `<tt/st0/', `<tt/st1/', etc.
-->

STRIP のデバイス名は `<tt>st0</tt>'、`<tt>st1</tt>' になります。

<p>
<bf/カーネルコンパイル時のオプション/:
<tscreen><verb>
Network device support  --->
	[*] Network device support
	....
	[*] Radio network interfaces
	< > STRIP (Metricom starmode radio IP)
</verb></tscreen>

<!-- 
STRIP is a protocol designed specifically for a range of Metricom radio modems
for a research project being conducted by Stanford University called the
<url url="http://mosquitonet.Stanford.EDU/mosquitonet.html"
	name="MosquitoNet Project">.
There is a lot of interesting reading here, even if you aren't directly
interested in the project.
-->

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

<p>
<!-- 
The Metricom radios connect to a serial port, employ spread spectrum
technology and are typically capable of about 100kbps.
Information on the Metricom radios is available from the:
<url url="http://www.metricom.com/"
	name="Metricom Web Server">.
-->

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

<p>
<!-- 
At present the standard network tools and utilities do not support the
STRIP driver, so you will have to download some customised tools from the
MosquitoNet web server. Details on what software you need is available at the:
<url url="http://mosquitonet.Stanford.EDU/strip.html"
	name="MosquitoNet STRIP Page">.
-->

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

<p>
<!-- 
A summary of configuration is that you use a modified <em/slattach/ program
to set the line discipline of a serial tty device to STRIP, and then configure
the resulting `<tt/st[0-9]/' device as you would for ethernet with one
important exception, for technical reasons STRIP does not support the ARP
protocol, so you must manually configure the ARP entries for each of the hosts
on your subnet. This shouldn't prove too onerous.
-->

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


<sect1><heading>Token Ring
<p>
<!-- 
Token ring device names are `<tt/tr0/', `<tt/tr1/' etc. Token Ring is an
IBM standard LAN protocol that avoids collisions by providing a mechanism
that allows only node station on the LAN the right to transmit at a time.
A `token' is held by one station at a time, and the station holding the
token is the only station allowed to transmit. When it has transmitted
its data it passes the token onto the next station. The token loops amongst
all active stations, hence the name `Token Ring'.
-->

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

<p>
<bf/カーネルコンパイル時のオプション/:
<tscreen><verb>
Network device support  --->
	[*] Network device support
	....
	[*] Token Ring driver support
	< > IBM Tropic chipset based adaptor support
</verb></tscreen>
<!-- 
Configuration of token ring is identical to that of ethernet with the exception
of the network device name to configure.
-->

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

<sect1><heading>X.25
<p>
<!-- 
X.25 is a circuit based packet switching protocol defined by the
<tt/C.C.I.T.T./ (a standards body recognised by Telecommunications companies
in most parts of the world). An implementation of X.25 and LAPB are being
worked on, and recent <tt/2.1.*/ kernels include the work in progress.
-->

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

<p>
<!-- 
Jonathon Naylor <tt>jsn@cs.nott.ac.uk</tt> is leading the development and
a mailing list has been established to discuss Linux X.25 related matters.
To subscribe send a message to: <tt/majordomo@vger.rutgers.edu/ with the
text "<tt/subscribe linux-x25/" in the body of the message.
-->

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

<p>
<!-- 
Early versions of the configuration tools may be obtained from Jonathon's ftp
site at <url url="ftp://ftp.cs.nott.ac.uk/jsn/" name="ftp.cs.nott.ac.uk">ん.
-->

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

<sect1><heading>WaveLan Card
<p>
<!-- 
Wavelan device names are `<tt/eth0/', `<tt/eth1/', etc.
-->

Wavelan のデバイス名は `<tt>eth0</tt>'、`<tt>eth1</tt>' のようになりま
す。
<p>
<bf/Kernel Compile Options/:
<tscreen><verb>
Network device support  --->
	[*] Network device support
	....
	[*] Radio network interfaces
	....
	<*> WaveLAN support
</verb></tscreen>

<!-- 
The WaveLAN card is a spread spectrum wireless lan card. The card looks
very like an ethernet card in practice and is configured in much the same
way.
-->

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

<p>
<!-- 
You can get information on the Wavelan card from
<url url="http://www.wavelan.com/" name="Wavelan.com">.
-->

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

<sect><heading>ケーブルと接続方法

<p>
<!-- 
Those of you handy with a soldering iron may want to build your own cables
to interconnect two linux machines. The following cabling diagrams should
assist you in this.
-->

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

<sect1><heading>シリアル・ヌル・モデムケーブル
<p>
<!-- 
Not all NULL modem cables are alike. Many null modem cables do little more
than trick your computer into thinking all the appropriate signals are
present and swap transmit and receive data. This is ok but means that you
must use software flow control (XON/XOFF) which is less efficient than
hardware flow control. The following cable provides the best possible signalling
between machines and allows you to use hardware (RTS/CTS) flow control.
-->

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

<tscreen><verb>
Pin Name  Pin                               Pin
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
</verb></tscreen>

<sect1><heading>パラレルポート用ケーブル(PLIP ケーブル)
<p>
<!-- 
If you intend to use the PLIP protocol between two machines then this cable
will work for you irrespective of what sort of parallel ports you have
installed.
-->

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

<tscreen><verb>
Pin Name    pin            pin
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
</verb></tscreen>

<!-- 
Notes:
-->
注意：
<itemize>
<item>
アスタリスク(*)のついているピンは接続しないこと
<item>
18,19,20,21,22,23,24 はアースです。

<item><!-- 
If the cable you are using has a metallic shield, it should be connected
to the metallic DB-25 shell at <bf/one end only/.
-->
お使いのケーブルが金属シールドされている場合、シールドはDB-25 コネクタ
と<bf>一端でのみ</bf>接続してください。

</itemize>
<!-- 
<bf>Warning: A miswired PLIP cable can destroy your controller card.</bf> Be
very careful and double check every connection to ensure you don't cause
yourself any unnecessary work or heartache.
-->
<bf>警告: 配線を間違えた PLIP ケーブルを使うとコントロールカードが破壊
されるかも知れません。</bf> 全ての配線をダブルチェックして、将来の不要
な手間や頭痛のタネが無くなるように、充分注意して配線してください。

<sect1><heading>10base2 (thin coax) イーサネットケーブル
<p>
<!-- 
10base2 is an ethernet cabling standard that specifies the use of 52 ohm
coaxial cable with a diameter of about 5 millimetres. There are a couple of
important rules to remember when interconnecting machines with 10base2 cabling.
The first is that you must use terminators at <bf/both ends/ of the cabling.
A terminator is a 52 ohm resistor that helps to ensure that the signal is
absorbed and not reflected when it reaches the end of the cable. Without
a terminator at each end of the cabling you may find that the ethernet is
unreliable or doesn't work at all. Normally you'd use `T pieces' to
interconnect the machines, so that you end up with something that looks like:
-->

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

<tscreen><verb>
 |==========T=============T=============T==========T==========|
            |             |             |          |
            |             |             |          |
          -----         -----         -----      -----
          |   |         |   |         |   |      |   |
          -----         -----         -----      -----
</verb></tscreen>
<!-- 
where the `<tt/|/' at either end represents a terminator, the
`<tt/======/' represents a length of coaxial cable with BNC plugs at either
end and the `<tt/T/' represents a `T piece' connector. You should keep the
length of cable between the `T piece' and the actual ethernet card in the
PC as short as possible, ideally the `T piece' will be plugged directly into
the ethernet card.
-->

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

<sect1><heading>ツイストペア(Twisted Pair)イーサネットケーブル
<p>
<!-- 
If you have only two twisted pair ethernet cards and you wish to connect
them you do not require a hub. You can cable the two cards directly together.
A diagram showing how to do this is included in the
<url url="Ethernet-HOWTO.html" Name="Ethernet-HOWTO">
-->
2 枚のツイストペアタイプのイーサネットカードを接続したいだけなら、ハブ
無しに直結しても構いません。そのためのケーブルの配線は<url
url="Ethernet-HOWTO.html" Name="Ethernet-HOWTO">に書いてあります。

<sect><heading>この文書で使っている用語集
<p>
<!-- 
The following is a list of some of the most important terms used in this
document.
-->

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

<descrip>
<tag>ARP</tag>

<em>Address Resolution Protocol</em> の頭文字を取った語(頭字語)で、ネッ
トワークに接続されたマシンの IP アドレスからイーサネットカードのハード
ウェアアドレス(MACアドレス)を得るために使うプロトコルです。

<tag>ATM</tag>
<em>Asynchronous Transfer Mode</em> の頭字語です。ATM ネットワークでは、
データを一定サイズのパケットにまとめて効率的に 2 点間で転送できるよう
になっています。ATM はスイッチタイプのパケットネットワーク技術です。

<tag>クライアント(client)</tag>
<!-- 
This is usually the piece of software at the end of a system
where the user is. There are exceptions to this, for example, in the X11 window
system it is actually the server with the user and the client runs on the
remote amachine. The client is the program or end of a system that is receiving
the service provided by the server. In the case of <em/peer to peer/ systems
such as <em/slip/ or <em/ppp/ the client is taken to be the end that initiates
the connection and the remote end, being called, is taken to be the server.
-->
ユーザがいる側のシステムで使うソフトウェアを指します。これには例外もあ
り、X11 ウィンドウシステムではユーザ側にサーバがあり、クライアントがリ
モートで動きます。クライアントとは、サーバが提供するサービスを受け
るプログラムやシステムです。<em>slip</em> や <em>ppp</em> といった 
<bf>一対一</bf>接続の場合、電話をかけるなど接続を開始する側をクライエ
ントと呼び、呼び出される側をサーバと呼びます。

<tag>データグラム(datagram)</tag>
<!-- 
A datagram is a discrete package of data and headers which
contain addresses, which is the basic unit of transmission across an IP
network. You might also hear this called a `packet'.
-->

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

<tag>DLCI</tag>
<!-- 
The DLCI is the Data Link Connection Identifier, and is used
to identify a unique virtual point to point connection via a Frame Relay
network. The DLCI's are normally assigned by the Frame Relay network provider.
-->

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

<tag>フレームリレー(Frame Relay)</tag>
<!-- 
Frame Relay is a network technology ideally suited to
carrying traffic that is of burty or sporadic nature. Network costs are reduced
by having many Frame Relay customer sharing the same network capacity and
relying on them wanting to make use of the network at slightly different times.
-->

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

<tag>ハードウェアアドレス(Hardware address)</tag>
<!-- 
This is a number that uniquely identifies a host in
a physical network at the media access layer. Examples of this are <em>Ethernet
Addresses</em> and <em>AX.25 Addresses</em>.
-->
ハードウェアアドレスとはネットワークの MAC 層(Media Acess layer)でホス
トを識別するためのアドレスです。この例には<em>イーサネット・アドレス
</em>と <em>AX.25 アドレス</em>があります。

<tag>ISDN</tag>
<!-- 
This is an acronym for <em>Integrated Services Dedicated
Network</em>. ISDN provides a standardised means by which Telecommunications
companies may deliver either voice or data information to a customers premises.
Technically ISDN is a circuit switched data network.
-->
ISDN は <em>Integrated Services Dedicated Network</em> の頭文字です。
ISDN は通信会社が音声やデータを各家庭に運ぶための標準規格です。技術的
には、ISDN はサーキットスイッチタイプのデータネットワークです。

<tag>ISP</tag>
<!-- 
This is an acronym of Internet Service Provider. These are
organisations or companies that provide people with network connectivity to
the Internet.
-->
Internet Service Provider の頭文字です。ISP とはインターネットへの接続
を提供する会社や組織です。

<tag>IP アドレス(IP address)</tag>
<!-- 
This is a number that uniquely identifies a TCP/IP host
on the network. The address is 4 bytes long and is usually represented in what
is called the "dotted decimal notation", where each byte is represented in
decimal from with dots `.' between them.
-->

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

<tag>MSS</tag>
<!-- 
The Maximum Segment Size (<em>MSS</em>) is the largest quantity
of data that can be transmitted at one time. If you want to prevent local
fragmentation MSS would equal MTU-IP header.
-->

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

<tag>MTU</tag>
<!-- 
The Maximum Transmission Unit (<em>MTU</em>) is a parameter that
determines the largest datagram than can be transmitted by an IP interface
without it needing to be broken down into smaller units. The MTU should be
larger than the largest datagram you wish to transmit unfragmented. Note, this
only prevents fragmentation locally, some other link in the path may have a
smaller MTU and the datagram will be fragmented there. Typical values are 1500
bytes for an ethernet interface, or 576 bytes for a SLIP interface.
-->
<em>MTU</em>(Maximum Transmission Unit)とは、より小さな断片に分割せず
に IP インターフェイスから送信できる最大のデータグラムの大きさを示すパ
ラメータです。MTU は、分割されたくないデータグラムの大きさよりも大きく
しなければいけません。ただし、この設定はローカルな断片化を避けるための
もので、経路上のどこかでより小さな MTU が設定されていれば、そこで分割
されるかも知れません。よく使われる値としては、イーサネットインターフェ
イスでは 1500 バイト、SLIP インターフェイスでは 576 バイトです。

<tag>経路(route)</tag>
<!-- 
The <em>route</em> is the path that your datagrams take
through the network to reach their destination.
-->
<em>route</em> とは、目的地に達するまでのデータグラムが通過していく
道順になります。

<tag>サーバ(server)</tag>
<!-- 
This is usually the piece of software or end of a system
remote from the user. The server provides some service to one or many clients.
Examples of servers include <em/ftp/, <em/Networked File System/, or
<em/Domain Name Server/. In the case of <em/peer to peer/ systems such as
<em/slip/ or <em/ppp/ the server is taken to be the end of the link that is
called and the end calling is taken to be the client.
-->

通常、ユーザから遠い側にあるソフトウェアかシステムを指します。1つのサー
バが複数のサービスを1つ、あるいは複数のクライアントに提供できます。サー
バの例としては、<em>ftp</em> や <em>NFS(Networked File System)</em>、
<em>DNS(Domain Name Service|Server)</em> などがあります。<em>slip</em> 
や <em>ppp</em> など、<em>一対一(peer to peer)</em>接続の場合、サーバ
は電話を受けたり、クライアントから呼び出される側を指します。


<tag>window</tag>
<!-- 
The <em>window</em> is the largest amount of data that the
receiving end can accept at a given point in time.
-->
<em>ウィンドウ(window)</em>とは、受信端が一時に受けとれるデータ量の最
大値です。

</descrip>

<sect><heading>ISP 用の Linux ?
<p>
<!-- 
If you are interested in using Linux for ISP purposes the I recommend you
take a look at the
<url url="http://www.anime.net/linuxisp/" name="Linux ISP homepage"> for
a good list of pointers to information you might need and use.
-->
Linux を ISP に使いたい場合、
<url url="http://www.anime.net/linuxisp/" name="Linux ISP homepage"> 
が参考になります。
このページには必要な情報へのポインタが豊富に登録されています。

<sect><heading>謝辞(Acknowledgements)
<p>
<!-- I'd like to thank the following people for their contributions to
this document (in no particular order): Axel Boldt, Arnt Gulbrandsen,
Gary Allpike, Cees de Groot, Alan Cox, Jonathon Naylor.  -->

この文書を書くにあたって、さまざまな貢献をいただいた以下の人々に感謝し
ます(順不同)
Axel Boldt, Arnt Gulbrandsen, Gary Allpike,
Cees de Groot, Alan Cox, Jonathon Naylor

<sect><heading>Copyright.
<p>
The NET-3-HOWTO, information on how to install and configure networking
support for Linux. Copyright (c) 1997 Terry Dawson.

The NET-3-HOWTO、Linux でサポートされているネットワーク機能のインストー
ルと設定についての情報、は Terry Dawson が著作権を有しています。

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.

この文書は copyleft で保護されています。すなわち、Free Software
Foundation の GNU General Public License に基づく限り、この文書を自由
に再配布したり修正しても構いません。

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.

この文書は役に立つように書かれていますが、一切の保証はありません。入手
できかどうかも特定の目的に適応するかどうかも保証できません。詳細につい
ては GNU General Public License を御覧ください。

You should have received a copy of the GNU General Public License along with
this program; if not, write to the:

GNU General Public Licence はこの文書と共に入手できるはずですが、入手
できない場合は以下に連絡してください。

Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.

</article>
