ipmon(8)

名称
ipmon - ログしたパケットのために /dev/ipl をモニタする

書式
ipmon [ -abDFhnpstvxX ] [ -N <device> ] [ -o [NSI] ] [ -O [NSI] ] [ -P <pidfile> ] [ -S <device> ] [ -f <device> ] [ <filename> ]

解説

ipmon は、/dev/ipl を読み出すためにオープンし、パケットフィルタ から保存されるデータを待ちます。デバイスから読み出されたバイナリデータを 可読形式で再表示します。ただし、IP番号はホスト名に変換されません。また、 ポート番号もサービス名に変換されません。この出力は、デフォルトで標準出力に 向けられます。もしくは、コマンド行でファイル名が指定された場合は、出力は そのファイルに向けられます。 -s オプションを使用した場合、出力はそちらでなく syslogd(8) に向けられます。syslog 経由で送られたメッセージでは、年月日は削除されて いますが、ログに記録された時刻 (マイクロ秒含む) は残っています。

ipmon が生成するメッセージは、空白で区切られたフィールドから成ります。 全メッセージに共通のフィールドは次の通りです:

1. パケット受信データ。 メッセージが syslog に送られた場合には抑制されます。

2. パケット受信時刻。 これは HH:MM:SS.F という形式であり、 時間、分、秒、秒の小数部 (数桁になる可能性があります) です。

3. パケットが処理されたインタフェース名であり、例えば we1 です。

4. ルールのグループとルール番号であり、例えば @0:17 です。 これらは ipfstat -n で閲覧可能です。

5. 動作。 p は通過を、b はブロックを、S は短いパケットを、 n はどのルールにも当てはまらなかったことを、L はログルールを表します。 フラグ表示の優先順序は S, p, b, n, L です。 大文字の P または B は、 特定のルールではなくグローバルのログ設定により、 パケットがログされたことを意味します。

6. アドレス。 これは実際には 3 フィールドからなります。 すなわち、送信元アドレスとポート (コンマで区切ります) と、 -> というシンボルと、 宛先アドレスとポートです。 例えば 209.53.17.22,80 -> 198.73.220.17,1722 です。

7. PR に続いてプロトコルの名前または番号です。 例えば PR tcp です。

8. len に続いてヘッダ長とパケット全体の長さです。 例えば len 20 40 です。

パケットが TCP パケットの場合、追加のフィールドがあります。 これは、ハイフンに続き、設定されているフラグに対応する文字から成ります。 文字一覧とフラグについては、ipf.conf のマニュアルページを参照してください。

パケットが ICMP パケットの場合、最後に 2 フィールドがあります。 最初は常に `icmp' であり、 次は ICMP メッセージとサブメッセージタイプであり、スラッシュで区切られます。 例えば icmp 3/3 はポート到達不能メッセージです。

ipmon を正しく動作させるためには、 カーネルオプション IPFILTER_LOG をカーネルで設定する必要があります。 詳細については options(4) を参照してください。

オプション

-a  すべてのデバイスログファイルをオープンし、ログエントリをそこから読み込み ます。すべてのエントリを同じ出力「デバイス」(標準エラー出力または syslog) に 表示します。

-b  パケットの本体をログするルールに対し、 ヘッダの後にパケットの内容を 16 進数で出力します。

-D  ipmon をデーモンにします。 ipmon を孤児にするためにサブシェルやバックグラウンドを使用する必要はないので、 際限なく実行可能です。

-f <device>
    通常 IP フィルタログ記録を表すログ情報を読み込むための、 別のデバイス/ファイルを指定します。

-F  現在のパケットログバッファをフラッシュします。フラッシュされたバイト数は (結果が 0 であっても) 表示されます。

-n  可能であれば、IP アドレスとポート番号をホスト名とサービス名に変換します。

-N <device>
    NAT ログ記録読み込み用にオープンするログファイルを <device> に設定します。

-o  実際にデータを読み込むログファイルを指定します。N - NAT ログファイル、 S - 状態ログファイル、I - 通常 IP フィルタログファイルです。 -a オプションは、-o NSI を指定するのと等価です。

-O  どのログファイルを読み込まないかを指定します。これを -a と いっしょに使用することが、もっとも意味のある使い方でしょう。 パラメータとして利用可能な文字は、-o と同様です。

-p  ログメッセージ中のポート番号を常に番号で表示し、 /etc/services の検索を試みません。

-P <pidfile>
    ipmon プロセスの PID をファイルに書き込みます。 デフォルトでは、 /etc/opt/ipf/ipmon.pid (Solaris) か、 /var/run/ipmon.pid (44BSD 以降) か、 その他すべてでは /etc/ipmon.pid です。

-s  読み込んだパケット情報をファイルに保存するのでなく、syslogd 経由で送信 します。 コンパイル時およびインストール時のデフォルトファシリティは security です。 以下で示すレベルが利用できます。

    LOG_INFO - アクションが pass や block でなく、 キーワード "log" を用いて記録されたパケット。

    LOG_NOTICE - 通過し、記録されたパケット

    LOG_WARNING - ブロックされ、記録されたパケット

    LOG_ERR - すでに記録され、「短い」かもしれないと見なされたパケット

-S <device>
    状態ログ記録読み込み用にオープンするログファイルを <device> に設定します。

-t  tail(1) と似た方法で入力ファイル/デバイスから読み込みます。

-v  TCP ウィンドウ、確認応答、シーケンスフィールドを表示します。

-x  パケットデータを 16 進数で表示します。

-X  ログヘッダ記録データを 16 進数で表示します。

診断
ipmon は、読み込むデータは、どう保存すべきかについての一貫性が とれていると想定しています。記録されたデータから異常を検知するテスト に失敗した場合、処理を中断します。

関連ファイル
/dev/ipl
/dev/ipnat
/dev/ipstate
/etc/services

関連項目
ipl(4), ipf(8), ipfstat(8), ipnat(8)

バグ
もし見つけたら、darrenr@pobox.com に E メールを送って下さい。