From a023c14a2c1f7d827097a13071508f70721922e9 Mon Sep 17 00:00:00 2001 From: Kazuo Horikawa Date: Fri, 6 Dec 2002 03:15:46 +0000 Subject: [PATCH] Catch up with 5.0-CURRENT-20021105-JPSNAP Submitted by: Norihiro Kumagai --- ja_JP.eucJP/man/man8/fdcontrol.8 | 319 ++++++++++-- ja_JP.eucJP/man/man8/ipfw.8 | 821 ++++++++++++++++--------------- ja_JP.eucJP/man/man8/rpcinfo.8 | 408 ++++++++++----- 3 files changed, 987 insertions(+), 561 deletions(-) diff --git a/ja_JP.eucJP/man/man8/fdcontrol.8 b/ja_JP.eucJP/man/man8/fdcontrol.8 index 4e81808838..3bb9058cb1 100644 --- a/ja_JP.eucJP/man/man8/fdcontrol.8 +++ b/ja_JP.eucJP/man/man8/fdcontrol.8 @@ -24,18 +24,22 @@ .\" USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH .\" DAMAGE. .\" -.\" %FreeBSD src/usr.sbin/fdcontrol/fdcontrol.8,v 1.9.2.4 2002/06/21 16:40:24 charnier Exp % +.\" %FreeBSD: src/usr.sbin/fdcontrol/fdcontrol.8,v 1.15 2002/01/10 17:41:22 ru Exp % .\" .\" $FreeBSD$ -.Dd May 22, 1994 +.Dd December 25, 2001 .Os .Dt FDCONTROL 8 .Sh 名称 .Nm fdcontrol -.Nd フロッピディスクパラメータの変更 +.Nd フロッピディスクパラメータの表示と変更 .Sh 書式 .Nm -.Op Fl d Ar 0|1 +.Op Fl F +.Op Fl d Ar dbg +.Op Fl f Ar fmt +.Op Fl s Ar fmtstr +.Op Fl v .Ar device .Nm .Op Fl s @@ -44,60 +48,285 @@ .Nm ユーティリティは、 .Ar device -で指定したフロッピディスクデバイスの実行時の振る舞いを変更します。 +で指定した +.Xr fdc 4 +ドライバの実行時の振る舞いを変更します。 +.Pp +下位に位置するデバイスハードウエアの設定と +現在のデバイス密度設定について、 +ドライバに登録された情報を返す問い合わせコマンド、 +デバッグレベル操作コマンド、 +デバイス密度設定調整コマンドが実装されています。 +カーネル設定の変更の全ては、(デバイスドライバにより) +スーパユーザに操作が制限されていますが、 +問い合わせリクエストの全ては、 .Ar device -はキャラクタデバイスでなければなりません。 +への読み込みアクセス権だけを必要とします。 .Pp -現在のところ +引数 +.Ar device +には、例えば +.Pa /dev/fd0 +のように、常にフルパス名を与える必要があります。 +.Ss 問い合わせコマンド .Nm -ユーティリティでは、 -フロッピディスクドライブのデバイスパラメータの指定 ( -.Fl s , -これがデフォルトモードでもあります) -や、フロッピドライバが -.Em DEBUG -オプション付きでカーネルに組み込まれている場合には -ドライバのデバッグレベルの変更 -.Pq Fl d -を行なうことができます。 +ユーティリティをオプション引数無しで実行すると、デバイスドライバに +登録されたドライブタイプを返します。 +最も簡潔な形式では、ドライブタイプを 1 行で返します。 +返す可能性のある値は、 +.Dq Li 360K , +.Dq Li 1.2M , +.Dq Li 720K , +.Dq Li 1.44M , +.Dq Li 2.88M , +.Dq Li unknown +です。 +この情報の主な目的は、スクリプトからの解釈が容易になることを +想定しています。 .Pp -これらの操作は他に悪影響を及ぼす可能性があるため、 -この中で行なわれる -.Xr ioctl 2 -コマンドの実行はスーパユーザに限定されています。 +出力が人間にとってより分かり易くなるように説明を追加するために、 +.Fl v +を指定することができます。 .Pp -新しいパラメータ指定を要求すると、 +フラグ +.Fl F +を指定することにより、オプション +.Fl s Ar fmtstr +(下記を参照下さい) +の与える入力として適切な形式を返すようになります。 +これと +.Fl v +とをいっしょに指定することで、現在の密度指定に基づく容量を +キロバイト単位で示すテキストも加えて返すようになります。 +.Ss デバッグ制御 +オプション +.Dv FDC_DEBUG +を付けてドライバ +.Xr fdc 4 +を構築した (これがデフォルトです) としても、 +デバイスデバッグ情報は抑止されたままです。 +これは、カーネルメッセージを大量に吐き出す可能性があるためです。 +デバッグ情報を出力させるためには、 +.Dq Fl d Li 1 +とともに .Nm -は調整可能な各パラメータをユーザに問い合わせてきます。 -これらは現在使われている値がデフォルト値となっています。 -.Sh 診断 -内部で呼び出される -.Xr ioctl 2 -のエラーコードが -.Xr warn 3 -によって表示されます。 -.Sh バグ +を用いる必要があります。通常、デバッグ情報が必要な +デバイスを操作する直前にこの設定をオンにし、操作直後に +.Dq Fl d Li 0 +でオフにすることになります。 +デバッグレベルは、ドライバのグローバルオプションであり、 +コマンド .Nm -ユーティリティコマンドは現在開発途上です。 -ユーザインタフェースはややお粗末で、将来は変更される可能性があります。 -コマンドラインから何でも変更できるようなオプション整備も必要でしょう。 +のコマンド行でどの +.Ar device +を指定したかに関わらず、ドライバ +.Xr fdc 4 +を用いるドライブ、コントローラのいずれに対しても影響を与えることに +注意して下さい。 +.Ss 密度制御 +コントロールユーティリティ +.Xr fdc 4 +は、どのようにデバイス密度の設定を指定するかについて、2 個の異なる +オプションをサポートしています。 +最初の形式では、 +.Fl f Ar fmt +を用い、メディアのフォーマットをキロバイト単位で指定します。 +下位に位置するドライブタイプにより、指定した値は、 +そのドライブにおいて、世の中でよく使われているデバイス密度設定を +表すテーブルと比較し、一致する設定が見つかれば、その設定を +使用します。現在のところ、ドライブタイプ毎に次の値が受理可能です。 +.Bl -item +.It +2.88M ドライブ、1.44M ドライブ、 +.Bd -ragged -offset indent -compact +.TS +lB lB lB lB lB lB lB +r l l l l l l. +KB sectrac secsize ncyls speed heads flags +1721 21 2 (512) 82 500 2 MFM +1476 18 2 (512) 82 500 2 MFM +1440 18 2 (512) 80 500 2 MFM +1200 15 2 (512) 80 500 2 MFM +820 10 2 (512) 82 250 2 MFM +800 10 2 (512) 80 250 2 MFM +720 9 2 (512) 80 250 2 MFM +.TE +.Ed +.It +1.2M ドライブ、 +.Bd -ragged -offset indent -compact +.TS +lB lB lB lB lB lB lB +r l l l l l l. +KB sectrac secsize ncyls speed heads flags +1200 15 2 (512) 80 500 2 MFM +1232 8 3 (1024) 77 500 2 MFM +1476 18 2 (512) 82 500 2 MFM +1440 18 2 (512) 80 500 2 MFM +1200 15 2 (512) 80 500 2 MFM +820 10 2 (512) 82 300 2 MFM +800 10 2 (512) 80 300 2 MFM +720 9 2 (512) 80 300 2 MFM +360 9 2 (512) 40 300 2 MFM,2STEP +640 8 2 (512) 80 300 2 MFM +.TE +.Ed +.It +720K ドライブ、 +.Bd -ragged -offset indent -compact +.TS +lB lB lB lB lB lB lB +r l l l l l l. +KB sectrac secsize ncyls speed heads flags +720 9 2 (512) 80 250 2 MFM +.TE +.Ed +.It +360K ドライブ +.Bd -ragged -offset indent -compact +.TS +lB lB lB lB lB lB lB +r l l l l l l. +KB sectrac secsize ncyls speed heads flags +360 9 2 (512) 40 250 2 MFM +.TE +.Ed +.El .Pp -現実のドライバはデバッグレベルとして -(0 と 1) -しかサポートしていません。 -デバッグレベル 1 にすると非常に多量の出力を生成するので、 -よく注意して使わないと syslog をあふれさせかねません。 +2 番目の形式でデバイス密度を指定するには、 +.Fl s Ar fmtstr +を使い、各パラメータを詳細にわたり指定します。 +引数 +.Ar fmtstr +は、コンマで区切られた値のリストであり、次の形式です。 +.Pp +.Sm off +.Ar sectrac , secsize , datalen , gap , ncyls , speed , +.Ar heads , f_gap , f_inter , offs2 , flags +.Sm on +.Pp +パラメータの意味は次のとおりです。 +.Bl -tag -width ".Ar secsize" +.It Ar sectrac +トラックあたりのセクタ数です。 +.It Ar secsize +セクタサイズを表す数値です。0 = 128 バイト (または、それ以下)、 +1 = 256 バイト、2 = 512 バイト、3 = 1024 バイト。 +.It Ar datalen +上記のサイズ数値が 0 のとき、実セクタサイズを表します。 +0 以外のサイズ数値のとき、(無視して構わない) 値 0xFF です。 +.It Ar gap +読み/書き操作における、GAP 3 パラメータの長さです。 +.It Ar ncyls +シリンダ数です。 +.It Ar speed +転送速度 (毎秒キロバイト単位の) です。 +値 250, 300, 500, 1000 を取り得ますが、各ドライブタイプにより、 +サポートする値はこのうちの一部になります。 +.It Ar heads +ヘッド数です。 +.It Ar f_gap +メディアをフォーマットするときの GAP 3 の長さです。 +.It Ar f_inter +フォーマットするときに適用するセクタインタリーブです。 +0 はインタリーブ無し、1 は 1:1 インタリーブ (以下同様) を +表します。 +.It Ar offs2 +サイド 2 (ヘッド番号 1 ) におけるセクタ数オフセットです。 +通常、セクタの番号付けは両面とも 1 から始まります。 +.It Ar flags +次に示すフラグ値のリストです。 +.Pp +.Bl -tag -width ".Cm +perpend" -compact +.It Cm +mfm +MFM 符号化を使用。 +.It Cm -mfm +FM 符号化 (単密度) を使用。 +.It Cm +2step +1 シリンダにつき 2 ステップを使用 (80 シリンダのドライブで +40 シリンダのメディアにアクセスするためのもの)。 +.It Cm -2step +1 シリンダにつき 2 ステップを使用せず。つまり、ドライブの各物理シリンダに +アクセスする。 +.It Cm +perpend +垂直記録方式を使用 (2.88 MB メディア用、現在は未サポート)。 +.It Cm -perpend +長手方向記録方式を使用。 +.El +.El +.Pp +パラメータ指定がないものについては、現在の値が使用されます。 +ですから、指定する必要があるものは、実際に変更したいものだけです。 +(フラグ +.Cm +mfm +のようにデフォルトで全ドライブでオンの) +フラグビットをオフにするには、先頭にマイナス符号を付けた形式 +を明示的に用いる必要があります。 +.Sh 例 +単純にドライブタイプを問い合わせる。 +.Bd -literal +$ fdcontrol /dev/fd0 +1.44M +.Ed +.Pp +上と同様ですが、冗長な出力をつける。 +結果は、 +.Em デバイスの密度 +ではなく、 +.Em ドライブタイプ +についてのものであることに注意して下さい。 +ですから、この結果は +.Ar device +で用いられる実際のサブデバイスとは別物です。 +.Bd -literal +$ fdcontrol -v /dev/fd1.360 +/dev/fd1.360: 1.2M drive (5.25" high-density) +.Ed +.\" " <- this one is for Emacs :) +.Pp +あるサブデバイスの密度設定を問い合わせる。 +.Bd -literal +$ fdcontrol -F /dev/fd0.720 +18,512,0xff,0x1b,80,500,2,0x6c,1,0,+mfm +.Ed +.Pp +.Xr fdc 4 +で説明したように、 +新しいサブデバイスに最初にアクセスしたときに、 +そのドライブタイプに対するデフォルトの密度設定を用いて +このデバイスの複製を作ることに注意して下さい。 +ですから、上の例で用いたデバイス名は、720 KB メディア密度を +想定していますが、実際には (ドライバにより) 1440KB で +初期化されています。 +標準の 720 KB 倍密度メディア用に調整するためには、次の +.Nm +コマンドのどれか 1 個を実行することが必要です。 +.Bd -literal +# fdcontrol -s 9,,,0x20,,250,,0x50 /dev/fd0.720 +# fdcontrol -f 720 /dev/fd0.720 +.Ed +.Pp +ここに示すように、パラメータリスト末尾のコンマは省略できます。 +.Pp +新しい 1.2M ドライブで +古き良き 160KB 単密度 (FM 符号化) 5.25 インチメディアに +アクセスするためには、次のような定義が必要になりそうです。 +(実際には全てのコントローラハードウエアが FM 符号化を扱えるわけでは +ないことに注意して下さい) +.Bd -literal +# fdcontrol -s 16,128,0x80,0x2,40,300,,0x10,,,-mfm,+2step /dev/fd1.1 +.Ed .Sh 関連項目 -.Xr ioctl 2 , -.Xr warn 3 , .Xr fdc 4 .Sh 歴史 .Nm -ユーティリティは現在開発途上です。 -そのユーザインタフェースと全体機能は、 -将来改良あるいは変更される可能性があります。 +ユーティリティは +.Fx 2.0 +で現れ、 +.Fx 5.0 +で大々的に改装されました。 .Sh 作者 -本プログラムは +本プログラムと本マニュアルページは .An J\(:org Wunsch , Dresden から寄贈されました。 diff --git a/ja_JP.eucJP/man/man8/ipfw.8 b/ja_JP.eucJP/man/man8/ipfw.8 index ccc112bb29..f9c1dcef29 100644 --- a/ja_JP.eucJP/man/man8/ipfw.8 +++ b/ja_JP.eucJP/man/man8/ipfw.8 @@ -1,13 +1,8 @@ .\" -.\" %FreeBSD: src/sbin/ipfw/ipfw.8,v 1.63.2.28 2002/09/30 20:57:05 blackend Exp % +.\" %FreeBSD: src/sbin/ipfw/ipfw.8,v 1.115 2002/10/28 07:03:56 luigi Exp % .\" .\" $FreeBSD$ .\" -.de NOIPFW -.br -(\\$1 NOT IN IPFW) -.br -.. .Dd August 13, 2002 .Dt IPFW 8 .Os @@ -74,46 +69,29 @@ .Xr dummynet 4 トラフィックシェイパを制御するユーザインタフェースです。 .Pp +.Bd -ragged -offset XXXX .Em 注: -このマニュアルページは 2002 年 7 月に導入され +このマニュアルページは 2002 年 7 月に +.Fx +CURRENT に導入され .Nm ipfw2 としても知られている .Nm -の新バージョンを参照しています。 -ここに示すコマンドのリストは旧版のファイアウォールのスーパーセットです。 -両者を区別する必要があるときは旧版を -.Nm ipfw1 -と呼ぶことにします。 -.Pp +の新バージョンについて説明しています。 .Nm ipfw2 -は -.Fx -CURRENT の標準ですが、 -.Fx -STABLE では、 -.Cm options IPFW2 -をつけてカーネルをコンパイルし、 -.Cm -DIPFW2 -をつけて -.Nm /sbin/ipfw -と -.Nm /usr/lib/libalias -を再コンパイルして再インストール -( -buildworld の前に -.Cm IPFW2=TRUE -を -.Nm /etc/make.conf -に追加すると同様の結果になります -) -しないと、今でも +は旧版のファイアウォール .Nm ipfw1 -を使います。 -.Pp -.Nm ipfw1 -に存在しない機能の一覧は +のスーパセットです。この 2 つの違いはセクション .Sx IPFW2 拡張 -セクションを参照して下さい。 +に列挙されています。古いルールセットを書き直し、より効率的にするために、 +ここを読むことをお勧めします。 +.Fx +STABLE で +.Nm ipfw2 +を実行する手順については、セクション +.Sx FreeBSD-STABLE で IPFW2 を使う +を参照下さい。 +.Ed .Pp .Nm の設定、もしくは @@ -122,18 +100,18 @@ buildworld .Em ルール のリストからなります。 パケットは -プロトコルスタックのたくさんの異なる箇所で +プロトコルスタック中のいくつかの箇所から .Nm に渡されます -(パケットの発信元と宛先に依存し、 +(パケットの発信元と宛先によっては、 .Nm は同じパケットに対して複数回起動させられる可能性があります)。 ファイアウォールに渡されるパケットは ファイアウォールの .Em ルールセット -に書かれた各ルールに対して照合されます。 +中のルールそれぞれに対して照合されます。 .Pp -一致した場合、一致したルールに対応するアクションが実行されます。 +マッチした場合、マッチしたルールに対応するアクションが実行されます。 アクションと実際のシステムの設定によっては、 マッチしたルールの後のルールでさらに処理を行うために パケットがファイアウォールに再注入されることがあります。 @@ -153,10 +131,11 @@ buildworld これはどのようにカーネルを設定したかに依存します。 .Pp ルールセットが +オプション .Cm keep-state または .Cm limit -のオプション付きのルールを含む場合、 +付きのルールを含む場合、 .Nm は .Em ステートフル (状態依存型) @@ -171,8 +150,8 @@ buildworld または .Cm limit ルールが最初に生じた場所でチェックされます。 -動的ルールは、正当なトラフィックをオンデマンドで -ファイアウォールを通過させるために用いることが普通です。 +動的ルールは、普通、正当なトラフィックをオンデマンドで +ファイアウォールを通過させるために用います。 .Nm のステートフルな動作について更に情報が必要ならば、 以下の @@ -182,9 +161,9 @@ buildworld セクションを参照して下さい。 .Pp 全てのルール(動的ルールを含む)は、 -関連するカウンタをいくつか持っています: +関連するカウンタをいくつか持っています。それらは、 パケットカウント、バイトカウント、ログカウント、 -最後にマッチした時刻を示すタイムスタンプ。 +最後にマッチした時刻を示すタイムスタンプです。 カウンタは、 .Nm コマンドによって表示することができ、またリセットすることができます。 @@ -192,7 +171,7 @@ buildworld ルールの追加は .Cm add コマンドにて可能です。 -個別、またはグループでのルールの削除は +ルールひとつひとつ、またはまとめての削除は .Cm delete コマンドにて可能であり、すべてのルールの削除は .Cm flush @@ -210,7 +189,7 @@ buildworld .Cm resetlog コマンドにて可能です。 .Pp -また、各ルールは 32 の +また、各ルールは 32 個の 異なる .Em セット の 1 つに所属し、 @@ -290,7 +269,7 @@ buildworld 無効化されているルールは表示されません。 .It Fl s Op Ar field パイプ経由でリスト出力している際に、4 つのカウンタの 1 つについて -整列させます (現在のパケット数)。 +整列させます (総パケット数/バイト数または現在のパケット数/バイト数)。 .It Fl t ルールのリストを表示する際に、 最後にマッチしたタイムスタンプを表示します。 @@ -337,7 +316,7 @@ buildworld 頻繁に必要となる引数を集中管理するためのマクロを使用可能となります。 .Pp 後述の -.Sx トラフィックシェイパ設定 +.Sx トラフィックシェイパ (DUMMYNET) 設定 セクションで示すように、 .Nm .Cm pipe @@ -345,13 +324,12 @@ buildworld .Cm queue コマンドを使用して、トラフィックシェイパを構築可能です。 .Sh パケットフロー -システムパラメータの制御により、 -.Nm -はプロトコルスタックの中の複数の箇所から実行されます。 -適切なルールセットを設計するには、この現象を理解することが重要です。 -.Nm -が実行される箇所は、その実行を制御する sysctl 変数とともに -以下に挙げられています。 +1 個のパケットが、プロトコルスタックの複数の場所で、 +有効なルールセットに対しチェックされます。このチェックは +いくつかの sysctl 変数に基づきます。 +これらの場所と変数を以下に示します。 +ルールセットを正しく設計するためには、この図をよく理解する +ことが大切です。 .Bd -literal -offset indent ^ to upper layers V | | @@ -371,11 +349,11 @@ buildworld 同一のパケットがファイアウォールを通過する回数は、 パケットの発信元や宛先、システムの設定により、 0 回から 4 回の範囲で変動します。 -これらの各所で、そのレベルに属する全ての(そして唯一の)フィールドと一緒に、 -パケットは -.Nm -に渡されます。 -つまり、外から入ってくるパケットは +.Pp +パケットがスタックを通過するにつれヘッダが削除 / 追加される +可能性があり、ヘッダがチェックに使えたり使えなかったりする +ことに注意して下さい。 +例えば、外から入ってくるパケットは .Cm ether_demux() から .Nm @@ -385,29 +363,27 @@ buildworld から .Nm が実行されたときには MAC ヘッダは取り除かれているはずです。 -.br -.Nm -が実行された場所や、パケットのソースに関わりなく、 -完全なルールセットが常に使用されます。 +.Pp +また、各パケットは常にルールセット全体に対しチェックされることにも +注意してください。 +これは、チェックが生じた場所、パケットのソースに関係ありません。 実行された箇所によっては無効となるような マッチパターンやアクション (例えば、 .Cm ip_input() -から -.Nm -が呼び出されたときに MAC ヘッダとマッチを試みるようなもの) +中で MAC ヘッダとマッチを試みるようなもの) をルールが含んでいるなら、そのパターンはマッチしないことになります。 とはいえ、そのようなパターンの前に .Cm not -オペレータを記述すれば、パターンは +オペレータを記述すれば、このパターンは .Em 常に -そのようなパケットにマッチすることになり、望ましくない結果となるでしょう。 -したがって、必要ならば、可能性のある箇所の中で識別するように、 +そのようなパケットにマッチすることになります。 +したがって、必要に応じ、生じ得る場所の違いを理解して、 適切なルールセットを記述することはプログラマの責任です。 そこで .Cm skipto ルールが役に立つことでしょう。 -例えば次のようにします: +例えば次のようにします。 .Bd -literal -offset indent # ether_demux または bdg_forward からのパケット ipfw add 10 skipto 1000 all from any to any layer2 in @@ -423,7 +399,7 @@ ipfw add 10 skipto 4000 all from any to any layer2 out 区別する方法はありません)。 .Sh ルール書式 .Nm -の書式は次の通りです: +ルールの書式は次の通りです。 .Bd -ragged -offset indent .Op Ar rule_number .Op Cm set Ar set_number @@ -434,8 +410,8 @@ ipfw add 10 skipto 4000 all from any to any layer2 out .Ar body .Ed .Pp -ここで、ルールのボディは次のように、 -パケットをフィルタするのにどの情報を使用するのかを指定します: +この中で、ルールのボディ (body) は次の中からどの情報を使用して +パケットをフィルタするかを指定します。 .Pp .Bl -tag -width "Source and dest. addresses and ports" -offset XXX -compact .It レイヤ 2 ヘッダフィールド @@ -464,11 +440,11 @@ ICMP パケットをローカルソケットに関連づけることが可能な場合 .El .Pp -上記の情報、 +上記の情報のうち幾つか、 例えば、送信元 MAC アドレスまたは IP アドレスと TCP/UDP ポート は容易に詐称が可能であることに注意して下さい。 したがって、これらのフィールドのみでフィルタすることは -必ずしも望ましい結果とはなりません。 +必ずしも望ましい結果を保証しません。 .Bl -tag -width indent .It Ar rule_number 各ルールは、1 から 65535 の範囲の @@ -493,7 +469,7 @@ sysctl もし、この操作が (例えば許可された最大ルール番号を越えるといった理由で) 不可能であれば、 -最後のデフォルトでない値と同じ番号が代わりに使用されます。 +最後のデフォルトでない値が代わりに使用されます。 .It Cm set Ar set_number 各ルールは 0 から 31 の範囲の .Ar set_number @@ -504,19 +480,19 @@ sysctl セットは個別に無効化したり有効化したりすることができます。 したがって、このパラメータはアトミックなルールセット操作を行うために 必要不可欠なものです。 -ルールセットを単純に削除することも可能です。 -セット番号を指定せずにルールが入力された場合、 +このパラメータを使うことで、ルールをまとめて削除することを +単純にすることもできます。 +セット番号を指定せずにルールを入力した場合、 セット 0 が使用されます。 .It Cm prob Ar match_probability 指定した確率 (0 から 1 までの浮動小数点数です) -でしかマッチしないマッチを宣言されます。 -ランダムにパケットを落とすしたりするような -多くのアプリケーションや、 +でしかマッチしないマッチを宣言します。 +ランダムにパケットを落とす応用や、 ( .Xr dummynet 4 と共に使用して) -パケット到達順序の乱れを引き起こす複数経路の効果をシミュレートする際に -有用です。 +パケット到達順序の乱れを引き起こす複数経路の効果をシミュレートする +応用など、多くの応用に有用です。 .It Cm log Op Cm logamount Ar number パケットが .Cm log @@ -590,7 +566,7 @@ sysctl マッチしたパケットの次のホップを .Ar ipaddr に変更します。 -これには4つの数字をドットで区切った IP アドレス +これには IP アドレスとして、数字 4 つ組形式 またはホスト名が使用できます。 このルールにマッチした場合、検索は終了します。 .Pp @@ -616,12 +592,13 @@ sysctl アクションはパケットの内容をまったく変更しません。 実際、宛先アドレスが修正されずに残るので、 転送先システムがそのようなパケットを取り込むルールを持たない限り、 -当該パケットは通常そのシステムが拒否します。 -ローカルで転送されるパケットのために、 -ソケットのローカルアドレスはパケットの元の宛先アドレスに設定されます。 +他のシステムに転送されたパケットは、通常転送先のシステムで拒否されます。 +ローカルに転送されるパケットの場合、 +ソケットのローカルアドレスはパケットが元々持っていた +宛先アドレスに設定されます。 このことによって .Xr netstat 1 -エントリはかえって奇妙な見え方になりますが、 +が出力するエントリは若干奇妙な見え方になりますが、 これは透過プロキシサーバでの使用を意図しています。 .It Cm pipe Ar pipe_nr パケットを @@ -630,7 +607,7 @@ sysctl (バンド幅制限、遅延などに使用されます) へ渡します。 詳しい情報については -.Sx トラフィックシェイパ設定 +.Sx トラフィックシェイパ (DUMMYNET) 設定 セクションを参照してください。 検索は終了します。 しかし、パイプから抜けたときに @@ -638,15 +615,16 @@ sysctl 変数 .Em net.inet.ip.fw.one_pass がセットされていない場合、 -パケットはファイアウォールコードへ再度渡されて次のルールから開始します。 +パケットは、すぐ次のルールから始まるファイアウォールコードへ +再度渡されます。 .It Cm queue Ar queue_nr パケットを .Xr dummynet 4 .Dq キュー -(WF2Q を使ったバンド幅制限に使用されます) +(WF2Q+ を使ったバンド幅制限に使用されます) へ渡します。 .It Cm reject -(価値が低下しています)。 +(非推奨)。 .Cm unreach host と同義です。 .It Cm reset @@ -655,8 +633,9 @@ sysctl TCP リセット (RST) 通知を送出しようと試みます。 検索は終了します。 .It Cm skipto Ar number +それ以降のルールのうち .Ar number -より小さな番号のルールを飛び越して、 +より小さな番号のものすべてを飛び越して、 .Ar number 以上の番号のルールで最初に存在するものから、検索を継続します。 .It Cm tee Ar port @@ -687,12 +666,12 @@ TCP 検索は終了します。 .El .Ss ルールボディ -ルールのボディは 0 以上のパターン +ルールのボディは 0 個以上のパターン (送信元と宛先アドレスやポートの指定、 プロトコルオプション、受信または送信インタフェースの指定など) -から成ります。 -パケットは解釈される順にマッチしなければなりません。 -通常、パターンは (暗黙的に) +を含みます。このパターンは +パケットを識別するためにマッチしなければならないものです。 +一般に、パターンは (暗黙的に) .Cm and オペレータで接続されます -- つまり、ルールがマッチするためには 全てがマッチしなければなりません。 @@ -720,13 +699,13 @@ TCP したがって、そのような解釈が起こらないようにバックスラッシュ \\ を その前に置くことを勧めます。 .Pp -ルールのボディは、通常は送信元と宛先アドレスの指定を含まなければなりません。 +ルールのボディは、一般に送信元と宛先アドレスの指定を含まなければなりません。 キーワード .Ar any は必須フィールドの内容が重要でないことを指定するために 様々な箇所で使用することができます。 .Pp -ルールボディは以下の書式: +ルールボディは以下の書式で指定します。 .Bd -ragged -offset indent .Op Ar proto Cm from Ar src Cm to Ar dst .Op Ar options @@ -742,13 +721,13 @@ TCP .Ar options セクションで指定できます。 .Pp -ルールフィールドは以下の意味です: +ルールフィールドは以下の意味を持ちます。 .Bl -tag -width indent .It Ar proto : protocol | Cm { Ar protocol Cm or ... } -IPv4 プロトコル (または複数のプロトコルからなる +IPv4 におけるプロトコル (または複数のプロトコルからなる .Em 論理和ブロック ) -は数字や名前で指定されます +を、数字や名前で指定します (完全なリストは .Pa /etc/protocols を参照して下さい)。 @@ -761,71 +740,84 @@ IPv4 .Ar ip-address や、1 つ以上のアドレスを含む .Em 論理和ブロック -は、後に続けて +を指定します。オプションとして、その後に .Ar ports -指示子をオプションで置くことができます。 +指示子を続けて置くことができます。 .It Ar ip-address : 次の方法 -(オプションで +のいずれかでアドレス (またはアドレスの集合) を指定します +(アドレスには、オプションとして .Cm not -オペレータを前置することができます) -のいずれかで指定されたアドレス (またはアドレスのセット): +オペレータを前置することができます)。 .Bl -tag -width indent .It Cm any -任意の IP アドレスにマッチします。 +任意の IP アドレスがマッチします。 .It Cm me -システムのインタフェースに設定された任意の IP アドレスにマッチします。 +システムのインタフェースに設定された任意の IP アドレスがマッチします。 アドレスのリストはパケットが解析されるときに評価されます。 .It Ar numeric-ip | hostname -ドットで区切った 4 つの数字またはホスト名で指定した、 -1 つの IPv4 アドレスにマッチします。 -ホスト名はそのルールがファイアウォールのリストに追加されるときに -名前解決が行われます。 +ドットで区切った数字 4 つ組またはホスト名で指定した、 +1 つの IPv4 アドレスがマッチします。 +ホスト名の名前解決は、そのルールがファイアウォールのリストに +追加されるときに行われます。 .It Ar addr Ns / Ns Ar masklen ベースとなる .Ar addr -(ドットで区切った4つの数字またはホスト名で指定されます) +(ドットで区切った数字 4つ組またはホスト名で指定します) と .Cm masklen ビット幅のマスク -に一致する全てのアドレスにマッチします。 +に一致する全てのアドレスがマッチします。 例えば、1.2.3.4/25 は 1.2.3.0 から 1.2.3.127 までの -全ての IP アドレスにマッチすることになります。 +全ての IP アドレスがマッチすることになります。 .It Ar addr Ns / Ns Ar masklen Ns Cm { Ns Ar num,num,... Ns Cm } ベースアドレスが .Ar addr -(ドットで区切った4つの数字またはホスト名で指定されます) +(ドットで区切った数字 4つ組またはホスト名で指定します) であり、最後のバイトがブレース {} の中に列挙されている -全てのアドレスにマッチします。 +全てのアドレスがマッチします。 ブレース、コンマ、数字の間には空白を置いてはいけないことに注意して下さい。 .Ar masklen フィールドはアドレスのセットのサイズに制限をつけるために使用され、 24 から 32 の間の任意の値をとることができます。 .br -例えば、アドレスが 1.2.3.4/24{128,35,55,89} として指定された場合、 +例えば、アドレスを 1.2.3.4/24{128,35,55,89} として指定した場合、 次のアドレスがマッチします: .br 1.2.3.128 1.2.3.35 1.2.3.55 1.2.3.89 .br この書式は 1 つのルールでまばらなアドレス群を取り扱うときに 特に便利です。 -マッチがビットマスクを使用して行われるので、 -かかる時間は一定で、ルールセットの複雑さが劇的に減少します。 +ビットマスクを使用してマッチを行うので、 +定数時間で処理でき、ルールセットの複雑さが劇的に減少します。 +.It Ar addr Ns : Ns Ar mask +ベースアドレスが +.Ar addr +(ドットで区切った 4 つの数字またはホスト名で指定されます) +であり、マスクが +.Ar mask +(ドットで区切った 4 つの数字で指定されます) +である全てのアドレスにマッチします。 +例えば、1.2.3.4/255.0.255.0 は、1.*.3.* にマッチします。 +この形式は、連続でないマスクの場合にだけ使用することを推奨します。 +連続なマスクの場合は、よりコンパクトでより間違いにくい、 +.Ar addr Ns / Ns Ar masklen +を使います。 .El .It Ar ports : Oo Cm not Oc Bro Ar port | port Ns \&- Ns Ar port Ns Brc Op , Ns Ar ... -ポート番号をサポートしているプロトコル (TCP や UDP など) のために、 -オプションの +(TCP や UDP などのように) ポート番号をサポートしている +プロトコルについて、オプションとして、 .Cm ports -は、1 つ以上のポートまたはポートの範囲を空白なしのコンマ区切りで、 -さらにオプションの +を指定することができます。 +1 つ以上のポートまたはポートの範囲を空白なしのコンマ区切りで指定します。 +さらにオプションとして、 .Cm not -オペレータを付加して、 -指定することができます。 +オペレータを付加して指定することができます。 記号 .Ql \&- による表現は、ポート範囲 (両端含む) を指定します。 .Pp -ポート番号の代わりに (ファイル +ポート数値の代わりに (ファイル .Pa /etc/services から取った) サービス名を使用できます。 ポートリストの長さは 30 ポートまたはポート範囲に制限されていますが、 @@ -833,15 +825,16 @@ IPv4 .Cm options セクションで .Em 論理和ブロック -を使用するとより広い範囲を指定することができます。 +を使用することにより、より広い範囲を指定することができます。 +.Pp バックスラッシュ .Pq Ql \e -を使用することにより、サービス名中の +を使用することにより、サービス名中のダッシュ .Pq Ql - 文字をエスケープ可能です -(シェルから入力するとき、バックスラッシュは -シェル自身にエスケープ文字として使用されることを防ぐために -2 回タイプしなければなりません)。 +(シェルから入力するとき、 +シェル自身がエスケープ文字として使用されないようにするために、 +バックスラッシュを 2 回タイプしなければなりません)。 .Pp .Dl "ipfw add count tcp from any ftp\e\e-data-ftp to any" .Pp @@ -854,15 +847,15 @@ IPv4 .El .Ss ルールオプション (マッチパターン) ルール内で追加のマッチパターンを使用することができます。 -これらはルール内に 0 以上置けるので +これらはルール内に 0 個以上置けるので .Em オプション と呼ばれており、オプションで .Cm not オペランドを前置することができ、 .Em 論理和ブロック -へとグループ化することが可能です。 +としてグループ化することが可能です。 .Pp -以下のマッチパターンが使用できます (アルファベット順に並べています): +以下のマッチパターンが使用できます (アルファベット順に並べています)。 .Bl -tag -width indent .It Cm bridged ブリッジされるパケットにのみマッチします。 @@ -887,12 +880,12 @@ IP .Ar group は名前か数値で指定することができます。 .It Cm icmptypes Ar types -ICMP タイプが .Ar types -で指定されたリスト中に存在する ICMP パケットにマッチします。 +で指定したリスト中に存在する ICMP タイプを持つ +ICMP パケットにマッチします。 リストは範囲指定でも、タイプおのおのをコンマで区切ったものでも どちらの組み合わせでもかまいません。 -サポートされている ICMP タイプは次の通りです: +サポートされている ICMP タイプは次の通りです。 .Pp エコー応答 .Pq Cm 0 , @@ -945,9 +938,8 @@ IP .Ar len バイトである IP パケットにマッチします。 .It Cm ipoptions Ar spec -IP ヘッダが .Ar spec -で指定されたコンマ区切りのオプションリストを含む +で指定したコンマ区切りリストオプションを含む IP ヘッダを持つ パケットにマッチします。 IP オプションは次のものがサポートされています: .Pp @@ -966,12 +958,12 @@ IP .Ar precedence に等しい IP パケットにマッチします。 .It Cm iptos Ar spec -.Cm tos -フィールドが .Ar spec -で指定されたコンマ区切りのサービスタイプのリストを含む +で指定したコンマ区切りリストのサービスタイプを含む +.Cm tos +フィールドを持つ IP パケットにマッチします。 -サポートされているサービスの IP タイプは次の通りです: +サポートされているサービスの IP タイプは次の通りです。 .Pp .Cm lowdelay .Pq Dv IPTOS_LOWDELAY , @@ -999,22 +991,22 @@ IP 作成されるルールは、デフォルトでは、同じプロトコルを使用している 発信元と宛先 IP/ポート間での双方向のトラフィックにマッチするような 動作となります。 -このルールには制限された生存時間 ( +このルールには有限の生存時間 ( .Xr sysctl 8 -変数のセットで制御されます) +変数の集合により制御されます) があり、 生存時間はマッチするパケットが見つかるたびにリフレッシュされます。 .It Cm layer2 -レイヤ 2 のパケットのみにマッチします。 +レイヤ 2 のパケット、 つまり、 ether_demux() と ether_output_frame() から .Nm -へ渡されるパケットです。 +へ渡されるパケットのみにマッチします。 .It Cm limit Bro Cm src-addr | src-port | dst-addr | dst-port Brc Ar N ファイアウォールは、 -ルールで指定した同一のパラメータのセットに対して +このルールで指定したものと同じパラメータの集合を持つ接続を、 .Ar N -個の接続のみを許可します。 +個だけ許可します。 1 つ以上の発信元と宛先アドレスおよびポートが指定できます。 .It Cm { MAC | mac } Ar dst-mac src-mac 与えられた @@ -1022,12 +1014,12 @@ ether_demux() アドレスと .Ar src-mac アドレスを持つパケットにマッチします。 -アドレスには +アドレスは、 .Cm any キーワード (任意の MAC アドレスにマッチします) または -コロンで区切った 16 進数 6 個の組み、 -次に示すようなオプションでその後に意味のあるビット数を指定するマスク -を指定します。 +コロンで区切った 16 進数 6 個の組で指定します。 +この 6 個組アドレスの後ろには、オプションとして、次に示すような +(何ビットが重要かを表す) マスクをつけることができます。 .Pp .Dl "MAC 10:20:30:40:50:60/33 any" .Pp @@ -1035,48 +1027,50 @@ MAC 物理的な線上のものと同じですが、 IP アドレスで使用されるものとは反対であることに注意して下さい。 .It Cm mac-type Ar mac-type -イーサネットのタイプフィールドが +イーサネットタイプフィールドが 引数で指定したものの 1 つと一致する パケットにマッチします。 .Ar mac-type は .Cm port numbers と同じ方法で指定します -(つまり、1 つ以上のコンマ区切りの単一の値または範囲です)。 +(つまり、単一の値または範囲が、1 個以上コンマで区切られたものです)。 .Em vlan , ipv4 , ipv6 -のような既知の値に対するシンボリックな名称を使用することができます。 +のような既知の値に対しては、シンボル名称を使用することができます。 値は 10 進数か 16 進数 (0x が頭につく場合) で入力することができ、 -常に 16 進数で出力されます ( +常に 16 進数で出力されます (これは .Cm -N オプションが使用されていない場合です。 -そのときはシンボリックな名前解決が試みられます)。 +.Cm -N +オプションが使用されるとシンボル名称の解決が試みられます)。 .It Cm proto Ar protocol -IPv4 プロトコルに一致するパケットがマッチします。 +対応する IPv4 のプロトコルを持つパケットがマッチします。 .It Cm recv | xmit | via Brq Ar ifX | Ar if Ns Cm * | Ar ipno | Ar any -受信したパケット、送信するパケット、通過するパケットが +指定したインタフェースから +受信したパケット、送信したパケット、通過したパケットが それぞれマッチします。 -インタフェースは正確な名前 +インタフェースの指定は、正確な名前 .Ns No ( Ar ifX Ns No ) 、 -デバイス名 +またはデバイス名 .Ns No ( Ar if Ns Ar * Ns No ) 、 -IP アドレスで指定するか、 -もしくは何らかのインタフェースを通過することを指定します。 +IP アドレスで行なうか、 +もしくは何らかのインタフェースを通じて行ないます。 .Pp .Cm via -キーワードはインタフェースが常にチェックされることになります。 +キーワードにより、指定したインタフェースが常にチェックされる +ことになります。 .Cm recv や .Cm xmit が .Cm via の代わりに使用された場合、 -受信したインタフェース、または送信するインタフェース -(それぞれに対応します) +それぞれ、受信インタフェースのみ、または送信インタフェース のみがチェックされます。 両方とも指定した場合、 送信インタフェースと受信インタフェースの両方に基づく パケットのマッチが可能になります。 -例えば次のようになります: +例えば次のようになります。 .Pp .Dl "ipfw add deny ip from any to any out recv ed0 xmit ed1" .Pp @@ -1093,7 +1087,7 @@ IP .Cm in は無効となります)。 .Pp -パケットが受信インタフェースや送信インタフェースを持たないことがあります: +パケットが受信インタフェースや送信インタフェースを持たないことがあります。 ローカルホストから発生したパケットは受信インタフェースを持ちませんし、 ローカルホストに到着する予定のパケットは送信インタフェースを持ちません。 .It Cm setup @@ -1103,9 +1097,11 @@ TCP .Dq Li tcpflags\ syn,!ack の短縮形です。 .It Cm src-ip Ar ip-address -発信元 IP が引数で指定されたアドレスの 1 つである IP パケットにマッチします。 +引数で指定したアドレスの 1 個を発信元 IP として持つ +IP パケットがマッチします。 .It Cm src-port Ar ports -発信元ポートが引数で指定されたポートの 1 つである IP パケットにマッチします。 +引数で指定したポートの 1 個を発信元ポートとして持つ +IP パケットがマッチします。 .It Cm tcpack Ar ack TCP パケットのみです。 TCP ヘッダの確認応答番号フィールドが @@ -1116,7 +1112,7 @@ TCP TCP ヘッダが .Ar spec で指定したコンマ区切りのフラグのリストを含んでいればマッチします。 -サポートされている TCP フラグは次の通りです: +サポートされている TCP フラグは次の通りです。 .Pp .Cm fin , .Cm syn , @@ -1128,8 +1124,8 @@ TCP .Ql \&! を置くことで特定のフラグが存在しないという記述ができます。 .Cm tcpflags -の指定を含むルールは 0 でないオフセットを持つフラグメントパケットには -決してマッチすることはできません。 +の指定を含むルールは、0 でないオフセットを持つフラグメントパケットには +決してマッチすることはありえません。 フラグメントパケットのマッチについての詳細は .Cm frag オプションを参照して下さい。 @@ -1148,7 +1144,7 @@ TCP .Ar spec で指定したコンマ区切りのオプションのリストが TCP ヘッダに含まれていればマッチします。 -サポートされている TCP オプションは次の通りです: +サポートされている TCP オプションは次の通りです。 .Pp .Cm mss (最大セグメントサイズ), @@ -1159,7 +1155,7 @@ TCP .Cm ts (RFC1323 タイムスタンプ), .Cm cc -(RFC1644 T/TCP コネクションカウント) +(RFC1644 T/TCP コネクションカウント)。 .Ql \&! を置くことで特定のオプションが存在しないという記述ができます。 .It Cm uid Ar user @@ -1170,9 +1166,9 @@ TCP は、名前でも ID 番号でもマッチします。 .El .Sh ルールのセット -各ルールは 0 から 31 まで番号をつけられた 32 の異なる +各ルールは 32 個の異なる .Em セット -のいずれかに属しています。 +のひとつに属しています。セットには 0 から 31 までの番号をつけられています。 セット 31 はデフォルトルールのために予約されています。 .Pp デフォルトでは、 @@ -1181,110 +1177,108 @@ TCP アトリビュートを使用しなければ、 ルールはセット 0 に置かれます。 セットは個別に、かつ、アトミックに有効化したり無効化したりできるので、 -この機構によって、ファイアウォールに関する複数の設定を格納し、 -それらの設定を素早く (かつアトミックに) 切り替えるための方法が +この機構によって、ファイアウォールの設定を複数個格納し、 +それらを素早く (かつアトミックに) 切り替えるための方法が 簡単になります。 -セットを有効化/無効化するコマンドは次の通り。 -.Pp +セットを有効化/無効化するコマンドは次の通りです。 +.Bd -ragged -offset indent .Nm -.Cm set disable Ar number ... Op Cm enable Ar number ... +.Cm set Oo Cm disable Ar number ... Oc Op Cm enable Ar number ... +.Ed .Pp ここでは複数の .Cm enable または .Cm disable セクションが指定可能です。 -コマンドで指定した全てのセットについて、 +コマンドで指定したセット全てについて、 コマンドはアトミックに実行されます。 デフォルトでは全てのセットは有効化された状態です。 .Pp -セットを無効化する際、ファイアウォールの設定の中にそのルールが +セットを無効化すると、ファイアウォールの設定中にそのルールが 存在しないかのように振る舞います。 -ただし例外が 1 つだけあります: -.Bl -bullet -.It -無効化される以前にルールから生成された動的ルールは +ただし例外が 1 つだけあります。 +.Bd -ragged -offset indent +無効化される以前にルールから生成された動的ルールは、 期限切れとなるまではまだ活動可能な状態です。 動的ルールを削除するためには、 そのルールを生成した親ルールを明示的に削除しなければなりません。 -.El -ルールのセット番号は次のコマンドで変更できます。 +.Ed .Pp +ルールのセット番号は次のコマンドで変更できます。 +.Bd -ragged -offset indent .Nm .Cm set move .Brq Cm rule Ar rule-number | old-set .Cm to Ar new-set +.Ed .Pp また、次のコマンドを使用して 2 つのルールセットを アトミックに入れ換えることができます。 -.Pp +.Bd -ragged -offset indent .Nm .Cm set swap Ar first-set second-set +.Ed .Pp -ルールのセットで使用できる項目は +ルールのセットの使い方のいくつかは、 .Sx 使用例 セクションを参照して下さい。 .Sh ステートフルファイアウォール ステートフルオペレーションは、 与えられたパターンにマッチするパケットが検出されたときに、 -特定のフローについてのルールを動的にファイアウォールに +ファイアウォールが特定のフローについてのルールを動的に 作成するための方法です。 ステートフルオペレーションに対するサポートは .Nm ルール の -.Cm check-state , keep-state -および -.Cm limit +.Cm check-state , keep-state, limit オプションを通じて提供されます。 .Pp -.Em src-ip/src-port dst-ip/dst-port -のアドレスのペアの間に与えられた -.Em protocol -を使用して全てまたはそれのみのパケットにマッチする -.Em 動的 -ルールが生成される場合、 -動的ルールはパケットが +動的ルールが生成されるのは、パケットが .Cm keep-state や .Cm limit -ルールにマッチしたときに生成されます ( +ルールにマッチしたときで、その結果、 +与えられた +.Em protocol +を持ち、 +.Em src-ip/src-port dst-ip/dst-port +のアドレスの組の間のパケット全てのみにマッチする +.Em 動的 +ルールが生成されます ( .Em src と .Em dst -はここでは初期状態でマッチするアドレスを示すためにのみ -使用されていますが、それらは後で示すものと完全に等価です)。 +はここでは最初にマッチしたアドレスを区別するためにのみ +使用しています。その後、両者は完全に等価になります)。 動的ルールは最初に -.Cm check-state, keep-state -または -.Cm limit -の発生をチェックされ、 +.Cm check-state, keep-state, limit +が生じたところでチェックされ、 マッチした際に実行されるアクションは親ルールと同じものになります。 .Pp -プロトコルと IP アドレス以外に追加される属性はなく、 -ポートは動的ルールでチェックされることに注意して下さい。 +動的ルールでは、プロトコル、IP アドレス、ポート以外の +属性がチェックされないことに注意して下さい。 .Pp 動的ルールの典型的な使い方は、 -ファイアウォールの設定を閉じたままにしておくことです。 -しかし、 -内部ネットワークからの最初の TCP SYN パケットによって、 -フローに対する動的ルールがインストールされるので、 -そのセッションに所属するパケットはファイアウォールの通過を -許可されることになります。 +ファイアウォールの設定を閉じた状態にしておきつつ、 +内部ネットワークからの最初の TCP SYN パケットに、 +そのフローに対する動的ルールをインストールさせ、 +そのセッションに属するパケットがファイアウォールを +通過できるようにするというものです。 .Pp .Dl "ipfw add check-state" .Dl "ipfw add allow tcp from my-subnet to any setup" .Dl "ipfw add deny tcp from any to any" .Pp -同様なアプローチが UDP に対しても使え、 -内部からやって来る UDP パケットによって、 -その応答はファイアウォールを通過するように -動的ルールがインストールされることになります: +同様なアプローチが UDP に対しても使えます。 +内部から来た UDP パケットに動的ルールをインストールさせ、 +その応答がファイアウォールを通過するようにします。 .Pp .Dl "ipfw add check-state" .Dl "ipfw add allow udp from my-subnet to any" .Dl "ipfw add deny udp from any to any" .Pp -動的ルールはしばらくたった後期限切れとなります。 +動的ルールは、ある時間の後、期限切れとなります。 その時間は、 フローの状態といくつかの .Cm sysctl @@ -1293,55 +1287,76 @@ TCP .Sx sysctl 変数 を参照して下さい。 TCP セッションでは、 -期限切れになるころにルールの状態をリフレッシュさせるため、 -定期的にキープアライブパケットを送出するよう -動的ルールに通知することができます。 +動的ルールに対し、定期的にキープアライブパケットを送出させるように +指示し、期限切れになる頃にルールの状態をリフレッシュさせることが +できます。 .Pp 動的ルールの使用方法に関する他の例は セクション .Sx 使用例 を参照して下さい。 -.Sh トラフィックシェイパ設定 +.Sh トラフィックシェイパ (DUMMYNET) 設定 .Nm は、 .Xr dummynet 4 トラフィックシェイパへのユーザインタフェースも提供します。 -シェイパは、ユーザが指定したマスクを IP ヘッダの異なったフィールドに -適用することにより、パケットを -.Em フロー -(flow) に分割します。 -同じフローに属するパケットは 2 つの異なったオブジェクトへ渡されます。 -それは -.Em パイプ -(pipe) または -.Em キュー -(queue) と呼ばれるものです。 -.Em パイプ -は、与えられたバンド幅、遅延時間、キューの長さ、パケット損失率を -もつリンクをエミュレートします。 -このパラメータに従い、パケットはパイプ中を遷移します。 -.Pp -.Em キュー -は、WF2Q+ (Worst-case Fair Weighted Fair Queueing) ポリシを -実装するために使用する抽象化です。 -キューは、各フローに対し、重みと参照パイプを関連付けます。 -それから、同じパイプに結び付けられたすべてのフローは、 -WF2Q+ ポリシに従い、 -パイプによって固定されたレートでスケジュールされます。 .Pp +.Nm dummynet +の動作は、まずファイアウォールを用いてパケットをクラス分けし、 +それらを +.Em フロー(flow) +に分割します。その際に、 .Nm -パイプ設定の書式は次の通りです: +ルールで使用できる如何なるマッチパターンをも使用できます。 +ローカルポリシにより、フロー 1 個に TCP コネクション 1 個の +パケットを含めることもできますし、指定したホストのパケットでも、 +サブネット全体のパケットでも、あるプロトコルタイプのパケットでも +含めることができます。 +.Pp +同一のフローに属するパケットは、その後、トラフィックへの制限を +実装する 2つのオブジェクトのいずれか一方に渡されます。 +.Bl -hang -offset XXXX +.It Em pipe +パイプ (pipe) は、指定したバンド幅、伝搬遅延、キューサイズ、 +パケット損失率を持つリンク 1 個をエミュレートします。 +クラス分けを受けた後、パケットは、パイプに入る前にキューに蓄えられ、 +パイプのパラメータに従いパイプ中を伝送されます。 +.Pp +.It Em queue +キュー (queue) は、WF2Q+ (Worst-case Fair Weighed Fair Queueing: +最悪均等重み付け均等待ち行列) ポリシを実装するために用いる抽象化です。 +このポリシは、WFQ ポリシの効率的な変種です。 +.br +キューは +.Em 重み (weight) +とパイプの参照を、個々のフローに対応付けます。 +同じパイプに結合されバックログを持つ (キューにパケットがある) +フロー全てで、それぞれの重みに比例してそのパイプのバンド幅を +山分けします。 +重みは優先度ではないことに注意して下さい。大きい重みを持つフローが +ずっとバックログを抱えていたとしても、それより軽い重みを持つ +フローも、バンド幅を自分の割合の分は得ることは保証されます。 +.Pp +.El +実際の使い方として、 +.Em pipe +を使い、フローが取り得るバンド幅にハードリミットを設けることができます。 +一方で、 +.Em queue +を使い、異なるフローがどのようにして利用可能なバンド幅を山分けするかを +決定することができます。 +.Pp +.Em pipe +と +.Em queue +の設定コマンドは次の通りです。 .Bd -ragged -offset indent .Cm pipe Ar number Cm config Ar pipe-configuration -.Ed .Pp -.Nm -キュー設定の書式は次の通りです: -.Bd -ragged -offset indent .Cm queue Ar number Cm config Ar queue-configuration .Ed .Pp -次のパラメータをパイプに対して設定可能です: +次のパラメータをパイプに対して設定可能です。 .Pp .Bl -tag -width indent -compact .It Cm bw Ar bandwidth | device @@ -1353,36 +1368,41 @@ WF2Q+ です。 .Pp 値 0 (デフォルト) は無限のバンド幅を意味します。 -単位は数値の直後に続けて書く必要があり、次のようにします。 +単位は、次の .Pp .Dl "ipfw pipe 1 config bw 300Kbit/s" .Pp -数値の代りにデバイス名が指定された場合、 +のように、数値の直後に続けて書く必要があります。 +次の +.Pp +.Dl "ipfw ipie 1 config bw tun0" +.Pp +のように、数値の代りにデバイス名を指定した場合、 送信クロックは指定したデバイスから与えられます。 現在のところ、 .Xr tun 4 -デバイスのみが +デバイスのみがこの機能を提供しており、 .Xr ppp 8 -と組み合わせて使用するために、この機能を提供しています。 +と組み合わせて使用します。 .Pp .It Cm delay Ar ms-delay -遅延時間であり、ミリ秒単位で指定します。 +伝達遅延時間であり、ミリ秒単位で指定します。 値は、クロックティックの倍数 (典型的には 10ms ですが、 カーネルを .Dq "options HZ=1000" -で動作させて精度を 1ms 以下にすると良い +で動作させて精度を 1ms かそれ以下にすると良い ことが経験的に知られています) に丸められます。 デフォルト値は 0 であり、遅延無しを意味します。 .El .Pp -次のパラメータをキューに対して設定可能です: +次のパラメータをキューに対して設定できます。 .Pp .Bl -tag -width indent -compact .It Cm pipe Ar pipe_nr キューを指定したパイプに接続します。 複数のキュー -(大抵は異なる重みを持ちます) +(同じ重みの場合も異なる重みの場合もあります) を同一のパイプに接続することができます。 パイプはキューの集合に対する集約されたレートを指定します。 .Pp @@ -1392,9 +1412,9 @@ WF2Q+ デフォルトは 1 です。 .El .Pp -最後に、次のパラメータがパイプやキューに対して設定できます: +最後に、次のパラメータをパイプやキューに対して設定できます。 .Pp -.Bl -tag -width indent -compact +.Bl -tag -width XXXX -compact .Pp .It Cm buckets Ar hash-table-size 様々なキューを格納するハッシュ表のサイズを指定します。 @@ -1402,32 +1422,47 @@ WF2Q+ .Xr sysctl 8 変数 .Em net.inet.ip.dummynet.hash_size -によって -16 から 1024 までの範囲で制御することが可能です。 +によって制御されます。 +指定可能な範囲は 16 から 65536 までです。 .Pp .It Cm mask Ar mask-specifier -.Xr dummynet 4 -では、フローごとのキューを生成可能です。 -フロー識別子は、パイプ設定において指定される -IP アドレス、ポート、プロトコルタイプでマスクすることで構築されます。 -マスク後に同じ識別子を持つパケットは、同じキューに落ちます。 -使用可能なマスク指定子は、次を組み合わせたものです: +.Nm +ルールにより +指定したパイプもしくはキューに対して送られたパケットを、さらに +複数のフローにクラス分けすることができます。その後、それぞれの +パケットは、異なる +.Em 動的な +パイプもしくはキューに送られます。 +フロー識別子は、パイプもしくはキューの設定中の +.Cm mask +オプションの指定に応じて +IP アドレス、ポート、プロトコルタイプをマスクすることにより +構築されます。 +異なるフロー識別子それぞれに対し、新しいパイプもしくはキューが +元となるオブジェクトと同一のパラメータとともに生成され、 +マッチするパケットがそこに送られます。 +.Pp +このようにして、 +.Em 動的パイプ +を使用するとき、フローそれぞれはパイプで指定したものと +同じバンド幅を得ます。一方、 +.Em 動的キュー +を使用する時、フローそれぞれは、同じキューにより生成された +他のフローと、親パイプのバンド幅を均等に山分けします (異なる重みを +持つ他のキューが同じパイプに接続される場合があることに +注意して下さい)。 +.br +使用可能なマスク指定子は、次を組み合わせたものです。 +.Pp .Cm dst-ip Ar mask , .Cm src-ip Ar mask , .Cm dst-port Ar mask , .Cm src-port Ar mask , .Cm proto Ar mask , .Cm all -。 +.Pp 最後の指定子は、 すべてのフィールドのすべてのビットが検査されることを意味しています。 -.Ar パイプ -設定の中で使用される場合、 -各フローにはパイプのレートに等しいレートが割り当てられます。 -.Ar キュー -設定の中で使用される場合、 -各フローにはキューの重みに等しい重みが割り当てられ、 -同じパイプを構成するキューは重みに比例してバンド幅を共有します。 .Pp .It Cm noerror パケットが dummynet のキューやパイプによって落されたとき、 @@ -1445,10 +1480,11 @@ IP 引数 .Ar packet-loss-rate は 0 から 1 までの浮動小数点数で、 -0 が損失がないことを、1 が 100% 失われることを意味します。 +0 は損失がないことを、1 は 100% 失われることを意味します。 損失率は内部的には 31 ビットで表現されています。 .Pp .It Cm queue Brq Ar slots | size Ns Cm Kbytes +スロット数 .Ar slots または .Cm KBytes @@ -1456,12 +1492,13 @@ IP デフォルトは 50 スロットで、 これはイーサネットデバイスにおける典型的なキューのサイズです。 低速リンクのためにキューのサイズを小さいままにしておくことが推奨されます。 -そうしないとトラフィックに対するキューの遅延が著しくなるかもしれません。 +そうしないとキューの遅延がトラフィックに及ぼす影響が +著しくなるかもしれません。 例えば、最大サイズのイーサネットパケット (1500 バイト) が 50 個のとき、 600Kbit、 つまり 30Kbit/秒 のパイプで 20 秒ということになります。 それよりもずっと大きな MTU を持ったインタフェース (例えばループバックインタフェースは 16KB パケットです) -からパケットを受け取るとしても悪い結果となることがあります。 +からパケットを受け取る場合、さらに悪い結果となることがあります。 .Pp .It Cm red | gred Ar w_q Ns / Ns Ar min_th Ns / Ns Ar max_th Ns / Ns Ar max_p RED (Random Early Detection) キュー管理アルゴリズムを使用します。 @@ -1479,7 +1516,7 @@ RED (Random Early Detection) は、gentle RED という変型 (gred) もサポートします。 RED の動作を制御するために、3 個の .Xr sysctl 8 -変数を使用可能です: +変数を使用可能です。 .Bl -tag -width indent .It Em net.inet.ip.dummynet.red_lookup_depth リンクがアイドルの時の、平均キューの計算精度を指定します @@ -1494,7 +1531,7 @@ RED .El .El .Sh チェックリスト -ルールを構成する際に考慮すべき重要な点を述べます。 +ルールを構成する際に考慮すべき重要な点をいくつか述べます。 .Bl -bullet .It かならず送信パケットと受信パケットの両方のパケットをフィルタリングします。 @@ -1569,34 +1606,35 @@ ipfw flush 関連するモジュール ( .Nm dummynet, bridge ) の動作を制御します。 -デフォルト値 (どの値が実際に使用されるかは -.Nm sysctl -で確認してください) と意味と共に、これらを以下に列挙します。 +デフォルト値と意味と共に、これらを以下に列挙します +(どの値が実際に使用されるかは +.Xr sysctl 8 +で確認してください)。 .Bl -tag -width indent .It Em net.inet.ip.dummynet.expire : No 1 -未決定のトラフィックが一度もなかった動的パイプ/キューを怠惰に削除します。 +未処理のトラフィックを持たない動的パイプ/キューを怠惰に削除します。 この変数を 0 に設定することでこの動作を無効にすることができます。 この場合、パイプ/キューは閾値に達した場合にのみ削除されることになります。 .It Em net.inet.ip.dummynet.hash_size : No 64 動的パイプ/キューに使用されるハッシュ表のデフォルトの大きさです。 この値はパイプ/キューを設定するときに .Cm buckets -オプションが 1 つも指定されなかった場合に使用されます。 +オプションが指定されなかった場合に使用されます。 .It Em net.inet.ip.dummynet.max_chain_len : No 16 ハッシュバケット (hash bucket) 内のパイプ/キューの最大個数の値です。 .Cm net.inet.ip.dummynet.expire=0 であっても、積 .Cm max_chain_len*hash_size が空のパイプ/キューが期限切れになったとする閾値を決定するのに使用されます。 -.It net.inet.ip.dummynet.red_lookup_depth : No 256 -.It net.inet.ip.dummynet.red_avg_pkt_size : No 512 -.It net.inet.ip.dummynet.red_max_pkt_size : No 1500 -RED アルゴリズムを使って落す確率を計算するのに使用されるパラメータです。 +.It Em net.inet.ip.dummynet.red_lookup_depth : No 256 +.It Em net.inet.ip.dummynet.red_avg_pkt_size : No 512 +.It Em net.inet.ip.dummynet.red_max_pkt_size : No 1500 +RED アルゴリズムで使う損失確率の計算に使用されるパラメータです。 .It Em net.inet.ip.fw.autoinc_step : No 100 -ルール番号を自動生成する際のルール番号間の差分です。 -この値は 1 から 100 の範囲でなければなりません。 +ルール番号を自動生成する際のルール番号間の増分です。 +この値は 1 から 1000 の範囲でなければなりません。 .It Em net.inet.ip.fw.curr_dyn_buckets : Em net.inet.ip.fw.dyn_buckets -動的ルールのハッシュ表内の現在のバケットの個数です (読み出しのみ)。 +動的ルールのハッシュ表内の現在のバケットの個数です (読み出しのみ可能)。 .It Em net.inet.ip.fw.debug : No 1 .Nm が生成するデバッグメッセージを制御します。 @@ -1668,12 +1706,37 @@ TCP がブリッジされたパケットを通すかどうかを制御します。 デフォルトは no です。 .El +.Sh FreeBSD-STABLE で IPFW2 を使う +.Nm ipfw2 +は、 +.Fx +CURRENT で標準となっていますが、 +.Fx +STABLE では、 +カーネルを +.Cm options IPFW2 +を付けてコンパイルし、 +.Nm /sbin/ipfw +と +.Nm /usr/lib/libalias +を +.Cm -DIPFW2 +を付け (buildworld の前に +.Nm /etc/make.conf +に +.Cm IPFW2=TRUE +を追加しておくことで同じ効果を得ることができます) +再コンパイル、再インストールしない限り、 +今でも +.Nm ipfw1 +を使用します。 +.Pp .Sh IPFW2 拡張 このセクションでは .Nm ipfw2 で導入され、 .Nm ipfw1 -には無い機能の一覧を示します。 +には存在しなかった機能の一覧を示します。 ここではルールセットを記述する際に影響が大きいと思われる順に示します。 より効果的なやり方でルールセットを記述するために これらの機能を使用したいと思うかもしれません。 @@ -1684,20 +1747,20 @@ TCP .Nm ipfw1 は .Em net.link.ether.bridge_ipfw=1 Ns -の場合にのみ参照します)。 +の場合にのみ非 IPv4 パケットを参照します)。 .Nm ipfw2 は 全てのパケット (非 IPv4 パケットを含む) を ルールセットにしたがってフィルタします。 .Nm ipfw1 と同じような動作をさせたい場合は -ルールセットの先頭で次のようにします: +ルールセットの先頭で次のようにします。 .Pp .Dl "ipfw add 1 allow layer2 not mac-type ip" .Pp .Cm layer2 -オプションは冗長であるように見えますが、必要です -- -レイヤ 3 からファイアウォールを通るパケットは MAC ヘッダを待たないので、 +オプションは冗長であるように見えますが、必要です。 +レイヤ 3 からファイアウォールを通るパケットは MAC ヘッダを持たないので、 .Cm mac-type ip パターンはレイヤ3のパケットに対して常に失敗します。 つまり、 @@ -1710,25 +1773,13 @@ TCP という形式のもの) をサポートしていません。 .Pp -.Nm ipfw1 -と -.Nm ipfw2 -には、 -.Ar ipno:mask -のようなアドレス指定で、 -連続するビット列の代わりに任意のビットマスクをマスクに指定することが -できるという小さな違いがあります。 -.Nm ipfw2 -はもはやこの文法をサポートしていませんが、 -カーネルの側でサポートされているので -些細なことですが再び導入しています。 .It ポートの指定 .Nm ipfw1 では TCP と UDP のポートを指定する際に 指定できるポート範囲は 1 つだけでした。 また、 .Nm ipfw2 -で可能な 15 エントリに対して 10 エントリに制限されていました。 +で 15 エントリ可能であるのに対し、10 エントリに制限されていました。 また、 .Nm ipfw1 では @@ -1746,7 +1797,7 @@ TCP では 最初のポートエントリを .Ar port:mask -と指定することができます。 +と指定することができました。 ここで .Ar mask は任意の 16 ビットマスクが使用可能です。 @@ -1786,18 +1837,20 @@ sysctl さらに、次のオプションは .Nm ipfw1 (RELENG_4) -のルールではサポートされていません: +のルールではサポートされていません。 +.Pp .Cm ipid, iplen, ipprecedence, iptos, ipttl, .Cm ipversion, tcpack, tcpseq, tcpwin .It dummynet オプション .Nm dummynet -パイプ/キュー用の次のオプションはサポートされていません: +パイプ/キュー用の次のオプションはサポートされていません。 +.Pp .Cm noerror .El .Sh 使用例 .Nm はあまりにも多くの使用方法があるので -このセクションでは使用例の一部を示すのみにしておきます。 +このセクションでは使用例のほんの一部を示すのみにしておきます。 .Pp .Ss 基本的なパケットフィルタリング 次のコマンドは @@ -1831,12 +1884,12 @@ sysctl ルールにより却下されます。 .Pp もし、1 つ以上のサブネットの管理者なら、 -以下のように、 -アドレスセットと論理和ブロックを指定して -クライアントのブロックにサービスを選択的に利用可能にする -極めてコンパクトなルールセットを記述するという .Nm ipfw2 -の文法の利点を採用することができます。 +の文法の利点を活用して +アドレスセットと論理和ブロックを指定することで、 +次のように、 +クライアントのブロックにサービスを選択的に利用可能とする +極めてコンパクトなルールセットを記述することができます。 .Pp .Dl "goodguys=\*q{ 10.1.2.0/24{20,35,66,18} or 10.2.3.0/28{6,3,11} }\*q" .Dl "badguys=\*q10.1.2.0/24{8,38,60}\*q" @@ -1851,7 +1904,7 @@ sysctl .Pp .Ss 動的ルール にせの TCP パケットを含む怒涛の攻撃 (flood attack) から -サイトを保護するためには、次の動的ルールを用いた方が安全です。 +サイトを保護するために、次の動的ルールを用いた方が安全です。 .Pp .Dl "ipfw add check-state" .Dl "ipfw add deny tcp from any to any established" @@ -1864,12 +1917,12 @@ sysctl ルール、または、 .Cm keep-state ルールに遭遇した時点でチェックされます。 -ルール集合のスキャン量を最小にするために、 +ルールセットのスキャン量を最小にするために、 .Cm check-state -ルールは、ルール集合の最初のほうに置くことになるのが普通です。 +ルールは、ルールセットの最初のほうに置くことになるのが普通です。 実際の燃費は変動します。 .Pp -ユーザが開ける接続数を制限するには、次のタイプのルールを使用可能です: +ユーザが開ける接続数を制限するには、次のタイプのルールを使用可能です。 .Pp .Dl "ipfw add allow tcp from my-net/24 to any setup limit src-addr 10" .Dl "ipfw add allow tcp from any to me setup limit src-addr 4" @@ -1887,9 +1940,9 @@ sysctl 変数に従いファイアウォールが動作することによって、 このような攻撃の影響を部分的にでも制限することはできます。 .Pp -次はカウントされている情報とタイムスタンプ情報を見る +ここで、カウントされている情報とタイムスタンプ情報を見る .Cm list -コマンドのよい例です。 +コマンドのよい例を示します。 .Pp .Dl ipfw -at list .Pp @@ -1917,7 +1970,7 @@ sysctl .Pp .Dl "ipfw add prob 0.05 deny ip from any to any in" .Pp -同様の効果は dummynet パイプで実現可能です: +同様の効果は dummynet パイプで実現可能です。 .Pp .Dl "ipfw add pipe 10 ip from any to any" .Dl "ipfw pipe 10 config plr 0.05" @@ -1925,45 +1978,47 @@ sysctl 人工的にバンド幅を制限するためにパイプを使用可能です。 例えばルータとして動作するマシン上で、 192.168.2.0/24 上のローカルクライアントからのトラフィックを制限したい場合、 -次のようにします: +次のようにします。 .Pp .Dl "ipfw add pipe 1 ip from 192.168.2.0/24 to any out" .Dl "ipfw pipe 1 config bw 300Kbit/s queue 50KBytes" .Pp .Cm out -指示子を使用しているので、ルールが 2 度使われないことに注意してください。 +指示子を使用して、ルールが 2 度使われないようにしていることに +注意してください。 .Nm ルールは、実際には、 入力パケットと出力パケットの両方に適用されることを覚えておいてください。 .Pp バンド幅に制限がある双方向リンクをシミュレートする場合、 -正しい方法は次の通りです: +正しい方法は次の通りです。 .Pp .Dl "ipfw add pipe 1 ip from any to any out" .Dl "ipfw add pipe 2 ip from any to any in" .Dl "ipfw pipe 1 config bw 64Kbit/s queue 10Kbytes" .Dl "ipfw pipe 2 config bw 64Kbit/s queue 10Kbytes" .Pp -上述の方法は非常に有用な場合があり、 -例えばあなたの装飾的なウェブページが +例えば、あなたの装飾的なウェブページが 低速リンクのみで接続されている在宅ユーザにどう見えているか -知りたい場合に有用です。 +知りたい場合などに、 +上述の方法は非常に有用かもしれません。 半二重メディア (例えば appletalk, Ethernet, IRDA) をシミュレートしたい 場合を除き、単一のパイプを両方の方向に使用すべきではありません。 両方のパイプが同じ設定である必要はないので、 -非対称リンクをシミュレート可能です。 +非対称リンクもシミュレート可能です。 .Pp RED キュー管理アルゴリズムを使用してネットワーク性能を検証するには、 -次のようにします: +次のようにします。 .Pp .Dl "ipfw add pipe 1 ip from any to any" .Dl "ipfw pipe 1 config bw 500Kbit/s queue 100 red 0.002/30/80/0.1" .Pp トラフィックシェイパの他の典型的な応用は、 いくばくかの通信遅延を導入することです。 -これは、遠隔手続き呼び出しを多用するアプリケーションで、 -バンド幅よりも接続のラウンドトリップ時間がしばしば制約条件となる -アプリケーションに、大きな影響を与えます: +これは、バンド幅よりも接続のラウンドトリップ時間が制約要因となる +ことがしばしばという状況下で、 +遠隔手続き呼び出しを多用するアプリケーションに対し +非常に大きな影響を与えます。 .Pp .Dl "ipfw add pipe 1 ip from any to any out" .Dl "ipfw add pipe 2 ip from any to any in" @@ -1971,7 +2026,7 @@ RED .Dl "ipfw pipe 2 config delay 250ms bw 1Mbit/s" .Pp フローごとのキューはさまざまな用途に有用です。 -非常に単純な用途は、トラフィックの集計です: +非常に単純な用途は、トラフィックの集計です。 .Pp .Dl "ipfw add pipe 1 tcp from any to any" .Dl "ipfw add pipe 1 udp from any to any" @@ -1984,29 +2039,31 @@ RED 最後のルールだけでなく 3 個のルールが必要なことに注意してください。 .Nm が IP パケットのマッチを試みるときにポートを考慮しないため、 -別々のポート上の接続は我々には同じものに見えます。 +別々のポート上の接続が違うものとして見えません。 .Pp より洗練された例は、 ネットワークの出力トラフィックを、 -ネットワーク毎に制約するのではなく、ホスト毎に制約するものです: +ネットワーク毎に制約するのではなく、ホスト毎に制約するものです。 .Pp .Dl "ipfw add pipe 1 ip from 192.168.2.0/24 to any out" .Dl "ipfw add pipe 2 ip from any to 192.168.2.0/24 in" .Dl "ipfw pipe 1 config mask src-ip 0x000000ff bw 200Kbit/s queue 20Kbytes" .Dl "ipfw pipe 2 config mask dst-ip 0x000000ff bw 200Kbit/s queue 20Kbytes" .Ss ルールセット -ルールセットを自動的に追加するには、例えばセット 18 なら: +ルールセットをアトミックに追加するには、 +例えばセット 18 なら、次のようにします。 .Pp .Dl "ipfw disable set 18" .Dl "ipfw add NN set 18 ... # 必要に応じて繰り返す" .Dl "ipfw enable set 18" .Pp -ルールセットを自動的に削除するにはコマンドは単に: +ルールセットをアトミックに削除するには、単に次のコマンドでよいです。 .Pp .Dl "ipfw delete set 18" .Pp ルールセットのテストを行ったり、 -何か間違いがあった場合にルールセットを削除して制御を回復するには: +何か間違いがあった場合にルールセットを削除して制御を回復するには、 +次のようにします。 .Pp .Dl "ipfw disable set 18" .Dl "ipfw add NN set 18 ... # 必要に応じて繰り返す" @@ -2017,9 +2074,8 @@ RED ルールセットは活動状態のままとなります。 そうでない場合、 たとえ箱にアクセスすることができなかったとしても、 -ルールセットは端末がスリープした後で無効な状態になるので -以前の状況が復元されます。 -.Pp +ルールセットは sleep が終了した後で無効な状態になるので +以前の状態が復元されます。 .Sh 関連項目 .Xr cpp 1 , .Xr m4 1 , @@ -2035,50 +2091,27 @@ RED .Xr reboot 8 , .Xr sysctl 8 , .Xr syslogd 8 -.Rs -.%A "S. Floyd" -.%A "V. Jacobson" -.%T "Random Early Detection gateways for Congestion Avoidance" -.%D "August 1993" -.Re -.Rs -.%A "B. Braden" -.%A "D. Clark" -.%A "J. Crowcroft" -.%A "B. Davie" -.%A "S. Deering" -.%A "D. Estrin" -.%A "S. Floyd" -.%A "V. Jacobson" -.%A "G. Minshall" -.%A "C. Partridge" -.%A "L. Peterson" -.%A "K. Ramakrishnan" -.%A "S. Shenker" -.%A "J. Wroclawski" -.%A "L. Zhang" -.%T "Recommendations on Queue Management and Congestion Avoidance in the Internet" -.%D "April 1998" -.%O "RFC 2309" -.Re .Sh バグ -年月とともに文法が大きくなり、ときどき混乱することもあるでしょう。 -不幸にして、後方互換性のために文法の定義の誤りを訂正できないでいます。 +年月とともに文法が大きくなり、ときどき訳がわからないところも +あるかもしれません。 +不幸にして、後方互換性のために昔しでかした文法定義の誤りを +訂正できないでいます。 .Pp .Em !!! 警告 !!! .Pp ファイアウォールを誤って設定するとコンピュータが -使用不能な状態になる可能性があります。 -ことによると、ネットワークのサービスを停止してしまい、 -制御を回復するためにコンソールアクセスが必要となってしまうでしょう。 +使用不能な状態になり、 +ことによると、ネットワークサービスを停止させてしまい、 +制御を回復するためにコンソールアクセスが必要となってしまう +可能性があります。 .Pp -入ってきたパケットの断片 (フラグメント) が .Cm divert によって行き先を変更されるか .Cm tee -されると、ソケットに配送される前にパケットは再構成されます。 +された、入ってきたパケットの断片 (フラグメント) は、 +ソケットに配送される前に再構成されます。 これらのパケットで使用されるアクションは -パケットの最初のフラグメントにマッチしたルールの 1 つです。 +パケットの最初のフラグメントにマッチしたルールのものです。 .Pp .Cm tee ルールにマッチするパケットは、 diff --git a/ja_JP.eucJP/man/man8/rpcinfo.8 b/ja_JP.eucJP/man/man8/rpcinfo.8 index 5c51f72e78..8abdee7e88 100644 --- a/ja_JP.eucJP/man/man8/rpcinfo.8 +++ b/ja_JP.eucJP/man/man8/rpcinfo.8 @@ -1,8 +1,10 @@ -.\" from: @(#)rpcinfo.8c 2.2 88/08/03 4.0 RPCSRC; from 1.24 88/02/25 SMI -.\" %FreeBSD: src/usr.bin/rpcinfo/rpcinfo.8,v 1.5.2.2 2002/06/21 15:28:53 charnier Exp % +.\" @(#)rpcinfo.1m 1.23 93/03/29 SMI; from SVr4 +.\" Copyright 1989 AT&T +.\" Copyright 1991 Sun Microsystems, Inc. +.\" %NetBSD: rpcinfo.8,v 1.6 2000/06/02 23:19:38 fvdl Exp % +.\" %FreeBSD: src/usr.bin/rpcinfo/rpcinfo.8,v 1.9 2002/10/16 15:38:28 charnier Exp % .\" $FreeBSD$ -.\" -.Dd December 17, 1987 +.Dd August 18, 1992 .Dt RPCINFO 8 .Os .Sh 名称 @@ -10,148 +12,310 @@ .Nd RPC に関する情報を表示する .Sh 書式 .Nm -.Fl p +.Op Fl m | s .Op Ar host .Nm -.Op Fl n Ar portnum -.Fl u Ar host -.Ar program -.Op Ar version +.Op Ar host +.Nm +.Fl T Ar transport +.Ar host prognum +.Op Ar versnum +.Nm +.Fl l +.Op Fl T Ar transport +.Ar host prognum +.Op Ar versnum .Nm .Op Fl n Ar portnum -.Fl t Ar host -.Ar program -.Op Ar version +.Fl u +.Ar host prognum +.Op Ar versnum +.Nm +.Op Fl n Ar portnum +.Op Fl t +.Ar host prognum +.Op Ar versnum +.Nm +.Fl a Ar serv_address +.Fl T Ar transport +.Ar prognum +.Op Ar versnum .Nm .Fl b -.Ar program version +.Op Fl T Ar transport +.Ar prognum versnum .Nm .Fl d -.Ar program version +.Op Fl T Ar transport +.Ar prognum versnum .Sh 解説 .Nm -ユーティリティは、 -.Tn RPC -サーバに対して -.Tn RPC -呼び出しを行ない、得られた情報を表示します。 -.Sh オプション -.Bl -tag -width indent -.It Fl p -指定されたホスト上のポートマッパーを検出し、そこに登録されている全ての -.Tn RPC -プログラムの一覧を出力します。 -.Ar host -が指定されない場合、 -.Xr hostname 1 -コマンドをオプション無しで実行した時に出力されるホスト名が -.Ar host -として採用されます。 -.It Fl u -.Tn UDP -プロトコルを用いて、指定したホスト上のプログラムの手続き 0 に対して -.Tn RPC -呼び出しを行ないます。そして、応答があったかどうかを報告します。 -.It Fl t -.Tn TCP -プロトコルを用いて、指定したホスト上のプログラムの手続き 0 に対して -.Tn RPC -呼び出しを行ないます。そして、応答があったかどうかを報告します。 -.It Fl n -.Fl t -や -.Fl u -オプション使用時に、ポートマッパーに与えられたポート番号のかわり -に、引数 -.Ar portnum -で指定した番号をポート番号として用います。 -.It Fl b -.Tn UDP -プロトコルを用いて、引数 -.Ar program -および -.Ar version -で指定したプログラムに対し、手続き 0 に -.Tn RPC -ブロードキャストを行ないます。そして、応答のあった全てのホストにつ -いてのレポートを出力します。 -.It Fl d -引数 -.Ar program -および -.Ar version -で指定したプログラムの -.Tn RPC -サービスへの登録を削除します。 -本オプションは、スーパユーザのみ指定可能です。 -.El +ユーティリティは、RPC サーバに対して +RPC 呼び出しを行ない、得られた情報を表示します。 .Pp -引数 -.Ar program -は、名称・番号のいずれでも構いません。 -.Pp -もし引数 -.Ar version -が指定されると、 -.Nm -は引数 -.Ar program -で指定されたプログラムのそのバージョンの呼び出しを試みます。 -.Ar version -が指定されなかった場合、 +最初の書式では、 .Nm は -.Ar program -で指定されたプログラムに対してバージョン 0 呼びだしを行なうことで、 -全ての登録されているバージョンについて検索を試みます -(バージョン 0 は存在しないと仮定してのものです。もし存在すれば -.Ar rpcinfo -は極端に高いバージョンを使って情報を得ようとします)。 -.Fl b -および +.Nm rpcbind +により +.Ar host +に登録されたすべての RPC サービスのリストを表示します。 +.Ar host +が指定されない場合、ローカルホストがデフォルトの値となります。 +オプション +.Fl s +が使用されたときは、情報は簡潔な形式で表示されます。 +.Pp +2 番目の書式では、 +.Nm +は +.Nm rpcbind +バージョン 2 により登録された全ての RPC サービスのリストを表示します。 +最初の書式と 2 番目の書式とで、情報の形式が異なることにも注意して下さい。 +この理由は、2 番目の書式では、表示する情報を集めるのに使用するプロトコル +( +.Nm rpcbind +プロトコルのバージョン 2) がより古いからです。 +.Pp +3 番目の書式は、指定した +.Ar host +に対し、 +.Ar prognum +と +.Ar versnum +の手続き 0 の RPC 呼び出しを行ない、応答を受信したかどうかを報告します。 +.Ar transport +は、指定したサービスに接触するために用いる必要があるトランスポートです。 +このサービスのリモートアドレスは、リモートへの +.Nm rpcbind +呼び出しを行ない取得します。 +.Pp +引数 +.Ar prognum +は PPC プログラム番号を表す数値です。 +.Ar versnum +を指定した場合、 +.Nm +は指定した +.Ar prognum +の該当バージョンを呼び出そうとします。この指定がない場合、 +次のようにします。 +まず、バージョン番号が存在しないと考えられる場合、 +.Nm +はバージョン 0 を呼び出し、指定した +.Ar prognum +に対し登録されたバージョン番号全てを探し出そうと試みます。 +バージョン番号が存在するならば、代わりに +.Nm +は極めて高いバージョン番号で呼び出しこの情報を得ようと試み、 +そして登録されたバージョンそれぞれを呼び出そうとします。 +注意: +バージョン番号は、 +オプション +.Fl b , .Fl d -オプションには、バージョン番号の指定が必要であることに注意して下さい。 +に必要です。 +.Sh オプション +.Bl -tag -width indent +.It Fl T Ar transport +サービスを要求する際のトランスポートを指定します。このオプションが +指定されていない場合、 +.Nm +は環境変数 +.Ev NETPATH +で指定するトランスポートを使用します。これが set されていないか、 +この値が空の場合、 +.Xr netconfig 5 +データベースの中のトランスポートを使用します。 +これは汎用のオプションであり、 +.Sx 書式 +で示された他のオプションといっしょに使用できます。 +.It Fl a Ar serv_address +.Ar serv_address +を (ユニバーサルな) アドレスとして使用し、 +.Ar transport +上のサービスを使い、指定した +.Ar prognum +の手続き 0 を ping し、受けとった応答を報告します。 +オプション +.Fl a +には、オプション +.Fl T +が必要です。 +.Pp +.Ar versnum +の指定がない場合、 +.Nm +は、そのプログラム番号で利用可能なバージョン番号全てを +ping しようとします。 +このオプションにより、サービスのアドレスを見つけ出すための +リモート +.Nm rpcbind +呼び出しを避けることができます。 +.Ar serv_address +は与えられたトランスポートのユニバーサルアドレス形式で指定します。 +.It Fl b +指定した +.Ar prognum +と +.Ar versnum +の手続き 0 に対し RPC ブロードキャストを行ない、応答したホスト全てを +報告します。 +.Ar transport +が指定されている場合、指定されたトランスポート上でのみ +ブロードキャストします。 +どのトランスポートもブロードキャストをサポートしていない場合、 +エラーメッセージを表示します。他のシステムに対し悪影響を及ぼす可能性が +あるため、ブロードキャストの使用は節度を持って行なわねばなりません。 +.It Fl d +指定した +.Ar prognum +と +.Ar versnum +を持つ RPC サービスの登録を削除します。 +.Ar transport が指定された場合、 +そのトランスポート上のサービスのみを登録解除します。それ以外の場合、 +登録されたトランスポート全ての上のサービスを登録解除します。 +スーパユーザを除き、サービスの所有者のみが登録を削除できます。 +スーパユーザは任意のサービスを削除できます。 +.It Fl l +指定された +.Ar host +の上にある、与えられた +.Ar prognum +と +.Ar versnum +を持つエントリのリストを表示します。 +リモート +.Nm rpcbind +に接触する際に用いたものと同じプロトコルファミリの中の +全てのトランスポートに対し、エントリを返されます。 +.It Fl m +指定した +.Ar host +に対する +.Nm rpcbind +操作の統計情報表を表示します。 +この表は +.Nm rpcbind +の各バージョン (バージョン 2, 3, 4) における統計情報を表示します。 +それは、 +各手続きがリクエストされ、サービスが成功した回数、 +行なわれたリモート呼び出しリクエストの回数とタイプ、 +処理した RPC アドレス検出に関する情報を与えてくれます。 +これは、 +.Ar host +上の RPC 活動をモニタするのに有益です。 +.It Fl n Ar portnum +.Fl t , +.Fl u +のためのポート番号として、 +.Nm rpcbind +により与えられるポート番号を使わずに、 +.Ar portnum +を代わりに使用します。 +このオプションを使用することで、サービスのアドレスを見つけ出すための +リモート +.Nm rpcbind +呼び出しを避けることができます。 +このオプションは +.Fl a +オプションにより非推奨にされました。 +.It Fl p +.Nm rpcbind +プロトコルのバージョン 2 を用い、ホスト +.Ar host +上の +.Nm rpcbind +を探査し、登録された RPC プログラム全てのリストを表示します。 +.Ar host +の指定がない場合、ローカルホストをデフォルトとします。 +注意: +.Nm rpcbind +プロトコルのバージョン 2 は、かつて、ポートマッパ (portmapper) +プロトコルという名前で知られていました。 +.It Fl s +.Ar host +上の、登録された RPC プログラム全ての簡潔なリストを表示します。 +.Ar host +の指定がない場合、ローカルホストをデフォルトとします。 +.It Fl t +TCP を用いて、指定した +.Ar host +上の +.Ar prognum +の手続き 0 に対して RPC 呼び出しを行ない、応答があったかどうかを +報告します。このオプションは、3 番目の書式で示した +.Fl T +オプションにより非推奨になりました。 +.It Fl u +UDP を用いて、指定した +.Ar host +上の +.Ar prognum +の手続き 0 に対して RPC 呼び出しを行ない、応答があったかどうかを +報告します。このオプションは、3 番目の書式で示した +.Fl T +オプションにより非推奨になりました。 +.El .Sh 使用例 -ローカルマシンに登録されている全ての -.Tn RPC -サービスを見るには、次のようにします: +ローカルマシンに登録されている全ての RPC +サービスを見るには、次のようにします。 .Pp -.Dl example% rpcinfo -p +.Dl "example% rpcinfo" .Pp -ホスト名 klaxon 上に登録されている全ての -.Tn RPC -サービスを見るには、次のようにします: +ホスト名 +.Dq klaxon +を持つマシン上の +.Nm rpcbind +に登録されている全ての RPC サービスを見るには、次のようにします。 .Pp -.Dl example% rpcinfo -p klaxon +.Dl "example% rpcinfo klaxon" .Pp -NIS サービス (Yellow Page サービス) が稼働している -ローカルネットワーク上に接続されているマシンすべてを表示するには、 -次のようにします: +上記のコマンドにより表示される情報は、かなり長くなる可能性が +あります。オプション +.Fl s +を使うことで、より簡潔なリストを表示させることができます。 .Pp -.Dl example% rpcinfo -b ypserv 'version' | uniq +.Dl "example$ rpcinfo -s klaxon" .Pp -\&'version' のところには、上記 -.Fl p -オプションの結果から得られた現在の NIS サービス -(Yellow Page サービス) -のバージョンを使います。 +.Bl -column "program" "version(s)" "unix,tcp,udp,tcp6,udp6" "nlockmgr" "super-user" +.It "program version(s) netid(s) service owner" +.It "100000 2,3,4 unix,tcp,udp,tcp6,udp6 rpcbind super-user" +.It "100008 1 udp,tcp,udp6,tcp6 walld super-user" +.It "100002 2,1 udp,udp6 rusersd super-user" +.It "100001 2,3,4 udp,udp6 rstatd super-user" +.It "100012 1 udp,tcp sprayd super-user" +.It "100007 3 udp,tcp ypbind super-user" +.El .Pp +トランスポート TCP に対し、名前 +.Dq klaxon +を持つマシン上にプログラム番号 +.Ar prognum +とバージョン +.Ar versnum +を持つ RPC サービスが登録されているかどうかを示すには、 +次のようにします。 +.Dl "example% rpcinfo -T tcp klaxon prognum versnum" +.Pp +ローカルマシン上で、 +.Nm rpcbind +プロトコルのバージョン 2 により登録された全ての RPC サービスを +表示させるには、次のようにします。 +.Dl "example% rpcinfo -p" +.Pp +全てのトランスポートに対し、 バージョン 1 の .Nm walld -サービスを削除するには、次のようにします: +(プログラム番号 100008) +サービスの登録を削除するには、次のようにします。 .Pp -.Dl example% rpcinfo -d walld 1 +.Dl "example# rpcinfo -d 100008 1" +または、 +.Dl "example# rpcinfo -d walld 1" .Sh 関連項目 +.Xr rpc 3 , +.Xr netconfig 5 , .Xr rpc 5 , -.Xr portmap 8 -.Rs -.%T "RPC Programming Guide" -.Re -.Sh バグ -SunOS 3.0 以前のリリースでは、ネットワークファイルシステム ( -.Tn NFS -) がポートマッパーに登録されていません。そのため -.Nm -は、そのような OS が稼働しているマシンに対して -.Tn RPC -呼び出しを行なうことが出来ません。 +.Xr rpcbind 8