ipftest(1)

ipftest - 任意の入力に対してパケットフィルタルールをテストする

書式
ipftest [ -vbdPSTEHX ] [ -I interface ] -r <filename> [ -i <filename> ]

解説

ipftest は、 フィルタルール集合をあるべき場所に置かずにテストできるようにする ために提供されています。 これは動作して、フィルタルールの効果をテストします。 安全な IP 環境を提供するに際し、混乱を最小にできればよいということです。

ipftest は、ipf の標準ルールセットを解釈し、 これを入力に対して適用し、結果として出力を返します。 しかし、フィルタを通過したパケットに対して ipftest が返すのは、 次の 3 つの値のうちの 1 つです: pass, block, nomatch。 これは、 パケットがフィルタルールセットを通過するにあたって何が発生しているのかに関し、 オペレータの理解を助けることを意図しています。

-S, -T, -E のいずれのオプションも使用しない場合、 ipftest は固有のテキスト入力フォーマットを使用し、 「擬似」IP パケットを生成します。 使用するフォーマットは次のとおりです:
		"in"|"out" "on" if ["tcp"|"udp"|"icmp"]
			srchost[,srcport] dsthost[,destport] [FSRPAU]

あるインタフェース (if) にて、 入る ("in") または出る ("out") パケットを生成できます。 オプションとして主要プロトコル 3 つの中から 1 つを選択できます。 TCP または UDP の場合、ポートパラメータの指定も必要です。 TCP が選択された場合、(オプションとして) 最後に TCP フラグを指定可能です。 以下に例を数個示します:
		# le0 に到着する UDP パケット
		in on le0 udp 10.1.1.1,2210 10.2.1.5,23
		# localhost から le0 に到着する IP パケット - うーむ :)
		in on le0 localhost 10.4.12.1
		# SYN フラグを設定されて le0 から出て行く TCP パケット
		out on le0 tcp 10.4.12.1,2245 10.1.1.1,23 S

オプション

-v  冗長モード。 通過したまたはしなかった入力パケットに対して ルールのどの部分がマッチしたのかに関し、より詳しい情報を提供します。

-d  フィルタルールデバッグをオンにします。 現在は、IP ヘッダチェックにおいて、ルールがマッチしなかった理由を表示 するだけです (アドレス/ネットマスクなど)。

-b  パケットをフィルタに通した結果の出力を、短いまとめ (1 語)、 すなわち "pass", "block", "nomatch" のいずれかにします。 後戻りして確認する際に使用します。

-I <interface>
    (ルールのマッチに使用される) インタフェース名を、指定された名前に設定します。 この方法無しにはパケットとインタフェースとを関連付けられない、 -P, -S, -T, -E の各オプションにおいて有用です。 通常の「テキストパケット」は、この設定に優先します。

-P  -i で指定される入力ファイルは、 libcap (すなわち tcpdump バージョン 3) が生成したバイナリファイルです。 このファイルから読まれたパケットは、(ルールに対する) 入力になります。 インタフェースは -I で指定可能です。

-S  入力ファイルは「スヌープ」フォーマット (RFC 1761 参照) です。 パケットはこのファイルから読み取られ、 任意のインタフェースからの入力として使用されます。 おそらく現在のところ、これが最も有用な入力タイプでしょう。

-T  入力ファイルは tcpdump のテキスト出力です。 現在サポートされているテキストフォーマットは、 次の tcpdump オプションの組み合わせの出力です:

		tcpdump -n
		tcpdump -nq
		tcpdump -nqt
		tcpdump -nqtt
		tcpdump -nqte

-H  入力ファイルは16 進数であり、パケットのバイナリ構造を表現する必要があります。 IP ヘッダの長さが正しくなくても、長さは補正されません。

-X  入力ファイルは IP パケットのテキスト記述からなります。

-E  入力ファイルは etherfind のテキスト出力です。 現在サポートされているテキストフォーマットは、 次の etherfind オプションの組み合わせの出力です:

		etherfind -n
		etherfind -n -t

-i <filename>
    入力を得るファイル名を指定します。デフォルトは標準入力です。

-r <filename>
    フィルタルールを読み取るファイル名を指定します。

関連項目
ipf(5), ipf(8), snoop(1m), tcpdump(8), etherfind(8c)

バグ
入力形式によっては、テストに有用なことがらすべてをカバーできるほど 十分に多種多様なパケットを表現できません。