|
ipsend − IP パケット記述言語 |
|
ipsend プログラムは、-L オプションが付くと、以下の文法に適合するテキス トファイルを入力として期待します。この文法の目的は、任意の方法で IP パ ケッ トを指定可能とすることで、 IP パケットを任意の方法でカプセル化でき るようにすることです。 |
line ::= iface | arp | send | defrouter | ipv4line .
iface ::= ifhdr "{" ifaceopts "}" ";" .
ifhdr ::= "interface" | "iface" .
ifaceopts ::= "ifname" name | "mtu" mtu | "v4addr" ipaddr |
|
|
"eaddr" eaddr . |
|
send ::= "send" ";" |
"send" "{" sendbodyopts "}"
";" . defrouter ::= "router" ipaddr . arp ::= "arp" "{" arpbodyopts
"}" ";" . bodyline ::= ipv4line | tcpline | udpline | icmpline | dataline . ipv4line ::= "ipv4" "{" ipv4bodyopts
"}" ";" . |
|
"off" number | "v" number | "hl" number| "id" number | |
|
|
"ttl" number | "tos" number | "sum" number | "len" number | |
|
|
"opt" "{" ipv4optlist "}" ";" . |
|
ipv4optlist ::= ipv4option [ ipv4optlist ] . |
|
"tr" | "sec" | "lsrr" | "e-sec" | "cipso" | "satid" | |
|
|
"ssrr" | "addext" | "visa" | "imitd" | "eip" | "finn" | |
|
|
"secclass" ipv4secclass. |
|
ipv4secclass := "unclass" | "confid" | "reserv-1" | "reserv-2" | |
|
"reserv-3" | "reserv-4" | "secret" | "topsecret" . |
|
tcpline ::= "tcp" "{" tcpbodyopts
"}" ";" . |
|
"off" number | "urp" number | "win" number | "sum" number | |
|
|
"flags" tcpflags | data . |
|
udpline ::= "udp" "{" udpbodyopts
"}" ";" . |
|
data . |
|
icmpline ::= "icmp" "{" icmpbodyopts
"}" ";" . |
|
"unreach" "{" unreachtype "}" ";" | "squench" | "redir" | |
|
|
"redir" "{" redirtype "}" ";" | "echo" "{" echoopts "}" ";" | |
|
|
"echo" | "routerad" | "routersol" | "timex" | |
|
|
"timex" "{" timextype "}" ";" | "paramprob" | |
|
|
"paramprob" "{" parapptype "}" ";" | "timest" | "timestrep" | |
|
|
"inforeq" | "inforep" | "maskreq" | "maskrep" . |
|
echoopts ::= echoopts [ icmpechoopts ] . |
|
"needfrag" | "srcfail" | "net-unk" | "host-unk" | "isolate" | |
|
|
"net-prohib" | "host-prohib" | "net-tos" | "host-tos" | |
|
|
"filter-prohib" | "host-preced" | "cutoff-preced" . |
|
redirtype ::= "net-redir" | "host-redir" | "tos-net-redir" | |
|
"tos-host-redir" . |
|
timextype ::= "intrans" | "reass"
. |
|
data |
::= "data" "{" databodyopts "}" ";" . |
|
databodyopts ::= "len" number | "value" string | "file" filename . icmpechoopts ::= "icmpseq" number | "icmpid" number . |
|
パケットの送信や、パケットの定義の前に、送信する際に用いるインタ フェー スを記述する必要があります。 |
|
interface |
|
こ れは、ネットワークインタフェースを記述するために用います。こ こに含まれる記述では、オペレーティングシステムが採用している 実 際のコンフィギュレーションと一致させる必要はありません。 |
|
send |
これは、実際にネットワーク越しにパケットを送信するために 用います。終点が指定されない場合、そのネットワークに、ルー ティ ングなしで終点に向けて直接パケットを送出します。 |
||
|
router |
これは、ipsend が使うデフォルトルータを、カーネルが扱う デフォルト経路とは別に指定します。 |
||
|
ipv4 |
これは (バージョン 4 の) IP パケットを記述します。IP ヘッ ダ フィールドを、オプションも含めて、さらに先のプロトコルヘッダ を含むデータセクションを続けて指定することも出来ます。 |
|
hl <number> |
|
これは、手動で IP ヘッダ長を指定します (IP オプションの存在によ り自動的に修正されます。デフォルトは 5)。 |
|
v <number> |
|
IP バージョンを設定します。デフォルトは 4 です。 |
|
tos <number> |
|
こ れ は、 サービスの型 (Type Of Service, TOS) を設定します。デ フォルトは 0 です。 |
|
len <number> |
|
IP パケットの長さを手動で指定します。データやプロトコルヘッダを 収容できるように、長さは自動的に調整されます。 |
|
off <number> |
|
これは、IP パケットのフラグメントオフセットフィールドの値を設定 します。デフォルトは 0 です。 |
|
ttl <number> |
|
これは IP ヘッダの生存時間 (Time To Live, TTL) フィールドを設定 します。デフォルトは 60 です。 |
|
proto <protocol> |
|
こ れ は IP ヘッダのプロトコルフィールドを設定します。protocol は、 /etc/protocols に存在する数字または名前が使えます。 |
|
sum |
手動で IP ヘッダのチェックサムを設定します。これを設定しな い (0) ままだと、送信前に計算されます。 |
||
|
src |
手動で IP ヘッダの始点アドレスを指定します。これを設定しな いままだと、ホストの IP アドレスをデフォルトとします。 |
||
|
dst |
これは、IP パケットの終点を設定し ま す。 デ フォ ル ト は 0.0.0.0 です。 |
||
|
opt |
これは、IP ヘッダの IP オプションを指定するために用いま す。 |
||
|
tcp |
これは、TCP プロトコルヘッダが後続することを示すために用い ま す。TCP ヘッダのオプションについては、TCP を参照してくださ い。 |
||
|
udp |
これは、UDP プロトコルヘッダが後続することを示すために用い ま す。UDP ヘッダのオプションについては、UDP の節を参照してくだ さい。 |
||
|
icmp |
これは、ICMP プロトコルヘッダが後続することを示すために用 い ます。ICMP ヘッダのオプションについては、ICMP の節を参考にし てください。 |
||
|
data |
これは、IP パケットに生データが含まれることを示すために用 います。指定可能なオプションの詳細については、データ の節を参考 にして下さい。 |
|
これらのキーワードは、対応する IP オプションを IP ヘッダに追加すべき こ とを表します (このときヘッダ長フィールドは適切に調節されます)。 |
|
nop |
無動作 (No Operation) [RFC 791] (埋め草として使います)。 |
|
rr <number> |
|
経 路記録 (Record Router) [RFC 791]。与えられた番号は、情報を保 持するのに用いる領域の バイト 数を指定します。ちゃんと動作さ せ るには、この値は 4 の倍数に指定しておく必要があります。 |
|
zsu |
測定実験 (Experimental Measurement)。 |
|
mtup [RFC 1191]. |
|
最 大 転 送 単 位 (Maximum Transmission Unit, MTU) 探査 (MTU Probe)。 |
|
mtur [RFC 1191]. |
|
最大転送単位レディ (MTU Ready)。 |
|
encode |
||||
|
ts |
タイムスタンプ (Timestamp) [RFC 791]。 |
|||
|
tr |
経路追跡 (Traceroute) [RFC 1393]。 |
|
sec-class <security-level>, sec |
|
セキュリティ (Security) [RFC1108]。このオプションはパケットのセ キュリティレベルを指定します。 sec はセキュリティオプションの枠 組みを設定しますが、 sec-class を指定しないとレベルは設定されな いままとなります。 |
|
lsrr <ip-address> |
|
厳密でない始点経路制御 (Loose Source Route) [RFC 791]。 |
|
e-sec |
拡張セキュリティ (Extended Security) [RFC 1108]。 |
||
|
cipso |
商用セキュリティ (Commercial Security)。 |
||
|
satid |
ストリーム ID [RFC 791]。 |
|
ssrr <ip-address> |
|
厳密な始点経路制御 [RFC 791]。 |
|
addext |
アドレス拡張 (Address Extension)。 |
||
|
visa |
実験的アクセス制御 (Experimental Access Control)。 |
||
|
imitd |
IMI 流量記述子 (IMI Traffic Descriptor)。 |
||
|
eip |
[RFC 1358]。 |
||
|
finn |
実験的フロー制御 (Experimental Flow Control)。 |
|
sport <port> |
|
始点ポート番号を与えられた番号/名前で設定します。デフォルトは 0 です。 |
|
dport <port> |
|
終点ポート番号を与えられた番号/名前で設定します。デフォルトは 0 です。 |
|
seq <number> |
|
シーケンス番号を指定した数で設定します。デフォルトは 0 です。 |
|
ack <number> |
|
応答番号を指定した数で設定します。デフォルトは 0 です。 |
|
off <number> |
|
デー タ 先 頭からのオフセット値を指定した数で設定します。つまり TCP ヘッダの大きさを意味します。TCP オプションが含まれる場 合、 この値は自動的に修正されます。デフォルトは 5 です。 |
|
urp <number> |
|
緊 急データポインタの値を指定した数で設定します。デフォルトは 0 です。 |
|
win <number> |
|
TCP ウィンドウの大きさを指定した数で設定します。デフォ ル ト は 4096 です。 |
|
sum <number> |
|
TCP 疑似ヘッダとデータに対するチェックサムを手動で指定します。 特に設定しなければ、デフォルトの 0 になり、自動的に計算さ れ ま す。 |
|
flags <tcp-flags> |
|
指定したフラグに一致する TCP フラグフィールドが設定されます。有 効なフラグは、"S" (SYN), "A" (ACK), "R" (RST), "F" (FIN), "U" (URG), "P" (PUSH) です。 |
|
opt |
TCP オプションが後続することを示します。TCP オプションを TCP ヘッダに追加する際には、off フィールドが一致するように更 新 されます。 |
||
|
data |
これ以後がデータセクションであり、ヘッダの後ろに追加すべ き生データが含まれることを示します。 |
|
TCP ヘッダには、いくつかのヘッダオプションを追加することが可 能 で す。 ヘッ ダ の大きさが変わるにつれ TCP ヘッダオフセットは自動的に更新されま す。有効なオプションは、nop 無動作(No Operation), eol オプションリス ト の 終 り(End Of (option) List), mss [ size ] 最大セグメント長 (Maximum Segment Size - これはデータを含むパケットの受信可能な最大長を設定 し ま す), wscale ウィ ン ド ウ ス ケー ル(Window Scale), ts タイムスタン プ(Timestamp) です。 |
|
sport <port> |
|
始点ポート番号を与えられた番号/名前で設定します。デフォルトは 0 です。 |
|
dport <port> |
|
終点ポート番号を与えられた番号/名前で設定します。デフォルトは 0 です。 |
|
len <number> |
|
UDP ヘッダとデータの長さを手動で指定します。特に設定し な け れ ば、 今あるヘッダと今あるデータに合致するように自動的に修正され ます。 |
|
sum <number> |
|
UDP 疑似ヘッダとデータに対するチェックサムを手動で指定しま す。 特 に 設定しなければ、デフォルトの 0 になり、自動的に計算されま す。 |
|
data |
これ以後がデータセクションであり、ヘッダの後ろに追加す べ き生データが含まれることを示します。 |
|
type <icmptype> |
|
こ れは icmptype タグにしたがって ICMP タイプを設定します。これ は数値または認識されるタグのいずれかです (認識されるタグ名の 一 覧については、ICMP タイプ の節を参照のこと)。 |
|
code <icmpcode> |
|
ICMP コードを設定します。 |
|
data |
これ以後がデータセクションであり、ヘッダの後ろに追加すべ き生データが含まれることを示します。 |
|
以下に示すものは、それぞれ異なったやり方でパケットを拡張します。 len は ( 内 容 は 付加せずに) 単に長さを増やすだけです。value は文字列を使いま す。file はファイルを使います。 |
|
len <number> |
|
パケットの長さを number バイト拡張します (特定のデータで埋め る ことはしません)。 |
|
value <string> |
|
与 えられた文字列を今あるパケットのデータとして追加することを示 します。文字列は文字もしくは数値の連続したリスト (空白文字を は さみません)、もしくは "’ で区切られています (この場合、たとえ \ したとしても、これらの文字は含みません)。文字 \ は 後続の文 字( も しくは 8 進数)といっしょにして、C 言語のエスケープ値と解釈さ れます。 |
|
file <filename> |
|
指定したファイルからデータを読み込み、今あるパケットに追加し ま す。その結果の全長が 64k を越える場合、エラーとなります。 |
|
echorep |
|
エコー応答 (Echo Reply)。 |
|
unreach [ unreachable-code ] |
|
汎 用の到達不可能エラー。これは、ネットワークをまたいでパケット を伝送しようとしているうちにエラーが発生し、終点に到達できな い こ と を 示します。到達不可能コード(unreachable-code)の名前は、 net-unr ネットワーク到達不可能 (network unreachable), host-unr ホスト到達不可能 (host unreachable), proto-unr プロトコル到達不 可能 (protocol unreachable), port-unr ポート到達不 可 能 (port unreachable), needfrag, srcfail 始点経路制御失敗 (source route failed), net-unk ネットワーク不明 (network unknown), host-unk ホスト不明 (host unknown), isolate, net-prohib 管理上の理由によ りネットワーク接触禁止, host-prohib 管理上の理由によりホスト 接 触禁止, net-tos 指定した TOS でネットワーク到達不可能, host-tos 指定した TOS でホスト到達不可能, filter-prohib パケットフィルタ により禁止されたパケット, host-preced, cutoff-preced です。 |
|
squench |
|
始点抑制 (Source Quence)。 |
|
redir [ redirect-code ] |
|
( 経路の) 方向転換 (Redirect (routing))。パケットを送付するため に選択された経路が最適といえないので、パケットの送信側が他の 経 路 を経路指定すべきであることを表すために用います。方向転換コー ド (redirect-code) の名前は、 net-redir ネットワークに到達す る た め の 方 向 転換, host-redir ホストに到達するための方向転換, tos-net-redir 与えられた TOS でネットワークに到達するための方向 転 換, tos-host-redir 与えられた TOS でホストに到達するための方 向転換です。 |
|
echo |
エコー。 |
|
routerad |
|
ルータの公示 (Router advertisment)。 |
|
routersol |
|
ルータの請求 (Router solicitation)。 |
|
timex [ timexceed-code ] |
|
全体時間超過 (Time Exceeded)。道程が長過ぎて (つまり、ttl が 0 に なってしまい) パケットが終点に到達できなかったことを表すため に用います。有効なコードの名前は、intrans, reass 与えられた時間 内でフラグメントからパケットの再構成ができなかった、です。 |
|
paramprob [ paramprob-code ] |
|
パ ラメータの問題。パラメータ問題のコードの名前で利用できるもの はひとつだけで、optabsent です。 |
|
timest |
タイムスタンプ要求。 |
|
timestrep [ { timestamp-code } ] |
|
タイムスタンプ応答。タイムスタンプ応答の中で、以下の値を提供 す ることができます。rtime, otime, ttime。 |
|
inforeq |
|
情報要求。 |
|
inforep |
|
情報応答。 |
|
maskreq |
|
アドレスマスク要求。 |
|
maskrep |
|
アドレスマスク応答。 |
|
/etc/hosts |