diff --git a/ja_JP.eucJP/books/handbook/bibliography/chapter.sgml b/ja_JP.eucJP/books/handbook/bibliography/chapter.sgml
index 9bb7562b4a..f75802774b 100644
--- a/ja_JP.eucJP/books/handbook/bibliography/chapter.sgml
+++ b/ja_JP.eucJP/books/handbook/bibliography/chapter.sgml
@@ -1,638 +1,638 @@
参考図書
訳: &a.jp.nakai;.
12 October 1996.
FreeBSD オペレーティングシステムの個々の部分については
マニュアルページで定義のような説明がなされていますが,
それらにはどうやってその部分どうしをつなぎあわせて
オペレーティングシステム全体を円滑に動作させるかを
説明していないという欠点がよく指摘されます.
それを補うためには UNIX システム管理についてのよい本や,
すぐれた利用者向けのマニュアルが欠かせません.
FreeBSDのためだけの書籍 & 雑誌
非英語文化圏の 書籍 & 雑誌:
-
+
FreeBSD 入門與應用 (in Chinese).
FreeBSD入門キット 98版第二版. 宮嵜忠臣 著.
秀和システム. ISBN 4-87966-535-5 C3055 2900円.
FreeBSD入門キット AT互換機版 第二版. 宮嵜忠臣 著.
秀和システム. ISBN 4-87966-535-5 C3055 2900円.
ここまでできる FreeBSD パワーガイド.
霜山 滋 仲道 嘉夫 山中右次 著. 秀和システム.
ISBN 4-87966-637-8 2600円.
+ url="http://www.shoeisha.co.jp/pc/index/shinkan/97_05_06.htm">
FreeBSD徹底入門.
あさだたくや 天川修平 衛藤敏寿 浜田直樹 細川達己 三田吉郎 著.
- 翔泳社.
+ 翔泳社.
ISBN 4-88135-473-6 3600円.
+ url="http://www.ascii.co.jp/pb/book1/shinkan/detail/1322785.html">
パーソナルUNIXスターターキットFreeBSD.
民田雅人 古場正行 増田佳泰 天池健 宮川晋 共著.
- アスキー.
+ アスキー.
ISBN 4-7561-1733-3 3000円.
FreeBSD ハンドブック (日本語版).
- アスキー.
+ アスキー.
ISBN 4-7561-1580-2 3800円.
FreeBSD mit Methode (ドイツ語版).
Computer und Literatur Verlag/Vertrieb Hanser 発行.
1998. ISBN 3-932311-31-0
FreeBSD インストール & 活用マニュアル,
published by
毎日コミュニケーションズ.
英語の書籍 & 雑誌:
-
+
The Complete FreeBSD,
published by
- Walnut Creek CDROM.
+ Walnut Creek CDROM.
利用者向けのガイド
Computer Systems Research Group, UC Berkeley.
4.4BSD User's Reference Manual.
O'Reilly & Associates, Inc., 1994.
ISBN 1-56592-075-9
Computer Systems Research Group, UC Berkeley.
4.4BSD User's Supplementary Documents.
O'Reilly & Associates, Inc., 1994.
ISBN 1-56592-076-7
UNIX in a Nutshell.
O'Reilly & Associates, Inc., 1990.
ISBN 093717520X
Mui, Linda.
What You Need To Know When You Can't Find Your UNIX
System Administrator.
O'Reilly & Associates, Inc., 1995.
ISBN 1-56592-104-6
-
+
Ohio State University has written
a
+ url="http://www-wks.acs.ohio-state.edu/unix_course/unix.html">
UNIX Introductory Course which is available online
in HTML and postscript format.
-
+
FreeBSD 友の会 jpman プロジェクト. FreeBSD User's
Reference Manual (日本語訳). 毎日コミュニケーションズ
, 1998. ISBN4-8399-0088-4 P3800E.
管理者向けのガイド
Albitz, Paul and Liu, Cricket. DNS and
BIND, 2nd Ed.
O'Reilly & Associates, Inc., 1997.
ISBN ISBN 1-56592-236-0
(訳注: 邦訳は以下のものが出版されています.
高田広章 / 小島育夫 監訳 , 小舘光正 訳.
DNS & BIND 改訂版.
オライリー・ジャパン, 1998.
ISBN 4-900900-42-7)
Computer Systems Research Group, UC Berkeley.
4.4BSD System Manager's Manual.
O'Reilly & Associates, Inc., 1994.
ISBN 1-56592-080-5
Costales, Brian, et al.
Sendmail, 2nd Ed. O'Reilly &
Associates, Inc., 1997.
ISBN 1-56592-222-0
(訳注: 邦訳は以下のものが出版されています.
2分冊になっています.
原著の3章までが「システム管理」, 4章が「リファレンス」
に対応します.)
ただし2分冊となり,原著のリファレンスの部分に当たる Volume2
は 1998年3月の時点では出版されていません.
中村 素典 監訳, 鈴木 克彦 訳.
sendmail システム管理 (Volume1).
オライリー・ジャパン, 1997.
ISBN 4-900900-40-0)
中村 素典 監訳, 鈴木 克彦 訳.
sendmail システム管理 (Volume2).
オライリー・ジャパン, 1998.
ISBN 4-900900-41-9)
Frisch, Æleen. Essential System
Administration, 2nd Ed. O'Reilly &
Associates, Inc., 1995. ISBN 1-56592-127-5
(訳注: 邦訳は以下のものが出版されています.
谷川 哲司 監訳 黒岩 真吾 , 株式会社ユニテック
訳. UNIX システム管理入門 改訂版.
オライリー・ジャパン, 1998.
ISBN 4-900900-14-1)
Hunt, Craig. TCP/IP Network Administration.
O'Reilly & Associates, Inc., 1992.
ISBN 0-937175-82-X
(訳注: 邦訳は以下のものが出版されています.
村井純 監訳.
TCP/IP ネットワーク管理.
インターナショナル・トムソン・パブリッシング・ジャパン, 1994.
ISBN 4-900718-01-7)
Nemeth, Evi. UNIX System Administration
Handbook. 2nd Ed. Prentice Hall, 1995.
ISBN 0131510517
(訳注: 邦訳は以下のものが出版されています.
井上尚司監訳.
UNIX システム管理入門.
ソフトバンク, 1992.
ISBN 4-89052-362-6
原本は第2版だが, 訳出は第1版のみ)
Stern, Hal Managing NFS and NIS
O'Reilly & Associates, Inc., 1991.
ISBN 0-937175-75-7
FreeBSD 友の会 jpman プロジェクト. FreeBSD System
Administrator's Manual (日本語訳).
毎日コミュニケーションズ,
1998. ISBN4-8399-0109-0 P3300E.
プログラマ向けのガイド
Asente, Paul. X Window System
Toolkit. Digital Press.
ISBN 1-55558-051-3
Computer Systems Research Group, UC Berkeley.
4.4BSD Programmer's Reference Manual.
O'Reilly & Associates, Inc., 1994.
ISBN 1-56592-078-3
Computer Systems Research Group, UC Berkeley.
4.4BSD Programmer's Supplementary Documents.
O'Reilly & Associates, Inc., 1994.
ISBN 1-56592-079-1
Harbison, Samuel P. and Steele, Guy
L. Jr. C: A Reference Manual. 4rd ed. Prentice
Hall, 1995. ISBN 0-13-326224-3
(訳注: 邦訳は以下のものが出版されています.
斎藤信男監訳.
新・詳説C言語リファレンス
[H&Sリファレンス].
ソフトバンク, 1994.
ISBN 4-89052-506-8
原本は第4版だが, 訳出は第3版のみ。)
Kernighan, Brian and Dennis M. Ritchie.
The C Programming Language..
PTR Prentice Hall, 1988.
ISBN 0-13-110362-9
(訳注: 邦訳は以下のものが出版されています.
石田晴久 訳.
プログラミング言語 C 第2版(訳書訂正版)
共立出版, 1989.
ISBN 4-320-02692-6)
Lehey, Greg.
Porting UNIX Software.
O'Reilly & Associates, Inc., 1995.
ISBN 1-56592-126-7
Plauger, P. J. The Standard C
Library. Prentice Hall, 1992.
ISBN 0-13-131509-9
(訳注: 邦訳は以下のものが出版されています.
福富寛 / 門倉明彦 / 清水恵介 訳.
標準 C ライブラリ ANSI/ISO/JIS C規格.
トッパン, 1995.
ISBN 4-8101-8541-9)
Stevens, W. Richard. Advanced
Programming in the UNIX Environment.
Reading, Mass. : Addison-Wesley, 1992
ISBN 0-201-56317-7
(訳注: 邦訳は以下のものが出版されています.
大木敦雄 訳.
詳解 UNIX プログラミング. トッパン, 1994.
ISBN 4-89052-524-6)
Stevens, W. Richard. UNIX Network
Programming. 2nd Ed. PTR Prentice Hall, 1998.
ISBN 0-13-949876-1
(訳注:
第 1 版の邦訳は以下のものが出版されています.
篠田陽一 訳.
UNIX ネットワークプログラミング.
トッパン,1992.
ISBN 4-8101-8509-5)
Wells, Bill. “Writing Serial Drivers for UNIX”.
Dr. Dobb's Journal. 19(15), December
1994. pp68-71, 97-99.
オペレーティングシステム内部
Andleigh, Prabhat K. UNIX System Architecture.
Prentice-Hall, Inc., 1990.
ISBN 0-13-949843-5
Jolitz, William. “Porting UNIX to the
386”. Dr. Dobb's Journal. January
1991-July 1992.
Leffler, Samuel J., Marshall Kirk McKusick,
Michael J Karels and John Quarterman The Design and
Implementation of the 4.3BSD UNIX Operating
System. Reading, Mass. : Addison-Wesley, 1989.
ISBN 0-201-06196-1
(訳注: 邦訳は以下のものが出版されています.
中村明 / 相田仁 / 計宇生 / 小池汎平 訳.
UNIX 4.3BSDの設計と実装. 丸善, 1991.
ISBN 4-621-03607-6)
Leffler, Samuel J., Marshall Kirk McKusick,
The Design and Implementation of the 4.3BSD
UNIX Operating System: Answer Book.
Reading, Mass. : Addison-Wesley, 1991.
ISBN 0-201-54629-9
(訳注: 邦訳は以下のものが出版されています.
相田仁 / 計宇生 / 小池汎平 訳.
UNIX 4.3BSDの設計と実装.
アンサーブック, トッパン, 1991.
ISBN 4-8101-8039-5)
McKusick, Marshall Kirk, Keith Bostic, Michael J Karels,
and John Quarterman. The Design and
Implementation of the 4.4BSD Operating
System. Reading, Mass. : Addison-Wesley, 1996.
ISBN 0-201-54979-4
Stevens, W. Richard. TCP/IP Illustrated,
Volume 1: The Protocols.
Reading, Mass. : Addison-Wesley, 1996.
ISBN 0-201-63346-9
Schimmel, Curt.
Unix Systems for Modern Architectures.
Reading, Mass. : Addison-Wesley, 1994.
ISBN 0-201-63338-8
Stevens, W. Richard. TCP/IP Illustrated,
Volume 3: TCP for Transactions, HTTP, NNTP
and the UNIX Domain Protocols.
Reading, Mass. : Addison-Wesley, 1996.
ISBN 0-201-63495-3
Vahalia, Uresh.
UNIX Internals -- The New Frontiers.
Prentice Hall, 1996.
ISBN 0-13-101908-2
Wright, Gary R. and W. Richard Stevens.
TCP/IP Illustrated, Volume 2:
The Implementation.
Reading, Mass. : Addison-Wesley, 1995.
ISBN 0-201-63354-X
セキュリティの参考資料
Cheswick, William R. and Steven M. Bellovin.
Firewalls and Internet Security:
Repelling the Wily Hacker.
Reading, Mass. : Addison-Wesley, 1995.
ISBN 0-201-63357-4
(訳注: 邦訳は以下のものが出版されています.
川副博 監訳. ファイアウォール.
ソフトバンク, 1995.
ISBN 4-89052-672-2)
Garfinkel, Simson and Gene Spafford.
Practical UNIX Security. 2nd Ed.
O'Reilly & Associates, Inc., 1996.
ISBN 1-56592-148-8
(訳注: 邦訳は以下のものが出版されています.
山口英監訳. UNIX セキュリティ.
アスキー, 1993.
ISBN 4-7561-0274-3
原本は第2版だが, 訳出は第1版のみ)
Garfinkel, Simson.
PGP Pretty Good Privacy
O'Reilly & Associates, Inc., 1995.
ISBN 1-56592-098-8
ハードウェアの参考資料
Anderson, Don and Tom Shanley.
Pentium Processor System Architecture.
2nd Ed. Reading, Mass. : Addison-Wesley, 1995.
ISBN 0-201-40992-5
Ferraro, Richard F. Programmer's Guide
to the EGA, VGA, and Super VGA Cards.
3rd ed. Reading, Mass. : Addison-Wesley, 1995.
ISBN 0-201-62490-7
Intel Corporation は, 自社の CPU
やチップセットに関する文書を自社の 開発者向け Web
サイト で公開しています. 文書のフォーマットは通常
PDF です.
Shanley, Tom. 80486 System
Architecture. 3rd ed. Reading, Mass. :
Addison-Wesley, 1995. ISBN
0-201-40994-1
Shanley, Tom. ISA System
Architecture. 3rd ed. Reading, Mass. :
Addison-Wesley, 1995.
ISBN 0-201-40996-8
Shanley, Tom. PCI System
Architecture. 3rd ed. Reading, Mass. :
Addison-Wesley, 1995. ISBN
0-201-40993-3
Van Gilluwe, Frank. The Undocumented PC.
Reading, Mass: Addison-Wesley Pub. Co., 1994.
ISBN 0-201-62277-7
UNIX の歴史
Lion, John Lion's Commentary on UNIX, 6th Ed.
With Source Code.
ITP Media Group, 1996.
ISBN 1573980137
- Raymond, Eric s. The New Hacker's Dictonary,
+ Raymond, Eric s. The New Hacker's Dictionary,
3rd edition. MIT Press, 1996.
ISBN 0-262-68092-0
Also known as the
- Jargon File
+ Jargon File
Saulus, Peter H. A quarter century of UNIX.
Addison-Wesley Publishing Company, Inc., 1994.
ISBN 0-201-54777-5
Simon Garfinkel, Daniel Weise, Steven Strassmann.
The UNIX-HATERS Handbook.
IDG Books Worldwide, Inc., 1994.
ISBN 1-56884-203-1
Don Libes, Sandy Ressler Life with UNIX
— special
edition. Prentice-Hall, Inc., 1989.
ISBN 0-13-536657-7
(訳注: 邦訳は以下のものが出版されています.
坂本文 監訳. Life with UNIX.
アスキー, 1990.
ISBN 4-7561-0783-4
邦訳がSpecial 版の訳出か否かは不明)
BSD 系 OS の系譜図. 1997年.
-
+
ftp://ftp.FreeBSD.org/pub/FreeBSD/FreeBSD-current/src/share/misc/bsd-family-tree
または, FreeBSD-current マシンの
-
+
ローカルファイル.
BSD リリース告知コレクション. 1997.
-
+
http://www.de.FreeBSD.ORG/de/ftp/releases/
Networked Computer Science Technical Reports Library
.
- http://www.ncstrl.org/
+ http://www.ncstrl.org/
Computer Systems Research group (CSRG) からの古い
BSD リリース集
http://www.mckusick.com/csrg/:
この 4 枚 CD セットには, 1BSD から 4.4BSD までと 4.4BSD-Lite2
が含まれます (残念ながら 2.11BSD は含まれていません).
また 4 枚目の CD には, 最終ソースおよび SCCS
ファイルが含まれています.
雑誌とジャーナル
The C/C++ Users Journal. R&D Publications
Inc. ISSN 1075-2838
Sys Admin — The Journal for UNIX System
Administrators
Miller Freeman, Inc., ISSN 1061-2688
diff --git a/ja_JP.eucJP/books/handbook/book.sgml b/ja_JP.eucJP/books/handbook/book.sgml
index 3c4c4891de..8a540f8b03 100644
--- a/ja_JP.eucJP/books/handbook/book.sgml
+++ b/ja_JP.eucJP/books/handbook/book.sgml
@@ -1,153 +1,153 @@
%man;
%bookinfo;
%chapters;
%authors;
%jauthors;
%mailing-lists;
]>
FreeBSD ハンドブック
FreeBSD ドキュメンテーションプロジェクト
1999 年 2 月
FreeBSD へようこそ! このハンドブックは
FreeBSD Release &rel.current;
のインストールおよび, 日常での使い方について記述したもので,
FreeBSD ドキュメンテーションプロジェクトによって
編集されています. 日本語版の作成は FreeBSD
日本語ドキュメンテーションプロジェクトがおこなって います.
本書は現在進行中の作業であって,
多くの個人の手からなる 仕事です.
多くのセクションはまだ存在しませんし, いま存在するセクションの
いくつかはアップデートが必要です. この FreeBSD
ドキュメンテーション プロジェクトに協力したいと思ったら,
&a.doc; まで (英語で) 電子メールを 送ってください.
ハンドブックそのものに関する議論は, こちらで
おこなわれています. (もちろん英語でです.) 日本語訳および,
日本語版のみに関することは FreeBSD
日本語ドキュメンテーションプロジェクト doc-jp@jp.FreeBSD.ORG
+ remap=tt>doc-jp@jp.FreeBSD.org
において日本語で 議論されています.
必要に応じて日本語ドキュメンテーションプロジェクトから
本家ドキュメンテーションプロジェクトに対して
フィードバックをおこないますので, 英語が得意でない方は FreeBSD
日本語ドキュメンテーションプロジェクト doc-jp@jp.FreeBSD.ORG
+ remap=tt>doc-jp@jp.FreeBSD.org
まで日本語でコメントをお寄せください.
このドキュメントの最新バージョンは, いつでも 日本国内版 FreeBSD World
+ URL="http://www.jp.FreeBSD.org/">日本国内版 FreeBSD World
Wide Web サーバや FreeBSD World Wide Web
+ URL="http://www.FreeBSD.org/">FreeBSD World Wide Web
サーバ で見ることができますし, さまざまな形式のものや
圧縮されたものを FreeBSD FTP
+ url="ftp://ftp.FreeBSD.org/pub/FreeBSD/doc">FreeBSD FTP
サーバ や, たくさんのミラーサイト からダウンロードすること
ができます. また,
-
+
ハンドブックの検索も可能です.
導入
&chap.introduction;
&chap.install;
&chap.basics;
&chap.ports;
システム管理
&chap.kernelconfig;
&chap.security;
&chap.printing;
&chap.disks;
&chap.backups;
&chap.quotas;
&chap.x11;
&chap.hw;
&chap.l10n;
ネットワーク通信
&chap.serialcomms;
&chap.ppp-and-slip;
&chap.advanced-networking;
&chap.mail;
さらに進んだ話題
&chap.cutting-edge;
&chap.contrib;
&chap.policies;
&chap.kernelopts;
&chap.kerneldebug;
&chap.linuxemu;
&chap.internals;
付録
&chap.mirrors;
&chap.bibliography;
&chap.eresources;
&chap.staff;
&chap.pgpkeys;
&chap.jcontrib;
diff --git a/ja_JP.eucJP/books/handbook/disks/chapter.sgml b/ja_JP.eucJP/books/handbook/disks/chapter.sgml
index b9ba6a135a..ef84331bc4 100644
--- a/ja_JP.eucJP/books/handbook/disks/chapter.sgml
+++ b/ja_JP.eucJP/books/handbook/disks/chapter.sgml
@@ -1,211 +1,211 @@
ディスク
原作 &a.obrien; 26 April 1998
訳: &a.jp.yoshiaki;. 19 July 1998.
1台だけディスクのあるマシンに新しい SCSI ディスクを追加する
場合について述べましょう. まず, コンピュータの電源を切り,
コンピュータにコントローラとドライブを接続します. これには
様々な手順がありえるため詳細についてはこのドキュメントの範囲外
です.
rootユーザとして login します.
ドライブを接続した
あとで /var/run/dmesg.boot を調べて,
新しいドライブが
認識されたことを確認します. 以下の例では, あたらしく加える
ドライブは da1 で
/1 へマウントしたいとします.
(IDE ドライブを加える場合はda の代りに
wdを使います)
FreeBSD は IBM-PC 互換コンピュータで動作しますので,
(訳注: 通常の場合では)
ディスクは PC BIOS パーティションに属しなければなりません.
これは伝統的な BSD パーティションとは異なります. PC のディスク
は最大4までのエントリを持ちます. もしディスク全体を FreeBSD に
わりあてるのであれば,
ディスク全体を使用を選ぶことが
できます. そうでないなら PC BIOS パーティションの一つに
FreeBSD を入れることになります. FreeBSD では PC BIOS
パーティションのことを slices と呼びます.
伝統的な
BSD パーティションと混同するのを防ぐためです. FreeBSD のために
つくったスライスをつかうこともできますし, ほかの OS を
インストールしてあるスライスをつかうこともできます.
これは他のオペレーティングシステムの fdisk
ユーティリティの混乱を引き起こしません.
スライスをつかう場合, ドライブは
/dev/da1s1e のよう
な形で加えられます. これは, SCSI ディスクの, ユニット番号1
(2台目の SCSI ディスク), スライス1 (PC BIOS パーティション1),
e BSD パーティションという意味です.
全体を割り当てる場合は, ドライブは /dev/da1e
という単純な形になります.
sysinstall を利用する
/stand/sysinstallを利用すると,
新しいディスクの
パーティションやディスクラベルの設定をメニューから簡単に
行うことができます.
rootユーザで login するか
su コマンドを使います.
/stand/sysinstall を動かし,
カスタム メニューに入ります.
カスタムメニュー で
パーティション
を選びます. そうするとシステムに接続されているハードディスクの
リストがあらわれるでしょう. da1
がリストに無い場合は接続と
/var/run/dmesg.boot にある
dmesg の出力を
チェックする必要があります.
da1を選び, FDISK
パーティションエディタ に入ります. ディスク全体を
FreeBSD でつかうのであれば A を選びます.
正しいパーティションエントリを保持して, このドライブには
将来的に他のオペレーティングシステムを
同居させる余地を残しますか?
と聞かれますので,
そうしたい場合はYES を選んでください.
変更をディスクに書き込むにはW
コマンドを使います. FDISK
エディタを終了するにはqコマンドを使います.
FDISK エディタを終了すると Master Boot Record
について質問されます.
すでに動いているシステムにディスクを追加するのですから
None を選びます.
次に ディスクラベルエディタに入ります.
ここで BSD の伝統的パーティションをつくります.
ディスクには a から h
までのラベルがついた
8区画のパーティションをつくることができます.
一部のパーティションのラベルについては特別に扱われます.
a パーティションは root パーティション
(/) に
使われます. したがって, システムディスク(すなわち ブートを行う
ディスク)に 1つだけa
パーティションをつくるべきです.
b
パーティションは swap パーティションとして使われ
ます. swap パーティションは複数のディスク上につくっても
かまいません. c
パーティションは「ディスク全体を使用」
としている場合はディスク全体をさします. スライスを利用している
場合は FreeBSD のスライス全体をさします. そのほかの
パーティションは一般的な目的に利用します.
sysinstall のラベルエディタは root や swap 以外の
パーティションでは e
をつかうように勧めます.
ラベルエディタでは単一のファイルシステムを作成するには
C コマンドをつかいます.
FS (ファイルシステム) か swap かを聞いてきますので
FS を
選びマウントポイントを入力(/mnt
のように)します.
インストール後の設定のモードではディスクの追加をするときに,
sysinstall は /etc/fstab
にエントリを作成しません.
したがってここでのマウントポイントの入力は
重要ではありません.
これでディスクへのディスクラベルの書き込みと
ファイルシステムの作成の準備ができました.
W を
押してください. sysinstall が新しいパーティションがマウント
できないことについてエラーを出しますが無視してください.
ラベルエディタから抜けて sysinstall を終了してください.
最後のステップは /etc/fstab
の編集で, 新しいディスクのエントリを追加します.
コマンドラインユーティリティの利用
* スライスを利用する
ディスク全体を利用する
新しいドライブを別のオペレーティングシステムで共有しない
場合, ディスク全体を利用 (dedicated mode)
することも
できます. このモードではダメージが与えられるということは
ありませんが Microsoft のオペレーティングシステムが混乱する
ということを覚えておいてください.
IBM の OS/2 では認識できない場合, すべて占有されていると
解釈します.
&prompt.root; dd if=/dev/zero of=/dev/rda1 bs=1k count=1
&prompt.root; disklabel -Brw da1 auto
&prompt.root; disklabel -e da1 # `e' パーティションの作成
&prompt.root; newfs -d0 /dev/rda1e
&prompt.root; mkdir -p /1
+&prompt.root; vi /etc/fstab # /dev/da1e のエントリ
&prompt.root; mount /1
別の方法は:
&prompt.root; dd if=/dev/zero of=/dev/rda1 count=2
&prompt.root; disklabel /dev/rda1 | disklabel -BrR da1 /dev/stdin
&prompt.root; newfs /dev/rda1e
&prompt.root; mkdir -p /1
&prompt.root; vi /etc/fstab # /dev/da1e のエントリ
&prompt.root; mount /1
* 伝統的なものとは異なるドライブ
* Zip ドライブ
* Jaz ドライブ
* Sequest ドライブ
diff --git a/ja_JP.eucJP/books/handbook/internals/chapter.sgml b/ja_JP.eucJP/books/handbook/internals/chapter.sgml
index a5ffc7d05d..5febe93aaa 100644
--- a/ja_JP.eucJP/books/handbook/internals/chapter.sgml
+++ b/ja_JP.eucJP/books/handbook/internals/chapter.sgml
@@ -1,2046 +1,2044 @@
FreeBSD の内部
FreeBSDのブート処理の流れ
原作: &a.phk;. v1.1, April 26th.
訳: &a.jp.nakai;. September 6 1996.
FreeBSDのブートには基本的に3つの段階があります:
カーネルの読み込み, ルートのファイルシステムの決定, そして
ユーザ領域にあるものの初期化です. このことは下に述べる
いくつかの興味深い可能性につながっています.
カーネルの読み込み
現在, カーネルの読み込みには基本的に下に挙げる3つの方法が
あります:
これらはカーネルが次に何をしたらいいのかという情報をカーネルに
与えます.
Biosboot
Biosboot は “ブートブロック”
に相当するもので, 2つのファイル から構成されており,
フロッピーディスクやハードディスクのブートを
開始する側の 8K
バイトにインストールされています.
Biosboot は FreeBSD のファイルシステムからカーネルを
読み込むことができます.
Dosboot
Dosbootは DI. Christian
Gusenbauerによって書かれましたが,
不幸にしてこの場合には, コードのある一部分が
マイクロソフトの
コンパイラ向けに書かれているため, FreeBSD
単体ではコンパイル することはできません.
Dosboot は MS-DOS のファイルから, またはディスクの
FreeBSD ファイルシステムのパーティションから
カーネルをブートします. これは MS-DOS
システムのハイメモリ領域に潜んでいる
メモリマネージャ等の
さまざまな怪しい代物とメモリの取り合いをして,
なんとかブートしています.
Netboot
Netboot
はサポートされているイーサネットカードを検出し, BOOTP
や TFTP, NFS
を使ってブートするカーネルを探そうとします.
ルートファイルシステムの決定
カーネルが読み込まれ,
ブートプログラムがカーネルに移行したら,
カーネルは自身の初期化をし,
どんなハードウェアが組み込まれいるか を決定し,
それからルートファイルシステムを探さなくてはなりません.
現在サポートされているルートファイルシステムは
次の通りです :
UFS
UFS は, もっとも一般的なタイプのルートシステムです.
フロッピーディスクやハードディスク上に存在します.
MSDOS
技術的に可能ですが, あまり有用ではありません.
なぜならば, FAT
ファイルシステムではリンクやデバイスノードなどの
“UNIX 主義” を実現できないからです.
MFS
MFS はカーネル内部に組み込みになっている UFS
ファイルシステムです. つまり MFS を機能させるのに
ディスクやフロッピーディスクなどのハードウェアは
必要ではありません.
CD9660
CD9660 は CD-ROM
をルートファイルシステムに使用したものです.
NFS
これはルートシステムにファイルサーバを使用していて,
基本的に ディスクレスのマシンのためにあります.
ユーザ領域にあるものの初期化
ユーザ領域で動作させるようにするために,
カーネルが初期化を終えると, カーネルは pid ==
1のプロセスを生成し, ルートファイルシステム
上のプログラムを実行します. このプログラムは通常
/sbin/init です.
/sbin/init
を別なプログラム置き換えてしまうことは可能ですが, そのプロセス
には以下のような制約があります:
pid が 1 のプロセスには stdin/stdout/stderr
は割り当てられていませんので,
プログラムは自分でこれらをオープンしないとなりません.
このプロセスが終了するとカーネルはパニックメッセージを表示して
停止します.
また, このプロセスに対するシグナル処理は特殊です.
この例として, インストール用のフロッピーディスクにある
/stand/sysinstallがあります.
興味深い連係
カーネルを MFS でブートするのには次のような特別の
/sbin/init を使います.
A — DOS を使う場合
C: を
/C: にマウントします.
C:/freebsd.fs を
/dev/vn0
にアタッチします.
/dev/vn0 を
/rootfs
にマウントします.
シンボリックリンクを作ります.
/rootfs/bin ->
/bin
/rootfs/etc ->
/etc
/rootfs/sbin ->
/sbin (etc...)
これでハードディスクのパーティションを切り直さずに
FreeBSD を 使うことができます.
B — NFS を使う場合
NFS はサーバ:~you/FreeBSD を
/nfs にマウントし,
ルートディレクトリを /nfs
に変更して, そこで /sbin/init
を実行します.
これで FreeBSD をディスクレスで実行できますが, NFS
サーバを コントロールできないままです...
C — X-server を起動する場合
これで X ターミナルが手に入りました. これは,
これでハードウェア に費用を割いたりするよりはいい,
と上司が主張した, Windows で
動作する遅くて何がおこなわれているのか
見ることができるような すすけた X Window
エミュレータなんかよりよいものです.
D — テープを使う場合
/dev/rwd0
のコピーを取って, リモートにあるテープ
ステーションやファイルサーバに書き込んでください.
これで一年前に取っておくべきだった
バックアップをやっと 取ることができました.
E — ファイアウォール/Web
サーバとして動作させる場合
(私の知っている範囲で...)
これは特に面白いもので,
書き込み禁止のフロッピーディスクから ブートができて,
ルートのファイルシステムに書き込むことができる
というものです.
PC におけるメモリの利用
原作: &a.joerg;.
16 Apr 1995.
訳: &a.jp.tomo;.
29 Oct 1996.
FreeBSD が i386
プラットフォーム上でどのようにメモリを使うかに
ついての説明です.
ブート部分は0:0x7c00にロードされ,
すぐに自分自身を 0x7c0:0に移します.
(これは手品ではなく, 単なる%cs
セレクタのための調節であり,
ljmpにより行われます. )
それから最初の 15 セクタを 0x10000
(biosboot の Makefile のなかの
BOOTSEG部分)にロードし, 作業領域のスタックを
0x1fff0以下に セットします. このあと, boot2
に飛びます. つまり, boot1 自身と (ダミーの) DOS
パーティションテーブルを飛び越えて, %csセレクタを 調節します
— この時点ではまだ16ビットモードです.
boot2 はブートファイルを要求し,
a.outヘッダを調べます.
0x00ffffffによってファイルエントリポイントを
(通常は0xf0100000に)マスクし, ロードします.
このため, 通常のロードポイントは 1MB
(0x00100000) になります. ロードしている間,
リアルモードでBIOSを使うため, ブートコードは,
リアルモードとプロテクトモードの間を行ったり来たりします (訳注:
これは, BIOSがリアルモード用に書かれていて,
ロードすべき領域がリアルモードではアクセスできない1MBより上位の
アドレスであることから, ブートコードがリアルモードと
プロテクトモードを切り替えながら動作するためです).
ブートコード自身はプロテクトモードで
%csと%ds/%es 用に
セグメントセレクタ 0x18 と
0x20 を使い,
リアルモードに戻るのに0x28を使います.
最終的にカーネルはアドレス空間全体をカバーできるようなダミーの
ディスクリプタを参照して%cs
0x08と %ds/%es/%ss
0x10でスタートします.
カーネルはそのロードポイントで起動されます.
別の(高位)アドレスにリンクされるので,
ページテーブルやページディレクトリなどが適切に設定され,
ページングが有効になり, カーネルがリンクされたアドレスで
動作するようになるまでは, カーネルはロードアドレスからの
相対アドレス (PIC: position independent code) を用いて
実行されなければなりません.
寄贈: &a.dg;.
16 Apr 1995.
カーネルの BSS セグメントの直後の物理ページ (実メモリ) に
proc0 (訳注: プロセス番号 0, swapper) のページディレクトリや
ページテーブル, Uページが配置されます.
仮想記憶機構が初期化された少しあと,
0x1000-0x9ffffの実メモリとカーネル (text +
data + bss + 上記の proc0 に関わるもの + その他)
の後ろの実メモリは, 通常の仮想記憶ページの形で利用可能となり,
グローバルな空きページリストに追加されます.
DMAとはどういったものでどういう働きをするのか
原作: &a.uhclem;
訳: &a.jp.yasu;
10 December 1996. 最終更新日 8 October 1997.
Direct Memory Access (DMA)は, 中央演算処理装置
(CPU)からの干渉なく
データを計算機中である場所から別の場所に動かすための手法です.
DMA 機能の実装の方法はそれぞれの
計算機アーキテクチャ間で異なるもので あるため,
ここでの議論はIBMパーソナルコンピュータ(PC), PC/AT
とその互換機における DMA
サブシステムの実装と働きに限定します.
PCの DMAサブシステムは, Intelの 8237
DMAコントローラをベースにして います.
8237はそれぞれ独立にプログラムできる4つのDMAチャネルを持ち,
それぞれどのチャネルもいつでもアクティブにできます.
これらのチャネルは順に 0, 1, 2, 3となっています. PC/ATからは,
セカンド 8237 チップが追加され,それらは 4, 5, 6, 7と
なっています.
オリジナルの DMAコントローラ(0, 1, 2, 3)は,
1回の転送で1バイト 転送します. セカンドDMAコントローラ(4, 5, 6,
7)は1回で 隣接する2つのメモリ番地から 16ビット転送します.
ここで, 最初のバイトは通常偶数のアドレスになります.
2つのコントローラは全く同じものであり, 転送量が異なるのは
セカンドコントローラがシステムに直結しているためです.
8237 は個々のチャネルについて,
DRQと-DACKという2つの電気信号を 持っています. その他に, HRQ
(Hold Request), HLDA (Hold Acknowledge), -EOP (End of
Process)があり, バス制御信号として -MEMR (Memory Read), -MEMW
(Memory Write), -IOR (I/O Read), and -IOW (I/O
Write)があります.
8237 DMACは, いわゆる“fly-by”
DMAコントローラです. これは, データの移動を行う際に, データは
DMACチップを通過せず, DMACチップに格納されないことを意味します.
また, DMACはI/Oポートとメモリアドレス間でのみデータを
転送することができますが,
2つのI/Oポートもしくは2つのメモリアドレス
間ではできません.
8237 は, 非 “fly-by”モードでは,
互いに接続された
2つのチャネルでのメモリ-メモリ間でのDMA操作を許可します.
しかし, PC メーカは,
ただでさえ乏しいこのリソースをこんなふうに 使ったりしません.
なぜなら,
CPUを使用してメモリ間のデータを動かす方が早いからです.
PC アーキテクチャでは, それぞれのDMAチャネルは, 通常
与えられた DMA
チャネルを使用するハードウェアがそのチャネルについて
DRQ線を使って転送を要求した時のみ動作します.
DMA転送の例
DMA転送の発生と処理の手順の例をあげてみましょう.
この例では, フロッピーディスクコントローラ (FDC)が
ディスケットから1バイト読み込んで,
DMAを使って,メモリの0x00123456番地に 格納したいとします.
処理は, FDCが, DRQ2信号(DMAチャンネル2に
対するDRQ線)を有効にして
DMAコントローラに要求を伝えることで開始されます.
DMAコントローラは DRQ2
シグナルが有効になったことを記録します.
するとDMAコントローラはDMAチャネル2がプログラムされ, マスクが
かかっていない(有効になっている)ことを確認します. 同様に,
DMAコントローラは, 他のDMAチャネルがアクティブまたは
アクティブになろうとしていないこと,
そしてより高い優先度を持って いないことを確認します.
一旦これらのチェックが完了すると, DMACはDMACがバスを使うために
バスを開放するようにCPUに要求します.
DMACはCPUにHRQ信号を送ってバスを要求します.
CPUはHRQ信号を検出し, 現在の指示の実行を完了します.
一旦プロセッサがバスを開放することができる状態になると, 解放を
行います. 通常は CPU により駆動される信号 (-MEMR, -MEMW,
-IOR, -IOW, その他)を すべてハイインピーダンス
(ハイともローとも指定しない)状態にした後, CPUは
HLDA信号を有効にして DMAコントローラにバスを明け渡したことを
伝えます.
プロセッサによっては, CPUはバスを使用しないいくつかの
命令を追加して実行することもできますが,
しかし,プロセッサの内部キャッシュや
パイプライン以外のメモリから
何か読み出すといった指示に到達したら結局 CPU
は待たなくてはなりません.
ここで,DMACが バスを“託される”と, DMACはその
-MEMR, -MEMW, -IOR, -IOW 出力信号をアクティブにし,
DMACから出力されるアドレスは 0x3456にセットされます.これは
転送しようとする特定のメモリ番地をバイトで
指示するのに使われます.
すると DMAC は DMA
転送をリクエストしたデバイスに転送が始まることを
知らせます.これは -DACK
信号をアクティブにすることで行われます.
フロッピーディスクコントローラの場合は, -DACK2を
アクティブにすることで行われます.
バスのデータ線に転送されるバイトにを出力することについては
フロッピーディスクコントローラが責任をもつことになります.
もし,フロッピーディスクコントローラがバス上にバイトデータを
出力するのに余計な時間を必要としなければ
(もし周辺装置がもっと時間を必要とする場合には, READY信号を
経由してDMACに通知します), DMAは 1 DMAクロック待ち,
メモリにバス上のバイトデータを格納するために -MEMW および -IOR
信号を解除します. そして
FDCはバイトデータが転送されたことを認識します.
DMAサイクルは1度に1バイトしか転送しないので,
FDCはDRQ2信号を止めて, DMACに転送が終了したことを知らせます.
DMACは-DACK2信号を解除して, FDCはバス上へのデータ出力を
停止しなくてはならないことを知らせます.
次にDMACは他のDMAチャネルのいずれかに要求がきていないか
チェックを行います.
もしどのチャネルのDRQも有効になっていなければ,
DMAコントローラは処理を完了して, -MEMR, -MEMW, -IOR, -IOW
および アドレス信号をハイインピーダンス状態にします.
最後に, DMAはHRQ信号を解除します.
CPUはこれを見ると,HOLDA信号を 解除します. そしてCPUは自らの
-MEMR, -MEMW, -IOR, -IOW 信号および アドレス線を有効にし,
命令の実行やメインメモリや周辺機器へのアクセスを
再開します.
典型的なフロッピーディスクの1セクタについては,
上記のプロセスが それぞれのバイトについて1回行われ,
全部で512回繰り返されます. 1 バイト転送される毎に, DMAC
内のアドレスレジスタはインクリメントされ, 同じくDMAC内にある,
何バイト転送すればよいかを示すカウンタが
デクリメントされます.
カウンタが0になると, DMAはEOP信号を送ります. この信号は
カウンタが0であり, DMAコントローラがCPUによって再び
プログラムされるまで, これ以上データは転送されないことを
示すものです.
このイベントはターミナルカウント(TC)とも呼ばれます.
EOP信号は1本しかありません. そして, 一度にアクティブにできる
DMAチャネルは一本だけなので,
現在アクティブであるDMAチャネルこそが,
たった今処理を終了したDMAチャネルだと言うことができます.
もし,
バッファの転送が完了した時に周辺機器から割り込みを発生させたい
とき, 周辺機器は
-DACKn信号およびEOP信号の両方が同時に発信されたか
どうかをテストします. その場合, DMACはCPUの介在がなければ
これ以上はその周辺機器についての情報を転送しません. その後で,
周辺機器はプロセッサに割り込みを生じさせるために,
何らかの割り込み信号を発生させることができます.
PCアーキテクチャ においては,
DMAチップ自身が割り込みを生じさせることはできません.
周辺機器とそれに関連するハードウェアが割り込みを生成する責任を
持ちます. また, DMAを使用する周辺機器が割り込みを使用しない
可能性もあります.
DMAC が要求を出したときには CPU は常にバスを DMAC
に開放しますが, この動作は, DMAC
がアクティブになった時にプロセッサが命令を実行するのに
かかる時間がわずかに変化することを除いては, アプリケーション,
オペレーティングシステムの両方からはわからないということを
理解することが重要です. そのため,
プロセッサが確かにDMA転送が完了したことを知るためには,
周辺装置や DMA
チップ中のレジスタを調べたり,周辺装置からの割り込みを
受け取る必要があります.
DMA ページレジスタ および 16メガ アドレス空間制限
これまで述べたのとは異なり, DMACはアドレス線を 0x0123456
にセットする 代わりに 0x3456
だけをセットすることにあなたは気づいたかも しれません.
この理由について少し説明します.
オリジナルのIBM PCがデザインされた時, IBMは,
DMACと割込み制御チップの 両方を, 8085(8ビットプロセッサで,
16ビットのアドレス空間(64k)を持つ)と
組み合わせて使うように設計されたチップを使うことを選びました.
IBM PCが64k以上のメモリをサポートしていたため,
DMACが64kを越えるメモリ番地に読み込み又は書き込みを行うために
変更を行う必要が生じました.
この問題を解決するためにIBMが行ったのは,
それぞれのDMAチャネルに,
読み込み元または書き込み先のアドレスの
上位ビットを保持するための 外部的なラッチを追加することでした.
DMAチャネルがアクティブな時はいつでも,
このラッチの内容はアドレスバスに書かれて,
そのチャネルのDMA操作が 終了するまでそこに保持されます. IBM
はこれらのラッチを “ページレジスタ”
と呼んでいます.
そのため上記に示した例では,
DMACはアドレスの0x3456の部分をバス上に 置き,
DMAチャネル2に対するページレジスタは, 0x0012xxxxをバス上に
置きます.
これらの2つの値が組み合わされてアクセスされるメモリ中の完全な
アドレスを形成します.
ページレジスタのラッチはDMAチップとは独立であるので,
読み込まれる又は書き込まれるメモリ領域は, 64kの物理的境界を
またいではなりません. 例えば, もし
DMACがメモリの0xffff番地をアクセスした場合, データの転送後,
DMACはアドレスレジスタをインクリメントし,
0x0000番地にある次のバイトを アクセスします.
0x10000番地ではありません.
これはおそらく意図されたものとは異なっているでしょう.
“物理的な” 64Kの境界を 8086モードの
64k“セグメント”と混同してはいけません.
セグメントは, セグメント
レジスタに数学的にオフセットレジスタを
加算して作られるものです.
ページレジスタにはアドレスのオーバーラップも無く, 数学的に
OR を取られることもありません.
さらに複雑なことには, PC/ATでは外部のDMAアドレスのラッチは
8ビットしか保持しません. よって8+16で24ビットになり, これは
DMAが0から16メガの間のメモリ番地しか指し示せないことを
意味します.
16メガ以上のメモリを持ったより新しいマシンにおいても,
標準的なPCコンパチブルなDMAでは16メガ以上のメモリ番地には
アクセスできません.
この制限を避けるために, オペレーティングシステムは 16
メガ以下にある物理的な 64k の境界をまたがない領域に RAM
バッファを 予約します. そして,
DMACはデータを周辺機器からそのバッファに
転送するようにプログラムされます. 一旦DMACがこのバッファに
データを動かすと, オペレーティングシステムは本当にデータを
格納したいアドレスにバッファからデータをコピーします.
16メガを越えるアドレスからDMAベースの周辺機器にデータを
書き込む際には, データは16メガ以下に位置したバッファから最初に
コピーされなくてはならず, その後,
DMACはバッファからハードウェアに
データをコピーすることができます. FreeBSDでは,
これらの予約バッファは
“バウンスバッファ”と呼ばれます. MS-DOSの世界では,
これらは“スマートバッファ”などと呼ばれます.
82374と呼ばれる8237の新しい実装においては,
ページレジスタを16ビットで指定して,
バウンスバッファを使用しなくても, 32
ビットのアドレス空間全体にアクセスすることが可能です.
DMA操作モードとその設定
8237 DMA はいくつかのモードで動作します. 主なモードは,
以下のとおりです.
シングル転送モード
シングルバイト(もしくはワード)が転送されます.
DMAは1バイト毎にバスを開放し,
再び要求しなくてはなくてはなりません. これは一般に,
すぐにはデータのブロック全てを転送できないデバイスに
よって使用されます.
周辺装置は次の転送の準備ができる毎にDMAを要求します.
標準的な PC
コンパチブルなフロッピーディスクコントローラ(NEC 765)は
1バイトのバッファしか持たないので,
このモードを使用します.
ブロック/デマンド転送モード
一旦 DMAC がシステムバスを取得すると,
最大64kまでのデータブロック 全体が転送されます.
もし周辺装置が余分に時間を必要とするときは,
転送を一時中断するためにREADY信号を有効にします.
READY信号は過度に使われるべきではなく,
遅い周辺装置の転送の場合は
シングル転送モードを代わりに使うべきです.
ブロック転送モードとデマンド転送モードの違いは,
一旦ブロック転送が 始まると, 転送カウンタか 0
になるまでそれが行われるところです. DRQ は -DACK
が有効になるまでの間は有効でなければなりません.
デマンドモードは DRQ が有効な間転送が続けられます.
DRQが有効でなくなった場合, DMA はその時点で転送を中断し,
バスを解放して CPU に返します.
その後, DRQが有効になると,
転送は中断したところから再開されます.
データの転送,
特に転送に使われるメモリ番地が16Mを越える場合に, CPU
を使った方が効率がよくなるまで CPU
の速度が向上する以前の
古いハードディスクコントローラはデマンドモードを
使っていました.
カスケード転送モード
このメカニズムは DMA
チャネルがバスを要求することを許可する ものですが,
接続されたデバイスはバス上のアドレス情報の配置に
ついてDMACに代わって責任を持ちます.
これは“バスマスタ”
と呼ばれる技術の実装に利用されます.
カスケードモードの DMA
チャネルがバスのコントロールを受け取ると, DMA
は通常行われるようなバス上のアドレスと I/O
コントロール信号の 出力を行いません. 代わりに,
DMAはアクティブなチャネルの -DACK信号を
有効にします.
この時点で, アドレスとバスコントロール信号の供給は
DMAチャネルに接続された周辺機器が担当します.
周辺機器はシステムバスの完全なコントロールを行い, 16
メガ以下の任意のアドレスの読み込みおよび書き込みを
行うことが できます. 周辺機器はバスの使用を終えると DRQ
線を無効にするので, DMA コントローラは CPU
もしくは他のDMAチャネルに制御を返すことが
できます.
カスケードモードは複数の DMA
コントローラを相互接続するのに 使われます.
PC内ではDMAチャネル4がまさにこの用途に使われています.
周辺機器がDMAチャネル0, 1, 2, 3でバスを要求すると,
スレーブDMAコントローラは HLDREQ を有効にしますが,
この線はCPUではなく,
実際にはプライマリDMAコントローラのDRQ4に
接続されています. その後,
チャンネル4になにか仕事があるものと見なしたプライマリの
DMAコントローラは HLDREQ を使ってCPUにバスを 要求します.
バスが与えられると, -DACK4が有効になりますが,
この線は実際にはスレーブDMAコントローラの HLDA信号に
接続されています.
スレーブDMAコントローラはその後要求したDMAチャネル (0,
1, 2, 3) に対してデータを転送するか,
SCSIコントローラのような
バスマスタリングを要求する周辺機器にバスを許可します.
このような配線がおこなわれているため,
PC/ATシステムの 周辺機器ではDMAチャネルは 0, 1, 2, 3, 5,
6, 7のみが使用できます.
初期のIBM PCコンピュータでは, DMAチャネル0は操作の
リフレッシュのために予約されていますが,
最近のシステムでは通常,
周辺機器によって使用することができます.
周辺機器がバスマスタリングを行っている時は,
システムバスを保持している間絶えずメモリに
もしくはメモリから データを転送することが重要です.もし,
周辺機器がこのように できないときは,
システムがメインメモリのリフレッシュを
行なえるようにしばしばバスを開放しなくては
なりません.
全ての PC でメインメモリとして使われるダイナミック
RAM は, 中身が “満たされている”
ビットを保持するため
頻繁にアクセスされなくてはなりません. ダイナミック RAM
は, それぞれが 1 ビットのデータを記憶するコンデンサが
たくさん集まって構成されています.
これらのコンデンサは充電された 状態で
1, 充電されていない状態で
0 を表します.
全てのコンデンサは放電するため, 1
の値を保持するために,
一定の間隔で電力を加える必要があります. 実際に RAM
チップは RAM の適切な場所に電力を送る作業を行ないますが,
メモリのリフレッシュ作業が RAM を普通にアクセスする時と
衝突しないように, それをいつ行なうかを
コンピュータが休止状態の時に知らせなくてはなりません.
もしコンピュータがメモリのリフレッシュを
行なえない場合は,
メモリの中身はわずか数ミリ秒で壊れてしまいます.
メモリの読み込みと書き込みのサイクルは
リフレッシュサイクルとして カウントされる(ダイナミック
RAM のリフレッシュサイクルは
実際には不完全なメモリ読み込みサイクルになります)ので,
周辺機器のコントローラが連続するメモリ番地から
データの読み込み または書き込みを行う間は,
メモリの全てがリフレッシュされます.
バスマスタリングはいくつかの SCSI
ホストインターフェースやその他の
ハイパフォーマンスな周辺機器コントローラに
見られます.
自動初期化転送モード
このモードにおいてDMAはバイト, ブロック,
デマンド転送を行いますが, DMA転送カウンタが0になると,
カウンタとアドレスはDMAチャネルが
もともとプログラムされた時のものに戻されます. これは,
周辺機器が転送を要求している間は転送が続けられることを
意味します.
転送領域としてDMACにプログラムされた固定バッファの中で,
出力操作でDMACがデータを読み出す前もって新しいデータを
書き込んだり入力操作でDMACが書き込んだあとに,
そこから新しいデータを読み出す作業は CPU
が受け持ちます.
このテクニックは, “サンプリング”
用のバッファが小さいもしくは
それを持たないオーディオデバイスによく使われます.
この“環状” バッファの管理は更なる CPU
オーバーヘッドになりますが, DMAカウンタが0になり,
再プログラムされるまでDMAが停止してしまう
ことによって起きる遅延は,
この方法でしかなくす事ができない 場合もあります.
DMAのプログラミング
プログラムされるDMAチャネルは, 通常, 設定を行う前に
“マスクする”べきです.
これはハードウェアが予期せずそのチャンネルに対してDRQを有効に
した場合, たとえ全てのパラメータが
満たされてない場合や更新されていない場合でも, DMACは
それに応答してしまう可能性があるからです.
マスクを行ってから,ホストは転送の方向(メモリからI/O,
もしくはI/Oからメモリ)と, 転送に使用するDMA操作のモード
(シングル, ブロック, デマンド, カスケードなど)を設定し, 最後に
アドレスや転送の長さを設定します.
設定される長さはDMACに転送させたい量よりも1少なくなります.
アドレスや転送長のLSBとMSBは同じ8ビットI/O
ポートに書き込まれます. そのためDMACが最初のバイトをLSBとして,
2番目のバイトをMSBとして 受け取ることを保証するために,
最初に別のポートに書き込みを行なって LSBとMSB
の判別を行なうフリップフロップをクリアしておく必要があります.
そして,DMAのページレジスタを更新します.
これはDMACの外部にあり I/O
ポートの別のセットを通してアクセスされます.
すべての設定ができると,
DMAチャネルはマスクを解除することができます.
そのDMAチャネルは“準備ができた”とみなされ,
そのチャンネルのDRQが 有効になると応答します.
8237のプログラミングの正確な詳細については,
ハードウェアデータブックを参照してください. PCシステムにおける
I/O マップについても参照する必要があるでしょう. このマップには
DMA およびページレジスタのポートがどこに位置するのかを
書いてあります.
以下に完全なポートのマップテーブルを示します.
DMAポートのマップ
IBM-PCとPC/ATに基づくすべてのシステムでは,
同じI/Oポートに配置された DMAハードウェアを持っています.
その完全なリストを以下に示します.
DMAコントローラ2に割り当てられたポートは, AT以外のデザインでは
未定義になっています.
0x00 – 0x1f DMA コントローラ #1 (Channels 0, 1, 2
and 3)
DMA アドレス および カウントレジスタ
0x00
write
Channel 0 starting address
0x00
read
Channel 0 current address
0x01
write
Channel 0 starting word count
0x01
read
Channel 0 remaining word count
0x02
write
Channel 1 starting address
0x02
read
Channel 1 current address
0x03
write
Channel 1 starting word count
0x03
read
Channel 1 remaining word count
0x04
write
Channel 2 starting address
0x04
read
Channel 2 current address
0x05
write
Channel 2 starting word count
0x05
read
Channel 2 remaining word count
0x06
write
Channel 3 starting address
0x06
read
Channel 3 current address
0x07
write
Channel 3 starting word count
0x07
read
Channel 3 remaining word count
DMA コマンドレジスタ
0x08
write
Command Register
0x08
read
Status Register
0x09
write
Request Register
0x09
read
-
0x0a
write
Single Mask Register Bit
0x0a
read
-
0x0b
write
Mode Register
0x0b
read
-
0x0c
write
Clear LSB/MSB Flip-Flop
0x0c
read
-
0x0d
write
Master Clear/Reset
0x0d
read
-
Temporary Register
(新しいバージョンでは利用不可)
0x0e
write
Clear Mask Register
0x0e
read
-
0x0f
write
Write All Mask Register Bits
0x0f
read
Read All Mask Register Bits (Intel
82374にのみ存在する)
0xc0 – 0xdf DMA コントローラ #2 (Channels 4, 5, 6
and 7)
DMA アドレス および カウントレジスタ
0xc0
write
Channel 4 starting address
0xc0
read
Channel 4 current address
0xc2
write
Channel 4 starting word count
0xc2
read
Channel 4 remaining word count
0xc4
write
Channel 5 starting address
0xc4
read
Channel 5 current address
0xc6
write
Channel 5 starting word count
0xc6
read
Channel 5 remaining word count
0xc8
write
Channel 6 starting address
0xc8
read
Channel 6 current address
0xca
write
Channel 6 starting word count
0xca
read
Channel 6 remaining word count
0xcc
write
Channel 7 starting address
0xcc
read
Channel 7 current address
0xce
write
Channel 7 starting word count
0xce
read
Channel 7 remaining word count
DMA コマンドレジスタ
0xd0
write
Command Register
0xd0
read
Status Register
0xd2
write
Request Register
0xd2
read
-
0xd4
write
Single Mask Register Bit
0xd4
read
-
0xd6
write
Mode Register
0xd6
read
-
0xd8
write
Clear LSB/MSB Flip-Flop
0xd8
read
-
0xda
write
Master Clear/Reset
0xda
read
-
Temporary Register (Intel 82374には存在しない)
0xdc
write
Clear Mask Register
0xdc
read
-
0xde
write
Write All Mask Register Bits
0xdf
read
Read All Mask Register Bits (Intel
82374にのみ存在する)
0x80 – 0x9f DMA ページレジスタ
0x87
r/w
Channel 0 Low byte (23-16) page Register
0x83
r/w
Channel 1 Low byte (23-16) page Register
0x81
r/w
Channel 2 Low byte (23-16) page Register
0x82
r/w
Channel 3 Low byte (23-16) page Register
0x8b
r/w
Channel 5 Low byte (23-16) page Register
0x89
r/w
Channel 6 Low byte (23-16) page Register
0x8a
r/w
Channel 7 Low byte (23-16) page Register
0x8f
r/w
Low byte page Refresh
0x400 – 0x4ff 82374 Enhanced DMA Registers
Intel 82374 EISA System Component
(ESC)は1996年の初めに発表されました. この中
には機能的には8237のスーパーセットであり,
1つのパッケージの中にその他の PC
互換機のコアとなる周辺コンポーネントをも含んだ DMA
コントローラも含まれています. このチップはEISAとPCI
両方のプラットホームをターゲットにしたものであり,
scatter-gather I/O やリングバッファを始めとして,
システムDMAをして32ビットの
アドレス空間全体に直接アクセスする能力も提供しています.
これらの機能を使用する場合でも,
過去16年間のPC互換機で利用されてきた
同等機能を提供するコードも含めておく必要があります.
互換性の問題から, 82374の レジスタの一部は,
従来の8237のレジスタをプログラムした 後
に, 転送の度にプログラムされる必要があります.
8237のレジスタに書き込みを行うとき,
ソフトウェアの下位互換性のために,
82374で追加された一部のレジスタの内容が
強制的に0にクリアされるからです.
0x401
r/w
Channel 0 High byte (bits 23-16) word count
0x403
r/w
Channel 1 High byte (bits 23-16) word count
0x405
r/w
Channel 2 High byte (bits 23-16) word count
0x407
r/w
Channel 3 High byte (bits 23-16) word count
0x4c6
r/w
Channel 5 High byte (bits 23-16) word count
0x4ca
r/w
Channel 6 High byte (bits 23-16) word count
0x4ce
r/w
Channel 7 High byte (bits 23-16) word count
0x487
r/w
Channel 0 High byte (bits 31-24) page
Register
0x483
r/w
Channel 1 High byte (bits 31-24) page
Register
0x481
r/w
Channel 2 High byte (bits 31-24) page
Register
0x482
r/w
Channel 3 High byte (bits 31-24) page
Register
0x48b
r/w
Channel 5 High byte (bits 31-24) page
Register
0x489
r/w
Channel 6 High byte (bits 31-24) page
Register
0x48a
r/w
Channel 6 High byte (bits 31-24) page
Register
0x48f
r/w
High byte page Refresh
0x4e0
r/w
Channel 0 Stop Register (bits 7-2)
0x4e1
r/w
Channel 0 Stop Register (bits 15-8)
0x4e2
r/w
Channel 0 Stop Register (bits 23-16)
0x4e4
r/w
Channel 1 Stop Register (bits 7-2)
0x4e5
r/w
Channel 1 Stop Register (bits 15-8)
0x4e6
r/w
Channel 1 Stop Register (bits 23-16)
0x4e8
r/w
Channel 2 Stop Register (bits 7-2)
0x4e9
r/w
Channel 2 Stop Register (bits 15-8)
0x4ea
r/w
Channel 2 Stop Register (bits 23-16)
0x4ec
r/w
Channel 3 Stop Register (bits 7-2)
0x4ed
r/w
Channel 3 Stop Register (bits 15-8)
0x4ee
r/w
Channel 3 Stop Register (bits 23-16)
0x4f4
r/w
Channel 5 Stop Register (bits 7-2)
0x4f5
r/w
Channel 5 Stop Register (bits 15-8)
0x4f6
r/w
Channel 5 Stop Register (bits 23-16)
0x4f8
r/w
Channel 6 Stop Register (bits 7-2)
0x4f9
r/w
Channel 6 Stop Register (bits 15-8)
0x4fa
r/w
Channel 6 Stop Register (bits 23-16)
0x4fc
r/w
Channel 7 Stop Register (bits 7-2)
0x4fd
r/w
Channel 7 Stop Register (bits 15-8)
0x4fe
r/w
Channel 7 Stop Register (bits 23-16)
0x40a
write
Channels 0-3 Chaining Mode Register
0x40a
read
Channel Interrupt Status Register
0x4d4
write
Channels 4-7 Chaining Mode Register
0x4d4
read
Chaining Mode Status
0x40c
read
Chain Buffer Expiration Control Register
0x410
write
Channel 0 Scatter-Gather Command Register
0x411
write
Channel 1 Scatter-Gather Command Register
0x412
write
Channel 2 Scatter-Gather Command Register
0x413
write
Channel 3 Scatter-Gather Command Register
0x415
write
Channel 5 Scatter-Gather Command Register
0x416
write
Channel 6 Scatter-Gather Command Register
0x417
write
Channel 7 Scatter-Gather Command Register
0x418
read
Channel 0 Scatter-Gather Status Register
0x419
read
Channel 1 Scatter-Gather Status Register
0x41a
read
Channel 2 Scatter-Gather Status Register
0x41b
read
Channel 3 Scatter-Gather Status Register
0x41d
read
Channel 5 Scatter-Gather Status Register
0x41e
read
Channel 5 Scatter-Gather Status Register
0x41f
read
Channel 7 Scatter-Gather Status Register
0x420-0x423
r/w
Channel 0 Scatter-Gather Descriptor Table Pointer
Register
0x424-0x427
r/w
Channel 1 Scatter-Gather Descriptor Table Pointer
Register
0x428-0x42b
r/w
Channel 2 Scatter-Gather Descriptor Table Pointer
Register
0x42c-0x42f
r/w
Channel 3 Scatter-Gather Descriptor Table Pointer
Register
0x434-0x437
r/w
Channel 5 Scatter-Gather Descriptor Table Pointer
Register
0x438-0x43b
r/w
Channel 6 Scatter-Gather Descriptor Table Pointer
Register
0x43c-0x43f
r/w
Channel 7 Scatter-Gather Descriptor Table Pointer
Register
FreeBSD VM システム
原作: &a.dillon;. 6 Feb 1999
物理メモリ管理 — vm_page_t
物理メモリはページ単位に,
vm_page_t構造体を用いて管理されます.
物理メモリのページは, ページキューの一つに存在する,
それぞれの vm_page_t
構造体の配置によって分類されます.
ページは, wired(ワイヤード), active(活性状態),
inactive(非活性状態), cache(キャッシュ状態),
free(使われていない状態)の 各状態をとります. wired
状態を除いて, ページは通常
その状態を示す二重連結リストのキューに置かれます. wired
状態のページがキューに置かれることはありません.
FreeBSD は, ページカラーリング(page
coloring)を実装するため, cache 状態, free
状態にあるページ用に,
さらに複雑なページキューを実装しています. その各々の状態は,
プロセッサの L1, L2 キャッシュサイズに応じて最適化された
多重キューを利用します. FreeBSD は,
新たなページを確保(allocate)することが
必要になった場合に確保される VM オブジェクトのために, L1, L2
キャッシュに対して合理的にアライン(align)されたページを
得ようと試みます.
加えて, ページは参照カウントとともに保持され,
ビジーカウントとともにロックされます. VM システムは,
ページフラグとして PG_BUSY を使う “完全ロック状態”
も実装しています.
一般的には, 各々のページキューは最長不使用 (LRU)
方式で動作します. ページは普通, 最初に wired, もしくは active
状態に置かれます. wired 状態の場合,
そのページはどこかにあるページテーブルに 関連づけられています.
VM システムはアクティブなキュー内のページをスキャンし, wired
状態のページにエイジング (訳注:
ページ参照頻度を量る手法の一つ; aging) を施します. そして,
そのページはあまりアクティブでないキューへ
移動することになります. cache キューに移動させられたページは,
再利用の候補になっている VM
オブジェクトに割り付けられています. free
キューにあるページは, 完全に自由の状態にあります. FreeBSD は,
free キューにあるページ数を最小限にとどめようと 試みますが,
割り込み発生時のページ確保を融通するため,
完全に自由なページをいくつか持っていなければなりません.
プロセスがページテーブルに存在しない,
ページキューの一つ(例えば, inactive, cache キュー等)に
存在するページをアクセスしようとしたとき,
比較的負荷の小さなページ再活性化フォールトが起こります.
システムメモリに全く存在していないページの場合は,
ディスクからページを読み出す間,
そのプロセスはブロック(block)されます.
FreeBSD は, ページキューを動的に調節し,
同期済(clean)のページ, 同期していない(dirty)ページの分類を
合理的に保つのと同様に, それぞれのキューにあるページが合理的な
比率に保つように試みます. 再バランス化処理が起こる量は,
システムのメモリ負荷に依存します. この再バランス化処理は
ページアウトデーモンによって実装されていて,
(補助記憶とページを同期して)同期していないページの
クリーニングすることや, (LRU
キュー内でのページ位置を再配置したり,
ページをキューの間を移動することで)ページが頻繁に
参照状態にあることに注目すること, キューを均等にするための
キュー間ページ移動等を伴います.
ページが実際にどれだけ使われているかを決定するために, FreeBSD
の VM システムは, ページの再活性化フォールトを 自発的に,
合理的な数だけ発生します. これは,
ページをスワップアウトしたり, クリーニングする時期を
より良く決めることに繋がります.
統合バッファキャッシュ —
vm_object_t
FreeBSD は, 一般化した “VM オブジェクト”
という考え方を実装しています. VM オブジェクトは,
様々な種類の補助記憶(backing store) — 補助記憶なし,
スワップ, 物理デバイス, ファイル, に割り付けられます.
ファイルシステムは
ファイルと関連するインコアデータを管理するのに, 同じ VM
オブジェクトを利用するため,
統合バッファキャッシュと呼ばれます.
VM オブジェクトは, シャドウ化
することができます. シャドウ化とは,
オブジェクトがそれぞれ互いの上に
スタック(stack)されるということです. 例えば, MAP_PRIVATE
mmap() の 動作を実装するために, ファイルに割り付けられた VM
オブジェクトの上にスタックされた, スワップに割り付けられた VM
オブジェクトが存在しているでしょう. このスタッキングは, fork
されたアドレス空間のための 様々な共有属性,
コピーオンライト(訳注: ページ共有のための 手法の一つ;
cow,copy-on-write) を実装するのにも利用されています.
vm_page_t は, 同時に一つの VM
オブジェクトしか割り付けられることが
できないことに注意しなければなりません. VM
オブジェクトのシャドウ化は, 複数のインスタンスが同じページに
共有できるように実装されています.
ファイルシステム I/O — struct
buf
補助記憶にファイルを使う VM オブジェクトのように, v
ノードを使う VM オブジェクトは通常,
処理されているかどうかという情報を,
VMシステムが管理する処理情報から独立して
管理される必要があります. 例えば, VM
システムが物理ページと補助記憶を同期させようとしたとき, VM
システムは, 実際に書き戻す前に,
ページがクリーニング済であるという
マークを付ける必要があるわけです. さらに, ファイルシステムは,
KVM 内で操作できるように, ファイルや,
ファイルメタデータの一部分を KVM にマッピングすることが
できなくてはなりません.
これを管理するために使われる実体は,
ファイルシステムバッファ, struct buf,
bp として知られています.
ファイルシステムに VM オブジェクトの一部を操作することが
必要となるときは通常, オブジェクトの部分が struct buf に
マッピングされ, KVM に struct buf
内のページがマッピングされます. 同じ方法で, ディスク I/O
はオブジェクトの部分を バッファ構造体内にマッピングし,
その時バッファ構造体上の I/O を 発行することで発行されます.
基礎となっている vm_page_t は, I/O 処理の間
ビジー(busy)状態になります. ファイルシステムにも
独立したビジー状態があり, それはハードウェア上の VM
ページの代わりに ファイルシステムバッファで動作する
ファイルシステムドライバのコードに とって有用です.
FreeBSD は, マッピングを保持するためにある量に制限された
KVM を 予約していますが, KVM
がマッピングを保持するためだけに使われ,
キャッシュデータの能力を制限しないということは
明確にされるべきでしょう.
物理データキャッシュを行うことは厳密に
vm_page_t の機能になっており,
ファイルシステムバッファの機能ではありません. しかし,
ファイルシステムバッファは placehold I/O に使われるため,
それは実質的に同時処理可能な I/O 処理量を制限します.
通常は二, 三千のファイルバッファが利用可能ですから,
このことは問題にならないでしょう.
マッピングページテーブル —
vm_map_t,
vm_entry_t
FreeBSD は, 物理ページテーブルの形態を VM
システムと分離しています.
ハードウェア上にある全てのプロセス毎のページテーブルは,
その場その場で再構成され, 通常, 使い捨てだとみなされています.
KVM を管理するような特殊なページテーブルは,
最初に永続的な確保が 行われ,
これらのページテーブルが破棄されることはありません.
FreeBSD は, vm_objects の部分を,
仮想メモリのアドレス範囲に vm_map_t と
vm_entry_t 構造体を通して割り付けます.
ページテーブルは, vm_map_t
/vm_entry_t/vm_object_t
という階層から 直接つくられます. “物理ページは,
直接一つの vm_object に
割り付けられる” と私が述べたことを思い出して下さい.
ええと, そうですね, しかしそれはいつでも完全に当てはまる,
というわけでもないのです. vm_page_t のは,
実際に割り付けられた ページテーブルにもリンクされています.
一つの vm_page_t は
ページテーブルが呼ばれた時, いくつかの
pmaps と リンクされることがあります.
しかし, そのような階層的な割り付けは, 同じ
vm_page_t を参照するオブジェクト内の,
同じページへの参照全てを保持しているため, その結果,
常にバッファキャッシュの統合を得ることができるわけです.
KVM メモリマッピング
FreeBSD は, 様々なカーネル構造体を保持するため, KVM
を利用します. ファイルシステムバッファキャッシュは, KVM
内で最も大きなものです. それはつまり, struct
buf の実体に対するマッピングに他なりません.
Linux と異なり, FreeBSD は全ての物理メモリを KVM
にマッピングしません. これは, FreeBSD が 32
ビットプラットフォームで 4G バイトまでの メモリを扱える,
ということを意味します. 実際, MMU
がそれを可能にしているならば, 理論上, FreeBSD は 32
ビットプラットフォームで 8TB
までのメモリを扱うことができることになります. しかし,
大部分の 32 ビットプラットフォームは 4G バイトの RAM しか
マッピングできないようになっている,
ということには議論の余地があるでしょう.
KVM は, いくつかのメカニズムによって管理されています.
中心となっているのは, ゾーンアロケータ(zone
allocator)です. ゾーンアロケータは,
特定の構造体型を確保するために KVM の部分(chunk)を得て,
一定の大きさのメモリブロックに分割します. vmstat
-m コマンドで, ゾーンによって 分割された, 現在の
KVM 利用状況一覧を得ることができます.
FreeBSD VM システムのチューニング
FreeBSD カーネルでは,
動的に自分自身をチューニングするために,
協調的な努力が行なわれています. 普通は,
maxusers と NMBCLUSTERS
という カーネルオプション, つまり,
/usr/src/sys/i386/conf/CONFIG_FILE で 指定されるもの以外, 変更する必要はありません. 可能なカーネルオプションの一覧は, /usr/src/sys/i386/conf/LINT に 記載されています.
大きなシステムに対しては, maxusers
を増やしたいと思うかも知れませんね. この値は普通, 10 から 128
の間の値にします.
maxusers を増やしすぎるとシステムの利用可能な
KVM がオーバフローしてしまい,
予測できない動作に陥ってしまうことに注意して下さい.
maxusers はある適度な値にとどめておいて,
特定のリソースを制御する NMBCLUSTERS
のような, 他のオプションを増加させる方が良いでしょう.
もし, システムが負荷の高いネットワーク用途に使われるなら,
NMBCLUSTERS を増やしたいと望むことでしょう.
この値は普通, 1024 から 4096 の間です.
NBUF パラメータも,
伝統的にシステムの規模を決めるのに使われます. これは,
システムがファイルシステムバッファを I/O のために
マッピングするのに使われる, KVA
の大きさを決めるのに使われます. このパラメータは,
統合バッファキャッシュには何の影響も与えません. これは
3.0-RELEASE 以降のカーネルでは動的にチューニングされるため,
普通は手作業で調整されるべきものではありません.
NBUF パラメータは,
指定しようとしないことを推奨します.
システムに選択させれば良いのです.
小さすぎる値は極端に非効率的なファイルシステム動作を招き,
一方で, 大きすぎる値は wired 状態のページを数多くつくりだし,
ページキューを枯渇させてしまうでしょう.
デフォルトでは, FreeBSD カーネルは最適化されていません.
カーネルコンフィグにある makeoption
ディレクティブを使って
最適化とデバッグフラグをセットすることができます. ただし,
それによって得られる大きな (7MB
超の)カーネルを相手にするのが嫌なら,
オプションは使ってはいけません.
makeoptions DEBUG="-g"
makeoptions COPTFLAGS="-O2 -pipe"
sysctl は, 実行時にカーネルパラメータをチューニングする
手段を提供しています. しかし, 普通は sysctl 変数, 特に VM
に関連したものを変更する必要が
生じるようなことはありません.
実行時の VM とシステムのチューニングは, 比較的単純です.
まず, 可能ならば UFS/FFS ファイルシステムで softupdates
を使いましょう.
/usr/src/contrib/sys/softupdates/README
のファイルに,
設定方法に関する手順(と制限)について書かれています.
次に, 十分なスワップを設定します. “作業”
ディスクを含む 各物理ディスク装置毎に一つずつ
(最大四つまで)のスワップパーティションを 設定すべきです.
少なくとも, メインメモリの 2 倍の スワップ空間が望ましく,
メモリがあまりない場合には,
おそらくそれより多く必要になります. また,
スワップパーティションのサイズは,
後でパーティションをつくり直しする必要がないように
マシンに設定したいメモリ設定の最大値を基準に
決めるべきでしょう. もし, クラッシュダンプをとりたい場合,
スワップパーティションは最低限メインメモリと同じの大きさで,
/var/crash にはダンプを保持するのに十分な
空きがなければなければなりません.
NFS 経由のスワップは, -4.x
以降のシステムで完全に動作しますが, NFS サーバ側では,
ページングがその負荷の主な原因になることに
注意しなければなりません.
diff --git a/ja_JP.eucJP/books/handbook/kernelopts/chapter.sgml b/ja_JP.eucJP/books/handbook/kernelopts/chapter.sgml
index 7cacd587c9..faf4f8ef23 100644
--- a/ja_JP.eucJP/books/handbook/kernelopts/chapter.sgml
+++ b/ja_JP.eucJP/books/handbook/kernelopts/chapter.sgml
@@ -1,213 +1,213 @@
カーネルコンフィグレーションの
新しいオプションを追加する
原作: &a.joerg;
訳: &a.jp.yoshiaki;.
29 December 1996.
この章をお読みになる前に FreeBSD
カーネルのコンフィグレーション の章の内容を
理解しておいてください.
そもそもカーネル
オプションって何?
カーネルオプションの使い方は基本的には
FreeBSD
カーネルのコンフィグレーション
の章に書いてあります.
そこには “伝統的な形式” と “新しい形式”
のオプションの説明があります.
すべてのカーネルのオプションを新しい形式のものに置き換え,
コンフィグファイル
を修正して &man.config.8; を実行した後に
カーネルのコンパイルディレクトリで
make depend を実行すれば,
ビルドプロセスが自動的に変更された
オプションを検出し, 必要なファイルだけを
再コンパイルするようにすることが
最終的な目的です. &man.config.8;
を実行するたびに古いコンパイルディレクトリ
を消してしまう現在のやりかたは,
やがておこなわれなくなるでしょう.
基本的に, カーネルオプションはカーネルのコンパイルプロセスの
C プリプロセッサのマクロの定義にすぎません. 実際に選択的に make
できる ようにするためには, 対応する部分のカーネルソース
(またはカーネルの .h ファイル)
がオプションを使えるようにあらかじめ書かれていなければ
なりません.
つまりデフォルト値をコンフィグファイルのオプションで置き換え
られるようになっていなければなりません.
これは普通は次のようになっています.
#ifndef THIS_OPTION
#define THIS_OPTION (some_default_value)
#endif /* THIS_OPTION */
この場合,
管理者がコンフィグファイルのオプションに別の値を記述すれば,
デフォルトの設定を打ち消して新しい値に置き換えられます. 当然,
新しい値はプリプロセッサによってソースコード中で
置き換えられるため, デフォルトの値が使われていた場所において C
の式として有効な値でなければ なりません.
また, 単に特定のコードを有効にするか
無効にするかを設定するための
値を持たないオプションも作ることができます.
#ifdef THAT_OPTION
[あなたのコードが入ります]
#endif
コンフィグファイルに THAT_OPTION
と記述するだけで (値の有無 にかかわらず)
対応する部分のコードが組み込まれます.
C 言語にくわしい人であれば
“コンフィグオプション” とされているもの
は少なくとも一つの #ifdef
で参照されているということはすぐに理解 できるでしょう. ところで,
ごく一部の人たちは次のようなものを試して
みようとするかもしれません.
options notyet,notdef
このようにコンフィグファイルをしておくと,
カーネルのコンパイルは うまく行きません. :-)
(訳注: たとえば MATH_EMULATE のように
有効/無効のためのパラメタを 持たないオプションの場合,
無効とするためのパラメタをつけて, オプション
で「無効とする」と明示することはできないという意味です)
明らかに,
任意のオプション名がカーネルソースツリー全体でどのように
使われているかを追いかけることは非常に難しいことです. このことが
新しい形式
のオプションの機構を採り入れる理由の背景です.
ここではそれぞれのオプションは
カーネルコンパイルディレクトリにある別々の
.h ファイルとなり,
opt_foo.h
という名前に されます. この方法では, 通常の Makefile
の依存関係が適用され, make
プログラムはオプションが変更された時に再コンパイルが必要な
ものを見つけることができます.
古い形式のオプションの機構は,
局部的なオプションや実験的なオプション
のような一時的に利用されると考えられるオプションにおいては
有効です. つまり #ifdef
をカーネルのソースに追加するのは簡単であり,
それがそのままカーネルコンフィグオプションになります. この場合,
管理者はオプションの利用において
依存関係を把握しておく責任があります (また,
手動でカーネルの一部分を
強制的に再コンパイルする必要があるかもしれません).
サポートされている
オプションのすべてについて一つでも変更があると, &man.config.8;
は サポートされていないオプションがコンフィグファイルの中に
あるという警告 を出しますが, カーネルの Makefile
内にはそれを含めます.
ではどのようにして追加するのでしょう?
最初に sys/conf/options (または
sys/i386/conf/options.<arch>, たとえば sys/i386/conf/options.i386)
を編集し, 新しいオプション を含めるのに最適な
opt_foo.h
ファイルを選びます.
新しいオプションの必要がなくなったとしたら,
これを取り除きます. たとえば, SCSI
サブシステムに関するすべてのふるまいについてのオプション
の変更は opt_scsi.h に入れられます.
デフォルトでは, 適切 なオプションファイルに単に記述されます.
たとえば FOO であれば 値は対応するファイルの
opt_foo.h に格納されます. これは右端に別
のファイル名を書いて置き換えることができます.
新しいオプションを加えるのに使えそうな
opt_foo.h
がない場合は新しい名前を作ってください. 意味のある名前を作り
options[.<arch>]
ファイル に新しいセクションのコメントをつけてください.
&man.config.8; は自動的
に変更を検出して, 次の実行からは (訳注: 新しい
.h) ファイル を作ります.
ほとんどのオプションはヘッダファイルに入れられます.
大量のオプションを一つの
opt_foo.h
にまとめると
コンフィグファイルの一つのオプションを変更したときに
多くのファイルが 再コンパイルされる原因になります.
新しいオプションに依存するカーネルファイルは
最終的には見つけ出 されます. ただし,
オプションを作っただけで対応するソースがどこにも
ない場合は別です.
&prompt.user; find /usr/src/sys -name type f | xargs fgrep NEW_OPTION
オプションに対応するソースを見つけるのに上記のコマンドは
便利です. 見つけたすべてのファイルで編集, 追加をおこないます.
#include "opt_foo.h"
ファイルの先頭の, すべての
#include <xxx.h> より前に入れます.
この場合, オプションによって次のようにしてデフォルト値
を持たせている標準のヘッダファイル内の値を置き換えるため,
順番は非常に 重要です.
#ifndef NEW_OPTION
#define NEW_OPTION (something)
#endif
システムヘッダファイル (たとえば
/usr/include/sys/ にある ファイル)
をオプションで置き換えることは, ほとんどの場合で失敗します.
そうすると, ヘッダファイルを深刻な状態に破壊してしまうので,
include しないとオプションの値によって
不整合が起きてしまう場合を除き, それらの ファイルに
opt_foo.h
を include しないでください.
そう, 現在このような例がいくつか存在していますが,
必ずしも正しい方法 ではありません.
diff --git a/ja_JP.eucJP/books/handbook/pgpkeys/chapter.sgml b/ja_JP.eucJP/books/handbook/pgpkeys/chapter.sgml
index 4bd34977ac..2164ca3116 100644
--- a/ja_JP.eucJP/books/handbook/pgpkeys/chapter.sgml
+++ b/ja_JP.eucJP/books/handbook/pgpkeys/chapter.sgml
@@ -1,628 +1,628 @@
PGP 公開鍵
原作: 不明.
訳: &a.jp.kiroh;.
署名を検証したり, コアチームメンバやオフィサに暗号メー
ルを送りたい場合のために, PGPの公開鍵を添付します.
オフィサ
FreeBSD Security Officer
security-officer@FreeBSD.org
-FreeBSD Security Officer <security-officer@freebsd.org>
+FreeBSD Security Officer <security-officer@FreeBSD.org>
Fingerprint = 41 08 4E BB DB 41 60 71 F9 E5 0E 98 73 AF 3F 11
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: 2.6.3i
mQCNAzF7MY4AAAEEAK7qBgPuBejER5HQbQlsOldk3ZVWXlRj54raz3IbuAUrDrQL
h3g57T9QY++f3Mot2LAf5lDJbsMfWrtwPrPwCCFRYQd6XH778a+l4ju5axyjrt/L
Ciw9RrOC+WaPv3lIdLuqYge2QRC1LvKACIPNbIcgbnLeRGLovFUuHi5z0oilAAUR
tDdGcmVlQlNEIFNlY3VyaXR5IE9mZmljZXIgPHNlY3VyaXR5LW9mZmljZXJAZnJl
ZWJzZC5vcmc+iQCVAwUQMX6yrOJgpPLZnQjrAQHyowQA1Nv2AY8vJIrdp2ttV6RU
tZBYnI7gTO3sFC2bhIHsCvfVU3JphfqWQ7AnTXcD2yPjGcchUfc/EcL1tSlqW4y7
PMP4GHZp9vHog1NAsgLC9Y1P/1cOeuhZ0pDpZZ5zxTo6TQcCBjQA6KhiBFP4TJql
3olFfPBh3B/Tu3dqmEbSWpuJAJUDBRAxez3C9RVb+45ULV0BAak8A/9JIG/jRJaz
QbKom6wMw852C/Z0qBLJy7KdN30099zMjQYeC9PnlkZ0USjQ4TSpC8UerYv6IfhV
nNY6gyF2Hx4CbEFlopnfA1c4yxtXKti1kSN6wBy/ki3SmqtfDhPQ4Q31p63cSe5A
3aoHcjvWuqPLpW4ba2uHVKGP3g7SSt6AOYkAlQMFEDF8mz0ff6kIA1j8vQEBmZcD
/REaUPDRx6qr1XRQlMs6pfgNKEwnKmcUzQLCvKBnYYGmD5ydPLxCPSFnPcPthaUb
5zVgMTjfjS2fkEiRrua4duGRgqN4xY7VRAsIQeMSITBOZeBZZf2oa9Ntidr5PumS
9uQ9bvdfWMpsemk2MaRG9BSoy5Wvy8VxROYYUwpT8Cf2iQCVAwUQMXsyqWtaZ42B
sqd5AQHKjAQAvolI30Nyu3IyTfNeCb/DvOe9tlOn/o+VUDNJiE/PuBe1s2Y94a/P
BfcohpKC2kza3NiW6lLTp00OWQsuu0QAPc02vYOyseZWy4y3Phnw60pWzLcFdemT
0GiYS5Xm1o9nAhPFciybn9j1q8UadIlIq0wbqWgdInBT8YI/l4f5sf6JAJUDBRAx
ezKXVS4eLnPSiKUBAc5OBACIXTlKqQC3B53qt7bNMV46m81fuw1PhKaJEI033mCD
ovzyEFFQeOyRXeu25Jg9Bq0Sn37ynISucHSmt2tUD5W0+p1MUGyTqnfqejMUWBzO
v4Xhp6a8RtDdUMBOTtro16iulGiRrCKxzVgEl4i+9Z0ZiE6BWlg5AetoF5n3mGk1
lw==
=ipyA
-----END PGP PUBLIC KEY BLOCK-----
&a.imp;
Warner Losh <imp@village.org>
- aka <imp@freebsd.org>
+ aka <imp@FreeBSD.org>
Fingerprint = D4 31 FD B9 F7 90 17 E8 37 C5 E7 7F CF A6 C1 B9
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: 2.6.2
mQCNAzDzTiAAAAEEAK8D7KWEbVFUrmlqhUEnAvphNIqHEbqqT8s+c5f5c2uHtlcH
V4mV2TlUaDSVBN4+/D70oHmZc4IgiQwMPCWRrSezg9z/MaKlWhaslc8YT6Xc1q+o
EP/fAdKUrq49H0QQbkQk6Ks5wKW6v9AOvdmsS6ZJEcet6d9G4dxynu/2qPVhAAUR
tCBNLiBXYXJuZXIgTG9zaCA8aW1wQHZpbGxhZ2Uub3JnPokAlQMFEDM/SK1VLh4u
c9KIpQEBFPsD/1n0YuuUPvD4CismZ9bx9M84y5sxLolgFEfP9Ux196ZSeaPpkA0g
C9YX/IyIy5VHh3372SDWN5iVSDYPwtCmZziwIV2YxzPtZw0nUu82P/Fn8ynlCSWB
5povLZmgrWijTJdnUWI0ApVBUTQoiW5MyrNN51H3HLWXGoXMgQFZXKWYiQCVAwUQ
MzmhkfUVW/uOVC1dAQG3+AP/T1HL/5EYF0ij0yQmNTzt1cLt0b1e3N3zN/wPFFWs
BfrQ+nsv1zw7cEgxLtktk73wBGM9jUIdJu8phgLtl5a0m9UjBq5oxrJaNJr6UTxN
a+sFkapTLT1g84UFUO/+8qRB12v+hZr2WeXMYjHAFUT18mp3xwjW9DUV+2fW1Wag
YDKJAJUDBRAzOYK1s1pi61mfMj0BARBbA/930CHswOF0HIr+4YYUs1ejDnZ2J3zn
icTZhl9uAfEQq++Xor1x476j67Z9fESxyHltUxCmwxsJ1uOJRwzjyEoMlyFrIN4C
dE0C8g8BF+sRTt7VLURLERvlBvFrVZueXSnXvmMoWFnqpSpt3EmN6TNaLe8Cm87a
k6EvQy0dpnkPKokAlQMFEDD9Lorccp7v9qj1YQEBrRUD/3N4cCMWjzsIFp2Vh9y+
RzUrblyF84tJyA7Rr1p+A7dxf7je3Zx5QMEXosWL1WGnS5vC9YH2WZwv6sCU61gU
rSy9z8KHlBEHh+Z6fdRMrjd9byPf+n3cktT0NhS23oXB1ZhNZcB2KKhVPlNctMqO
3gTYx+Nlo6xqjR+J2NnBYU8p
=7fQV
-----END PGP PUBLIC KEY BLOCK-----
コアチームメンバ
&a.asami;
Satoshi Asami <asami@cs.berkeley.edu>
- aka <asami@FreeBSD.ORG>
+ aka <asami@FreeBSD.org>
Fingerprint = EB 3C 68 9E FB 6C EB 3F DB 2E 0F 10 8F CE 79 CA
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: 2.6.2
mQCNAzPVyoQAAAEEAL7W+kipxB171Z4SVyyL9skaA7hG3eRsSOWk7lfvfUBLtPog
f3OKwrApoc/jwLf4+Qpdzv5DLEt/6Hd/clskhJ+q1gMNHyZ5ABmUxrTRRNvJMTrb
3fPU3oZj7sL/MyiFaT1zF8EaMP/iS2ZtcFsbYOqGeA8E/58uk4NA0SoeCNiJAAUR
tCVTYXRvc2hpIEFzYW1pIDxhc2FtaUBjcy5iZXJrZWxleS5lZHU+iQCVAwUQM/AT
+EqGN2HYnOMZAQF11QP/eSXb2FuTb1yX5yoo1Im8YnIk1SEgCGbyEbOMMBznVNDy
5g2TAD0ofLxPxy5Vodjg8rf+lfMVtO5amUH6aNcORXRncE83T10JmeM6JEp0T6jw
zOHKz8jRzygYLBayGsNIJ4BGxa4LeaGxJpO1ZEvRlNkPH/YEXK5oQmq9/DlrtYOJ
AEUDBRAz42JT8ng6GBbVvu0BAU8nAYCsJ8PiJpRUGlrz6rxjX8hqM1v3vqFHLcG+
G52nVMBSy+RZBgzsYIPwI5EZtWAKb22JAJUDBRAz4QBWdbtuOHaj97EBAaQPA/46
+NLUp+Wubl90JoonoXocwAg88tvAUVSzsxPXj0lvypAiSI2AJKsmn+5PuQ+/IoQy
lywRsxiQ5GD7C72SZ1yw2WI9DWFeAi+qa4b8n9fcLYrnHpyCY+zxEpu4pam8FJ7H
JocEUZz5HRoKKOLHErzXDiuTkkm72b1glmCqAQvnB4kAlQMFEDPZ3gyDQNEqHgjY
iQEBFfUEALu2C0uo+1Z7C5+xshWRYY5xNCzK20O6bANVJ+CO2fih96KhwsMof3lw
fDso5HJSwgFd8WT/sR+Wwzz6BAE5UtgsQq5GcsdYQuGI1yIlCYUpDp5sgswNm+OA
bX5a+r4F/ZJqrqT1J56Mer0VVsNfe5nIRsjd/rnFAFVfjcQtaQmjiQCVAwUQM9uV
mcdm8Q+/vPRJAQELHgP9GqNiMpLQlZig17fDnCJ73P0e5t/hRLFehZDlmEI2TK7j
Yeqbw078nZgyyuljZ7YsbstRIsWVCxobX5eH1kX+hIxuUqCAkCsWUY4abG89kHJr
XGQn6X1CX7xbZ+b6b9jLK+bJKFcLSfyqR3M2eCyscSiZYkWKQ5l3FYvbUzkeb6K0
IVNhdG9zaGkgQXNhbWkgPGFzYW1pQEZyZWVCU0QuT1JHPg==
=39SC
-----END PGP PUBLIC KEY BLOCK-----
&a.jmb;
Jonathan M. Bresler <jmb@FreeBSD.org>
f16 Key fingerprint16 = 31 57 41 56 06 C1 40 13 C5 1C E3 E5 DC 62 0E FB
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: PGPfreeware 5.0i for non-commercial use
mQCNAzG2GToAAAEEANI6+4SJAAgBpl53XcfEr1M9wZyBqC0tzpie7Zm4vhv3hO8s
o5BizSbcJheQimQiZAY4OnlrCpPxijMFSaihshs/VMAz1qbisUYAMqwGEO/T4QIB
nWNo0Q/qOniLMxUrxS1RpeW5vbghErHBKUX9GVhxbiVfbwc4wAHbXdKX5jjdAAUR
tCVKb25hdGhhbiBNLiBCcmVzbGVyIDxqbWJARnJlZUJTRC5PUkc+iQCVAwUQNbtI
gAHbXdKX5jjdAQHamQP+OQr10QRknamIPmuHmFYJZ0jU9XPIvTTMuOiUYLcXlTdn
GyTUuzhbEywgtOldW2V5iA8platXThtqC68NsnN/xQfHA5xmFXVbayNKn8H5stDY
2s/4+CZ06mmJfqYmONF1RCbUk/M84rVT3Gn2tydsxFh4Pm32lf4WREZWRiLqmw+J
AJUDBRA0DfF99RVb+45ULV0BAcZ0BACCydiSUG1VR0a5DBcHdtin2iZMPsJUPRqJ
tWvP6VeI8OFpNWQ4LW6ETAvn35HxV2kCcQMyht1kMD+KEJz7r8Vb94TS7KtZnNvk
2D1XUx8Locj6xel5c/Lnzlnnp7Bp1XbJj2u/NzCaZQ0eYBdP/k7RLYBYHQQln5x7
BOuiRJNVU4kAlQMFEDQLcShVLh4uc9KIpQEBJv4D/3mDrD0MM9EYOVuyXik3UGVI
8quYNA9ErVcLdt10NjYc16VI2HOnYVgPRag3Wt7W8wlXShpokfC/vCNt7f5JgRf8
h2a1/MjQxtlD+4/Js8k7GLa53oLon6YQYk32IEKexoLPwIRO4L2BHWa3GzHJJSP2
aTR/Ep90/pLdAOu/oJDUiQCVAwUQMqyL0LNaYutZnzI9AQF25QP9GFXhBrz2tiWz
2+0gWbpcGNnyZbfsVjF6ojGDdmsjJMyWCGw49XR/vPKYIJY9EYo4t49GIajRkISQ
NNiIz22fBAjT2uY9YlvnTJ9NJleMfHr4dybo7oEKYMWWijQzGjqf2m8wf9OaaofE
KwBX6nxcRbKsxm/BVLKczGYl3XtjkcuJAJUDBRA1ol5TZWCprDT5+dUBATzXA/9h
/ZUuhoRKTWViaistGJfWi26FB/Km5nDQBr/Erw3XksQCMwTLyEugg6dahQ1u9Y5E
5tKPxbB69eF+7JXVHE/z3zizR6VL3sdRx74TPacPsdhZRjChEQc0htLLYAPkJrFP
VAzAlSlm7qd+MXf8fJovQs6xPtZJXukQukPNlhqZ94kAPwMFEDSH/kF4tXKgazlt
bxECfk4AoO+VaFVfguUkWX10pPSSfvPyPKqiAJ4xn8RSIe1ttmnqkkDMhLh00mKj
lLQuSm9uYXRoYW4gTS4gQnJlc2xlciA8Sm9uYXRoYW4uQnJlc2xlckBVU2kubmV0
PokAlQMFEDXbdSkB213Sl+Y43QEBV/4D/RLJNTrtAqJ1ATxXWv9g8Cr3/YF0GTmx
5dIrJOpBup7eSSmiM/BL9Is4YMsoVbXCI/8TqA67TMICvq35PZU4wboQB8DqBAr+
gQ8578M7Ekw1OAF6JXY6AF2P8k7hMcVBcVOACELPT/NyPNByG5QRDoNmlsokJaWU
/2ls4QSBZZlb
=zbCw
-----END PGP PUBLIC KEY BLOCK-----
&a.ache;
Andrey A. Chernov <ache@FreeBSD.org>
aka <ache@nagual.pp.ru>
Key fingerprint = 33 03 9F 48 33 7B 4A 15 63 48 88 0A C4 97 FD 49
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: 2.6.3ia
mQCNAiqUMGQAAAEEAPGhcD6A2Buey5LYz0sphDLpVgOZc/bb9UHAbaGKUAGXmafs
Dcb2HnsuYGgX/zrQXuCi/wIGtXcZWB97APtKOhFsZnPinDR5n/dde/mw9FnuhwqD
m+rKSL1HlN0z/Msa5y7g16760wHhSR6NoBSEG5wQAHIMMq7Q0uJgpPLZnQjrAAUT
tCVBbmRyZXkgQS4gQ2hlcm5vdiA8YWNoZUBuYWd1YWwucHAucnU+iQCVAwUQM2Ez
u+JgpPLZnQjrAQEyugP8DPnS8ixJ5OeuYgPFQf5sy6l+LrB6hyaS+lgsUPahWjNY
cnaDmfda/q/BV5d4+y5rlQe/pjnYG7/yQuAR3jhlXz8XDrqlBOnW9AtYjDt5rMfJ
aGFTGXAPGZ6k6zQZE0/YurT8ia3qjvuZm3Fw4NJrHRx7ETHRvVJDvxA6Ggsvmr20
JEFuZHJleSBBLiBDaGVybm92IDxhY2hlQEZyZWVCU0Qub3JnPokAlQMFEDR5uVbi
YKTy2Z0I6wEBLgED/2mn+hw4/3peLx0Sb9LNx//NfCCkVefSf2G9Qwhx6dvwbX7h
mFca97h7BQN4GubU1Z5Ffs6TeamSBrotBYGmOCwvJ6S9WigF9YHQIQ3B4LEjskAt
pcjU583y42zM11kkvEuQU2Gde61daIylJyOxsgpjSWpkxq50fgY2kLMfgl/ftCZB
bmRyZXkgQS4gQ2hlcm5vdiA8YWNoZUBuaWV0enNjaGUubmV0PokAlQMFEDR5svDi
YKTy2Z0I6wEBOTQD/0OTCAXIjuak363mjERvzSkVsNtIH9hA1l0w6Z95+iH0fHrW
xXKT0vBZE0y0Em+S3cotLL0bMmVE3F3D3GyxhBVmgzjyx0NYNoiQjYdi+6g/PV30
Cn4vOO6hBBpSyI6vY6qGNqcsawuRtHNvK/53MpOfKwSlICEBYQimcZhkci+EtCJB
bmRyZXkgQS4gQ2hlcm5vdiA8YWNoZUBuYWd1YWwucnU+iQCVAwUQMcm5HeJgpPLZ
nQjrAQHwvQP9GdmAf1gdcuayHEgNkc11macPH11cwWjYjzA2YoecFMGV7iqKK8QY
rr1MjbGXf8DAG8Ubfm0QbI8Lj8iG3NgqIru0c72UuHGSn/APfGGG0AtPX5UK/k7B
gI0Ca2po6NA5nrSp8tDsdEz/4gyea84RXl2prtTf5Jj07hflbRstGXK0MkFuZHJl
eSBBLiBDaGVybm92LCBCbGFjayBNYWdlIDxhY2hlQGFzdHJhbC5tc2suc3U+iQCV
AwUQMCsAo5/rGryoL8h3AQHq1QQAidyNFqA9hvrmMcjpY7csJVFlGvj574Wj4GPa
o3pZeuQaMBmsWqaXLYnWU/Aldb6kTz6+nRcQX50zFH0THSPfApwEW7yybSTI5apJ
mWT3qhKN2vmLNg2yNzhqLTzHLD1lH3i1pfQq8WevrNfjLUco5S/VuekTma/osnzC
Cw7fQzCJAJUDBRAwKvwoa1pnjYGyp3kBARihBACoXr3qfG65hFCyKJISmjOvaoGr
anxUIkeDS0yQdTHzhQ+dwB1OhhK15E0Nwr0MKajLMm90n6+Zdb5y/FIjpPriu8dI
rlHrWZlewa88eEDM+Q/NxT1iYg+HaKDAE171jmLpSpCL0MiJtO0i36L3ekVD7Hv8
vffOZHPSHirIzJOZTYkAlQMFEDAau6zFLUdtDb+QbQEBQX8D/AxwkYeFaYxZYMFO
DHIvSk23hAsjCmUA2Uil1FeWAusb+o8xRfPDc7TnosrIifJqbF5+fcHCG5VSTGlh
Bhd18YWUeabf/h9O2BsQX55yWRuB2x3diJ1xI/VVdG+rxlMCmE4ZR1Tl9x+Mtun9
KqKVpB39VlkCBYQ3hlgNt/TJUY4riQCVAwUQMBHMmyJRltlmbQBRAQFQkwP/YC3a
hs3ZMMoriOlt3ZxGNUUPTF7rIER3j+c7mqGG46dEnDB5sUrkzacpoLX5sj1tGR3b
vz9a4vmk1Av3KFNNvrZZ3/BZFGpq3mCTiAC9zsyNYQ8L0AfGIUO5goCIjqwOTNQI
AOpNsJ5S+nMAkQB4YmmNlI6GTb3D18zfhPZ6uciJAJUCBRAwD0sl4uW74fteFRkB
AWsAA/9NYqBRBKbmltQDpyK4+jBAYjkXBJmARFXKJYTlnTgOHMpZqoVyW96xnaa5
MzxEiu7ZWm5oL10QDIp1krkBP2KcmvfSMMHb5aGCCQc2/P8NlfXAuHtNGzYiI0UA
Iwi8ih/S1liVfvnqF9uV3d3koE7VsQ9OA4Qo0ZL2ggW+/gEaYIkAlQMFEDAOz6qx
/IyHe3rl4QEBIvYD/jIr8Xqo/2I5gncghSeFR01n0vELFIvaF4cHofGzyzBpYsfA
+6pgFI1IM+LUF3kbUkAY/2uSf9U5ECcaMCTWCwVgJVO+oG075SHEM4buhrzutZiM
1dTyTaepaPpTyRMUUx9ZMMYJs7sbqLId1eDwrJxUPhrBNvf/w2W2sYHSY8cdiQCV
AwUQMAzqgHcdkq6JcsfBAQGTxwQAtgeLFi2rhSOdllpDXUwz+SS6bEjFTWgRsWFM
y9QnOcqryw7LyuFmWein4jasjY033JsODfWQPiPVNA3UEnXVg9+n8AvNMPO8JkRv
Cn1eNg0VaJy9J368uArio93agd2Yf/R5r+QEuPjIssVk8hdcy/luEhSiXWf6bLMV
HEA0J+OJAJUDBRAwDUi+4mCk8tmdCOsBAatBBACHB+qtW880seRCDZLjl/bT1b14
5po60U7u6a3PEBkY0NA72tWDQuRPF/Cn/0+VdFNxQUsgkrbwaJWOoi0KQsvlOm3R
rsxKbn9uvEKLxExyKH3pxp76kvz/lEWwEeKvBK+84Pb1lzpG3W7u2XDfi3VQPTi3
5SZMAHc6C0Ct/mjNlYkAlQMFEDAMrPD7wj+NsTMUOQEBJckD/ik4WsZzm2qOx9Fw
erGq7Zwchc+Jq1YeN5PxpzqSf4AG7+7dFIn+oe6X2FcIzgbYY+IfmgJIHEVjDHH5
+uAXyb6l4iKc89eQawO3t88pfHLJWbTzmnvgz2cMrxt94HRvgkHfvcpGEgbyldq6
EB33OunazFcfZFRIcXk1sfyLDvYE
=1ahV
-----END PGP PUBLIC KEY BLOCK-----
&a.jkh;
Jordan K. Hubbard <jkh@FreeBSD.org>
Fingerprint = 3C F2 27 7E 4A 6C 09 0A 4B C9 47 CD 4F 4D 0B 20
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: 2.6.3ia
mQCNAzFjX0IAAAEEAML+nm9/kDNPp43ZUZGjYkm2QLtoC1Wxr8JulZXqk7qmhYcQ
jvX+fyoriJ6/7ZlnLe2oG5j9tZOnRLPvMaz0g9CpW6Dz3nkXrNPkmOFV9B8D94Mk
tyFeRJFqnkCuqBj6D+H8FtBwEeeTecSh2tJ0bZZTXnAMhxeOdvUVW/uOVC1dAAUR
tCNKb3JkYW4gSy4gSHViYmFyZCA8amtoQEZyZWVCU0Qub3JnPokBFQMFEDXCTXQM
j46yp4IfPQEBwO8IAIN0J09AXBf86dFUTFGcAMrEQqOF5IL+KGorAjzuYxERhKfD
ZV7jA+sCQqxkWfcVcE20kVyVYqzZIkio9a5zXP6TwA247JkPt54S1PmMDYHNlRIY
laXlNoji+4q3HP2DfHqXRT2859rYpm/fG/v6pWkos5voPKcZ2OFEp9W+Ap88oqw+
5rx4VetZNJq1Epmis4INj6XqNqj85+MOOIYE+f445ohDM6B/Mxazd6cHFGGIR+az
VjZ6lCDMLjzhB5+FqfrDLYuMjqkMTR5z9DL+psUvPlCkYbQ11NEWtEmiIWjUcNJN
GCxGzv5bXk0XPu3ADwbPkFE2usW1cSM7AQFiwuyJAJUDBRAxe+Q9a1pnjYGyp3kB
AV7XA/oCSL/Cc2USpQ2ckwkGpyvIkYBPszIcabSNJAzm2hsU9Qa6WOPxD8olDddB
uJNiW/gznPC4NsQ0N8Zr4IqRX/TTDVf04WhLmd8AN9SOrVv2q0BKgU6fLuk979tJ
utrewH6PR2qBOjAaR0FJNk4pcYAHeT+e7KaKy96YFvWKIyDvc4kAlQMFEDF8ldof
f6kIA1j8vQEBDH4D/0Zm0oNlpXrAE1EOFrmp43HURHbij8n0Gra1w9sbfo4PV+/H
U8ojTdWLy6r0+prH7NODCkgtIQNpqLuqM8PF2pPtUJj9HwTmSqfaT/LMztfPA6PQ
csyT7xxdXl0+4xTDl1avGSJfYsI8XCAy85cTs+PQwuyzugE/iykJO1Bnj/paiQCV
AwUQMXvlBvUVW/uOVC1dAQF2fQP/RfYC6RrpFTZHjo2qsUHSRk0vmsYfwG5NHP5y
oQBMsaQJeSckN4n2JOgR4T75U4vS62aFxgPLJP3lOHkU2Vc7xhAuBvsbGr5RP8c5
LvPOeUEyz6ZArp1KUHrtcM2iK1FBOmY4dOYphWyWMkDgYExabqlrAq7FKZftpq/C
BiMRuaw=
=C/Jw
-----END PGP PUBLIC KEY BLOCK-----
&a.phk;
Poul-Henning Kamp <phk@FreeBSD.org>
Fingerprint = A3 F3 88 28 2F 9B 99 A2 49 F4 E2 FA 5A 78 8B 3E
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: 2.6.3ia
mQCNAzAdpMIAAAEEALHDgrFUwhZtb7PbXg3upELoDVEUPFRwnmpJH1rRqyROUGcI
ooVe7u+FQlIs5OsXK8ECs/5Wpe2UrZSzHvjwBYOND5H42YtI5UULZLRCo5bFfTVA
K9Rpo5icfTsYihrzU2nmnycwFMk+jYXyT/ZDYWDP/BM9iLjj0x9/qQgDWPy9AAUR
tCNQb3VsLUhlbm5pbmcgS2FtcCA8cGhrQEZyZWVCU0Qub3JnPokAlQMFEDQQ0aZ1
u244dqP3sQEBu4ID/jXFFeJgs2MdTDNOZM/FbfDhI4qxAbYUsqS3+Ra16yd8Wd/A
jV+IHJE2NomFWl8UrUjCGinXiwzPgK1OfFJrS9Og1wQLvAl0X84BA8MTP9BQr4w7
6I/RbksgUSrVCIO8MJwlydjSPocWGBeXlVjbZxXzyuJk7H+TG+zuI5BuBcNIiQCV
AwUQMwYr2rNaYutZnzI9AQHiIQP/XxtBWFXaBRgVLEhRNpS07YdU+LsZGlLOZehN
9L4UnJFHQQPNOpMey2gF7Y95aBOw5/1xS5vlQpwmRFCntWsm/gqdzK6rulfr1r5A
y94LO5TAC6ucNu396Y4vo1TyD1STnRC466KlvmtQtAtFGgXlORWLL9URLzcRFd1h
D0yXd9aJAJUDBRAxfo19a1pnjYGyp3kBAQqyA/4v64vP3l1F0Sadn6ias761hkz/
SMdTuLzILmofSCC4o4KWMjiWJHs2Soo41QlZi1+xMHzV32JKiwFlGtPHqL+EHyXy
Q4H3vmf9/1KF+0XCaMtgI0wWUMziPSTJK8xXbRRmMDK/0F4TnVVaUhnmf+h5K7O6
XdmejDTa0X/NWcicmIkAlQMFEDF8lef1FVv7jlQtXQEBcnwD/0ro1PpUtlkLmreD
tsGTkNa7MFLegrYRvDDrHOwPZH152W2jPUncY+eArQJakeHiTDmJNpFagLZglhE0
bqJyca+UwCXX+6upAclWHEBMg2byiWMMqyPVEEnpUoHM1sIkgdNWlfQAmipRBfYh
2LyCgWvR8CbtwPYIFvUmGgB3MR87iQCVAwUQMUseXB9/qQgDWPy9AQGPkwP/WEDy
El2Gkvua9COtMAifot2vTwuvWWpNopIEx0Ivey4aVbRLD90gGCJw8OGDEtqFPcNV
8aIiy3fYVKXGZZjvCKd7zRfhNmQn0eLDcymq2OX3aPrMc2rRlkT4Jx425ukR1gsO
qiQAgw91aWhY8dlw/EKzk8ojm52x4VgXaBACMjaJAJUDBRAxOUOg72G56RHVjtUB
AbL4A/9HOn5Qa0lq9tKI/HkSdc5fGQD/66VdCBAb292RbB7CS/EM07MdbcqRRYIa
0+0gwQ3OdsWPdCVgH5RIhp/WiC+UPkR1cY8N9Mg2kTwJfZZfNqN+BgWlgRMPN27C
OhYNl8Q33Nl9CpBLrZWABF44jPeT0EvvTzP/5ZQ7T75EsYKYiYkAlQMFEDDmryQA
8tkJ67sbQQEBPdsEALCj6v1OBuJLLJTlxmmrkqAZPVzt5QdeO3Eqa2tcPWcU0nqP
vHYMzZcZ7oFg58NZsWrhSQQDIB5e+K65Q/h6dC7W/aDskZd64jxtEznX2kt0/MOr
8OdsDis1K2f9KQftrAx81KmVwW4Tqtzl7NWTDXt44fMOtibCwVq8v2DFkTJy
=JKbP
-----END PGP PUBLIC KEY BLOCK-----
&a.rich;
Rich Murphey <rich@FreeBSD.org>
fingerprint = AF A0 60 C4 84 D6 0C 73 D1 EF C0 E9 9D 21 DB E4
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: 2.6.2
mQCNAy97V+MAAAEEALiNM3FCwm3qrCe81E20UOSlNclOWfZHNAyOyj1ahHeINvo1
FBF2Gd5Lbj0y8SLMno5yJ6P4F4r+x3jwHZrzAIwMs/lxDXRtB0VeVWnlj6a3Rezs
wbfaTeSVyh5JohEcKdoYiMG5wjATOwK/NAwIPthB1RzRjnEeer3HI3ZYNEOpAAUR
tCRSaWNoIE11cnBoZXkgPHJpY2hAbGFtcHJleS51dG1iLmVkdT6JAJUDBRAve15W
vccjdlg0Q6kBAZTZBACcNd/LiVnMFURPrO4pVRn1sVQeokVX7izeWQ7siE31Iy7g
Sb97WRLEYDi686osaGfsuKNA87Rm+q5F+jxeUV4w4szoqp60gGvCbD0KCB2hWraP
/2s2qdVAxhfcoTin/Qp1ZWvXxFF7imGA/IjYIfB42VkaRYu6BwLEm3YAGfGcSw==
=QoiM
-----END PGP PUBLIC KEY BLOCK-----
&a.jdp;
John D. Polstra <jdp@polstra.com>
Fingerprint = 54 3A 90 59 6B A4 9D 61 BF 1D 03 09 35 8D F6 0D
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: 2.6.2
mQCNAzMElMEAAAEEALizp6ZW9QifQgWoFmG3cXhzQ1+Gt+a4S1adC/TdHdBvw1M/
I6Ok7TC0dKF8blW3VRgeHo4F3XhGn+n9MqIdboh4HJC5Iiy63m98sVLJSwyGO4oM
dkEGyyCLxqP6h/DU/tzNBdqFzetGtYvU4ftt3RO0a506cr2CHcdm8Q+/vPRJAAUR
tCFKb2huIEQuIFBvbHN0cmEgPGpkcEBwb2xzdHJhLmNvbT6JAJUDBRAzBNBE9RVb
+45ULV0BAWgiA/0WWO3+c3qlptPCHJ3DFm6gG/qNKsY94agL/mHOr0fxMP5l2qKX
O6a1bWkvGoYq0EwoKGFfn0QeHiCl6jVi3CdBX+W7bObMcoi+foqZ6zluOWBC1Jdk
WQ5/DeqQGYXqbYjqO8voCScTAPge3XlMwVpMZTv24u+nYxtLkE0ZcwtY9IkAlQMF
EDMEt/DHZvEPv7z0SQEBXh8D/2egM5ckIRpGz9kcFTDClgdWWtlgwC1iI2p9gEhq
aufy+FUJlZS4GSQLWB0BlrTmDC9HuyQ+KZqKFRbVZLyzkH7WFs4zDmwQryLV5wkN
C4BRRBXZfWy8s4+zT2WQD1aPO+ZsgRauYLkJgTvXTPU2JCN62Nsd8R7bJS5tuHEm
7HGmiQCVAwUQMwSvHB9/qQgDWPy9AQFAhAQAgJ1AlbKITrEoJ0+pLIsov3eQ348m
SVHEBGIkU3Xznjr8NzT9aYtq4TIzt8jplqP3QoV1ka1yYpZf0NjvfZ+ffYp/sIaU
wPbEpgtmHnVWJAebMbNs/Ad1w8GDvxEt9IaCbMJGZnHmfnEqOBIxF7VBDPHHoJxM
V31K/PIoYsHAy5w=
=cHFa
-----END PGP PUBLIC KEY BLOCK-----
&a.guido;
Guido van Rooij <guido@gvr.win.tue.nl>
Fingerprint = 16 79 09 F3 C0 E4 28 A7 32 62 FA F6 60 31 C0 ED
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: 2.6.2
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
mgDVjsHaYOx3EXF0nnDmtXurGioEmW1J
=mSvM
-----END PGP PUBLIC KEY BLOCK-----
&a.peter;
Peter Wemm <peter@FreeBSD.org>
aka <peter@spinner.dialix.com>
aka <peter@haywire.dialix.com>
aka <peter@perth.dialix.oz.au>
Key fingerprint = 47 05 04 CA 4C EE F8 93 F6 DB 02 92 6D F5 58 8A
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: 2.6.3ia
mQCNAy9/FJwAAAEEALxs9dE9tFd0Ru1TXdq301KfEoe5uYKKuldHRBOacG2Wny6/
W3Ill57hOi2+xmq5X/mHkapywxvy4cyLdt31i4GEKDvxpDvEzAYcy2n9dIup/eg2
kEhRBX9G5k/LKM4NQsRIieaIEGGgCZRm0lINqw495aZYrPpO4EqGN2HYnOMZAAUT
tCVQZXRlciBXZW1tIDxwZXRlckBoYXl3aXJlLmRpYWxpeC5jb20+iQCVAwUQMwWT
cXW7bjh2o/exAQEFkQP+LIx5zKlYp1uR24xGApMFNrNtjh+iDIWnxxb2M2Kb6x4G
9z6OmbUCoDTGrX9SSL2Usm2RD0BZfyv9D9QRWC2TSOPkPRqQgIycc11vgbLolJJN
eixqsxlFeKLGEx9eRQCCbo3dQIUjc2yaOe484QamhsK1nL5xpoNWI1P9zIOpDiGJ
AJUDBRAxsRPqSoY3Ydic4xkBAbWLA/9q1Fdnnk4unpGQsG31Qbtr4AzaQD5m/JHI
4gRmSmbj6luJMgNG3fpO06Gd/Z7uxyCJB8pTst2a8C/ljOYZxWT+5uSzkQXeMi5c
YcI1sZbUpkHtmqPW623hr1PB3ZLA1TIcTbQW+NzJsxQ1Pc6XG9fGkT9WXQW3Xhet
AP+juVTAhLQlUGV0ZXIgV2VtbSA8cGV0ZXJAcGVydGguZGlhbGl4Lm96LmF1PokA
lQMFEDGxFCFKhjdh2JzjGQEB6XkD/2HOwfuFrnQUtdwFPUkgtEqNeSr64jQ3Maz8
xgEtbaw/ym1PbhbCk311UWQq4+izZE2xktHTFClJfaMnxVIfboPyuiSF99KHiWnf
/Gspet0S7m/+RXIwZi1qSqvAanxMiA7kKgFSCmchzas8TQcyyXHtn/gl9v0khJkb
/fv3R20btB5QZXRlciBXZW1tIDxwZXRlckBGcmVlQlNELm9yZz6JAJUDBRAxsRJd
SoY3Ydic4xkBAZJUA/4i/NWHz5LIH/R4IF/3V3LleFyMFr5EPFY0/4mcv2v+ju9g
brOEM/xd4LlPrx1XqPeZ74JQ6K9mHR64RhKR7ZJJ9A+12yr5dVqihe911KyLKab9
4qZUHYi36WQu2VtLGnw/t8Jg44fQSzbBF5q9iTzcfNOYhRkSD3BdDrC3llywO7Ql
UGV0ZXIgV2VtbSA8cGV0ZXJAc3Bpbm5lci5kaWFsaXguY29tPokAlQMFEDGxEi1K
hjdh2JzjGQEBdA4EAKmNFlj8RF9HQsoI3UabnvYqAWN5wCwEB4u+Zf8zq6OHic23
TzoK1SPlmSdBE1dXXQGS6aiDkLT+xOdeewNs7nfUIcH/DBjSuklAOJzKliXPQW7E
kuKNwy4eq5bl+j3HB27i+WBXhn6OaNNQY674LGaR41EGq44Wo5ATcIicig/z
=gv+h
-----END PGP PUBLIC KEY BLOCK-----
&a.joerg;
Type Bits/KeyID Date User ID
pub 1024/76A3F7B1 1996/04/27 Joerg Wunsch <joerg_wunsch@uriah.heep.sax.de>
Key fingerprint = DC 47 E6 E4 FF A6 E9 8F 93 21 E0 7D F9 12 D6 4E
Joerg Wunsch <joerg_wunsch@interface-business.de>
Joerg Wunsch <j@uriah.heep.sax.de>
Joerg Wunsch <j@interface-business.de>
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: 2.6.3ia
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
=97h7
-----END PGP PUBLIC KEY BLOCK-----
開発者
&a.wosch;
Type Bits/KeyID Date User ID
pub 1024/2B7181AD 1997/08/09 Wolfram Schneider <wosch@FreeBSD.org>
Key fingerprint = CA 16 91 D9 75 33 F1 07 1B F0 B4 9F 3E 95 B6 09
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: 2.6.3ia
mQCNAzPs+aEAAAEEAJqqMm2I9CxWMuHDvuVO/uh0QT0az5ByOktwYLxGXQmqPG1G
Q3hVuHWYs5Vfm/ARU9CRcVHFyqGQ3LepoRhDHk+JcASHan7ptdFsz7xk1iNNEoe0
vE2rns38HIbiyQ/2OZd4XsyhFOFtExNoBuyDyNoe3HbHVBQT7TmN/mkrcYGtAAUR
tCVXb2xmcmFtIFNjaG5laWRlciA8d29zY2hARnJlZUJTRC5vcmc+iQCVAwUQNxnH
AzmN/mkrcYGtAQF5vgP/SLOiI4AwuPHGwUFkwWPRtRzYSySXqwaPCop5mVak27wk
pCxGdzoJO2UgcE812Jt92Qas91yTT0gsSvOVNATaf0TM3KnKg5ZXT1QIzYevWtuv
2ovAG4au3lwiFPDJstnNAPcgLF3OPni5RCUqBjpZFhb/8YDfWYsMcyn4IEaJKre0
JFdvbGZyYW0gU2NobmVpZGVyIDxzY2huZWlkZXJAemliLmRlPokAlQMFEDcZxu85
jf5pK3GBrQEBCRgD/jPj1Ogx4O769soiguL1XEHcxhqtrpKZkKwxmDLRa0kJFwLp
bBJ3Qz3vwaB7n5gQU0JiL1B2M7IxVeHbiIV5pKp7FD248sm+HZvBg6aSnCg2JPUh
sHd1tK5X4SB5cjFt3Cj0LIN9/c9EUxm3SoML9bovmze60DckErrRNOuTk1IntCJX
b2xmcmFtIFNjaG5laWRlciA8d29zY2hAYXBmZWwuZGU+iQEVAwUQNmfWXAjJLLJO
sC7dAQEASAgAnE4g2fwMmFkQy17ATivljEaDZN/m0GdXHctdZ8CaPrWk/9/PTNK+
U6xCewqIKVwtqxVBMU1VpXUhWXfANWCB7a07D+2GrlB9JwO5NMFJ6g0WI/GCUXjC
xb3NTkNsvppL8Rdgc8wc4f23GG4CXVggdTD2oUjUH5Bl7afgOT4xLPAqePhS7hFB
UnMsbA94OfxPtHe5oqyaXt6cXH/SgphRhzPPZq0yjg0Ef+zfHVamvZ6Xl2aLZmSv
Cc/rb0ShYDYi39ly9OPPiBPGbSVw2Gg804qx3XAKiTFkLsbYQnRt7WuCPsOVjFkf
CbQS31TaclOyzenZdCAezubGIcrJAKZjMIkAlQMFEDPs+aE5jf5pK3GBrQEBlIAD
/3CRq6P0m1fi9fbPxnptuipnoFB/m3yF6IdhM8kSe4XlXcm7tS60gxQKZgBO3bDA
5QANcHdl41Vg95yBAZepPie6iQeAAoylRrONeIy6XShjx3S0WKmA4+C8kBTL+vwa
UqF9YJ1qesZQtsXlkWp/Z7N12RkueVAVQ7wRPwfnz6E3tC5Xb2xmcmFtIFNjaG5l
aWRlciA8d29zY2hAcGFua2UuZGUuZnJlZWJzZC5vcmc+iQCVAwUQNxnEqTmN/mkr
cYGtAQFnpQP9EpRZdG6oYN7d5abvIMN82Z9x71a4QBER+R62mU47wqdRG2b6jMMh
3k07b2oiprVuPhRw/GEPPQevb6RRT6SD9CPYAGfK3MDE8ZkMj4d+7cZDRJQ35sxv
gAzQwuA9l7kS0mt5jFRPcEg5/KpuyehRLckjx8jpEM7cEJDHXhBIuVg=
=3V1R
-----END PGP PUBLIC KEY BLOCK-----
&a.brian;
Type Bits/KeyID Date User ID
pub 1024/666A7421 1997/04/30 Brian Somers <brian@awfulhak.org>
Key fingerprint = 2D 91 BD C2 94 2C 46 8F 8F 09 C4 FC AD 12 3B 21
Brian Somers <brian@uk.FreeBSD.org>
Brian Somers <brian@OpenBSD.org>
Brian Somers <brian@FreeBSD.org>
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: 2.6.3ia
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
qw1G19GgXUwUkPvy9+dNIM/aYoI/e0Iv3P9uug==
=R3k0
-----END PGP PUBLIC KEY BLOCK-----
diff --git a/ja_JP.eucJP/books/handbook/ppp-and-slip/chapter.sgml b/ja_JP.eucJP/books/handbook/ppp-and-slip/chapter.sgml
index f72b93be10..d7520830d8 100644
--- a/ja_JP.eucJP/books/handbook/ppp-and-slip/chapter.sgml
+++ b/ja_JP.eucJP/books/handbook/ppp-and-slip/chapter.sgml
@@ -1,2813 +1,2813 @@
PPP と SLIP
もしあなたがモデムを使ってインターネットに接続したり,
他の人々に FreeBSD によるインターネットへのダイヤルアップ接続を
提供しようとしているのでしたら, PPP または SLIP
接続を選択することができます. PPP 接続には, 2
種類の方法が提供されています: ユーザPPP
(iijppp とも呼ばれます)
とカーネルPPP です. 両方の PPP の設定手順と,
SLIP の設定方法については以下の章に書かれています.
ユーザ ppp の設定
ユーザ ppp は FreeBSD 2.0.5-RELEASE において,
既存のカーネル実装版の PPP に加えて導入されました. それでは,
これまでの pppd との違い, すなわち この新しい PPP
が追加された理由とは いったい何なのでしょうか?
マニュアルから引用してみます:
これはユーザプロセス PPP ソフトウェアパッケージです.
通常, PPP は (例えば pppd
でそうなっているように) カーネルの一部として
実装されていますので, デバッグや動作の変更が少々困難です.
しかし, この実装では, PPP はトンネルデバイスドライバ
(tun) の
助けにより, ユーザプロセスとして実装されています.
本質として, これは常に PPP デーモンを実行しておかなくても,
必要な時に ppp プログラムを実行できるということを意味します.
このプログラムはカーネルとのデータ送受のために
一般のトンネルデバイスを 使うことができるため, PPP
インターフェースをカーネルに組み込んでおく
必要がありません.
以降では, ユーザ ppp と pppd のような他の
PPP クライアント/サーバ
ソフトウェアとを区別する必要が無い場合には, ユーザ ppp を単に
ppp とだけ 呼びます. 特に断らない限り,
このセクションのすべてのコマンドは root 権限で
実行する必要があります.
バージョン 2 の ppp では,
数多くの機能強化がおこなわれています. どのバージョンの ppp
がインストールされているのかを調べるには, 引数なしで ppp
を起動し, プロンプトが表示されたら show
version とタイプしてください. 最新版の ppp
にアップグレードするのは, (どのバージョンの FreeBSD においても)
難しいことではありません. www.Awfulhak.org
から最新版のアーカイブをダウンロードしてください.
スタートの前に
このドキュメントでは, あなたが
およそ以下のような状況にあると仮定しています:
PPP 接続の使えるインターネットサービスプロバイダ (ISP)
のアカウントを 持っている. さらに, 接続済みのモデム
(またはその他のデバイス) があり,
プロバイダとの接続が可能なように正しく設定されている.
以下の情報を手に入れておく必要があるでしょう:
プロバイダの電話番号.
ログイン名とパスワード. これは通常の unix
形式のログイン名と パスワードの組という場合もありますし,
PPP PAP または CHAP の
ログイン名とパスワードの組という場合もあります.
一つ以上のネームサーバの IP アドレス. 通常,
プロバイダから IP アドレスを二つ指示されている はずです.
自分でネームサーバを立ち上げている場合を除き, バージョン
1.X の PPP
を使用している場合には,
この情報は絶対に必要です. バージョン
2 の PPP からは,
ネームサーバアドレスの 自動設定機能が追加されています.
この機能をプロバイダ側でもサポートしていれば, ppp
の設定ファイルに enable dns
と書いておくことで PPP
がネームサーバアドレスの設定をおこなうようになります.
プロバイダからは以下の情報が提供されているはずですが,
どうしても必要というわけではありません:
プロバイダのゲートウェイの IP アドレス.
ゲートウェイとは, あなたがそこに接続をおこなって,
“デフォルトルート”
として設定することになるマシンです.
プロバイダがこのアドレスを明示していなくても, 最初は
適当に設定しておいて, 接続時にプロバイダの PPP サーバから
正しいアドレスを教えてもらうことができます.
このアドレスは, 以降 HISADDR
と呼ぶことにします.
プロバイダのネットマスク設定.
プロバイダが明示していないとしても, ネットマスクとして
255.255.255.0
を使用しておけば問題ありません.
もしプロバイダから固定の IP
アドレスとホスト名の割り当てを 受けていれば,
その情報を指定しておくこともできます.
割り当てを受けていなければ, 接続先から適切な IP
アドレスを指定してもらいます.
もし, 必要な情報が不足していれば, プロバイダに連絡を取って
確認しておいてください.
ppp 対応カーネルの構築
説明でも述べているように, ppp
はカーネルの tun デバイスを使います.
そのため, このデバイスがカーネルに組み込まれているかどうかを
確認しておかなくてはいけません.
これを確認するには, カーネルコンパイルディレクトリ
(/sys/i386/conf または
/sys/pc98/conf) に移動して,
カーネルコンフィグレーションファイルを調べます.
以下の行がどこかに含まれている必要があります.
pseudo-device tun 1
元々の GENERIC カーネルは
標準でこれを含んでいますので,
カスタムカーネルをインストールしているのではなかったり,
/sys ディレクトリが存在しないのであれば,
何も変更する必要はありません.
この行がカーネルコンフィグレーションファイルに
含まれていなかったり, tun デバイスが
一つでは足りない場合
(例えば, 同時に 16 本の ダイアルアップ PPP
接続を処理できるサーバを立ち上げるとしたら,
1 のかわりに 16
を指定する必要があるでしょう), この行を追加して
カーネルの再コンパイルとインストールをおこなう必要があります.
それからこの新しいカーネルを使ってブートしてください.
カーネルコンフィグレーションの詳細については, FreeBSD
カーネルのコンフィグレーション
を参照してください.
以下のコマンドを実行することで,
現在のカーネルにトンネルデバイスが
いくつ組み込まれているかを調べることができます:
&prompt.root; ifconfig -a
tun0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1500
inet 200.10.100.1 --> 203.10.100.24 netmask 0xffffffff
tun1: flags=8050<POINTOPOINT,RUNNING,MULTICAST> mtu 576
tun2: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1500
inet 203.10.100.1 --> 203.10.100.20 netmask 0xffffffff
tun3: flags=8010<POINTOPOINT,MULTICAST> mtu 1500
この例ではトンネルデバイスが四つ存在し, そのうち二つに
設定がおこなわれ, 使用中であることがわかります. 上の例で
RUNNING フラグがオンになっている
ものがありますが, これは
そのインターフェースが何かに使用されていることを示している
だけであるということに注意してください. つまり,
RUNNING になっていない
インターフェースがあったとしても, それはエラーではありません.
トンネルデバイスがカーネルに組み込まれておらず,
何らかの理由で
カーネルの再構築ができない場合でも,
方法がないわけではありません.
動的にデバイスをロードすることができるはずです.
詳細については
&man.modload.8; や &man.lkm.4; など,
適切なマニュアルを参照してください.
この機会にファイアウォールも
設定しておきたいと思っているのであれば, 詳細についてはファイアウォールセクションを
参照してください.
tun デバイスの確認
ほとんどのユーザは tun デバイス
(/dev/tun0) が一つあれば充分でしょう.
より多くのデバイスを使う場合 (すなわち,
カーネルコンフィグレーション ファイルで pseudo-device
tun の行に 1
以外の数値を指定している場合), 以下で
tun0 と書かれている部分をすべて,
あなたが使うデバイスの番号に
あわせて読みかえてください.
tun0
デバイスが正しく作成されていることを確認する最も簡単な方法は,
それを作り直すことです. そのためには,
以下のコマンドを実行します:
&prompt.root; cd /dev
&prompt.root; ./MAKEDEV tun0
カーネルに 16 個のトンネルデバイスを組み込んだのであれば,
tun0 だけでなく他の tun
デバイスも作成しておく必要があるでしょう:
&prompt.root; cd /dev
&prompt.root; ./MAKEDEV tun15
また, カーネルが正しく設定されているかどうかを調べるために
以下のコマンドを実行して,
このような出力が得られることを確認します:
&prompt.root; ifconfig tun0
tun0: flags=8050<POINTOPOINT,RUNNING,MULTICAST> mtu 1500
まだ RUNNING
フラグがセットされていない場合もあります.
その時は以下のような出力が得られるでしょう:
&prompt.root; ifconfig tun0
tun0: flags=8010<POINTOPOINT,MULTICAST> mtu 1500
名前の解決に関する設定
リゾルバ (resolver) はシステムの一部分で, IP
アドレスとホスト名との 変換をおこないます. IP
アドレスとホスト名を対応させるためのマップを,
二つの場所のうちの一つから探すように設定できます. 一つめは
/etc/hosts (man 5
hosts) と呼ばれるファイルです. 二つめはインターネット
ドメインネームサービス (DNS) と呼ばれる
分散データベースですが, これに関する議論は
このドキュメントで扱う範囲を 越えていますので,
これについての説明はおこないません.
このセクションではリゾルバの
設定方法について簡単に説明します.
リゾルバは名前のマッピングを
おこなうシステムコールの集合体です. ただし
どこからマッピング情報を見つけるのかは,
最初に指示しておく必要があります. これは まず
/etc/host.conf
ファイルを編集することでおこないます. 混乱の元になりますので,
このファイルを /etc/hosts.conf と
呼んだりしてはいけません (余分な
s がついていますね).
/etc/host.conf ファイルの編集
このファイルには 以下の 2 行が (この順番で)
書かれているはずです:
hosts
bind
これは, 最初に /etc/hosts
ファイルを調べ, そこで目的の名前が 見つけられなかった場合に
DNS を引きにいくようリゾルバに指示します.
/etc/hosts(5) ファイルの編集
このファイルはローカルネットワーク上に存在するマシンの
IP アドレスと ホスト名を含んでいるはずです. 最低でも ppp
を動作させるマシンのエントリが 含まれている必要があります.
そのマシンのホスト名が foo.bar.com で, IP アドレスが
10.0.0.1 であると仮定すると,
/etc/hosts は
以下の行を含んでいなければいけません:
127.0.0.1 localhost
10.0.0.1 foo.bar.com foo
一つめの行は localhost
を現在のマシンの別名として定義しています. マシン固有の IP
アドレスが何であっても, この行の IP アドレスは 常に 127.0.0.1 でなければいけません.
二つめの行はホスト名 foo.bar.com (と, その省略形
foo) を IP アドレス 10.0.0.1 にマップします.
もしプロバイダから固定の IP
アドレスとホスト名を割り当てられて いるのであれば, それを
10.0.0.1
エントリのかわりに使ってください.
/etc/resolv.conf ファイルの編集
/etc/resolv.conf
はリゾルバの振舞いを指定します. もし自前の DNS
サーバを走らせているのなら, このファイルは空のままに
しておくこともできます. 通常は,
以下のように書いておく必要があるでしょう:
nameserver x.x.x.x
nameserver y.y.y.y
domain bar.com
x.x.x.x
と y.y.y.y
はプロバイダから指示されたアドレスで,
接続するプロバイダが提供しているネームサーバを
すべて書いてください. domain
に指定するのは このマシンのデフォルトのドメイン名で,
おそらく 書かなくても問題は無いでしょう.
このファイルの各エントリの詳細については,
resolv.conf
のマニュアルページを参照してください.
バージョン 2 以降の ppp を使用している場合には,
enable dns
コマンドを使用してネームサーバのアドレスを
プロバイダに問い合わせるように指示することができます.
上の指定とは異なるアドレスをプロバイダが指定してきた場合
(または /etc/resolv.conf
でネームサーバが指定されていない場合), ppp
はプロバイダが指定したアドレスで
resolv.conf を書きかえます.
ppp の設定
ユーザ ppp と pppd (カーネルレベルの
PPP 実装) は どちらも /etc/ppp
ディレクトリに置かれた設定ファイルを使います.
ここには設定ファイルのサンプルが用意されていて, ユーザ ppp
の設定を おこなう際に大変参考になりますので,
削除したりしないでください.
ppp の設定をするためには,
必要に応じていくつかのファイルを編集する必要が あります.
書き込む内容は, プロバイダが静的に IP アドレスを割り当てる
(つまり, 固定の IP アドレスを一つ与えられて, 常にそれを使う)
か, または動的に IP アドレスを割り当てる (つまり, PPP
セッションごとに IP アドレスが変化する可能性がある)
かということに ある程度依存します.
静的 IP アドレスによる PPP 接続
まず /etc/ppp/ppp.conf
という設定ファイルを作成する必要があります.
これは以下の例とほとんど同じようなものになるでしょう.
: で終る行は 1 カラム目から始め,
その他の行はスペースまたはタブで以下の例のように
段をつける (インデントする) 必要があります.
1 default:
2 set device /dev/cuaa0
3 set speed 115200
4 set dial "ABORT BUSY ABORT NO\\sCARRIER TIMEOUT 5 \"\" ATE1Q0 OK-AT-OK
\\dATDT\\T TIMEOUT 40 CONNECT"
5 provider:
6 set phone "(0123) 456 7890"
7 set login "TIMEOUT 10 \"\" \"\" gin:-BREAK-gin: foo word: bar col: ppp"
8 set timeout 300
9 set ifaddr x.x.x.x y.y.y.y 255.255.255.0 0.0.0.0
10 add default HISADDR
11 enable dns
ファイルでは行番号を取り除いておいてください.
これは解説の際に参照する行を示すためにつけたものです.
Line 1:
デフォルトエントリを指定します.
このエントリ中のコマンドは ppp
が起動された際に自動的に実行されます.
Line 2:
モデムが接続されているデバイスを指定します.
COM1: は
/dev/cuaa0 に,
COM2: は
/dev/cuaa1 になります.
Line 3:
通信速度 (DTE 速度) を指定します. もし 115200
が使えない (最近のモデムなら大抵使えるはずですが)
場合には, かわりに 38400
を指定してみてください.
Line 4:
ダイアルスクリプトを指定します. ユーザ PPP は
&man.chat.8; 言語に似た, 受信待ち文字列と
送信文字列の対からなるスクリプトを使用します.
この言語の機能に関しては,
マニュアルページを参照してください.
Line 5:
接続するプロバイダの名前 “provider” を
エントリ名として指定します.
Line 6:
このプロバイダの電話番号を指定します.
複数の電話番号を : や
| で区切って指定することができます.
これら区切り文字の違いについては, &man.ppp.8
に 詳しく書かれています.
要約すると, 毎回違う番号に かけたいのであれば
: を使います. 常に
まず先頭の番号にかけてみて, つながらない時にだけ 2
番目以降の番号に かけたいのであれば
| を使います.
例に示されているように, 常に電話番号全体を引用符で
くくって (クォートして) おきます.
Line 7:
ダイアルスクリプトと同様に, ログインスクリプトも
chat 言語風の記述をおこないます. この例は,
以下のようなログインセッションを使用する
プロバイダのためのものです:
J. Random Provider
login: foo
password: bar
protocol: ppp
このスクリプトは必要に応じて
書きかえなければならないでしょう.
初めてスクリプトを書く時には, 予想した通りに
処理が進んだかどうかを確認するため, “chat”
ログを とるようにしておいた方が良いでしょう.
PAP や CHAP を使用する場合には,
ここでログインすることは ありませんから,
ログイン文字列は空白のままにしておくべきです.
詳細については PAP
および CHAP
による認証を参照してください.
Line 8:
デフォルトの接続タイムアウト時間を (秒数で)
指定します. この例では, 300 秒間
通信がおこなわれなければ
自動的に接続を切るように指定しています.
タイムアウトさせたくない場合には, この値を 0
に設定します.
Line 9:
インターフェースのアドレスを指定します. 文字列
x.x.x.x は
プロバイダに割り当てられた IP
アドレスで置きかえてください. 文字列
y.y.y.y
はプロバイダから指示されたゲートウェイ
(接続先となるマシン) の IP
アドレスで置きかえてください.
プロバイダがゲートウェイのアドレスを
指示していない場合は, 10.0.0.2/0
を使用しておいてください. もし“仮の”
アドレスを使用する必要がある場合には, 動的 IP アドレスによる
PPP 接続に関する指示に従って,
/etc/ppp/ppp.linkup
にエントリを作成していることを 確認してください.
この行が省略されている場合, ppp を
モードで動作させることはできません.
Line 10:
プロバイダのゲートウェイへの経路を
デフォルトルートとして 追加します. 特殊文字列
HISADDR は, 9 行目で指定された
ゲートウェイのアドレスで置きかえられます.
HISADDR は 9
行目までは初期化されていませんので,
その行よりも後でしか使えないことに
注意してください.
Line 11:
ネームサーバのアドレスが正しいか
どうかを確認するため,
プロバイダに問い合わせをおこなうよう ppp に指示します.
プロバイダがこの機能をサポートしていれば, ppp は
/etc/resolv.conf
のネームサーバエントリを
正しいアドレスに更新することができます.
静的な IP アドレスを持っていて,
接続が完了する前にルーティングテーブルの
エントリが正しく設定されているのであれば,
ppp.linkup に
エントリを追加する必要はありません. しかし,
この場合でもエントリを追加して, 接続が完了した時点で
プログラムを呼び出したいことがあるかもしれません.
これについては後ほど sendmail を例として説明します.
これらの設定ファイルのサンプルが
/etc/ppp ディレクトリに
置かれています.
動的 IP アドレスによる PPP 接続
プロバイダが静的な IP
アドレスの割り当てをおこなっていない場合,
ppp が相手側のホスト (ゲートウェイ)
と交渉して, こちら側と相手側のアドレスを
決めるように設定することができます. これは,
起動時には“仮の”アドレスを使っておいて,
接続後に IP コンフィグレーション プロトコル (IPCP)
を使用して ppp が IP
アドレスを正しく設定できるようにすることで実現されます.
静的 IP アドレスによる PPP
接続に 以下の変更を加える以外は,
ppp.conf の設定は同じです:
9 set ifaddr 10.0.0.1/0 10.0.0.2/0 255.255.255.0
繰り返しますが, 行番号は取り除いておいてください.
これは解説の際に参照する行を示すためにつけたものです. なお,
少なくともスペース 1 個分の段づけ (インデント)
が必要です.
Line 9:
/ 文字の後ろの数字は,
アドレス交渉の際に固定しておきたい ビットの数です.
場合によっては, もっと適切な IP アドレスを
指定しておきたいこともあるかもしれませんが,
ほとんどの場合には 上の例の通りで問題ありません.
最後の引数 (0.0.0.0) は,
アドレスの交渉の際に 10.0.0.1 ではなく 0.0.0.0 を使用するよう ppp
に指示するためのものです. set
ifaddr コマンドの最初の引数として
0.0.0.0 を指定してはいけません.
さもないと,
モードで動作させる際に
初期経路を設定することができなくなります.
バージョン 1.X の ppp を使用する場合,
/etc/ppp/ppp.linkup
にもエントリを作成しておく必要があります.
ppp.linkup
は接続が確立された後に使用されます. この時点では,
ppp は実際にどの IP
アドレスを使うべきなのか わかっているはずです.
以下のエントリは存在する仮の経路を削除し,
正しい経路を作成します:
1 provider:
2 delete ALL
3 add default HISADDR
Line 1:
接続を確立する際に, ppp
は以下のルールに従って
ppp.linkup
のエントリを検索します: まず
ppp.conf
で使用されたのと同じラベルを探します.
もし見つからなければ, ゲートウェイの IP
アドレスのエントリを 探します. このエントリは 4
オクテットの IP アドレス形式の ラベルです. それでも
まだエントリが見つからなければ,
MYADDR エントリを探します.
Line 2:
この行は, 使用する tun
インターフェースに関する既存の経路を
(ダイレクトルートのエントリを除き) すべて削除するよう
ppp に指示します.
Line 3:
この行は HISADDR
への経路をデフォルトルートとして 追加するように ppp
に指示します. HISADDR は IPCP で
決定されたゲートウェイの IP
アドレスで置きかえられます.
詳細なサンプルについては,
/etc/ppp/ppp.conf.sample ファイル中の
pmdemand エントリと
/etc/ppp/ppp.linkup.sample
を参照してください.
バージョン 2 の ppp から “sticky routes”
が導入されました. MYADDR や
HISADDR を含む add
コマンドと delete コマンドを記憶して,
MYADDR や HISADDR の
アドレスが変化した際には経路の再設定をおこないます.
したがって, これらのコマンドを
ppp.linkup に
繰り返し記述する必要は無くなりました.
かかってきた電話を ppp
で受けるには
このセクションでは ppp
をサーバとして設定する方法について説明します.
かかってきた電話を ppp
が受けるように設定する際に, そのマシンが LAN
に接続されているのであれば, パケットを LAN
に転送するかどうかを決定する必要があります.
転送をおこなう場合には, その LAN のサブネットから IP
アドレスを ppp クライアントに割り当て,
以下のコマンドを指定するのが良いでしょう.
enable proxy
また, /etc/rc.conf
に以下のオプションが指定してあることを
確認しておいてください. (以前のバージョンの FreeBSD では,
このファイルは /etc/sysconfig
と呼ばれていました):
gateway_enable=YES
どの getty を使いますか?
getty
でダイアルアップサービスをおこなう場合の優れた解説が FreeBSD
でダイアルアップサービスをおこなうための設定
にあります.
getty に代わるものとしては,
+ url="http://www.leo.org/~doering/mgetty/index.html">
mgetty があります. これは
getty をより柔軟にしたもので,
ダイアルアップ回線での使用を意図して
設計されています.
mgetty を使う場合の利点は,
mgetty
が積極的にモデムと通信する
ということです. つまり, もし
/etc/ttys でポートを閉じている場合,
モデムは電話をとらなくなります.
最近のバージョンの mgetty (0.99beta
以降) では, PPP ストリームの
自動検出もサポートされています. これにより,
クライアント側で スクリプトを準備しなくてもサーバに
アクセスすることができます.
mgetty に関する,
より詳細な情報については Mgetty と AutoPPP
を参照してください.
ppp の実行許可
ppp は通常, ID 0 のユーザ (root)
として動作しなければいけませんが, 以下で説明するように,
ppp
を通常のユーザとしてサーバモードで実行させたい 場合には,
そのユーザを /etc/group の
network グループに 追加して, ppp
を実行する許可を与えておかなければいけません.
また, そのユーザが設定ファイル内の目的のエントリに
アクセスできるように, 以下のように
allow
コマンドで許可を与えておく必要があります:
allow users fred mary
このコマンドがデフォルトエントリに
書かれている場合には, 指定されたユーザは
すべてのエントリをアクセスできるようになります.
動的 IP ユーザのための ppp シェルの設定
/etc/ppp/ppp-shell という名前で,
以下のような内容のファイルを 作成します:
#!/bin/sh
IDENT=`echo $0 | sed -e 's/^.*-\(.*\)$/\1/'`
CALLEDAS="$IDENT"
TTY=`tty`
if [ x$IDENT = xdialup ]; then
IDENT=`basename $TTY`
fi
echo "PPP for $CALLEDAS on $TTY"
echo "Starting PPP for $IDENT"
exec /usr/sbin/ppp -direct $IDENT
このスクリプトには実行可能属性をつけておきます. 次に,
以下のコマンドを実行し, ppp-dialup
という名前で このスクリプトへのリンクを作成します:
&prompt.root; ln -s ppp-shell /etc/ppp/ppp-dialup
すべてのダイアルアップ ppp
ユーザのログインシェルとして
このスクリプトを使用します. 以下は
pchilds というユーザ名の
ダイアルアップユーザを /etc/password
へ登録した場合の例です.
(パスワードファイルを直接エディタで編集したりせず,
vipw を使ってください)
pchilds:*:1011:300:Peter Childs PPP:/home/ppp:/etc/ppp/ppp-dialup
任意のユーザが読むことのできる,
/home/ppp ディレクトリを 作成します.
/etc/motd
が表示されないようにするため,
このディレクトリには以下のように大きさが 0
バイトのファイルを 作成しておきます.
-r--r--r-- 1 root wheel 0 May 27 02:23 .hushlogin
-r--r--r-- 1 root wheel 0 May 27 02:22 .rhosts
静的 IP ユーザのための PPP シェルの設定
上記と同じように ppp-shell
ファイルを作成し, 静的な IP
アドレスを割り当てるアカウントそれぞれについて
ppp-shell
へのシンボリックリンクを作成します.
例えば, クラス C ネットワークの経路制御を必要とする,
三人のダイアルアップユーザ fred,
sam, mary
がいるとすると,
以下のコマンドを実行することになります:
&prompt.root; ln -s /etc/ppp/ppp-shell /etc/ppp/ppp-fred
&prompt.root; ln -s /etc/ppp/ppp-shell /etc/ppp/ppp-sam
&prompt.root; ln -s /etc/ppp/ppp-shell /etc/ppp/ppp-mary
これらのユーザのダイアルアップアカウントでは,
上で作成した それぞれのシンボリックリンクを
ログインシェルとして設定しておきます. (つまり, ユーザ
mary のログインシェルは
/etc/ppp/ppp-mary に
なります).
動的 IP ユーザのための ppp.conf の設定
/etc/ppp/ppp.conf ファイルは,
大体以下のような内容になるでしょう:
default:
set debug phase lcp chat
set timeout 0
ttyd0:
set ifaddr 203.14.100.1 203.14.100.20 255.255.255.255
enable proxy
ttyd1:
set ifaddr 203.14.100.1 203.14.100.21 255.255.255.255
enable proxy
上の例のように段をつける (インデントする)
必要があることに注意してください.
default:
エントリはセッションごとにロードされます.
/etc/ttys
で有効にしてある各ダイアルアップ回線ごとに一つ, 上記の
ttyd0: のようなエントリを作成します.
各行の相手側アドレスとして, それぞれ別の IP アドレスを
動的 IP ユーザのための IP
アドレスのプールから割り当てておく必要があります.
静的 IP ユーザのための ppp.conf
の設定
上のサンプルの /etc/ppp/ppp.conf
の内容に加えて, 静的に IP
を割り当てられたダイアルアップユーザ
それぞれのためのエントリを追加する必要があります.
ここでも fred,
sam, mary
の例を使うことにしましょう.
fred:
set ifaddr 203.14.100.1 203.14.101.1 255.255.255.255
sam:
set ifaddr 203.14.100.1 203.14.102.1 255.255.255.255
mary:
set ifaddr 203.14.100.1 203.14.103.1 255.255.255.255
必要であれば, それぞれの静的 IP
ユーザに対する経路制御情報も
/etc/ppp/ppp.linkup
ファイルに書いておくべきでしょう.
以下の例ではクライアントの PPP リンクを経由する, クラス C
の 203.14.101.0
ネットワークへの経路を追加しています.
fred:
add 203.14.101.0 netmask 255.255.255.0 HISADDR
sam:
add 203.14.102.0 netmask 255.255.255.0 HISADDR
mary:
add 203.14.103.0 netmask 255.255.255.0 HISADDR
mgetty, AutoPPP,
マイクロソフト拡張の詳細
mgetty と AutoPPP
AUTO_PPP
オプションつきでコンパイルした mgetty
を使えば, mgetty が PPP 接続の LCP
フェーズを検出して, 自動的に PPP シェルを起動するように
設定することができます. しかし この場合, デフォルトの
login/password シーケンスは発生しないので,
ユーザの認証は PAP または CHAP
を使っておこなう必要があります.
このセクションでは, ユーザ (あなた) が問題なく
AUTO_PPP オプションつきの
mgetty (v0.99beta またはそれ以降)
の設定, コンパイル,
インストールができているものと仮定しています.
/usr/local/etc/mgetty+sendfax/login.config
ファイルが
以下の行を含んでいることを確認してください:
/AutoPPP/ - - /etc/ppp/ppp-pap-dialup
これにより, PPP 接続を検出したら
mgetty が
ppp-pap-dialup
スクリプトを実行するようになります.
/etc/ppp/ppp-pap-dialup
という名前で, 以下のような内容のファイルを 作成します
(このファイルには実行可能属性を
つけておく必要があります):
#!/bin/sh
exec /usr/sbin/ppp -direct pap
さらに, かかってきた電話すべてを自分で扱うエントリを
/etc/ppp/ppp.conf
に作成します.
pap:
enable pap
set ifaddr 203.14.100.1 203.14.100.20-203.14.100.40
enable proxy
この方法でログインする それぞれのユーザは, PAP
によるユーザ認証を おこなうために
/etc/ppp/ppp.secret
ファイルにユーザ名とパスワードを 書いておくか, または
/etc/password
ファイルを使うように,
enable passwdauth
オプションを (/etc/ppp/ppp.conf に)
追加しておく必要があるでしょう.
ユーザに静的な IP アドレスを割り当てる場合には,
そのアドレスを /etc/ppp/ppp.secret
の第三引数として指定することができます.
サンプルについては,
/etc/ppp/ppp.secret.sample
を参照してください.
マイクロソフト拡張
クライアントからの要求に応じて, ppp が DNS や
NetBIOS ネームサーバの アドレスを通知するように
設定をおこなうこともできます.
これらの拡張機能を
/etc/ppp/ppp.conf
ファイルで有効にした例を 以下に示します.
バージョン 1.X の ppp で
これらの拡張機能を有効にするには, 以下の行を
/etc/ppp/ppp.conf
の適切なセクションに追加する必要があるでしょう.
enable msext
set ns 203.14.100.1 203.14.100.2
set nbns 203.14.100.5
バージョン 2 以降の ppp では,
以下のようになります:
accept dns
set dns 203.14.100.1 203.14.100.2
set nbns 203.14.100.5
これにより, クライアントはプライマリと
セカンダリのネームサーバアドレス および NetBIOS
ネームサーバホストを知ることができます.
バージョン 2 以降の ppp では, set
dns の行を省略した場合には
/etc/resolv.conf
に書かれているネームサーバのアドレスを使用します.
PAP および CHAP による認証
いくつかのプロバイダでは, PAP または CHAP
のいずれかの認証メカニズムを
使用して接続時の認証をおこなうように
システムを設定しています. この場合, プロバイダは接続の際に
login: プロンプトを送信せず, 最初から PPP
で通信を始めようとするでしょう.
PAP ではパスワードがそのまま送られてしまうため, CHAP
に比べると安全性が 低くなりますが,
このパスワードはシリアル回線のみを通して送られます.
そのため,
クラッカーが“盗み聞き”する余地は多くないので,
通常ここの セキュリティは問題にはなりません.
静的 IP アドレスによる
PPP 接続または 動的 IP アドレスによる PPP
接続の セクションに戻って,
以下の変更をおこないます:
7 set login
…
12 set authname MyUserName
13 set authkey MyPassword
これまでと同様に, 行番号は取り除いておいてください.
これは解説の際に参照する行を示すためにつけたものです. なお,
少なくともスペース 1 個分の段づけ (インデント)
が必要です.
Line 7:
PAP または CHAP を使用する場合, 通常
プロバイダはサーバへの ログインを必要としません.
そのため, "set login" 文字列を
無効にしておかなければいけません.
Line 12:
この行は PAP/CHAP ユーザ名を指定します.
MyUserName に
正しい値を入れておく必要があります.
Line 13:
この行は PAP/CHAP パスワードを指定します.
MyPassword に
正しい値を入れておく必要があります.
PAP と CHAP はデフォルトで両方とも
受け付けられるようになって
いますが, PAP や CHAP を使用するという
意思を明示するために,
15 accept PAP
または
15 accept CHAP
という行を追加しておくのも良いでしょう.
動作中の ppp の設定変更
適切な診断ポートが設定されている場合には,
バックグラウンドで動作中の ppp
プログラムと通信することができます.
この設定をおこなうためには,
以下の行を設定ファイルに追加しておきます:
set server /var/run/ppp-tun%d DiagnosticPassword 0177
これにより, ppp は指定された unix ドメインの
ソケットをモニタして,
クライアントから正しいパスワードを受け取った後に
アクセスを許可します. このソケット名に含まれる
%d は, この ppp が使用している
tun
デバイスの デバイス番号で置きかえられます.
一旦ソケットの設定が終了したら, スクリプト中で
&man.pppctl.8; を 使用して, 動作中の ppp
を操作することができるでしょう.
システムの最終設定
これで ppp の設定は終りました. しかし
ppp を動かす前に,
まだ少し必要なことがあります. それらの設定は, すべて
/etc/rc.conf ファイルを
編集することでおこないます. (このファイルは以前には
/etc/sysconfig と呼ばれていました)
このファイルを上から順に設定していきます. まずは
hostname=
の行が設定されていることを確認します.
例えば以下のように:
hostname=foo.bar.com
もしプロバイダが静的な IP
アドレスとホスト名を割り当てているのなら,
ホスト名としてそれを使うのが おそらくベストでしょう.
次に network_interfaces 変数を調べます.
必要に応じて (on demand)
プロバイダにダイアルするようにシステムを設定したい場合には,
tun0
デバイスがこのリストに追加されていることを確認しておきます.
それ以外の場合には, tun0
デバイスをリストから削除しておきます.
network_interfaces="lo0 tun0"
ifconfig_tun0=
ifconfig_tun0 変数が空で,
/etc/start_if.tun0 という名前の
ファイルが作成されていなければなりません.
このファイルの内容は以下のようになります.
ppp -auto mysystem
このスクリプトはネットワークの設定時に実行され, ppp
デーモンを自動モードで立ち上げます. このマシンがもし LAN
のゲートウェイであれば,
スイッチも使用したいと思うかもしれません. 詳細に関しては,
マニュアルページを参照してください.
以下のようにルータプログラムを NO
に設定します.
router_enable=NO (/etc/rc.conf)
router=NO (/etc/sysconfig)
routed は, ppp
が作成したデフォルトのルーティングテーブル
エントリを削除してしまう場合がありますので,
(初期設定では起動されるようになっている)
routed デーモンが
起動されないようにしておくことが重要です.
sendmail_flags 行が
オプションを含まないように 設定しておいた方がよいでしょう.
さもないと, sendmail が
アドレスを調べようとして発信をおこなってしまう場合があります.
以下のような設定で良いでしょう:
sendmail_flags="-bd"
この結果, PPP リンクを立ち上げた時には
いつでも以下のコマンドを実行して, キューにたまっているメールを
sendmail
に送信させる作業が必要になるでしょう.
&prompt.root; /usr/sbin/sendmail -q
ppp.linkup 中で
!bg コマンドを使用することで,
これを自動的に おこなうこともできます:
1 provider:
2 delete ALL
3 add 0 0 HISADDR
4 !bg sendmail -bd -q30m
こうするのが嫌であれば, SMTP
トラフィックをブロックするように “dfilter”
を設定しておくこともできます.
詳細についてはサンプルファイルを参照してください.
後はマシンをリブートするだけです.
リブートが終ったら,
&prompt.root; ppp
コマンドを実行し, 続いて PPP セッションを開始させるために
dial provider と入力することもできますし,
(start_if.tun0
スクリプトを作成していない場合に),
外部へのトラフィックが発生した時に, ppp
が自動的に セッションを確立してくれるようにしたいのであれば,
以下のコマンドを実行することもできます.
&prompt.root; ppp -auto provider
まとめ
要約すると, 初めて ppp を設定する際には,
以下のステップが不可欠です:
クライアント側:
カーネルに tun
デバイスが組み込まれていることを確認.
/dev ディレクトリに
tunX
デバイスファイルが 存在することを確認.
/etc/ppp/ppp.conf
にエントリを作成. ほとんどのプロバイダでは,
pmdemand の例で充分でしょう.
動的 IP アドレスを使用するなら,
/etc/ppp/ppp.linkup に
エントリを作成.
/etc/rc.conf (または
sysconfig) ファイルを更新.
必要に応じてダイヤル (demand dialing)
したいのであれば, start_if.tun0
スクリプトを作成.
サーバ側:
カーネルに tun
デバイスが組み込まれていることを確認.
/dev ディレクトリに
tunX
デバイスファイルが 存在することを確認.
(&man.vipw.8; コマンドを使って)
/etc/passwd にエントリを作成.
このユーザのホームディレクトリに ppp -direct
direct-server
か何かを実行するプロファイルを作成.
/etc/ppp/ppp.conf
にエントリを作成. direct-server
の例で充分でしょう.
/etc/ppp/ppp.linkup
にエントリを作成.
/etc/rc.conf (または sysconfig) ファイルを更新.
謝辞
ハンドブックの このセクションは, 1998 年 8 月 10 日 (月)
に &a.brian; によって 更新されました.
以下の人々による情報提供, 批評そして提案に感謝します:
&a.nik;
&a.dirkvangulik;
&a.pjc;
カーネル PPP の設定
原作: &a.gena;.
訳: &a.jp.graphite;.
6 September 1996.
PPP の設定を始める前に, pppd が
/usr/sbin にあり, また
/etc/ppp という
ディレクトリが存在することを確認してください.
pppd はふたつのモードで動作します.
“クライアント”モード.
シリアル接続やモデムを利用して, そのマシンを
外部のネットワークに PPP 接続したい場合に用います.
“サーバ”モード.
そのマシンがネットワーク上にあるときに, PPP を使って
ほかのコンピュータを接続する際に用います.
どちらの場合でも, オプションファイルを設定する必要があります
(/etc/ppp/options または, そのマシン上で
PPP を使用する人が 複数いる場合には
~/.ppprc).
また, ダイヤルとリモートホストへの接続をおこなうために,
シリアル接続やモデムを 操作する,
なんらかのソフトウェアが必要です (kermit
が適しているでしょう).
PPP クライアントとしての動作
私は, CISCO ターミナルサーバの PPP 回線に接続するために,
下記のような /etc/ppp/options
を使用しています.
crtscts # enable hardware flow control
modem # modem control line
noipdefault # remote PPP server must supply your IP address.
# if the remote host doesn't send your IP during IPCP
# negotiation , remove this option
passive # wait for LCP packets
domain ppp.foo.com # put your domain name here
:<remote_ip> # put the IP of remote PPP host here
# it will be used to route packets via PPP link
# if you didn't specified the noipdefault option
# change this line to <local_ip>:<remote_ip>
defaultroute # put this if you want that PPP server will be your
# default router
接続方法:
kermit (またはその他のモデム操作プログラム)
を使ってリモートホストに ダイヤルし, 接続してください.
そして, あなたのユーザ名とパスワード (必要 であれば,
その他にもリモートホストで PPP を有効にするための操作)
を入力 します.
kermit を抜けてください. (回線を切断せずに)
下記のように入力します:
&prompt.root; /usr/src/usr.sbin/pppd.new/pppd /dev/tty01 19200
(通信速度とデバイス名には,
あなたの環境に適したものを入れてください)
これでこのコンピュータは PPP で接続されました. もし,
なんらかの理由で 接続に失敗したならば,
/etc/ppp/options ファイルに
オプションを追加して,
問題点を突き止めるために, コンソールに表示される
メッセージを調べてください.
下記の /etc/ppp/pppup スクリプトは,
上記の作業を すべて自動的におこないます:
#!/bin/sh
ps ax |grep pppd |grep -v grep
pid=`ps ax |grep pppd |grep -v grep|awk '{print $1;}'`
if [ "X${pid}" != "X" ] ; then
echo 'killing pppd, PID=' ${pid}
kill ${pid}
fi
ps ax |grep kermit |grep -v grep
pid=`ps ax |grep kermit |grep -v grep|awk '{print $1;}'`
if [ "X${pid}" != "X" ] ; then
echo 'killing kermit, PID=' ${pid}
kill -9 ${pid}
fi
ifconfig ppp0 down
ifconfig ppp0 delete
kermit -y /etc/ppp/kermit.dial
pppd /dev/tty01 19200
/etc/ppp/kermit.dial は kermit
用のスクリプトで, ダイヤルして,
リモートホストでの認証に必要なすべての処理をおこないます.
(そのようなスクリプトの例は
この文書の終わりに添付してあります)
PPP 接続を切断するには, 下記のような
/etc/ppp/pppdown スクリプトを
使用します:
#!/bin/sh
pid=`ps ax |grep pppd |grep -v grep|awk '{print $1;}'`
if [ X${pid} != "X" ] ; then
echo 'killing pppd, PID=' ${pid}
kill -TERM ${pid}
fi
ps ax |grep kermit |grep -v grep
pid=`ps ax |grep kermit |grep -v grep|awk '{print $1;}'`
if [ "X${pid}" != "X" ] ; then
echo 'killing kermit, PID=' ${pid}
kill -9 ${pid}
fi
/sbin/ifconfig ppp0 down
/sbin/ifconfig ppp0 delete
kermit -y /etc/ppp/kermit.hup
/etc/ppp/ppptest
PPP が動作中かどうかを調べます
(/usr/etc/ppp/ppptest):
#!/bin/sh
pid=`ps ax| grep pppd |grep -v grep|awk '{print $1;}'`
if [ X${pid} != "X" ] ; then
echo 'pppd running: PID=' ${pid-NONE}
else
echo 'No pppd running.'
fi
set -x
netstat -n -I ppp0
ifconfig ppp0
モデム回線を切断します
(/etc/ppp/kermit.hup):
set line /dev/tty01 ; put your modem device here
set speed 19200
set file type binary
set file names literal
set win 8
set rec pack 1024
set send pack 1024
set block 3
set term bytesize 8
set command bytesize 8
set flow none
pau 1
out +++
inp 5 OK
out ATH0\13
echo \13
exit
次は kermit の代わりに
chat を使う方法です.
原作: &a.rhuff;.
pppd 接続を確立するためには,
次の二つのファイルの設定だけで十分です.
/etc/ppp/options:
/dev/cuaa1 115200
crtscts # enable hardware flow control
modem # modem control line
connect "/usr/bin/chat -f /etc/ppp/login.chat.script"
noipdefault # remote PPP server must supply your IP address.
# if the remote host doesn't send your IP during
# IPCP negotiation, remove this option
passive # wait for LCP packets
domain <your.domain> # put your domain name here
: # put the IP of remote PPP host here
# it will be used to route packets via PPP link
# if you didn't specified the noipdefault option
# change this line to <local_ip>:<remote_ip>
defaultroute # put this if you want that PPP server will be
# your default router
/etc/ppp/login.chat.script:
(実際には一行になります.)
ABORT BUSY ABORT 'NO CARRIER' "" AT OK ATDT<phone.number>
CONNECT "" TIMEOUT 10 ogin:-\\r-ogin: <login-id>
TIMEOUT 5 sword: <password>
正しくインストールし編集した後は,
必要な事はこれだけです
&prompt.root; pppd
このサンプルは主に Trev Roydhouse
<Trev.Roydhouse@f401.n711.z3.fidonet.org>
から寄せられた情報に基づいており,
承諾を得て使用しています.
PPP サーバとしての動作
/etc/ppp/options:
crtscts # Hardware flow control
netmask 255.255.255.0 # netmask ( not required )
192.114.208.20:192.114.208.165 # ip's of local and remote hosts
# local ip must be different from one
# you assigned to the ethernet ( or other )
# interface on your machine.
# remote IP is ip address that will be
# assigned to the remote machine
domain ppp.foo.com # your domain
passive # wait for LCP
modem # modem line
下記のような /etc/ppp/pppserv
スクリプトで, そのマシンを PPP
サーバにすることができます.
#!/bin/sh
ps ax |grep pppd |grep -v grep
pid=`ps ax |grep pppd |grep -v grep|awk '{print $1;}'`
if [ "X${pid}" != "X" ] ; then
echo 'killing pppd, PID=' ${pid}
kill ${pid}
fi
ps ax |grep kermit |grep -v grep
pid=`ps ax |grep kermit |grep -v grep|awk '{print $1;}'`
if [ "X${pid}" != "X" ] ; then
echo 'killing kermit, PID=' ${pid}
kill -9 ${pid}
fi
# reset ppp interface
ifconfig ppp0 down
ifconfig ppp0 delete
# enable autoanswer mode
kermit -y /etc/ppp/kermit.ans
# run ppp
pppd /dev/tty01 19200
PPP サーバを終了するには, この
/etc/ppp/pppservdown スクリプト
を使用します:
#!/bin/sh
ps ax |grep pppd |grep -v grep
pid=`ps ax |grep pppd |grep -v grep|awk '{print $1;}'`
if [ "X${pid}" != "X" ] ; then
echo 'killing pppd, PID=' ${pid}
kill ${pid}
fi
ps ax |grep kermit |grep -v grep
pid=`ps ax |grep kermit |grep -v grep|awk '{print $1;}'`
if [ "X${pid}" != "X" ] ; then
echo 'killing kermit, PID=' ${pid}
kill -9 ${pid}
fi
ifconfig ppp0 down
ifconfig ppp0 delete
kermit -y /etc/ppp/kermit.noans
下記の kermit スクリプトは, モデムの自動応答機能を有効,
または無効にします
(/etc/ppp/kermit.ans):
set line /dev/tty01
set speed 19200
set file type binary
set file names literal
set win 8
set rec pack 1024
set send pack 1024
set block 3
set term bytesize 8
set command bytesize 8
set flow none
pau 1
out +++
inp 5 OK
out ATH0\13
inp 5 OK
echo \13
out ATS0=1\13 ; change this to out ATS0=0\13 if you want to disable
; autoanswer mode
inp 5 OK
echo \13
exit
この /etc/ppp/kermit.dial
スクリプトは, リモートホストに ダイヤルし,
認証手続きをするのに使用します. あなたは必要に応じて, これを
変更しないといけないでしょう.
あなたのユーザ名とパスワードをこの
スクリプトに書かなければいけませんし,
モデムやリモートホストからの 応答によっては,
入力待ちの文を変更する必要もあります.
;
; put the com line attached to the modem here:
;
set line /dev/tty01
;
; put the modem speed here:
;
set speed 19200
set file type binary ; full 8 bit file xfer
set file names literal
set win 8
set rec pack 1024
set send pack 1024
set block 3
set term bytesize 8
set command bytesize 8
set flow none
set modem hayes
set dial hangup off
set carrier auto ; Then SET CARRIER if necessary,
set dial display on ; Then SET DIAL if necessary,
set input echo on
set input timeout proceed
set input case ignore
def \%x 0 ; login prompt counter
goto slhup
:slcmd ; put the modem in command mode
echo Put the modem in command mode.
clear ; Clear unread characters from input buffer
pause 1
output +++ ; hayes escape sequence
input 1 OK\13\10 ; wait for OK
if success goto slhup
output \13
pause 1
output at\13
input 1 OK\13\10
if fail goto slcmd ; if modem doesn't answer OK, try again
:slhup ; hang up the phone
clear ; Clear unread characters from input buffer
pause 1
echo Hanging up the phone.
output ath0\13 ; hayes command for on hook
input 2 OK\13\10
if fail goto slcmd ; if no OK answer, put modem in command mode
:sldial ; dial the number
pause 1
echo Dialing.
output atdt9,550311\13\10 ; put phone number here
assign \%x 0 ; zero the time counter
:look
clear ; Clear unread characters from input buffer
increment \%x ; Count the seconds
input 1 {CONNECT }
if success goto sllogin
reinput 1 {NO CARRIER\13\10}
if success goto sldial
reinput 1 {NO DIALTONE\13\10}
if success goto slnodial
reinput 1 {\255}
if success goto slhup
reinput 1 {\127}
if success goto slhup
if < \%x 60 goto look
else goto slhup
:sllogin ; login
assign \%x 0 ; zero the time counter
pause 1
echo Looking for login prompt.
:slloop
increment \%x ; Count the seconds
clear ; Clear unread characters from input buffer
output \13
;
; put your expected login prompt here:
;
input 1 {Username: }
if success goto sluid
reinput 1 {\255}
if success goto slhup
reinput 1 {\127}
if success goto slhup
if < \%x 10 goto slloop ; try 10 times to get a login prompt
else goto slhup ; hang up and start again if 10 failures
:sluid
;
; put your userid here:
;
output ppp-login\13
input 1 {Password: }
;
; put your password here:
;
output ppp-password\13
input 1 {Entering SLIP mode.}
echo
quit
:slnodial
echo \7No dialtone. Check the telephone line!\7
exit 1
; local variables:
; mode: csh
; comment-start: "; "
; comment-start-skip: "; "
; end:
SLIPクライアントのセットアップ
原作: &a.asami;8 Aug 1995.
訳: &a.hanai;8 August 1996.
ここには FreeBSD
マシンを静的アドレスのネットワークにつなげる場合の
SLIPのセットアップの一つの方法を書いてあります.
ホスト名を動的に割り当てる(つまり,
ダイヤルアップするたびにアドレスが かわる)ためには,
おそらくもっと凝ったことが必要です.
まず,
モデムがどのシリアルポートにつながっているか決めましょう. 私は
/dev/cuaa1 から
/dev/modemへというシンボリックリンクを張り,
コンフィグレーションではその名前だけを使っています.
/etc や.kermrc
など, システム全体に散らばっているファイルを修正する
必要がでるとまったく煩わしいのです!
ここで, /dev/cuaa0は
COM1であり,
cuaa1はCOM2です.
カーネルのコンフィグレーションファイルに
pseudo-device sl 1
という記述があるのを確認してください.
これは GENERIC カーネルに含まれている
ので削除していない限り大丈夫でしょう.
最初の設定
/etc/hosts
ファイルにあなたのマシンのゲートウェイとネームサーバ
を加えてください. 私のは以下のようになっています.
127.0.0.1 localhost loghost
136.152.64.181 silvia.HIP.Berkeley.EDU silvia.HIP silvia
136.152.64.1 inr-3.Berkeley.EDU inr-3 slip-gateway
128.32.136.9 ns1.Berkeley.edu ns1
128.32.136.12 ns2.Berkeley.edu ns2
余談ですが,
silviaというのは私が日本にいた時に持っていた
車の名前です(米国では2?0SXと呼ばれています).
/etc/host.conf ファイル中で
が
よりも前にあること を確認してください.
さもないとヘンなことが起こるかもしれません.
/etc/rc.conf
ファイルを編集してください. なお, お使いの FreeBSD が
2.2.2 よりも前のバージョンのものの場合は,
/etc/sysconfig
を編集してください.
行
hostname=myname.my.domain
を編集してホスト名をセットしてください.
完全なInternetホスト名を与えるべきです.
行
network_interfaces="lo0"
を
network_interfaces="lo0 sl0"
へ変更することにより
ネットワークインタフェースのリストに sl0
を加えてください.
行
ifconfig_sl0="inet ${hostname} slip-gateway netmask 0xffffff00 up"
を加えて sl0
のスタートアップフラグをセットしてください.
行
defaultrouter=NO
を
defaultrouter=slip-gateway
へ変更してデフォルトのルータを
指定してください.
次の
domain HIP.Berkeley.EDU
nameserver 128.32.136.9
nameserver 128.32.136.12
という内容を含むファイル
/etc/resolv.conf を作ってください.
見ればわかるように,
これらはネームサーバホストを設定しています. もちろん,
実際のドメイン名やアドレスは
あなたの環境に依存します.
root と toor
(及びパスワードを持っていない他のアカウントすべて)
のパスワード を設定してください.
passwdコマンドを使いましょう.
/etc/passwd や
/etc/master.passwd
といったファイルを編集してはいけません!
マシンを再起動して正しいホスト名で
立ち上がることを確認してください.
SLIP接続をおこなう
モデムを起動, つながったらプロンプトで
slipとタイプし, マシン名と
パスワードを入力してください.
入力する必要があるものは環境に よって異なります.
私は次のようなスクリプトでkermitを使っています.
# kermit setup
set modem hayes
set line /dev/modem
set speed 115200
set parity none
set flow rts/cts
set terminal bytesize 8
set file type binary
# The next macro will dial up and login
define slip dial 643-9600, input 10 =>, if failure stop, -
output slip\x0d, input 10 Username:, if failure stop, -
output silvia\x0d, input 10 Password:, if failure stop, -
output ***\x0d, echo \x0aCONNECTED\x0a
(もちろん,
ホスト名とパスワードは変える必要があります).
接続するためには kermit のプロンプトで
slipとタイプするだけです.
ファイルシステムのどんなところにもプレインテキスト
にパスワードを書いておくのは一般的にはよくありません.
覚悟の上で やってください.
私は単に不精なだけです.
ここでkermitから抜け出し
(zでkermitをサスペンドできます), root
で
&prompt.root; slattach -h -c -s 115200 /dev/modem
と入力しましょう. もしルータの向う側のホストへ
ping できるなら接続成功です! もしうまく
いかなければslattachへの引数として
の代わりにとやってみてください.
接続の切り方
slattachを殺すためにrootで
&prompt.root; kill -INT `cat /var/run/slattach.modem.pid`
とタイプしてください. そして kermit に戻り
(もしkermitをサスペンドしていたなら
fg), kermitから抜けてください
(q).
slattachのマニュアルページにはインタフェースを落すために
ifconfig sl0
downをしなければいけないと書いていますが,
私には差がないように見えます. (ifconfig
sl0とやっても同じ結果が得られる.)
時にはモデムがキャリアを落すのを
拒絶するかもしれません(私のは よくそうなります).
その時は単にkermitをスタートしてまた終了 してください.
普通は2回目で落ちます.
トラブルシューティング
もし動かなければ自由に私に質問してください.
今までいろんな人がつまずいた のは次のようなことです.
slattach で や
を使わなかった(私はなぜこれが致命的になり得るのか
わかりませんが, このフラグを付けることで少なくとも一人の
問題は解決しました.)
の代わりに
を使った(いくつかのフォントでは見分けるのは難しい
かもしれません).
インタフェースの状態を見るために ifconfig
sl0 をやってみてください. 私は,
&prompt.root; ifconfig sl0
sl0: flags=10<POINTOPOINT>
inet 136.152.64.181 --> 136.152.64.1 netmask ffffff00
となります.
また, pingが "no route to host"
というメッセージを返す時には netstat
-rでルーティングテーブルを確認しましょう.
私のは,
&prompt.root; netstat -r
Routing tables
Destination Gateway Flags Refs Use IfaceMTU Rtt
Netmasks:
(root node)
(root node)
Route Tree for Protocol Family inet:
(root node) =>
default inr-3.Berkeley.EDU UG 8 224515 sl0 - -
localhost.Berkel localhost.Berkeley UH 5 42127 lo0 - 0.438
inr-3.Berkeley.E silvia.HIP.Berkele UH 1 0 sl0 - -
silvia.HIP.Berke localhost.Berkeley UGH 34 47641234 lo0 - 0.438
(root node)
となります.
(これはたくさんのファイルを転送した後でのもので,
あなたの見る数字はもっと小さいかも
しれません).
SLIPサーバのセットアップ方法
原作: &a.ghelmer;.
v1.0, 15 May 1995.
訳: &a.jp.ts;.
6 September 1996.
この文書の目的は, SLIPサーバ機能を
FreeBSDシステムのもとで設定するため の助言を提供することです.
SLIPサーバ機能を設定するということは, リモー トの
SLIPクライアントがログインできるようにするために, 自動的に接続処
理をおこなうようにすることです.
この文書は著者の経験に基づいておりますが,
実際のシステム構成や要望は異なりますから,
すべての疑問にこの文書が答え ることはできません. なお,
ここでの助言を試みた結果, あなたのシステムへ
の悪影響やデータの損失が生じたとしても,
著者が責任を持つことはできませ
んのでご了解をお願いします.
当初この文書は, FreeBSD 1.xシステムでの
SLIPサーバ機能のために書きまし た. その後, FreeBSD
2.xの初期バージョンでのパス名の変更や SLIPインタフェー
ス向け圧縮フラグの削除といった変更点を反映するために,
書き換えをおこないま した. これらが
FreeBSDのバージョン間の主要な変更点だったからです. もし
この文書の間違いを見つけられましたら, ぜひ,
訂正に十分な情報とともに電
子メールでお知らせいただければ助かります.
前提
この文書の内容はテクニカルなものなので,
前提知識が必要です. すなわち,
TCP/IPネットワークプロトコルについての知識, 特に,
ネットワークとノード のアドレス指定をはじめ,
ネットワークアドレスマスク, サブネット化, ルー ティング,
および RIPなどのルーティングプロトコルなどに関する知識を前提
としています. ダイヤルアップサーバで
SLIP機能を設定するためには, これ
らの概念についての知識が必要ですから,
もし不案内であると思われる方は, O'Reilly & Associates,
Inc.から出版されている Craig Hunt氏の TCP/IP
Network Administration (ISBN 0-937175-82-X)か,
または Douglas Comer氏の
TCP/IPプロトコルに関する一連の書籍をお読みください.
前提知識に加え, さらに, モデムの設定が完了しており,
そのモデムを経由し てログインできるように,
システムファイル群が適切に記述できているものと 仮定しています.
もしモデムの準備ができていないときには, あらかじめダイヤ
ルアップ機能の設定についてのチュートリアルをお読みください.
Webブラ ウザが使えるのであれば http://www.FreeBSD.org/
におけるチュー トリアルの一覧を調べてください.
あるいは, この文書を見つけた場所を調べ て,
dialup.txt
やそれに類似した名前の文書をお読みください. 関連す
るマニュアルページとしては,
シリアルポート向けデバイスドライバについて
の &man.sio.4; をはじめ, モデムからのログインを
受理できるようにシステ
ムを設定するための &man.ttys.5;, &man.gettytab.5;, &man.getty.8;,
&man.init.8; など, さらには, シリアルポート関連パラメタ ( たと
えば直接接続シリアルインタフェースの
clocal ) についての
&man.stty.1; なども助けになるかもしれません.
概要
一般的な設定内容で FreeBSDを SLIPサーバとして利用すると,
その動作は次 のようになります. まず, SLIPユーザが FreeBSD
による SLIPサーバへ電話し て, SLIP専用IDでログインします.
なお, このIDを持ったユーザはシェルとし て
/usr/sbin/sliplogin を使います. この
sliplogin は, ファ イル
/etc/sliphome/slip.hosts の中から,
ログインIDと一致する 記述行を探します. もし一致する行があれば,
ログインしたシリアル回線を, 利用可能な
SLIPインタフェースへ接続し, その後にシェルスクリプト
/etc/sliphome/slip.login で
SLIPインタフェースを設定します.
SLIPサーバへのログイン例
仮に SLIPユーザIDが Shelmerg
とします. すると, /etc/master.passwd
における Shelmerg のエントリは次のよ
うなものになります (実際には一つの行に続いている) .
Shelmerg:password:1964:89::0:0:Guy Helmer - SLIP:/usr/users/Shelmerg:/usr/sbin/sliplogin
Shelmerg がログインすると,
sliplogin は, ファイル
/etc/sliphome/slip.hosts
からユーザIDと一致する行を探しま す. いま仮に,
/etc/sliphome/slip.hosts
に次のような記述がなさ れていたとします.
Shelmerg dc-slip sl-helmer 0xfffffc00 autocomp
sliplogin
が上記のエントリを見つけると, Shelmerg が使用して
いるシリアル回線を, 利用可能な
SLIPインタフェースのなかの最初のものへ 接続し, 次の内容の
/etc/sliphome/slip.login
を実行します.
/etc/sliphome/slip.login 0 19200 Shelmerg dc-slip sl-helmer 0xfffffc00 autocomp
もし上記の手順が正常に処理されると,
/etc/sliphome/slip.login は,
sliplogin が割り当てた SLIPインタフェース
(この例では slip.login
で与えられたパラメタのうちで最初の値である SLIP
インタフェース0である) に対して ifconfig
を実行し, ローカル IPアドレス
(dc-slip)をはじめ, リモート IPアドレス
(sl-helmer),
SLIPインタフェースへのネットワークマスク (0xfffffc00), およびその他のフラグ
(autocomp)を設定 します. 逆に,
さきほどの手順が正常に終了しなかった場合, 通常は
sliplogin は十分な情報を syslog の
daemon 機能経由で
/var/log/messages へ記録します
( &man.syslogd.8; や
&man.syslog.conf.5; のマニュアルページを参照のうえ, さらに
/etc/syslog.conf を調べて
syslogd がどのファイルへ記
録するかを確認のこと) .
例はこのくらいにして,
さっそくシステムのセットアップを始めてみましょう.
カーネルのコンフィグレーション
FreeBSD のデフォルトのカーネルには, 通常, 二つの
SLIPインタフェースが 準備されています
(sl0 と sl1)
. これらのインタフェー
スが使用中のカーネルに準備されているかどうかを調べるには,
netstat -i を実行してください.
netstat -i の出力例
Name Mtu Network Address Ipkts Ierrs Opkts Oerrs Coll
ed0 1500 <Link>0.0.c0.2c.5f.4a 291311 0 174209 0 133
ed0 1500 138.247.224 ivory 291311 0 174209 0 133
lo0 65535 <Link> 79 0 79 0 0
lo0 65535 loop localhost 79 0 79 0 0
sl0* 296 <Link> 0 0 0 0 0
sl1* 296 <Link> 0 0 0 0 0
netstat -i の出力に
sl0 と sl1
のインタフェー スが含まれているということから,
カーネルには二つの SLIPインタフェー
スが組み込まれているということを示しています.
(sl0 と sl1
に付いたアスタリスクは, netstat -i
の実行時点で はインタフェースが “ダウン”
していることを表しています. )
なお, パケットのフォワード機能は FreeBSD
のデフォルトのカーネルでは設定 されていません
(すなわちルータとしては動作しない) . もしインターネット
接続ホストについての RFC要件 ( RFC 1009 [Requirements for
Internet Gateways] と 1122 [Requirements for Internet Hosts
— Communication Layers], おそらく 1127 [A Perspective on
the Host Requirements RFCs] も ) に準拠して, FreeBSDによる
SLIPサー バをルータとして動作させたいときには,
/etc/rc.conf (バージョ ン 2.2.2 より前の
FreeBSD では /etc/sysconfig) ファイル の
gateway 変数を
としてください. もし古いシステ ムで
/etc/sysconfig ファイルすらないときには,
次のコマン ドを /etc/rc.local
へ追加してください.
sysctl -w net.inet.ip.forwarding = 1
この新しい設定を有効とするには,
リブートする必要があります.
デフォルトのカーネルコンフィグレーションファイル
(/sys/i386/conf/GENERIC) の最後の部分に,
次のような行がありま す.
pseudo-device sl 2
この行によって, 使用可能な SLIPデバイスの総数が決まります.
すなわち, 行 末の数値が, 同時に動作可能な
SLIP接続の最大数となります.
カーネルの再構築については, FreeBSDカー
ネルのコンフィグレーション を参照ください.
Sliploginのコンフィグレーション
すでにご説明したように,
/usr/sbin/sliplogin のコンフィグレー
ションのために,
3種類のファイルが/etc/sliphome
ディレクトリに あります (sliplogin
についての実際のマニュアルページとしては
&man.sliplogin.8; を参照のこと) .
ファイル slip.hosts は
SLIPユーザおよびその IPアドレスを決めます. 通常, ファイル
slip.login は,
SLIPインタフェースを設定することだけに使
用します. slip.logout
はオプションのファイルで,
slip.login で設定した内容を,
シリアル接続が終了した時点で解除
するときに使用します.
slip.hosts
のコンフィグレーション
/etc/sliphome/slip.hosts には,
少なくとも 4 つの項目をホワイ トスペース (スペースやタブ)
で区切って指定します.
SLIPユーザのログインID
SLIPリンクのローカル (SLIPサーバ側) アドレス
SLIPリンクのリモートアドレス
ネットワークマスク
ホスト名をローカルおよびリモートのアドレスとして
記述できます (IPアドレ スの決定は,
/etc/host.conf の指定内容に応じて,
/etc/hosts か
DNSのいずれかによって決定される) . また, ネット
ワークマスクも /etc/networks
ファイルに記述された名前を参照す ることで,
指定することもできると思います. これまでの例としてあげたシス
テムでの /etc/sliphome/slip.hosts
は次のようになります.
#
# login local-addr remote-addr mask opt1 opt2
# (normal,compress,noicmp)
#
Shelmerg dc-slip sl-helmerg 0xfffffc00 autocomp
それぞれの行の最後には,
次に示すオプションを一つ以上指定できます.
— ヘッダを圧縮しない
— ヘッダを圧縮する
—
リモートの設定に応じて, ヘッダを圧縮する
—
ICMPパケットを禁止する
(“ping”パケットは送出されず,
バンド幅を占有しない)
なお, FreeBSDバージョン2の初期リリースの
sliplogin は, 旧 FreeBSD
1.xでは有効であった上記のオプションを無視していましたので,
, ,
, そして
などのオ プションは FreeBSD
2.2でサポートされるまでは効果がありませんでした (た
だしこれらのフラグを使うためには
slip.login スクリプトへ記述する
必要がある) .
SLIPリンクでのローカルとリモート向けのアドレスの
選び方は, TCP/IPサブネッ トを専用に割り当てるか,
または“プロキシ ARP”を
SLIPサーバへ用いるかによっ て違います (プロキシ
ARPという用語のここでの使い方は本来のものではない が,
説明のためにこの用語を使う) . もし,
どちらの方式を選ぶべきか判らな かったり,
IPアドレスの割り当て方が不明のときには, 上述の 前提 の節で紹介した
TCP/IP関連書籍を参考になさるか, またはあなたの
IPネットワークを管理している方に相談なさると
よいでしょう.
独立したサブネットを SLIPクライアントへ適用するときには,
すでに割り当 てられている
IPネットワーク番号の範囲からサブネット番号を割り当て, 同
時にそのサブネットの範囲内で有効な IPアドレスを
SLIPクライアントの IP 番号として割り当てる必要があります.
さらに, この SLIPサブネットから SLIPサーバを経由して最も近い
IPルータへの経路を静的に設定するか, また は
gated を FreeBSDによる
SLIPサーバへインストールして, 適当
なルーティングプロトコルを使って,
SLIPサーバ経由のサブネットへの経路情
報をルータ群へ通知できるように設定するか,
のいずれかをおこなう必要がありま す.
“プロキシ ARP” 方式を採用するときには,
SLIPクライアント向けの IPアドレス
として, SLIPサーバのサブネットの範囲から
選んで割り当てるとともに,
&man.arp.8; コマンドを使うために
/etc/sliphome/slip.login
と/etc/sliphome/slip.logout
のスクリプトを修正して, SLIPサー
バにおける ARPテーブル内のプロキシ ARPエントリへ
反映させる必要がありま
す.
slip.login
のコンフィグレーション
ファイル /etc/sliphome/slip.login
の一般的な内容は次にように なります.
#!/bin/sh -
#
# @(#)slip.login 5.1 (Berkeley) 7/1/90
#
# generic login file for a slip line. sliplogin invokes this with
# the parameters:
# 1 2 3 4 5 6 7-n
# slipunit ttyspeed loginname local-addr remote-addr mask opt-args
#
/sbin/ifconfig sl$1 inet $4 $5 netmask $6
この slip.login
ファイルの役目は単に, SLIPインタフェースにつ
いてのローカルとリモートのアドレス,
およびそのネットワークマスクを ifconfig
コマンドで設定することです.
もし“プロキシ ARP”方式を採用する
(SLIPクライアントへ独立したサブネットを 使わない) ときには,
ファイル /etc/sliphome/slip.login
は次の ような内容になります.
#!/bin/sh -
#
# @(#)slip.login 5.1 (Berkeley) 7/1/90
#
# generic login file for a slip line. sliplogin invokes this with
# the parameters:
# 1 2 3 4 5 6 7-n
# slipunit ttyspeed loginname local-addr remote-addr mask opt-args
#
/sbin/ifconfig sl$1 inet $4 $5 netmask $6
# Answer ARP requests for the SLIP client with our Ethernet addr
/usr/sbin/arp -s $5 00:11:22:33:44:55 pub
この slip.login で追加された行
arp -s $5 00:11:22:33:44:55 pub は,
SLIPサーバにおける ARPテーブルへ新たなエントリを作ります.
SLIPサーバ は, この ARPエントリが作られると,
SLIPクライアントの IPアドレスと話し たい他の
IPノードが要求してきたときにはいつも, SLIPサーバ の Ethernet
MACアドレスを返すようになります.
上記の例を実際に流用なさるときには, 例にある Ethernet
MACアドレス (00:11:22:33:44:55)
を, あなたのシステムの実際のEthernetカー ドの
MACアドレスと置き換えなければ“プロキシ
ARP”はうまく動作しません! SLIPサーバの Ethernet
MACアドレスを調べるには netstat -i コマ
ンドを利用してください.
実行結果の第2行は次のようなものになるはずです.
ed0 1500 <Link>0.2.c1.28.5f.4a 191923 0 129457 0 116
この例での Ethernet MACアドレスは
00:02:c1:28:5f:4a であると
読みます. なお &man.arp.8; における MAC
アドレスの指定に際しては,
コマンド netstat -i が付けた
Ethernet MACアドレスのピリオド記
号をコロン記号と置き換え, かつ単一桁の 16
進数にはゼロを先頭に加える必
要があります. この指定についての正確な情報は &man.arp.8;
を参照く
ださい.
/etc/sliphome/slip.login と
/etc/sliphome/slip.logout
を作成したならば, ファイル属性の“実行”ビット
(すなわち chmod 755 /etc/sliphome/slip.login
/etc/sliphome/slip.logout) を
設定しなければなりません. さもなければ
sliplogin が
うまく実行されません.
slip.logout
のコンフィグレーション
ファイル /etc/sliphome/slip.logout
は必ずしも必要なものではあ りません (ただし“プロキシ
ARP”を利用する場合を除く) . もしこのファイルを
作成するときには, 次に示す標準的な
slip.logout スクリプト例を
参考にしてください.
#!/bin/sh -
#
# slip.logout
#
# logout file for a slip line. sliplogin invokes this with
# the parameters:
# 1 2 3 4 5 6 7-n
# slipunit ttyspeed loginname local-addr remote-addr mask opt-args
#
/sbin/ifconfig sl$1 down
“プロキシ ARP”を利用する場合, この
/etc/sliphome/slip.logout を 使って,
特定の SLIPクライアント向けの
ARPエントリを削除したくなるよう なときがあります.
#!/bin/sh -
#
# @(#)slip.logout
#
# logout file for a slip line. sliplogin invokes this with
# the parameters:
# 1 2 3 4 5 6 7-n
# slipunit ttyspeed loginname local-addr remote-addr mask opt-args
#
/sbin/ifconfig sl$1 down
# Quit answering ARP requests for the SLIP client
/usr/sbin/arp -d $5
コマンド arp -d $5 は,
SLIPクライアントがログインした 際に, “プロキシ
ARP”を使った slip.login
によって追加され た ARPエントリを削除します.
これによって, 繰り返して利用することができるわけです.
必ず, /etc/sliphome/slip.logout
を作成した後に, 実行ビットを設定し てください (
chmod 755 /etc/sliphome/slip.logout )
.
ルーティングについての考慮点
“プロキシ ARP”方式を利用せずに
SLIPクライアントとその他のネットワーク (Internetも含む)
の構成要素との間でパケットをルーティングするときには,
SLIPサーバ経由で
SLIPクライアントが属するサブネットまでの経路を, 最も
近いデフォルトのルータ群へ静的な経路情報として
追加しなければならないか, または gated を
FreeBSDによる SLIPサーバへインストールして, SLIP
サブネットについての経路情報を,
適当なルーティングプロトコルでルー
タ群へ通知できるように設定するか,
のどちらかをおこなわなければなりません.
静的な経路
静的な経路を最も近いデフォルトの
ルータ群へ追加することが困難なことがあ ります
(経路情報を追加できる権限がなければそもそも不可能となる).
もし あなたの組織に複数のルータで構成された
ネットワークがあるならば, ある種 のルータ (たとえば Ciscoや
Proteonなど) は, 静的な経路を SLIPサブネッ
トへ使うようにルータを設定しなければならないだけでなく,
その静的経路を 他のどのルータへ知らせるのかもあらかじめ
指定しておく必要がありますから,
静的経路に基づくルーティングを軌道に乗せるには
それなりの専門的技術やト
ラブルシューティングやコツが必要だと思います.
gatedの稼働
静的経路についての頭痛への代替手段は,
gated を FreeBSDによる SLIPサー
バへインストールして, 適切なルーティングプロトコル
(RIP/OSPF/BGP/EGP) を使って
SLIPサブネットについての経路情報を他のルータへ知らせるように
設定することです. ports
コレクションから gated
を用いることもできますし,
+ url="ftp://ftp.gated.merit.edu/research.and.development/gated/">
the GateD 匿名 FTP サイト
から探して自分自身で構築することもで きます.
この文章を執筆時点の最新バージョンは
gated-R3_5Alpha_8.tar.Z であり,
このファイルだけで FreeBSDで 動作させることができます.
gated についてのすべての情報と文書 は
-
+
Merit GateD コンソーシアム からはじまる Web
上で入手でき ます. gated
のコンパイルとインストールを行ったならば,
独自の 設定のために /etc/gated.conf
ファイルを記述してください. 次の 例は,
筆者が FreeBSDによる SLIP
サーバで使っている内容と類似のものです.
#
# gated configuration file for dc.dsu.edu; for gated version 3.5alpha5
# Only broadcast RIP information for xxx.xxx.yy out the ed Ethernet interface
#
#
# tracing options
#
traceoptions "/var/tmp/gated.output" replace size 100k files 2 general ;
rip yes {
interface sl noripout noripin ;
interface ed ripin ripout version 1 ;
traceoptions route ;
} ;
#
# Turn on a bunch of tracing info for the interface to the kernel:
kernel {
traceoptions remnants request routes info interface ;
} ;
#
# Propagate the route to xxx.xxx.yy out the Ethernet interface via RIP
#
export proto rip interface ed {
proto direct {
xxx.xxx.yy mask 255.255.252.0 metric 1; # SLIP connections
} ;
} ;
#
# Accept routes from RIP via ed Ethernet interfaces
import proto rip interface ed {
all ;
} ;
この gated.conf ファイルの例では,
SLIPのサブネット xxx.xxx.yy
についての経路情報を RIPを使って Ethernetへブロー
ドキャストしています. もし ed
ドライバ以外の Ethernetドライバを使 うのであれば,
ed
インタフェースの記述を適切なものに置き換えてくだ さい.
またこの例では,
gatedの動作をデバッグするために,
/var/tmp/gated.output
へトレース情報を出力するように指示して います.
gated が希望通りに動作したならば,
このトレースオプショ ンを止めることができます. なお,
例における xxx.xxx.yy を, あ
なた自身の
SLIPサブネットのネットワークアドレスに換えてください (また
proto direct
部分のネットワークマスクも換えることを忘れないこ と)
.
gated
のコンパイルとインストールが終了し, コンフィグレーショ
ンファイルの作成も完了したら,
FreeBSDシステムではデフォルトの
routedに代わって gated
を起動してください. そのため には,
/etc/netstart の
routed/gated 起動パラメタを
適切な値に設定してください. gated
のコマンドラインパラメタにつ いての情報は,
gated
のマニュアルページを参照してください.
謝辞
このチュートリアルについての
コメントやアドバイスを寄せてくれた次の方々
に感謝します.
&a.wilko;
Piero Serini
Piero@Strider.Inet.IT
diff --git a/ja_JP.eucJP/books/handbook/quotas/chapter.sgml b/ja_JP.eucJP/books/handbook/quotas/chapter.sgml
index 80d04ef4c9..cb30a085fe 100644
--- a/ja_JP.eucJP/books/handbook/quotas/chapter.sgml
+++ b/ja_JP.eucJP/books/handbook/quotas/chapter.sgml
@@ -1,296 +1,296 @@
ディスク クォータ
原作: &a.mpp;
26 February 1996 .
訳者: &a.jp.mihoko;.
6 September 1996 .
クォータシステムは,
オペレーティングシステムのオプション機能で,
各ファイルシステム上で ユーザやグループのメンバが使用するディスク
スペースの総量を規制したり, 作成できるファイルの個数を制限したりす
ることができます. この機能は, 各ユーザ,
各グループごとに使用できる資源の総量を制限で
きるようなタイムシェアリングシステム上で
もっともよく使用されていま す. これは, 一人のユーザが,
使用可能な全てのディスクスペースを使い
きってしまうことを防止できます.
ディスククォータを使用するための設定
ディスククォータを使用しようとする前に,
あなたが使用しているカー
ネルで, クォータが組み込まれているかどうかを
確認する必要があります.
クォータを使用できるカーネルを構築するためには,
カーネルコンフィギュ レーションファイルに,
次の行を追加してください:
options QUOTA
標準の GENERIC
カーネルでは, この機能は有効になっていません.
したがって, ディスククォータを使用するためには,
カーネルをコンフィグレーションして構築しなおし, そのカーネ
ルをインストールしなければいけません. カーネルの構築方法について
の詳細情報は, FreeBSD
カーネルのコンフィグレーション
を参照してください.
次に, ファイル /etc/sysconfig の中で,
ディスククォー
タ機能を、使用可能に設定する必要があります.
そのためには, 以下の行を変更します:
quotas=NO
を次のように:
quotas=YES
FreeBSD 2.2.2 以降では, /etc/rc.conf
でこの設定を行いま
す. また, 変数の変更は以下のようにします.
check_quotas=YES
最後に, 各ファイルシステム毎にディスククォータを設定する
ために, ファイル /etc/fstab
を編集する必要があります.
全てのファイルシステムに対して,
ユーザ又はグループのいずれかのクォー タ
を設定することも,
ユーザとグループの両方のクォータを設定すること
もできます.
ファイルシステム上で, ユーザ毎のクォータを設定するためには,
userquota オプションを, ファイル
/etc/fstab の中 で,
クォータを設定したいファイルシステムの
エントリののオプションフィー ルドに追加してください.
例えば:
/dev/da1s2g /home ufs rw,userquota 1 2
同様に, グループのクォータを設定するためには,
groupquota オプションを
userquota の代わりに使用 してください.
ユーザとグループの両方のクォータを設定するためには,
次のようにエントリを変更してください:
/dev/da1s2g /home ufs rw,userquota,groupquota 1 2
デフォルトでは, クォータファイルは ファイルシステムの root
ディ レクトリ上に, ユーザとグループのクォータに対して それぞれ
quota.user と
quota.group という名前で置いてあり
ます. 詳細情報は, man fstab を御覧ください.
man
ページには, クォータファイルを別な場所に置くことができると書い
てありますが, さまざまな
クォータユーティリティのうち, この機能を
適切に処理できていないものがあるので,
クォータファイルをデフォルト
の場所以外に置くことは勧められません.
ここまで準備ができたら, 新しいカーネルを使って,
システムを立ち 上げ直してください. /etc/rc
ファイルが, 自動的に適切なコマンドを起動してくれ, あなたが
/etc/fstab
ファイルで使用可能にした全てのクォー
タに対して, 初期クォータファイルを作成してくれます.
したがって, 手動で サイズ 0
のクォータファイルを作成する必要はあり ません.
通常の作業の流れでは, 手動で quotacheck,
quotaon, または quotaoff
コマンドを起動すべきで はありません. しかしながら,
それらの作業について詳しく知りたい場合に は, man
ページを御覧ください.
クォータ制限の設定
一旦システムのクォータを有効に設定したら,
本当にクォータが使用可能になっていることを確かめてください.
これを簡単に確かめるには,
&prompt.root; quota -v
コマンドを実行してみて ください. ディスク使用量の総計と,
クォータが設定されている各ファイ
ルシステム毎の現在のクォータ制限が表示されます.
さてこれで, edquota
コマンドによって, クォータ制限をか ける準備ができました.
ユーザまたはグループが使用できるディスクスペースの総計や,
作成 することのできるファイル数に制限をかけるための
オプションがいくつか あります. ディスクスペース容量規制
(ブロッククォータ) または ファイ ル数制限 (iノードクォータ)
またはその両方を行うことができます.
これらの個々の制限は, 二つのカテゴリ, すなわち ハード制限とソ
フト制限, でもっと細かく分類できます.
ハード制限は越えることができません.
ユーザがハード制限に到達す ると, 該当するファイルシステム上で
ディスクスペースを確保することが できなくなります.
例えば, もしユーザがファイルシステム上で 500 ブ
ロックのハード的制限をされていて, かつ, 現在, 490
ブロック使用して いたとすると, ユーザはあと 10
ブロックしか確保できません.
11 ブロック目を確保しようとすると, 失敗します.
一方, ソフト制限は,
定められたある一定の期間以内ならば制限を越
えることができます. この一定期間は, 猶予期間と呼ばれています.
猶予期間のデフォルトは
1週間です. もし、ユーザが猶予期間を過ぎても
ソフト制限を越えて使用し続けていた場合には,
ソフト制限はハード制限 に切り替わり, もはやこれ以上は,
ディスクスペースを確保できなくなり
ます. ユーザのディスク使用量がソフト制限以下に戻った時に,
猶予期間 がリセットされます.
以下は, edquota
コマンドを実行した時の出力例です. edquota
コマンドが起動されると, EDITOR 環境変数
で定義されたエディタ, または, EDITOR
環境変数が設定されて いない場合には vi
エディタが起動され, クォータ制限を編集
することができます.
&prompt.root; edquota -u test
Quotas for user test:
/usr: blocks in use: 65, limits (soft = 50, hard = 75)
inodes in use: 7, limits (soft = 50, hard = 60)
/usr/var: blocks in use: 0, limits (soft = 50, hard = 75)
inodes in use: 0, limits (soft = 50, hard = 60)
通常は,
クォータが設定されているファイルシステム毎に2行の表示が
行われます. 1行は, ブロック制限に関する情報で,
もう1行は, i ノード
制限に関する情報です.
クォータ制限の値を変更したい値に書き換えてく
ださい. 例えば, ユーザのブロック制限を, 50 ブロックまでのソ
フト制限と 75 ブロックまでのハード制限から,
500 ブロックまでのソフ
ト制限と 600 ブロックまでのハード制限にしたい場合は,
次のように書き換えます:
/usr: blocks in use: 65, limits (soft = 50, hard = 75)
を次のように:
/usr: blocks in use: 65, limits (soft = 500, hard = 600)
新しいクォータ制限は,
エディタを終了した時に置き換えられます.
uid の範囲によってクォータを設定する個とも可能です.
そのためには edquota
コマンドで, オプションを
使用します. まずはじめに,
かけたいクォータ制限を, 一人のユーザに対
して設定します. それから次のコマンドを実行します
edquota -p protouser startuid-enduid.
例えば, もし, ユーザ test
がクォータ制限をかけられていた
とすると, 次のコマンドは, 同じ制限を, uid 10,000 から 19,999
まで のユーザにかけることができます:
&prompt.root; edquota -p test 10000-19999
uid の範囲によって制限をかけることができる機能は, 2.1
がリリー スされたあとに追加されました. もし、2.1
のシステム上で, この機能を 必要とする場合には, 新しい edquota
を入手する必要があります.
詳細情報は man edquota を御覧ください.
クォータ制限およびディスク使用状況のチェック
クォータ制限およびディスク使用状況をチェックするには,
quota または repquota
コマンドを使用することがで きます.quota
コマンドは, 各ユーザ, 各グループ毎のクォー
タ制限およびディスク使用状況をチェックすることができます.
スーパーユーザだけが,
他のユーザまたは自分が所属していないグループに
関するクォータ制限とディスク使用状況を調べることができます.
repquota
コマンドは, クォータが設定されているファイルシス テムに対する,
全てのクォータ制限およびディスク使用状況の総計を表示
します.
以下は, 2つのファイルシステム上で
クォータ制限がかけられているユー ザに対して quota
-v コマンドを実行した出力結果の例です.
Disk quotas for user test (uid 1002):
Filesystem blocks quota limit grace files quota limit grace
/usr 65* 50 75 5days 7 50 60
/usr/var 0 50 75 0 50 60
上の例では, /usr
ファイルシステム上で, このユーザは現在 50
ブロックまでのソフト制限を 15 ブロック超過して使用しており,
残り 5 日間の猶予期間を設定されています. アスタリスク
*
は, ユーザが現在クォータ制限を越えていることを示
しています.
通常,
ユーザがディスクスペースを全く使用していないファイルシス
テムは, たとえ
そのファイルシステムにクォータ制限が設定されていた
としても, quota
コマンドによる出力では表示されません.
オプションを付けると, 上の例の /usr/var
ファ イルシステムのように,
これらのファイルシステムも表示します.
* NFS ファイルシステム上でのクォータ
このセクションはまだ作成中です.
diff --git a/ja_JP.eucJP/books/handbook/security/chapter.sgml b/ja_JP.eucJP/books/handbook/security/chapter.sgml
index 97a4c1cca9..c284f9b690 100644
--- a/ja_JP.eucJP/books/handbook/security/chapter.sgml
+++ b/ja_JP.eucJP/books/handbook/security/chapter.sgml
@@ -1,1901 +1,1900 @@
セキュリティ
DES, MD5, と Crypt
原作: &a.wollman;
24 September 1995.
訳: &a.hanai;
12 September 1996.
UN*X システムにおいてパスワードを保護し,
簡単に覗かれるのを防 ぐために,
従来パスワードはある方法によりスクランブルされてきました.
ベル研の Unix 第7版に始まって以来,
パスワードはセキュリティの専門家がい うところの
“一方向ハッシュ関数”
というものを用いることにより暗号化されるようになりました.
つまり, 可能な限りのパスワード空間を検索するという強引な
方法以外にそのオリジナルを得ることができない,
といった方法でパスワードは変換 されるのです. 不幸なことに,
その当時 AT&T の研究者たちが手に入れることができ
た唯一の暗号化方法は DES(Data Encryption Standard)
に基づいたものでし た.
これは営利企業にとっては大して問題ではありませんが, FreeBSD のよ
うにすべてのソースコードが自由に手に入る
オペレーティングシステムにとっ ては重大な問題となります.
なぜなら, 多くの政府は DES やその他の暗号化ソフ
トウェアが国境を越えることに
制限をつけようとしているからです.
ここで, FreeBSD チームは一つのジレンマに直面しました.
つまり, どうす れば法に触れることなく国外にあるそれらの UNIX
システムのすべてに互換性を持 たせることができるか,
ということです. 私たちは ``dual track approach'' を
取ることに決めました.
規制されていないパスワードスクランブラのみを含む
配布用物件を作り, DES
に基づいたパスワードハッシュを付加ライブラリ
として分けて供給するのです.
パスワードをスクランブルさせる関数は, C ライブラリから
libcrypt と呼ばれる(それを実行する C 関数が
crypt と
いう名前だからです)別のライブラリへ移されました. FreeBSD 1.x
及び 2.0 のリリース前のスナップショットでは,
その規制されていないスクランブラは Nate Williams
によって書かれた安全でない関数を使っていますが, 次の
リリースでは RSA Data Security 社の一方向ハッシュ関数の MD5
を使う方法 に置き換えられました.
これらの関数はどれも暗号化を含んでいないため,
合衆国から持ち出し,
他の多くの国へ持ち込めるものであるとされています.
一方, DES
に基づいたパスワードハッシュ関数に関する作業もまた進行中 でした,
まず, 合衆国及び他の国で書かれたコードの同期をとりながら,
合衆国の外で書かれた crypt
のあるバージョンが持ち込まれました. そしてライブラリは修正され,
二つにわけられました. すなわち DES libcrypt
は一方向パスワードハッシュをおこなうのに必要なコード のみを含み,
それとは別の libcipher
は実際に暗号化をおこなう
ためのエントリポイントとして生成されました.
コンパイルされたライブラリに対
して国外に持ち出す許可を得るのを簡単にするために,
コードはこのように分け られたのです.
crypt メカニズムを理解する
あるパスワード文字列を作るのに, DES
に基づいたハッシュ関数を使っ たのか,
MD5に基づいたハッシュ関数を使ったのかは非常に簡単にわかります.
MD5 を使ったパスワード文字列は必ず
$1$ という文字 で始まります.
DESを使ったパスワード文字列はどんな特定の文字も持っていま
せんが, MD5を使ったパスワードよりも短く,
$ という文字
を持たない64文字のアルファベットで構成されています.
したがって, ドル記号で 始まっていない比較的短い文字列は DES
を使ったパスワードである可能性が非常 に高いです.
あなたのシステムで,
どちらのライブラリが使われているかを決めるの は,
スタティックにリンクされている init
のようなもの(その ようなプログラムに対する唯一の方法は
わかっているパスワードを試してみ
て動くかどうかを確認することです.)
を除いたほとんどのプログラムについ ては非常に簡単なことです.
crypt を使うようなプログラムは
libcrypt にリンクされています.
そしてそれぞれのライブラリに 対する libcrypt
は適切な実装へのシンボリックリンクとなってい ます. 例えば, DES
版を使っているようなシステムにおいては次のようになって
います:
- &prompt.user; cd /usr/lib
-&prompt.user; ls -l /usr/lib/libcrypt*
-lrwxr-xr-x 1 bin bin 13 Sep 5 12:50 libcrypt.a -> libdescrypt.a
-lrwxr-xr-x 1 bin bin 18 Sep 5 12:50 libcrypt.so.2.0 -> libdescrypt.so.2.0
-lrwxr-xr-x 1 bin bin 15 Sep 5 12:50 libcrypt_p.a -> libdescrypt_p.a
+ &prompt.user; ls -l /usr/lib/libcrypt*
+lrwxr-xr-x 1 root wheel 13 Mar 19 06:56 libcrypt.a -> libdescrypt.a
+lrwxr-xr-x 1 root wheel 18 Mar 19 06:56 libcrypt.so.2.0 -> libdescrypt.so.2.0
+lrwxr-xr-x 1 root wheel 15 Mar 19 06:56 libcrypt_p.a -> libdescrypt_p.a
MD5 に基づいたライブラリを使っているシステムにおいては,
同じようなリンクが 見られるでしょうが, そのターゲットは
libdescrypt ではなく
libscrypt になっているでしょう.
S/KEY
原作: &a.wollman;
25 September 1995.
訳: &a.jp.hino;.
24 September 1996.
S/KEY は一方向ハッシュ関数 (ここで述べているバージョンでは,
過去と の互換性を保つために MD4 を用いています. S/KEY
の他のバージョンでは MD5 や DES-MAC を用いているものもあります)
を基にしたワンタイムパスワー ド方式です. S/KEY は, バージョン
1.1.5 以降のすべての FreeBSD に標準的 に含まれています. S/KEY は
FreeBSD 以外の数多くのシステムの上でも利用 可能であり,
その実装の数も増えています. S/KEY ば Bell Communications
Research, Inc. の登録商標です.
以下の説明では, 三種類の異なる「パスワード」が使われます.
まず一つ 目は, あなたが普段使っている普通の UNIX スタイルの,
もしくは Kerberos でのパスワードです. ここではこれを
“UNIX パスワード” と呼ぶことにし ます. 二つ目は,
S/KEY の key プログラムによって生成され,
keyinit
プログラムとログインプロンプトが受け付ける, 一回限りの
パスワードです. ここではこれを
“ワンタイムパスワード” と呼ぶことにし ます.
三つ目のパスワードは, key (と場合により
keyinit)
プログラムに対してユーザが入力する秘密のパスワードで,
ワンタイムパスワー ドを生成するのに使われます. ここではこれを
“秘密のパスフレーズ” もし くは単に
“パスフレーズ” と呼ぶことにします. (訳注:
ユーザが頭の中だ けにしまっておくべきものが,
この秘密のパスフレーズです. なお, 原文では
これをパスワードと表記していますが,
混乱を避けるために訳文ではすべて “
秘密のパスフレーズ” に統一しています.)
秘密のパスフレーズは, UNIX
パスワードと同じである必要はありませんし, また UNIX
パスワードと何らかの関連性を持たなければならないということも
ありません (両者を同一に設定することは可能ですが,
お奨めしません). UNIX パスワードは長さが 8
文字に制限されています (訳注: FreeBSD で DES
を導入していない場合はもっと長いパスワードも認識されます).
これに対し, S/KEY
では秘密のパスフレーズを好きなだけ長くすることができます (訳注:
実装上, `key'
コマンドなどのバッファ長で制限されてしまう可能性が あります.
200文字程度に押えておいた方がよいでしょう :-). 筆者は 7 語か
らなる文を使っています. 通常の設定では, S/KEY システムは UNIX
のパスワー
ドシステムと完全に独立して動作するようになっています.
S/KEY システムでは他に二種類のデータを使用します. 一つは
“シード (種)” または (混乱を招きますが)
“キー” と呼ばれるもので, (訳注: デ フォルトでは)
二つの文字と五つの数字で構成されます. もう一つは
“シー ケンス番号
で, 1 以上の整数です.
シーケンス番号は特に指定しなければ 100以下です (訳注:
``keyinit' プログラムでは 9999
まで指定できま す). S/KEY
はここまでに述べたデータを利用してワンタイムパスワードを生
成します. その方法は, まずシードと秘密のパスフレーズを連結し,
それに対 してシーケンス番号の回数だけ一方向ハッシュ (RSA Data
Security, Inc. に よる MD4 セキュアハッシュ関数)
を繰り返し計算します. そしてその結果を 六つの英単語に変換します
(訳注: ハッシュ計算の後, 64ビットに収まるよう
にデータを処理したものが厳密な意味でのワンタイムパスワードです.
通常は ユーザの便宜のために, この
64ビットデータと六つの英単語との間で変換処 理をおこなっています)
. login プログラムと su
プログラム は,
前回最後に受け付けられたワンタイムパスワードを記録しています.
そし て, その前回のワンタイムパスワードと,
ユーザが入力したワンタイムパスワー
ドを一回ハッシュ関数にかけた結果とが一致した場合に,
このユーザは認証さ れます. 一方向ハッシュ関数を使うことにより,
もし (ログイン等に成功した)
ワンタイムパスワードが一回盗聴されたとしても,
次回以降に使われる複数の
ワンタイムパスワードを生成することは不可能です.
シーケンス番号はログイ ン (等)
が成功するたびに一つずつ減らされて, ユーザとログインプログラム
の間で同期が取られます. (シーケンス番号が 1 になったら, S/KEY
を再度初 期化する必要があります.)
次に, S/KEY 関連の四つのプログラムについて説明します.
key プ ログラムは, シーケンス番号と,
シードと, 秘密のパスフレーズを受け付けて,
ワンタイムパスワードを生成します. keyinit
プログラムは, S/KEY を初期化するのに使用され,
また秘密のパスフレーズやシーケンス番号やシー
ドを変更するためにも使用されます. このプログラムを実行するには,
秘密の パスフレーズか, または,
シーケンス番号とシードとワンタイムパスワードの 一組かの,
どちらかが必要になります. keyinfo
プログラムは, /etc/skeykeys
というファイルを調べて, このプログラムを起動し
たユーザの現在のシーケンス番号とシードを表示します. 最後に,
login と su
プログラムについてですが, これらは S/KEY の
ワンタイムパスワードを, (訳注:システムが)
ユーザを認証するものとして受 理する処理をおこないます.
login プログラムは, 指定された特定の
アドレスからの接続に対して, UNIX
パスワードの使用を認めなくする機能, 逆に言えば S/KEY
の利用を強制する機能も持っています.
このドキュメントでは, 四種類の異なる操作について説明します.
一つ目 は, keyinit
プログラムを信頼できる通信路上で利用する場合で, 一 番始めに
S/KEY を設定する操作や, 使い始めたあとで秘密のパスフレーズや
シードを変更する操作です. 二つ目は, keyinit
プログラムを信頼で きない通信路上で利用する場合で,
操作の目的は一つ目と同じです. この場合 には
key プログラムを併用する必要があります.
三つ目は, key プログラムを使い,
信頼できない通信路を通じてログインする操 作です. 四番目は,
key プログラムを使って, 複数のワンタイムパス
ワードを一気に生成する操作です.
ここで生成した複数のワンタイムパスワー ドは,
メモしたり印刷したりして携帯し, 信頼できる通信路が一切ないところ
(例えば展示会場など) で利用することができます. (訳注:
ワンタイムパスワー ドを記録した紙をなくさないこと!
電話番号やIPアドレス, ユーザ名を一緒に
メモしていたら最悪です!!)
信頼できる通信路での初期化
信頼できる通信路 (例えばあるマシンのコンソール画面など)
を利用して いるときに, S/KEY の初期化, S/KEY
の秘密のパスフレーズの変更, またはシー
ドの変更をおこなうことができます. そのためには,
まずあなた自身がログイ ンし, keyinit
コマンドを以下のようにパラメタなしで実行します:
&prompt.user; keyinit
Updating wollman: ) この部分は始めて S/KEY を使
Old key: ha73895 ) うときには表示されません.
Reminder - Only use this method if you are directly connected.
If you are using telnet or rlogin exit with no password and use keyinit -s.
) `keyinit' コマンドが出力する注意です. 訳すと,
) 注意 - この動作モードはマシンに直接入力しているときのみ利用
) すること. もし今 telnet や rlogin を使っているなら, 秘密のパ
) スフレーズを入力せずにこのままコマンドを終了し, かわりに
) keyinit -s を実行すること.
Enter secret password: ) ここで秘密のパスフレーズを入力します.
Again secret password: ) もう一回入力します.
ID wollman s/key is 99 ha73896 ) あとで説明します.
SAG HAS FONT GOUT FATE BOOM )
上の例で出てきた事柄について説明しましょう. Enter
secret password:
というプロンプトに対してあなたが考えた秘密のパスフレーズを
入力します (筆者は 7
単語以上の文を秘密のパスフレーズにしています). こ
の秘密のパスフレーズは後でログインするために
必要になるものです. `ID' から始まる行は, S/KEY
における一回分のパラメタであり, あなたのログイ
ン名とシーケンス番号とシードです. (訳注:
`keyinit' コマンドは次回
にログインするときに使われるパラメタを参考のために
ここで表示しま す. ) S/KEY を使ってログインするときには,
システム側が自動的にこれらの パラメタを表示してくれますから,
これらのパラメタを覚えておく必要は ありません. 最後の行が,
今述べたパラメタと入力された秘密のパスフレー
ズから計算されたワンタイムパスワードです. この例を実行した後,
次にログ インするときに打ち込むべきワンタイムパスワードが
これです.
信頼できない通信路での初期化
信頼できない通信路を使って S/KEY を初期化,
または秘密のパスフレーズ やシードを変更するためには,
信頼できる通信路として, その信頼できない通
信路とは別のものを用意する必要があります.
その信頼できる通信路は key
プログラムを実行するために必要となるもので, 例えばそれは,
あなたが信頼できる Macintosh
のデスクアクセサリや信頼できるマシンのシェ
ルプロンプトだったりするでしょう
(そこでの操作に関しては後述します). (訳注:
ここでの通信路とはマシンそのものになります. 信頼できるマシンと
は, 信頼できる人がしっかり管理しているマシンということです.)
他に準備 しておくものとして, シーケンス番号
(100は適切な値といえるでしょう) と,
場合によっては自分で考えた,
またはランダムに生成されたシードがあります. あなたが S/KEY
を初期化しようとしているマシンへの通信路が, 信頼できな
いものである場合には keyinit -s
コマンドを以下のように使用しま す:
&prompt.user; keyinit -s
Updating wollman:
Old key: kh94741
Reminder you need the 6 English words from the skey command.
) `keyinit' コマンドが出力する注意です. 訳すと,
) 注意 - skey コマンドの出力する 6 英単語が必要になります.
Enter sequence count from 1 to 9999: 100 ) ここを入力.
Enter new key [default kh94742]: ) リターンのみ入力.
s/key 100 kh94742
デフォルトのシード (keyinit
プログラムは困ったことにこれを key と
読んでいるのですが, 混乱しないよう注意してください)
で構わなければ, リ ターンキーを押してください. 次に,
あらかじめ用意しておいた信頼できる通 信路
(信頼できるマシンや信頼できる S/KEY デスクアクセサリなど)
へ移っ て, 先ほどと同じパラメタを入力します.
$prompt.user; key 100 kh94742
Reminder - Do not use this program while logged in via telnet or rlogin.
Enter secret password: ) ここで秘密のパスフレーズを入力します.
HULL NAY YANG TREE TOUT VETO
ここで信頼できない通信路の方に戻って,
key コマンドが出力したワ
ンタイムパスワードをコピーして keyinit
プログラムに入力します.
s/key access password: HULL NAY YANG TREE TOUT VETO
ID wollman s/key is 100 kh94742
HULL NAY YANG TREE TOUT VETO
後は, 前章で説明したことと同様です.
ちょっと寄り道: ログインプロンプトについて
どうやってワンタイムパスワードを生成するかを説明する前に,
S/KEY を 使う場合のログインプロンプトを
見ておいた方がよいでしょう.
&prompt.user; telnet himalia
Trying 18.26.0.186...
Connected to himalia.lcs.mit.edu.
Escape character is '^]'.
s/key 92 hi52030
Password:
パスワードを要求する前に,
ログインプログラムがシーケンス番号とシードを
表示していることがわかります.
この二つのパラメタを使ってワンタイムパ
スワードを計算することになります.
ここではまだ使っていませんが, 便利な
機能がログインプログラムに備わっています:
パスワードプロンプトに対して,
何も入力せずにリターンを押すとエコーモードに切り替わります.
つまりタイ プした文字がそのまま見えるようになるのです. これは
S/KEY のワンタイム パスワードを紙に印刷していた場合など,
ワンタイムパスワードを手で入力し
なければならない場合に特に役立つ機能です.
このログインしようとしてるマシンが,
あなたが今使っているマシンから UNIX
パスワードを使ってログインすることができないように
設定されている 場合があります. その場合には,
ログインプロンプトには S/KEY のワンタイ
ムパスワードの利用が必要であることを示す (s/key
required) という注釈が表示されます.
ワンタイムパスワードを生成する
次に前章のログインプロンプトに対して入力するための
ワンタイムパスワー ドを生成しましょう. そのために,
信頼できるマシンと key プログラ
ムを使用します. (key プログラムには DOS や
Windows の上で動くも の,
Macintoshのデスクアクセサリとして動くものなどもあります.)
コマンド ラインで key
プログラムを起動するときには, シーケンス番号とシー
ドを引数として指定します. 入力が面倒な人は,
ログインプロンプトに表示さ れたもののうちで
key からその行の最後までを,
そのままカットア ンドペーストすることもできます.
key プログラムの実行は以下のよ
うになります:
&prompt.user; key 92 hi52030 ) 前章の例からペースト.
Reminder - Do not use this program while logged in via telnet or rlogin.
Enter secret password: ) 秘密のパスフレーズを入力.
ADEN BED WOLF HAW HOT STUN
そして別のウィンドウで:
s/key 92 hi52030 ) 前章の例の続き.
Password: ) ここでリターンキーを押した.
(turning echo on)
Password:ADEN BED WOLF HAW HOT STUN
Last login: Wed Jun 28 15:31:00 from halloran-eldar.l
[以下略.]
以上の手順は, 信頼できるマシンが利用できる場合
のみに 使えるもっ とも簡単な方法です.
Java S/Key の key applet もあり, The Java
OTP Calculator からダウンロードして Java
をサポートするブラウザ上でローカルに
実行することができます.
複数のワンタイムパスワードを生成する
都合によっては,
信頼できるマシンや信頼できる通信路が一切確保できな
いようなところで S/KEY を使う必要があるでしょう.
このような場合には, key
コマンドを使って複数のワンタイムパスワードを一気に生成する
ことが可能です.
そして結果を紙に印刷して携帯していくことができます. 例
えば:
&prompt.user; key -n 25 57 zz99999
Reminder - Do not use this program while logged in via telnet or rlogin.
Enter secret password:
33: WALT THY MALI DARN NIT HEAD
34: ASK RICE BEAU GINA DOUR STAG
[...]
56: AMOS BOWL LUG FAT CAIN INCH
57: GROW HAYS TUN DISH CAR BALM
という引数によって 25
個のワンタイムパスワードの生成を要 求します. ここで
は,
最後に表示されている (もっとも大き い)
シーケンス番号です. 残りのパラメタは前出の例と同様です.
出力は普 通に使う順番とは 逆
に出力されていることに注意してください (訳注:
一番最初に使うワンタイムパスワードは
一番最後に出力されたものです). こ
の結果をカットアンドペーストして lpr
コマンドを使って印刷すると よいでしょう.
もしあなたがセキュリティに偏執するなら, この結果を紙と鉛
筆を使って手で書き移した方がよいかもしれません. ここで,
出力の各行はシー
ケンス番号とそれに対応する一回分のワンタイムパスワードです.
消費済みの ワンタイムパスワードの行をペンで消していくと
便利でしょう.
UNIX パスワードの利用を制限する
設定ファイル /etc/skey.access
を使って UNIX パスワードの利
用を制限することができます. この場合の判断基準として,
ログインを受け付
ける際のホスト名, ユーザ名, 端末のポート, IP
アドレスなどが利用できま
す. この設定ファイルの詳細に関してはマニュアル
&man.skey.access.5; を
ご覧ください. マニュアルにはこの機能に関わるセキュリティに
ついて, いく
つかの警告が記述してあります. この機能を使って
セキュリティを高めようと
するのならば絶対にこのマニュアルを読んでください.
もし /etc/skey.access
ファイルが存在しないならば (FreeBSD
をインストールした直後の状態では存在しません),
すべてのユーザが UNIX パスワードを利用することができます.
逆に, もしファイルが存在するならば,
/etc/skey.access
ファイルに明示的に記述されていない限り, すべ てのユーザは
S/KEY の利用を要求されます. どちらの場合においても, その
マシンのコンソールからはいつでも UNIX
パスワードを使ってログインするこ とが可能です.
以下によく使われるであろう
三種類の設定を含む設定ファイルの例を示し ます:
permit internet 18.26.0.0 255.255.0.0
permit user jrl
permit port ttyd0
はじめの行 (permit internet) で, telnet
などで接続するときの IP のソースアドレス (注意:
これは偽造されるおそれがあります) が特定の値と
マスクに一致している場合に, UNIX
パスワードの利用を許可することを指定 しています.
この設定自体はセキュリティを高めるための機能ではありません.
そうではなく, ログインの権利を持つ許可されたユーザに対して,
現在そのユー
ザが使っているネットワークが信頼できないと考えられるので S/KEY
を使う べきである,
ということを気づかせるための機能であると考えてください.
二行目 (permit user) によって,
ある特定のユーザに対して, い つでも UNIX
パスワードの利用を許可するように指定しています. 一般的には
この設定をおこなうべきではありません. key
プログラムがどうして も使えない環境にいる人や,
ダム端末しかない環境にいる人, または何度教え
ても聞く耳を持たないような人を
サポートする必要がある場合にのみ設定をお
こなってください.
三行目 (permit port) によって,
ある特定の端末ポートからログ
インしようとするすべてのユーザに対して UNIX
パスワードの利用を許可する ように指定しています.
この設定はダイヤルアップ回線に対する設定として利
用できるでしょう.
Kerberos
原作: &a.markm;
(&a.md; からの寄稿に基づいています).
訳: &a.jp.arimura;.
Kerberosは,
サーバのサービスによってユーザが安全に認証を受けられる
ようにするための, ネットワークの付加システム及びプロトコルです.
リモートログイン, リモートコピー,
システム間での安全なファイルのコピ
ーやその他のリスクの高い仕事がかなり安全に,
そしてこれまでより制御 できるようになります.
以下の文章は,
FreeBSD用として配布されているKerberosをセットアップ
する際のガイドとして読むことができます. しかし,
完全な説明が必要な場合には, マニュアルページを読んだ方がよい
でしょう.
FreeBSDのKerberosは,
オリジナルの4.4BSD-Liteの配布に含まれている ものではなく,
FreeBSD 1.1.5.1のときに移植されたeBonesです.
これはアメリカ/カナダの外で作成されており,
これら以外の国の人々にも 手に入れられるものです.
このソフトウェアを合法的な配布物として得るために, アメリカも
しくはカナダのサイトから
持ってこないでください. でないと,
そのサイトが大変な問題に巻き込まれます.
合法的な配布は, 南アフリカのftp.internat.freebsd.orgや, FreeBSD
の公式ミラーサイトから入手することができます.
初期データベースの作成
この作業はKerberosサーバだけでおこないます. まず,
古いKerberosの データベースが存在しないことを確認してください.
ディレクトリ/etc/kerberosIVに移って,
次のファイルだけが 存在することをチェックします:
&prompt.root; cd /etc/kerberosIV
&prompt.root; ls
README krb.conf krb.realms
もし他のファイル (principal.* や
master_key) が 存在する場合には,
kdb_destroyというコマンドで古い
Kerberosデータベースを消してください.
Kerberosが走っていなければ,
単に余計なファイルを消せばよいです.
まず, krb.conf と
krb.realmsを編集してKerberosの 管理領域
(realm) を定義してください.
ここでは管理領域がGRONDAR.ZA で,
サーバ名がgrunt.grondar.zaであるとします.
krb.conf
というファイルを次のように編集してください:
&prompt.root; cat krb.conf
GRONDAR.ZA
GRONDAR.ZA grunt.grondar.za admin server
CS.BERKELEY.EDU okeeffe.berkeley.edu
ATHENA.MIT.EDU kerberos.mit.edu
ATHENA.MIT.EDU kerberos-1.mit.edu
ATHENA.MIT.EDU kerberos-2.mit.edu
ATHENA.MIT.EDU kerberos-3.mit.edu
LCS.MIT.EDU kerberos.lcs.mit.edu
TELECOM.MIT.EDU bitsy.mit.edu
ARC.NASA.GOV trident.arc.nasa.gov
この例にあるような他の管理領域は, 実際には必要ありません.
この例は複数の管理領域を認識する方法を示したものですので,
これらの行は含めなくても結構です.
1行目はこのシステムが動いている管理領域の名前です.
他の行は管理領域とホスト名のエントリです.
行の1つめの単語が管理領域で, 2つめがその管理領域の中で
“鍵配布センター”(Key Distribution Center)
として働くホスト名です. ホスト名の次に admin
server と書いてある場合には, そのホストが
``管理データベースサーバ''(Administrative Database Server)
も提供 することを意味します.
これらの単語について詳しく知りたい場合にはKerberosのマニュアル
ページをご覧ください.
ここで,
GRONDAR.ZAという管理領域にgrunt.grondar.za およびその他の.grondar.za
ドメインのすべてのホストを追加し なければなりません.
krb.realmsは次のようになります:
&prompt.root; cat krb.realms
grunt.grondar.za GRONDAR.ZA
.grondar.za GRONDAR.ZA
.berkeley.edu CS.BERKELEY.EDU
.MIT.EDU ATHENA.MIT.EDU
.mit.edu ATHENA.MIT.EDU
もう一度注意しますが, 他の管理領域を書く必要はありません.
これらは複数の管理領域を認識できるようにマシンを設定する方法を
示した例ですので, これらの行は消して構いません.
1行目は名前をつけた管理領域に 特定の
システムを含めるための ものです.
残りの行は名前をつけた管理領域にサブドメインのデフォルトの
システムを含めるためのものです.
これでデータベースを作成する準備ができました.
この操作はKerberos サーバ (鍵配布センター) を起動するだけです.
kdb_initコ
マンドを次のように実行してください:
&prompt.root; kdb_init
Realm name [default ATHENA.MIT.EDU ]: GRONDAR.ZA
You will be prompted for the database Master Password.
It is important that you NOT FORGET this password.
Enter Kerberos master key:
ここで鍵を保存して,
ローカルのマシンにあるサーバが取り出せるように します.
それにはkstashコマンドを使用します.
&prompt.root; kstash
Enter Kerberos master key:
Current Kerberos master key version is 1.
Master key entered. BEWARE!
これで暗号化されたマスタパスワードが
/etc/kerberosIV/master_key
に保存されました.
すべてが動くようにするための設定
Kerberosを導入する それぞれの
システムのデータベースに, 2つ のprincipal (主体名)
を追加する必要があります. その名前は
kpasswdとrcmdです.
これら2つのprincipalは, 個々 のシステムにおいて,
システム名と同じ名前のインスタンスと組にして作成
されます.
これらの kpasswd と
rcmd というデーモンによって, 他の
システムからKerberosのパスワードを変更したり,
rcpや rlogin,
rshといったコマンドを実行したりできるよ
うになります.
それでは実際にこれらのエントリを追加しましょう:
&prompt.root; kdb_edit
Opening database...
Enter Kerberos master key:
Current Kerberos master key version is 1.
Master key entered. BEWARE!
Previous or default values are in [brackets] ,
enter return to leave the same, or new value.
Principal name: passwd
Instance: grunt
<Not found>, Create [y] ? y
Principal: passwd, Instance: grunt, kdc_key_ver: 1
New Password: <---- ここは「RANDOM」と入力してください
Verifying password
New Password: <---- ここは「RANDOM」と入力してください
Random password [y] ? y
Principal's new key version = 1
Expiration date (enter yyyy-mm-dd) [ 2000-01-01 ] ?
Max ticket lifetime (*5 minutes) [ 255 ] ?
Attributes [ 0 ] ?
Edit O.K.
Principal name: rcmd
Instance: grunt
<Not found>, Create [y] ?
Principal: rcmd, Instance: grunt, kdc_key_ver: 1
New Password: <---- ここは「RANDOM」と入力してください
Verifying password
New Password: <---- ここは「RANDOM」と入力してください
Random password [y] ?
Principal's new key version = 1
Expiration date (enter yyyy-mm-dd) [ 2000-01-01 ] ?
Max ticket lifetime (*5 minutes) [ 255 ] ?
Attributes [ 0 ] ?
Edit O.K.
Principal name: <---- 何も入力しないと終了します
サーバファイルの作成
次に, 各マシンにおけるサービスを定義している,
すべてのインスタンス を展開します.
これにはext_srvtabというコマンドを使用しま
す. このコマンドで作成されるファイルは, Kerberosの各クライアン
トの/etc/kerberosIVディレクトリに
安全な方法でコピーまたは
移動する必要があります. このファイルはそれぞれのサーバとクラ
イアントに存在しなければならず,
またKerberosの運用において重要なも のです.
&prompt.root; ext_srvtab grunt
Enter Kerberos master key:
Current Kerberos master key version is 1.
Master key entered. BEWARE!
Generating 'grunt-new-srvtab'....
このコマンドは一時的なファイルを作成するだけです.
ファイル名をすべ てのサーバが読めるような
srvtab という名前に変更しな
ければなりません.
mvコマンドを用いてシステムの場所に移動
してください.
&prompt.root; mv grunt-new-srvtab srvtab
そのファイルがクライアントに配るためのもので,
ネットワークが安全で はないと思われる場合には,
client-new-srvtab
を移動
可能なメディアにコピーして物理的に安全な方法で運んでください.
クラ
イアントの/etc/kerberosIVディレクトリで,
名前を srvtabに変更し,
modeを600にするのを忘れないでください:
&prompt.root; mv grumble-new-srvtab srvtab
&prompt.root; chmod 600 srvtab
データベースへのユーザの追加
ここで,
ユーザのエントリをデータベースに追加する必要があります.
始めに,
ユーザjaneのエントリを作成してみましょう.
kdb_edit
を用いて次のように作成してください:
&prompt.root; kdb_edit
Opening database...
Enter Kerberos master key:
Current Kerberos master key version is 1.
Master key entered. BEWARE!
Previous or default values are in [brackets] ,
enter return to leave the same, or new value.
Principal name: jane
Instance:
<Not found>, Create [y] ? y
Principal: jane, Instance: , kdc_key_ver: 1
New Password: <---- 安全なパスワードを入れてください
Verifying password
New Password: <---- もう一度パスワードを入れてください
Principal's new key version = 1
Expiration date (enter yyyy-mm-dd) [ 2000-01-01 ] ?
Max ticket lifetime (*5 minutes) [ 255 ] ?
Attributes [ 0 ] ?
Edit O.K.
Principal name: <---- 何も入力しないと終了します
すべてのテスト
まず始めにKerberosデーモンを起動する必要があります.
/etc/rc.conf
ファイルを正しく編集してあれば, マシンを再
起動することでに自動的にデーモンが起動します.
これはKerberosサー バでのみ必要です.
Kerberosクライアントは/etc/kerberosIVか
ら必要なものを自動的に入手します.
&prompt.root; kerberos &
Kerberos server starting
Sleep forever on error
Log file is /var/log/kerberos.log
Current Kerberos master key version is 1.
Master key entered. BEWARE!
Current Kerberos master key version is 1
Local realm: GRONDAR.ZA
&prompt.root; kadmind -n &
KADM Server KADM0.0A initializing
Please do not use 'kill -9' to kill this job, use a
regular kill instead
Current Kerberos master key version is 1.
Master key entered. BEWARE!
さあ, これで上で作成した jane
というIDのチケットを
kinitコマンドで得ることができます:
&prompt.user; kinit jane
MIT Project Athena (grunt.grondar.za)
Kerberos Initialization for "jane"
Password:
klist コマンドを用いてトークンを見て,
きちんとチケットを持って いるかどうか確認してください:
&prompt.user; klist
Ticket file: /tmp/tkt245
Principal: jane@GRONDAR.ZA
Issued Expires Principal
Apr 30 11:23:22 Apr 30 19:23:22 krbtgt.GRONDAR.ZA@GRONDAR.ZA
passwd
コマンドを用いてパスワードを変更して, kpasswdデーモ
ンがKerberos
データベースに対して認証されるかどうかチェックして
ください:
&prompt.user; passwd
realm GRONDAR.ZA
Old password for jane:
New Password for jane:
Verifying password
New Password for jane:
Password changed.
su特権の追加
root権限が必要なユーザは誰でも,
suコマンドのパス
ワードをユーザ毎に別のもの
として持つことができます.
rootにsu
できる権利を与えられたidを追加します. これは,
principalに付いているroot
というインスタンスに よって制御されています.
kdb_editを用いて
jane.rootというエントリを
Kerberosデータベースに作成します:
&prompt.root; kdb_edit
Opening database...
Enter Kerberos master key:
Current Kerberos master key version is 1.
Master key entered. BEWARE!
Previous or default values are in [brackets] ,
enter return to leave the same, or new value.
Principal name: jane
Instance: root
<Not found>, Create [y] ? y
Principal: jane, Instance: root, kdc_key_ver: 1
New Password: <---- 安全なパスワードを入れます
Verifying password
New Password: <---- もう一回パスワードを入れます
Principal's new key version = 1
Expiration date (enter yyyy-mm-dd) [ 2000-01-01 ] ?
Max ticket lifetime (*5 minutes) [ 255 ] ? 12 <--- ここは短くしてください
Attributes [ 0 ] ?
Edit O.K.
Principal name: <---- 何も入力しないと終了します
実際にトークンをもらって,
ちゃんと働いているかどうか確認しましょう:
&prompt.root; kinit jane.root
MIT Project Athena (grunt.grondar.za)
Kerberos Initialization for "jane.root"
Password:
ここでrootユーザの .klogin
ファイルにユーザを追加する必要が あります.
&prompt.root; cat /root/.klogin
jane.root@GRONDAR.ZA
suしてみましょう:
&prompt.user; su
Password:
どのトークンを持っているか見てみましょう:
&prompt.root; klist
Ticket file: /tmp/tkt_root_245
Principal: jane.root@GRONDAR.ZA
Issued Expires Principal
May 2 20:43:12 May 3 04:43:12 krbtgt.GRONDAR.ZA@GRONDAR.ZA
他のコマンドの使用
ここまでの例では, jane という principal
を root とい
うインスタンス付きで作成しました.
これはユーザと同じ名前をprincipalと しており,
Kerberosのデフォルトの値です;
<username>.root
という形式の
<principal>.<instance>で,
必要なエント
リがrootのホームディレクトリの
.kloginファイルに あれば,
<username>がrootに
suすることができま す.
&prompt.root; cat /root/.klogin
jane.root@GRONDAR.ZA
同様に, ユーザのホームディレクトリの
.kloginファイルに次の
ような行がある場合には:
&prompt.user; cat ~/.klogin
jane@GRONDAR.ZA
jack@GRONDAR.ZA
jane または jack
という名前で (前述のkinit によって)
認証されている GRONDAR.ZA
という管理領域のユーザ なら誰でもrlogin や
rsh, rcp等によってこ
のシステム (grunt)
のjaneのアカウントまたはファ
イルにアクセスできます.
例えば, Janeが他のシステムにKerberos
を用いてloginします:
&prompt.user; kinit
MIT Project Athena (grunt.grondar.za)
Password:
&prompt.user; rlogin grunt
Last login: Mon May 1 21:14:47 from grumble
Copyright (c) 1980, 1983, 1986, 1988, 1990, 1991, 1993, 1994
The Regents of the University of California. All rights reserved.
FreeBSD BUILT-19950429 (GR386) #0: Sat Apr 29 17:50:09 SAT 1995
次の例では, Jackが同じマシンの Jane
のアカウントにloginします. Janeは .klogin
ファイルを前述のように設定しており,
Kerberosではjackというprincipal
をインスタンスなしで設定してあ ります.
&prompt.user; kinit
&prompt.user; rlogin grunt -l jane
MIT Project Athena (grunt.grondar.za)
Password:
Last login: Mon May 1 21:16:55 from grumble
Copyright (c) 1980, 1983, 1986, 1988, 1990, 1991, 1993, 1994
The Regents of the University of California. All rights reserved.
FreeBSD BUILT-19950429 (GR386) #0: Sat Apr 29 17:50:09 SAT 1995
ファイアウォール
原作: &a.gpalmer;, &a.alex;.
訳: &a.jp.saeki;.
11 November 1996.
ファイアウォールは,
インターネットに参加している人はもちろんのこと,
プライベートネットワークのセキュリティ向上のための
アプリケーションを 探している人にとっても,
ますます興味深くなりつつある分野です.
このセクションではファイアウォールとは何か,
ファイアウォールの使用法,
そしてファイアウォールを構築するために FreeBSD のカーネルで
提供されているファシリティ (機能)
の使用法について説明したいと思います.
社内のネットワークと “巨大かつ信頼のおけない
インターネット” との間にファイアウォールを構築することで
セキュリティ上のすべての問題が解決できると考える人がいます.
ファイアウォールはセキュリティ上の問題を
解決する助けになる場合もありますが,
充分な設定がなされていないファイアウォールは,
まったくファイアウォールを
持たない場合よりもセキュリティ上の危険を増大させてしまいます.
ファイアウォールにできることは,
あなたのシステムにもう一つのセキュリティ層を
追加することだけで,
本気でアタックをしかけてくるクラッカーが内部ネットワークに
侵入するのを妨げることはできません.
ファイアウォールを侵入不可能と過信して
内部のセキュリティをおろそかにすることは,
単にクラッカーの仕事を少し簡単にするだけでしか
ありません.
ファイアウォールとは何か ?
現在インターネットで普通に使用されている
ファイアウォールには 二つの異なるタイプがあります. 一つは,
厳密には パケットフィルタリングルータ
と 呼ばれるタイプのものです. これはマルチホームのホストマシン
(複数の ネットワークに接続されているマシン) のカーネルが,
ある規則にしたがって
パケットを転送したりブロックしたりするものです. もう一つは,
proxy (代理) サーバ
として知られているタイプのものです. これは,
おそらくはマルチホームのホストマシン上で,
カーネルによるパケット転送を 禁止して,
デーモンにより認証の提供とパケットの転送とを
おこなうものです.
二つのタイプのファイアウォールを組み合わせて使用して,
特定のマシン ( 要塞ホスト と呼ばれる)
だけが パケットフィルタリングルータを通して内部ネットワークへ
パケットを送ることができるよう設定している
サイトがしばしば存在します. proxy (代理)
サービスは通常の認証メカニズムよりもセキュリティを
強化してある 要塞ホストで動作させます.
FreeBSD は (IPFW
として知られる) カーネルパケットフィルタ込みで
提供されています. このセクションの後の方では,
このフィルタについての 説明を集中しておこないます.
サードパーティから提供されるソフトウェアを使用することにより,
Proxy サーバを FreeBSD 上に構築することができます. しかし,
現在入手可能な proxy サーバは
たいへんバラエティに富んでいるので,
このドキュメントでそれらすべてを
カバーすることは不可能です.
パケットフィルタリングルータ
ルータとは, 二つまたはそれ以上のネットワークの間で
パケットの転送をおこなう マシンのことです.
パケットフィルタリングルータは, そのカーネルの内部に,
一つ一つのパケットをルールリストと比較して
転送するかしないかを決める 特別なコードを持っています.
最近の IP ルーティングソフトウェアのほとんどは, 内部に
パケットのフィルタリングをおこなうためのコードを持っていて,
デフォルトでは すべてのパケットを転送するようになっています.
このフィルタを有効にするためには,
パケットの通過を許すべきかどうかを決める
ルールを自分で定義する必要があります.
パケットを通すべきか通すべきでないかを決めるために,
パケットヘッダの内容にマッチするものが
ルールリストから探されます. マッチするルールが見つかると,
ルールアクションが実行されます. ルールアクションには,
パケットを捨てる, パケットを転送する,
またはパケットの発信元に ICMP
メッセージを送り返すというものがあります.
ルールの検索は先頭から順番におこなわれ,
通常は最初にマッチしたものだけが 適用されます. そのため,
このルールリストは “ルールチェーン”
と呼ばれることもあります.
パケットマッチングの基準は使用するソフトウェアに
よって異なりますが, 通常はパケットの発信元 IP アドレス,
宛先 IP アドレス, 発信元ポート番号, 宛先ポート番号
(ポート番号はポートをサポートするプロトコルの場合のみ),
パケットタイプ (UDP, TCP, ICMP など)
に基づくルールを指定することができます.
Proxy サーバ
Proxy サーバとは通常のシステムデーモン (telnetd, ftpd
など) を 特別なサーバで置き換えたマシンのことです.
これらのサーバは,
通常は中継をおこなって特定方向への接続だけを許すため,
proxy サーバ と呼ばれます. (例えば)
proxy telnet
サーバをファイアウォールホストで走らせておきます.
外部からユーザがファイアウォールに対して telnet
を実行すると, proxy telnet サーバが応答して,
何らかの認証メカニズムを実行します. これを通過した後で,
内部ネットワークへのアクセスがおこなえるように なるのです.
(内部ネットワークからの信号は proxy
サーバがかわりに受け取り, 外へ向けて送り出します.)
Proxy サーバは通常,
普通のサーバより堅固に構築されていて, しばしば
“使い捨て” パスワードシステムなどを含む,
多様な認証メカニズムを持っています.
“使い捨て”パスワードシステムとは,
どういうものなのでしょうか. 仮に誰かが何らかの方法で,
あなたが使用したパスワードを手に入れたとします. しかし,
一度使用したことで,
そのパスワードは既に無効になっているのです. ですから,
そのパスワードをもう一度使用したとしても, あなたのシステムへ
アクセスすることはできないというわけです.
これらのサーバは中継をおこなうだけで,
実際のところサーバホスト自身への
アクセスをユーザに許してはいません. そのため,
何者かがセキュリティシステムに
侵入用の裏口を取り付けることは,
より困難になっています.
proxy サーバはアクセス制限の方法をいくつも持っていて,
特定のホスト
だけがサーバへのアクセス権を得ることができるように
なっていることがあり ます.
そして目的のマシンと通信できるユーザを制限するように
設定することもできます. もう一度言いますが,
どんなファシリティ (機能) が使えるかは, どんな proxy
サービスをおこなうソフトウェアを選ぶかに大きく
依存します.
IPFW で何ができるか
FreeBSD とともに配布されている
IPFW は, カーネル内部にあって
パケットのフィルタリングとアカウンティングを
おこなうシステムであり,
ユーザ側のコントロールユーティリティである &man.ipfw.8; を
含んでいます. ルーティングの決定をおこなう際に,
これらは互いに協力して,
カーネルで使用されるルールを定義したり,
現在使用されているルールを
問い合わせたりすることができます.
IPFW
は互いに関連する二つの部分からなっています.
ファイアウォールセクションは
パケットフィルタリングをおこないます. また, IP
アカウンティングセクションはファイアウォールセクションのものと
似たルールに基づいてルータの使用を追跡します. これにより,
(例えば) 特定のマシンからルータへのトラフィックがどのくらい
発生しているか調べたり, どれだけの WWW (World Wide Web)
トラフィックが
フォワードされているかを知ることができます.
IPFW は,
ルータではないマシンにおいても入出力コネクションの
パケットフィルタリングのために
使用することができるように設計されています. これは一般的な
IPFW
の使用法とは異なる特別な使い方ですが,
こういった状況でも同じコマンドと
テクニックが使用されます.
FreeBSD で IPFW を有効にする
IPFW
システムの中心となる部分はカーネル内部にあります. そのため,
どのファシリティ (機能) を必要とするかによって, 一つまたは
それ以上のオプションをカーネルコンフィグレーション
ファイルに追加し,
カーネルを再コンパイルする必要があるでしょう.
カーネルの再コンパイル方法の詳細については, カーネルコンフィグレーション
を参照してください.
現在, IPFW
に関係するカーネルコンフィグレーションオプションは
三つあります:
options IPFIREWALL
パケットフィルタリングのためのコードを
カーネルに組み込みます.
options IPFIREWALL_VERBOSE
&man.syslogd.8; を通じて
パケットのログを取るためのコードを有効にします.
フィルタルールでパケットのログを取るように指定しても,
このオプションが指定されていなければ,
ログを取ることはできません.
options IPFIREWALL_VERBOSE_LIMIT=10
&man.syslogd.8; を通じて
ログを取るパケットの数をエントリ毎に制限します.
敵対的な環境においてファイアウォールの
動作のログを取りたいけれど,
syslog の洪水によるサービス拒絶攻撃に対し
無防備でありたくないという場合に,
このオプションを使用したいと思うことが
あるかもしれません.
チェーンエントリのログが指定された制限数に達すると,
そのエントリに関するログ取りは停止されます.
ログ取りを再開するには, &man.ipfw.8;
ユーティリティを使用して
関連するカウンタをリセットする必要があります:
&prompt.root; ipfw zero 4500
4500 とは,
ログ取りを続行したいチェーンエントリの番号です.
以前のバージョンの FreeBSD は
IPFIREWALL_ACCT というオプションを
持っていました. しかし,
ファイアウォールコードがアカウンティングファシリティ (機能) を
自動的に含むようになったため,
現在では使用されることはなくなっています.
IPFW の設定
IPFW ソフトウェアの設定は
&man.ipfw.8; ユーティリティを
通じておこないます. このコマンドの構文は非常に
複雑に見えますが,
一旦その構造を理解すれば比較的単純です.
このユーティリティでは今のところ四つの異なる
コマンドカテゴリが 使用されています: それは追加 / 削除, 表示,
フラッシュ, およびクリアです. 追加 /
削除はパケットの受け入れ, 拒絶, ログ取りをどのようにおこなうか
というルールを構築するのに使用します. 表示はルールリスト
(またはチェーン) と (アカウンティング用) パケットカウンタの
内容を調べるのに使用します.
フラッシュはチェーンからすべてのエントリを
取り除くのに使用します.
クリアは一つまたはそれ以上のアカウンティングエントリを
ゼロにするのに 使用します.
IPFW ルールの変更
この形式での使用法は:
ipfw
-N
コマンド
index
アクション
log
プロトコル
アドレス
オプション
この形式で使用する際に有効なフラグは一つだけです:
-N
アドレスやサービス名を
文字列に変換して表示します.
コマンド
は一意である限り短縮可能です. 有効な コマンド
は:
add
ファイアウォール / アカウンティングルールリストに
エントリを追加します.
delete
ファイアウォール /
アカウンティングルールリストから
エントリを削除します.
以前のバージョンの IPFW では,
ファイアウォールエントリと
パケットアカウンティングエントリが別々に利用されていました.
現在のバージョンでは, それぞれのファイアウォールエントリ毎に
パケットアカウンティングエントリが備えられています.
index が指定されていると,
エントリはチェーン中の index
で示される位置に置かれます. index が指定されて いなければ,
エントリは (65535 番のデフォルトルールである
パケット拒絶を別にして) 最後のチェーンエントリの index に
100 を足した 位置 (チェーンの最後) に置かれます.
カーネルが IPFIREWALL_VERBOSE
つきでコンパイルされている場合, log
オプションはマッチしたルールを
システムコンソールに出力させます.
有効な アクション は:
reject
パケットを捨てます, ICMP ホスト /
ポート到達不能パケットを (適切な方を)
発信元へ送ります.
allow
通常通りパケットを通過させます. (別名:
pass および
accept)
deny
パケットを捨てます. 発信元は ICMP メッセージによる
通知を受けません (そのためパケットが
宛先に到達しなかったように見えます).
count
このルールはパケットカウンタを更新するだけで,
パケットを 通過させたり拒絶したりしません.
検索は次のチェーンエントリから続けられます.
それぞれの アクション
は一意な先頭部分だけでも認識されます.
指定可能な プロトコル
は以下の通り:
all
任意の IP パケットにマッチします.
icmp
ICMP パケットにマッチします.
tcp
TCP パケットにマッチします.
udp
UDP パケットにマッチします.
アドレス の指定は:
from
address/mask
port
to
address/mask
port
via interface
port はポートをサポートする
プロトコル (UDP と TCP) の
場合にだけ指定可能です.
は必須ではなく,
特定のインターフェースを通ってきたパケット
だけにマッチするように, IP アドレスまたはローカル IP
インターフェースの ドメイン名, またはインターフェース名
(例えば ed0) を
指定することができます.
インターフェースユニット番号はオプションで,
ワイルドカードで指定することが できます. 例えば,
ppp* はすべてのカーネル PPP
インターフェースに マッチします.
address/mask の指定は:
address
または
address/mask-bits
または
address:mask-pattern
IP
アドレスのかわりに有効なホスト名を指定することも可能です.
はアドレスマスクで上位何ビットを1にするべきかを
示す十進数値です. 例えば次の指定,
192.216.222.1/24 はクラス C のサブネット
(この場合 192.216.222) の任意のアドレスにマッチする
マスクを作成します.
は与えられたアドレスと 論理 AND される IP アドレスです.
キーワード any は“任意の IP
アドレス”を指定するために
使用することができます.
ブロックするポート番号は以下のように指定します:
port,
port,
port…
のように単独のポートまたはポートのリストを指定します.
または
port-
port
のようにポートの範囲を指定します.
単独のポートとポートのリストを
組み合わせて指定することも可能ですが,
その場合は常に範囲の方を
最初に指定しなければなりません.
使用可能な オプション は:
frag
データグラムの最初の
フラグメントでなければマッチします.
in
入力途中のパケットであればマッチします.
out
出力途中のパケットであればマッチします.
ipoptions spec
IP ヘッダが spec
に指定された カンマで区切られた
オプションのリストを含んでいればマッチします.
サポートされている IP オプションのリストは:
ssrr (ストリクトソースルート),
lsrr (ルーズソースルート),
rr (レコードパケットルート),
そして ts (タイムスタンプ) です.
特定のオプションを含まないことを指定するには
! を先頭につけます.
established
パケットが既に確立されている TCP
コネクションの一部であれば (つまり RST または ACK
ビットがセットされていれば) マッチします.
established
ルールをチェーンの最初の方に置くことで,
ファイアウォールのパフォーマンスを向上させることが
できます.
setup
パケットが TCP
コネクションを確立しようとするものであれば (SYN
ビットがセットされ ACK ビットはセットされていなければ)
マッチします.
tcpflags flags
TCP ヘッダが flags
に指定された カンマで区切られたフラグの
リストを含んでいればマッチします.
サポートされているフラグは, fin,
syn, rst,
psh, ack と
urg です.
特定のフラグを含まないことを指定するには
! を先頭につけます.
icmptypes types
ICMP タイプが types
リストに 存在していればマッチします.
リストはタイプの範囲または個々のタイプを
カンマで区切った任意の組合せで指定できます.
一般的に使用されている ICMP タイプは:
0 エコーリプライ (ping リプライ),
3 相手先到達不可能,
5 リダイレクト,
8 エコーリクエスト (ping
リクエスト), そして 11 時間超過
(&man.traceroute.8; で使用されているように, TTL
満了を示すのに使用されます) です.
IPFW ルールリストの表示
この形式での使用法は:
ipfw
-a
-t
-N
l
この形式で使用する際に有効なフラグは三つあります:
-a
リスト表示の際にカウンタの値も表示します.
このオプションは アカウンティングカウンタの
内容を見る唯一の手段です.
-t
各チェーンエントリが最後に
マッチした時刻を表示します. この時刻表示は
&man.ipfw.8; ユーティリティで使用される入力形式と
互換性がありません.
-N
(可能であれば)
アドレスやサービス名を文字列に変換して表示します.
IPFW ルールのフラッシュ
チェーンをフラッシュするには:
ipfw
flush
カーネルに固定されているデフォルトルール (インデックス
65535 番) 以外の,
ファイアウォールチェーンの中のすべてのエントリを削除します.
デフォルトではすべてのパケットが拒絶されるので,
一旦これを実行すると,
パケットを許可するエントリがチェーンに追加されるまで,
あなたのシステムがネットワークから切り放されてしまいます.
そのため,
ルールのフラッシュをおこなうときは注意が必要です.
IPFW パケットカウンタのクリア
一つまたはそれ以上のパケットカウンタをクリアするためには:
ipfw
zero
index
index が指定されていなければ,
すべてのパケットカウンタが クリアされます.
index が指定されていれば,
特定のチェーンエントリだけが クリアされます.
ipfw に対するコマンドの例
このコマンドはルータを介して転送される, ホスト evil.crackers.org から ホスト nice.people.org の telnet ポートへの
すべてのパケットを拒絶します:
&prompt.root; ipfw add deny tcp from evil.crackers.org to nice.people.org 23
次の例は, ネットワーク crackers.org (クラス C) 全体から
マシン nice.people.org
(の任意のポート) への 任意の TCP トラフィックを拒絶し,
ログを取ります.
&prompt.root; ipfw add deny log tcp from evil.crackers.org/24 to nice.people.org
あなたの内部ネットワーク (クラス C のサブネット) に対する
X セッションを 張れないようにする場合,
以下のコマンドで必要なフィルタリングがおこなえます:
&prompt.root; ipfw add deny tcp from any to my.org/28 6000 setup
アカウンティングレコードを見るには:
&prompt.root; ipfw -a list
または短縮形式で
&prompt.root; ipfw -a l
最後にチェーンエントリがマッチした
時刻を見ることもできます.
&prompt.root; ipfw -at l
パケットフィルタリングファイアウォールの構築
以下の提案は, ただの提案にすぎません:
必要な処理はそれぞれのファイアウォールで異なるため,
あなた独自の要求にあったファイアウォールを構築する方法を
ここで述べることはできないのです.
最初にファイアウォールをセットアップするとき,
コントロールされた環境でファイアウォールホストの
設定がおこなえるような
テストベンチセットアップが用意できない場合には,
カーネルのログ取りを
有効にしてログ取り版のコマンドを使用することを
強くおすすめします. そうすることで,
大した混乱や中断なしに問題となる範囲の特定と処置を
素早くおこなうことができます.
初期セットアップフェーズが完了してからであっても,
アタックの可能性のあるアクセスをトレースしたり,
要求の変化に応じてファイアウォールルールを
変更したりできるので, `deny'
に対するログ取りをおこなうことをおすすめします.
accept
コマンドのログ取りをおこなっていると,
ファイアウォールをパケットが一つ通過する毎に 1
行のログが生成されるため 大量の
ログデータが発生します. そのため, 大規模な ftp/http
転送などをおこなうと, システムが非常に 遅くなってしまいます.
また, パケットが通過するまでにカーネルにより
多くの仕事を要求するため, パケットのレイテンシ (latency)
を増加させてしまいます. syslogd
もログをディスクに記録するなど, より多くの CPU タイムを
使用し始め, 実に容易に /var/log
が置かれているパーティションを
パンクさせてしまう可能性があります.
現状では, FreeBSD
はブート時にファイアウォールルールをロードする
能力を持っていません. 私は /etc/netstart
スクリプトにロードをおこなうスクリプトを
追加することをおすすめします. IP
インターフェースの設定がおこなわれる前に
ファイアウォールの設定がおこなわれるように, netstart
ファイル中の 充分に早い位置にルールをロードする
スクリプトを配置してください. こうすることで,
ネットワークがオープンな間は常に抜け道が塞がれている
ことになります.
ルールをロードするために使用するスクリプトは,
あなたが作成しなければなりません. 現在のところ
ipfw は 1 コマンドで複数のルールを
ロードするユーティリティをサポートしていません.
私が使用しているシステムでは以下のようにしています:
&prompt.root; ipfw list
ファイルに現在のルールリストを出力し,
テキストエディタを使用して すべての行の前に
ipfw と書き足します. こうすることで,
このスクリプトを /bin/sh に与えてルールをカーネルに再読み込み
させることができます.
これは最も効率的な方法とはいえないかもしれませんが,
きちんと動作しています.
次の問題は, ファイアウォールが実際には何を する
べきかです !
これは外部からそのネットワークへのどんなアクセスを許したいか,
また内部から外界へのアクセスを
どのくらい許したいかに大きく依存します.
いくつか一般的なルールを挙げると:
1024 番以下のポートへのすべての TCP
入力アクセスをブロックします. ここは finger, SMTP (mail)
そして telnet など, 最もセキュリティに敏感な
サービスが存在する場所だからです.
すべての 入力 UDP
トラフィックをブロックします. これは UDP
を使用しているサービスで有用なものは極めて少ないうえ,
有用なトラフィック (例えば Sun の RPC と NFS プロトコル)
は, 通常セキュリティに対する脅威となるためです. UDP
はコネクションレスプロトコルであるため, 入力 UDP
トラフィックを拒絶することは すなわち出力 UDP
トラフィックに対する返答をも ブロックすることになるので,
このことはそれなりの不利益をもたらします. たとえば外部の
archie (prospero) サーバを使用している (内部の) ユーザに
とって問題となる可能性があります. もし archie
へのアクセスを許したければ, 191 番と 1525 番のポートから
任意の UDP
ポートへ来るパケットがファイアウォールを通過することを
許可しなければなりません. 123
番のポートから来るパケットは ntp パケットで,
これも通過の許可を考慮する必要がある
もう一つのサービスです.
外部から 6000
番のポートへのトラフィックをブロックします. 6000
番のポートは X11 サーバへのアクセスに使用されるポートで,
セキュリティに対する脅威となりえます.
(特に自分のワークステーションで xhost
+
をおこなう癖を持っている人がいればなおさらです). X11
は実際に 6000 番以降のポートを使用する可能性があるため,
通過許可に 上限を定めると,
そのマシンで走らせることのできる X ディスプレイの
個数が制限されます. RFC 1700 (Assigned Numbers)
で定義されているように, 上限は 6063 です.
内部のサーバ (例えば SQL サーバなど)
がどのポートを使用するかを チェックします.
それらのポートは通常, 上で指定した 1-1024
番の範囲から外れていますので,
これらも同様にブロックしておくことは
おそらく良い考えです.
これとは別のファイアウォール設定に 関するチェックリストが
CERT から 入手可能です.
ftp://ftp.cert.org/pub/tech_tips/packet_filtering
前にも述べたように, これはただの ガイドライン
にすぎません.
ファイアウォールでどのようなフィルタルールを使用するかは,
あなた自身が 決めなければなりません.
これまでのアドバイスにしたがったにも関わらず,
誰かがあなたのネットワークに 侵入してきたとしても,
私は「いかなる」責任もとることはできません.
diff --git a/ja_JP.eucJP/books/handbook/staff/chapter.sgml b/ja_JP.eucJP/books/handbook/staff/chapter.sgml
index d7b4aef08b..6daeda9da4 100644
--- a/ja_JP.eucJP/books/handbook/staff/chapter.sgml
+++ b/ja_JP.eucJP/books/handbook/staff/chapter.sgml
@@ -1,853 +1,901 @@
FreeBSDプロジェクトスタッフ
訳: &a.hanai;28 August 1996.
FreeBSDプロジェクトは,
以下の人々によって管理運営されています.
FreeBSD コアチーム
FreeBSD コアチームは,
プロジェクトの “運用委員会” を形成し, FreeBSD
プロジェクトの全般的な目的や方針の決定を行います. さらに,
FreeBSDプロジェクトの 特定の分野の
運用も行っています.
(姓でアルファベット順):
&a.asami;
&a.jmb;
&a.ache;
&a.bde;
&a.gibbs;
&a.dg;
&a.jkh;
&a.phk;
&a.rich;
&a.gpalmer;
&a.jdp;
&a.dfr;
&a.sos;
&a.peter;
&a.wollman;
&a.joerg;
FreeBSD の開発者たち
(CVSの)commitする権利を持っていて, FreeBSD
のソースツリーについて 作業をおこなっている人々がいます.
すべてのコアチームのメンバはま た 開発者でもあります.
&a.ugen;
&a.dbaker;
+
+ &a.jhb;
+
+
&a.mbarkah;
&a.stb;
&a.pb;
&a.abial;
&a.jb;
&a.torstenb;
&a.dburr;
&a.charnier;
&a.luoqi;
&a.ejc;
&a.kjc;
&a.gclarkii;
&a.archie;
+
+ &a.chris;
+
+
&a.alc;
&a.cracauer;
&a.adam;
&a.dillon;
+
+ &a.mdodd;
+
+
&a.dufault;
&a.uhclem;
&a.tegge;
&a.deischen;
&a.eivind;
&a.julian;
&a.rse;
&a.ru;
&a.se;
&a.jasone;
&a.sef;
&a.green;
&a.fenner;
&a.jfieber;
&a.jfitz;
&a.scrappy;
&a.lars;
&a.dirk;
&a.shige;
&a.billf;
&a.tg;
&a.gallatin;
&a.brandon;
&a.graichen;
&a.cg;
&a.jgreco;
&a.rgrimes;
&a.jmg;
&a.hanai;
&a.mharo;
&a.thepish;
&a.jhay;
&a.sheldonh;
&a.helbig;
&a.ghelmer;
&a.erich;
&a.nhibma;
&a.flathill;
&a.hosokawa;
&a.hsu;
&a.foxfair;
&a.tom;
&a.mph;
&a.shin;
+
+ &a.imura;
+
+
+
+ &a.shin;
+
+
&a.itojun;
&a.iwasaki;
&a.mjacob;
&a.gj;
&a.nsj;
&a.kato;
&a.andreas;
&a.motoyuki;
&a.jkoshy;
&a.kuriyama;
&a.grog;
&a.jlemon;
&a.truckman;
&a.lile;
+
+ &a.kevlo;
+
+
&a.imp;
&a.jmacd;
&a.smace;
&a.gehenna;
&a.mckay;
&a.mckusick;
&a.ken;
&a.hm;
&a.tedm;
+
+ &a.jim;
+
+
&a.marcel;
&a.amurai;
&a.markm;
&a.max;
&a.newton;
&a.rnordier;
&a.davidn;
&a.obrien;
&a.danny;
&a.ljo;
&a.fsmp;
&a.smpatel;
&a.wpaul;
+
+ &a.alfred;
+
+
&a.wes;
&a.cpiazza;
&a.steve;
&a.mpp;
&a.jraynard;
&a.darrenr;
&a.csgr;
&a.martin;
&a.paul;
&a.roberto;
&a.chuckr;
&a.guido;
&a.dima;
&a.sada;
&a.nsayer;
&a.wosch;
&a.ats;
&a.dick;
&a.jseger;
&a.simokawa;
&a.vanilla;
&a.msmith;
&a.des;
&a.brian;
&a.mks;
&a.stark;
&a.karl;
&a.sumikawa;
&a.nyan;
+
+ &a.tanimura;
+
+
&a.taoka;
+
+ &a.mtaylor;
+
+
&a.dt;
&a.cwt;
&a.pst;
&a.hoek;
&a.nectar;
&a.swallace;
&a.dwhite;
&a.nate;
&a.yokota;
+
+ &a.andy;
+
+
+
+ &a.phantom;
+
+
&a.jmz;
FreeBSD ドキュメンテーションプロジェクト
- FreeBSD
+ FreeBSD
ドキュメンテーションプロジェクトは複数のサービスを提供
しています. それぞれのサービスは, 以下の担当者とその
副担当者によって運用されています.
ドキュメンテーションプロジェクト担当
&a.nik;
Web 管理責任者
&a.wosch;
ハンドブックおよび FAQ 編集担当
&a.faq;
ニュースフラッシュ編集担当
&a.nsj;
副担当:&a.john;
In the Press 編集担当
&a.jkoshy;
FreeBSD Really-Quick NewsLetter編集担当
Chris Coleman chrisc@vmunix.com
ギャラリーページ担当
&a.nsj;
副担当&a.cawimm;
商用ベンダーページ担当
&a.nik;
WEB 更新担当
-
ユーザグループ担当
- -
+ &a.grog;
LinuxDoc から DocBook への移行
&a.nik;
担当者
最高技術責任者
&a.dg;
ドキュメンテーションプロジェクト担当
&a.nik;
国際化
&a.ache;
ネットワーク
&a.wollman;
ポストマスタ
&a.jmb;
リリースコーディネータ
&a.jkh;
広報および渉外担当
&a.jkh;
セキュリティ担当
&a.imp;
CVS ツリー管理者
責任者: &a.peter;
副責任者: &a.jdp;
国際版 (暗号) 担当: &a.markm;
ports コレクション担当
&a.asami;
XFree86 Project, Inc. との渉外担当
&a.rich;
Usenet サポート
&a.joerg;
GNATS 管理者
&a.phk; と &a.steve;
Web 管理者
&a.wosch;
diff --git a/ja_JP.eucJP/books/handbook/x11/chapter.sgml b/ja_JP.eucJP/books/handbook/x11/chapter.sgml
index 5a96ca540a..bcce73e8a7 100644
--- a/ja_JP.eucJP/books/handbook/x11/chapter.sgml
+++ b/ja_JP.eucJP/books/handbook/x11/chapter.sgml
@@ -1,26 +1,26 @@
X ウィンドウシステム
この節の完成は保留にしてあります.
- The XFree86 Project, Inc
+ The XFree86 Project, Inc
から提供されるドキュメントを参考にしてください.