1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
|
.TH ipftest 1
.\" jpman %Id: ipftest.1,v 1.2 1998/10/09 17:01:23 horikawa Stab %
.SH 名称
ipftest \- 任意の入力に対してパケットフィルタルールをテストする
.SH 書式
.B ipftest
[
.B \-vbdPSTEHX
] [
.B \-I
interface
]
.B \-r
<filename>
[
.B \-i
<filename>
]
.SH 解説
.PP
\fBipftest\fP の提供の目的は、動作中に、
フィルタルール集合をあるべき場所に置く必要なくテスト可能とすることであり、
フィルタルールの効果をテストします。
また、安全な IP 環境提供への影響を最小化することを望みます。
.PP
\fBipftest\fP は、\fBipf\fP の標準ルールセットを解釈し、
これを入力に対して適用し、結果として出力を返します。
しかし、フィルタを通過したパケットに対して \fBipftest\fP が返すのは、
次の 3 つの値のうちの 1 つです: pass, block, nomatch。
これは、
パケットがフィルタルールセットを通過するにあたって何が発生しているのかに関し、
オペレータの理解を助けることを意図しています。
.PP
\fB\-S\fP, \fB\-T\fP, \fB\-E\fP のいずれのオプションも使用しない場合、
\fBipftest\fP は固有のテキスト入力フォーマットを使用し、
「擬似」IP パケットを生成します。
使用するフォーマットは次のとおりです:
.nf
"in"|"out" "on" if ["tcp"|"udp"|"icmp"]
srchost[,srcport] dsthost[,destport] [FSRPAU]
.fi
.PP
インタフェース (if) にて、
入る ("in") または出る ("out") パケットを生成できます。
オプションとして 3 つの主なるプロトコルから 1 つを選択できます。
TCP または UDP の場合、ポートパラメータも指定が必要です。
TCP が選択された場合、(オプションとして) 最後の TCP フラグを指定可能です。
以下に数例示します:
.nf
# 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
.fi
.SH オプション
.TP
.B \-v
冗長モード。
通過したまたはしなかった入力パケットに対して
ルールのどの部分がマッチしたのかに関し、更なる情報を提供します。
.TP
.B \-d
フィルタルールデバッグをオンにします。
現在、IP ヘッダチェックにおいて、ルールが マッチしなかった理由のみを表示します
(アドレス/ネットマスクなど)。
.TP
.B \-b
パケットをフィルタに通した結果の出力を、短いまとめ (1 語)、
すなわち "pass", "block", "nomatch" のいずれかにします。
後戻りして確認する際に使用します。
.TP
.BR \-I \0<interface>
(ルールのマッチに使用される) インタフェース名を、指定された名前に設定します。
この方法無しにはパケットとインタフェースとを関連付けられない、
\fB\-P\fR, \fB\-S\fR, \fB\-T\fP, \fB\-E\fP の各オプションにおいて有用です。
通常の「テキストパケット」は、この設定に優先します。
.TP
.B \-P
\fB\-i\fP で指定される入力ファイルは、
libcap (すなわち tcpdump バージョン 3) が生成したバイナリファイルです。
このファイルから読まれたパケットは、(ルールに対する) 入力になります。
インタフェースは \fB\-I\fP で指定可能です。
.TP
.B \-S
入力ファイルは「スヌープ」フォーマット (RFC 1761 参照) です。
パケットはこのファイルから読み取られ、
任意のインタフェースからの入力として使用されます。
おそらく現在のところ、これが最も有用な入力タイプでしょう。
.TP
.B \-T
入力ファイルは tcpdump のテキスト出力です。
現在サポートされているテキストフォーマットは、
次の tcpdump オプションの組み合わせの出力です:
.PP
.nf
tcpdump -n
tcpdump -nq
tcpdump -nqt
tcpdump -nqtt
tcpdump -nqte
.fi
.LP
.TP
.B \-H
入力ファイルは16 進数であり、パケットのバイナリ構造を表現する必要があります。
IP ヘッダの長さが正しくなくても、長さは補正されません。
.TP
.B \-X
入力ファイルは IP パケットのテキスト記述からなります。
.TP
.B \-E
入力ファイルは etherfind のテキスト出力です。
現在サポートされているテキストフォーマットは、
次の etherfind オプションの組み合わせの出力です:
.PP
.nf
etherfind -n
etherfind -n -t
.fi
.LP
.TP
.BR \-i \0<filename>
入力を得るファイル名を指定します。デフォルトは標準入力です。
.TP
.BR \-r \0<filename>
フィルタルールを読み取るファイル名を指定します。
.SH 関連項目
ipf(5), ipf(8), snoop(1m), tcpdump(8), etherfind(8c)
.SH バグ
入力形式によっては、テストに有用なことがらすべてをカバーできるほど
十分に多種多様なパケットを表現できません。
|