名前
ebtables-legacy (2.0.11@) - Ethernet bridge frame table
の管理 (legacy)
書式
ebtables [-t table ] -[ACDI] chain
rule specification [match extensions] [watcher extensions] target
ebtables [-t table ] -P chain ACCEPT | DROP
| RETURN
ebtables [-t table ] -F [chain]
ebtables [-t table ] -Z [chain]
ebtables [-t table ] -L [-Z] [chain] [
[--Ln] | [--Lx] ] [--Lc] [--Lmac2]
ebtables [-t table ] -N chain [-P ACCEPT | DROP
| RETURN]
ebtables [-t table ] -X [chain]
ebtables [-t table ] -E old-chain-name new-chain-name
ebtables [-t table ] --init-table
ebtables [-t table ] [--atomic-file file]
--atomic-commit
ebtables [-t table ] [--atomic-file file]
--atomic-init
ebtables [-t table ] [--atomic-file file]
--atomic-save
This tool uses the old xtables/setsockopt framework, and is a
legacy version of ebtables. That means that a new, more modern tool exists
with the same functionality using the nf_tables framework and you are
encouraged to migrate now. The new binaries (known as ebtables-nft and
formerly known as ebtables-compat) uses the same syntax and semantics than
this legacy one.
You can still use this legacy tool. You should probably get some
specific information from your Linux distribution or vendor. More docs are
available at https://wiki.nftables.org
説明
ebtables は (Linux
カーネル内にある) Ethernet
フレームの検査ルールを設定管理するプロ
グラムである。 iptables
に類似しているが、
Ethernet プロトコルは IP
プロトコルよりもずっと単純な
ので、
それほど込み入ってはいない。
チェイン
Linux カーネルには 3
つの ebtables
テーブルがあり、各テーブルには
組み込みチェインがある。
これらのテーブルを使って、機能ごとに別々のルールセットに分類されている。
それぞれのルールセットのことをチェインと呼んでいる。
チェインとは Ethernet
フレームにマッチングする順序付きのルールのリスト
である。
あるルールが Ethernet
フレームにマッチングすると、処理の指定により
その対象フレームにどういった処理を施すかが決まる。
処理の指定は「ターゲット」と呼ばれている。現在のルールにマッチングしな
かった場合は、
次のルールが検査される。「ターゲット」として、
(ユーザ独自の)
新しいチェ
インを作ることもできる。
ユーザ定義チェインを使うと、ルールを線形検索するのと比べてパフォーマンス
を改善したり、
管理しやすい構造化されたフィルタリングルールを構成したりできる。
ターゲット
Ethernet
フレームに対するファイアウォールルール指定や処理は、ターゲット
と呼ばれる。
フレームがルールにマッチングしたときにカーネルが次に行う処理は、ターゲッ
トで指定される。
ターゲットは次のいずれかの値をとる:
ACCEPT, DROP, CONTINUE, RETURN,
'extension' の 1 つ (後述)
あるいはユーザ定義チェインへのジャンプ。
ACCEPT
はフレームを通過させることを意味する。
DROP
はフレームを破棄することを意味する。
BROUTING
チェイン内では、
ACCEPT と DROP
は異なる意味を持つ
(-t
オプションで表示される情報を参照すること)
。 CONTINUE
は次のルールをチェックすることを意味する。このターゲットは、例えば、
ある地点を通過したフレームの数を数えたり、ログを取ったり、
フレームに複数のターゲットを適用するのに便利である。
RETURN
はそのチェインの探索を打ち切り、前の
(呼び出し元の)
チェインの次のルールから
再開することを意味する。
target extension
については、この man
ページの TARGET EXTENSION
セクションを参照すること。
テーブル
前述のとおり Linux
カーネルには 3 つの ebtables
テーブルがある。
filter, nat, broute
という名前がついている。これら
3
つのテーブルのうち、filter
テーブルがコマンドのデフォルトのテーブルである。つまり
filter
テーブルについては
ebtables の '-t filter'
引数を省略できる。その他
2 つ
のテーブルについては
-t
引数が必要である。また
-t 引数を使う際は、 ebtables
コマンドの最初の
引数でなければならない。
- -t, --table
-
filter
がデフォルトのテーブルで、3
つの組み込みチェインがある:
INPUT (送信先 MAC
アドレスのレベルでブリッジ自身に送られたフレームに対してマッチする),
OUTPUT (local
で生成された、あるいは
(b)route
されたフレームに対してマッチする)
と FORWARD
(ブリッジで転送されるフレームに対してマッチする)
である。
nat は MAC
アドレスを変更するために使われるもので、3
つの組み込みチェインが
ある。 PREROUTING
(フレームが入ってきた時点で変更するため),
OUTPUT (local
で生成された、あるいは
(b)route
されたフレームをブリッジする前に
変更するため) と
POSTROUTING
(フレームが出力される時点で変更するため)
である。PREROUTING と POSTROUTING
の名称については、より正確には
PREFORWARDING, POSTFORWARDING と呼ばれる
べきものだが、 iptables と
ebtables
の用語を合わせたほうが簡単だということで、このよう
になっている。
もしこのデフォルトの名称が気に入らない場合は、
(-E オプションで)
変更できる。
broute で brouter
を作ることができて、このテーブルには
BROUTING
という組み込みチェインが
1 つだけある。 DROP と
ACCEPT ターゲットは broute
テーブル内では特殊な意味を持っている
(実装を単純化す
るために、
説明的な名称をあえて使っていない)
。 DROP はフレームが
route
されることを意味し、
ACCEPT
はフレームがブリッジされることを意味する。
BROUTING
チェインは、とても早い段階で検査される。
ただしブリッジポートに入ってきて転送状態になっているフレームについてのみ
検査される。
通常これらのフレームはブリッジされるが、ここでその処理を変更できる。
redirect
ターゲットが便利だ。
最初の '-t table'
コマンド引数の後に続く引数は、いくつかのグループに分類できる。
「コマンド」「その他コマンド」「ルール指定
(rule specification) 」 「match extension」「watch
extension」と「target
extension」である。
コマンド
ebtables コマンドは -t
引数で定義されたテーブルに対して行う処理を指定する。
-t
引数を使わなかった場合、デフォルトの
filter
テーブルに適用される。
一度には 1
つのコマンドしか使えない。
-L と -Z
の組み合わせ、 -N と
-P
の組み合わせ、あるいは
--atomic-file
を使ったときは例外として複数のコマンドを使える。
- -A, --append
- チェインの最後にルールを追加する。
- -D, --delete
- チェインから指定したルールを削除する。二通りの使い方がある。一つ目の使い
方は、ルール番号の範囲を
(-D 直後に)
指定する方法である。構文:
start_nr[:end_nr] (-L --Ln
を使ってルール番号を表示できる)
end_nr
が省略された場合
は、start_nr
以降のルールすべてが削除される。負の数も使えるが、詳細は
-I
引数を参照すること。二つ目の使い方は、追加時と全く同じ完全なルールを使っ
て指定する方法である。
合致するルールのうち、一番最初に見つかったもの、つまり最も小さな
(正の)
ルール番号のもののみが削除される。
- -C,
--change-counters
- チェイン内の指定したルールのカウンタを変更する。二通りの使い方がある。一つ目
はルール番号の範囲を使って
(-C 直後に)
指定する方法である。
構文: start_nr[:end_nr] (-L --Ln
を使ってルール番号を表示できる)
詳細は -D
と同様である。二つ目の使い方は、追加時と全く同じ完全なルールを使って指定
する方法である。
合致するルールのうち、一番最初に見つかったもの、つまり最も小さな
(正の)
ルール番号のカウンタのみが変更される。
カウンタ値は、一つ目の方法ではルール番号の範囲の直後に指定し、二つ目の方法では
-C
の直後に指定する。最初にパケットカウンタ値を指定し、次にバイトカウンタ値
を指定する。
カウンタ値が '+'
で始まっている場合、カウンタ値は現在値にそれぞれ追加し
た値になる。
カウンタ値が '-'
で始まる場合は、現在値から差し引いた値になる。境界値の
検査は行われない。
'+' や '-'
で始まらなかった場合は、指定した値そのものに変更される。
- -I, --insert
- 指定したルール番号の位置にルールを追加する。ルール番号が未指定の場合、
チェインの先頭に追加される。ルールが
N 個あった場合、
-N から N+1
の間の数を指定できる。正の数
i があったとして、
i と i-N-1
はチェイン上での同じ挿入位置となる。ルール番号
0
はチェインの最後のルー
ルを示し、 -A
コマンドを使ったときと同じになる。0
より小さいルール番号は複数のルールを
一つのチェインに挿入する際に便利である。
- -P, --policy
- チェインのポリシーを、指定したターゲットに設定する。ポリシーは
ACCEPT, DROP, RETURN
のいずれかである。
- -F, --flush
- 指定したチェインを
flush
する。チェイン指定がない場合、全てのチェインが
flush される。 flush
ではチェインのポリシーは変更されない。
- -Z, --zero
- 指定したチェインのカウンタを
0
にする。チェイン指定がない場合、全ての
チェインでのカウンタが
0 になる。 -Z
コマンドは -L
と組み合わせて使える。
-Z と -L
を同時に使うと、0
にされる前のカウンタ値が出力される。
- -L, --list
- 指定したチェインにあるルールリストを出力する。チェイン指定がない場合、
全てのチェインについてリストが出力される。
-L
コマンドの出力形式には次のオプションがある。
--Ln
全てのルールの行頭にルール番号を出力する。
--Lx
とは組み合わせられない。
--Lc
全てのルールの行末にルール番号を出力する。フレームカウンタ値
(pcnt) とバ
イトカウンタ値 (bcnt)
の両方が表示される。フレームカウンタ値は、そのルールにマッチングした回数
を示していて、
バイトカウンタ値はこれらのフレームのサイズを合計した値となる。
--Lx
オプションと組み合わせると、カウンタ値は
-c <pcnt> <bcnt>
の形式で出力される。
--Lx
チェインの内容を再構築できるような
ebtables
コマンドの形式で出力する。
チェイン指定がない場合、
(もしあれば)
ユーザ定義のチェインを作成するコマンドも含めて、
テーブル全体を構築できる
ebtables
コマンドが出力される。
このコマンドを使って
ebtables
の起動・再起動スクリプトを作成できる。
例えばこのコマンドの出力をシステム起動時に使える。
--Lx オプションは --Ln
オプションと互換性がない。
--Lx を --Lc
と同時に使うと、カウンタが
-c <pcnt> <bcnt>
の形式で出力される。
--Lmac2
必要に応じてアドレス先頭に
0 パディングして、全
MAC
アドレスを同じ長さで表示する。
デフォルトの表示形式では、アドレス先頭の
0 は省略される。
- -N, --new-chain
- 指定した名前の新しいユーザ定義チェインを作る。ユーザ定義チェインの個数の
上限は、
作り得る名前の数に限られる。ユーザ定義のチェイン名は
31 文字までである。
ユーザ定義チェインのデフォルトのポリシーは
ACCEPT である。 -P
コマンドを -N
コマンドと同時に使うことで新規チェインのポリシーを標準のターゲットと異な
るもので初期化できる。
この場合 -P
コマンドにチェイン名の指定は不要である。
- -X, --delete-chain
- ユーザ定義チェインを削除する。対象チェインを参照している
(jump してくる)
ものが残っていてはいけない。
残っていると ebtables
は削除を拒否する。
チェイン指定がない場合、参照されていない全てのユーザ定義チェインが削除される。
- -E, --rename-chain
- 指定したチェインを新しい名前に変更する。ユーザ定義チェインの名前を変更で
きるのはもちろんのこと、
標準チェインの名前を好きなものに変更することもできる。例えば
PREROUTING ではなく PREFORWARDING
にしたい場合、-E
コマンドで PREROUTING
チェインの名前を変更できる。
標準チェインの名前を変更していたら、ebtables
メーリングリストに投稿する際には、
そのことについて言及すること。この
ebtables
標準チェインの名称変更では、
カーネル ebtables
テーブルの構造は影響を受けない。
- --init-table
- 現在のテーブルデータを初期テーブルデータで置き換える。
- --atomic-init
- テーブルのカーネルの初期データを指定したファイルにコピーする。
ルールがファイルに追加された後の最初の処理にできる。ファイル名は
--atomic-file
コマンドを使った指定か、あるいは
EBTABLES_ATOMIC_FILE
環境変数で指定できる。
- --atomic-save
- カーネルの現在のテーブルデータを指定したファイルにコピーする。
ルールがファイルに追加された後の最初の処理にできる。ファイル名は
--atomic-file
コマンドを使った指定か、あるいは
EBTABLES_ATOMIC_FILE
環境変数で指定できる。
- --atomic-commit
- カーネルテーブルデータを指定したファイルにあるデータで置き換える。ある
テーブルの全ルールを
カーネルに一度にロードし、カーネル時間を大幅に節約しつつもアトミックなテー
ブルの更新を行うことができるので、
便利なコマンドである。テーブルデータが入っているファイルは
--atomic-init や --atomic-save
コマンドで出力した起動ファイルで構成する。その後
--atomic-file
コマンドでルールを構成したり
EBTABLES_ATOMIC_FILE
環境変数を使うことで、ファイルを拡張したりして完全なテーブルを組み上げた
後にカーネルに登録できる。
このコマンドは boot
スクリプトで ebtables
を高速に組み上げるのに大変便利である。
その他コマンド
- -V, --version
- ebtables
ユーザスペースプログラムのバージョンを表示する。
- -h, --help [list of
module names]
- コマンドの構文についての簡単な説明を出力する。extension
の名前を指定する
こともできて、そうすると
ebtables はこれらの extension
のヘルプを表示する。例えば
ebtables -h snat log ip arp である。
list_extensions
と指定すると、ユーザスペースユーティリティでサポートされている全
extension を出力する。
- -j, --jump
target
- ルールのターゲットである。これは次のいずれかの値をとる:
ACCEPT, DROP, CONTINUE, RETURN, target
extension (TARGET EXTENSION
を参照すること)
あるいはユーザ定義チェイン名。
- --atomic-file
file
- 指定したファイルに対してコマンドを実行する。
操作対象のテーブルのデータはファイルから読み取って構築し、操作した結果は
再びファイルに書き戻される。
指定する際はコマンド指定の前に置くべきである。他のやり方としては、
EBTABLES_ATOMIC_FILE
環境変数を使う方法がある。
- -M, --modprobe
program
- カーネルとやり取りする際に、指定した
program
がロードされていないカーネルモジュールを自動的にロードするようにする。
- --concurrent
- ebtables
カーネルテーブルを更新するスクリプトが同時に複数実行されても
大丈夫なように、ファイルロックを使用する。
ルール指定
ルール指定は次のコマンドライン引数で
(追加、削除のコマンドで使うことで)
構築される。 "!"
オプションを指定の前につけると、その否定の意味になる。
下記の標準ルール指定の他にもいくつか興味深い引数がある。
MATCH EXTENSION と WATCHER EXTENSION
を参照すること。
- -p, --protocol [!]
protocol
- フレームを構成しているプロトコル。
0x0600 より大きい hex
の数値か、名前
(例えば ARP)、 LENGTH
を指定できる。(802.2/802.3ネットワークにおいては)
Ethernet フレームのプ
ロトコルフィールドは、
ヘッダの長さを表すこともできる。値が
0x0600
より小さいか等しいときは、その値はヘッダサイズと等しく、プロトコル番号と
して扱ってはいけない。
そのかわり、プロトコルフィールドが長さフィールドとして使われている全ての
フレームは、同じ
'protocol'
として扱われる。 ebtables
では、これらのフレームのプロトコルを表す名前は
LENGTH である。
/etc/ethertypes
を使って、プロトコルを指定する
hex
数値の代わりに可読な文字列を
指定することができる。例えば
0x0800 は IPV4
で表現できる。このファイルでは大文字小文字は区別されない。
詳細はファイルを参照すること。
--proto
フラグはこのオプションのエイリアスである。
- -i, --in-interface [!]
name
- フレームを受信したインターフェース
(ブリッジポート)
を指定する
(このオプションは
INPUT, FORWARD, PREROUTING , BROUTING
チェインで有効)
。インターフェース名が
'+'
で終わっている場合、
その名前で始まる ('+'
自体は除く)
インターフェース名全てがマッチングする。
--in-if
はこのオプションのエイリアスである。
- --logical-in
[!] name
- will match.
フレームを受信した
(論理的な)
ブリッジインターフェースを指定する
(このオプションは
INPUT, FORWARD, PREROUTING, BROUTING
チェインで有効)
。インターフェース名が
'+'
で終わっている場合、
その名前で始まる ('+'
自体は除く)
インターフェース名全てがマッチングする。
- -o, --out-interface [!]
name
- フレームが送出されるインターフェース
(ブリッジポート)
を指定する
(このオプションは
OUTPUT, FORWARD, POSTROUTING
チェインで有効)
。インターフェース名が
'+'
で終わっている場合、
その名前で始まる ('+'
自体は除く)
インターフェース名全てがマッチングする。
--out-if
はこのオプションのエイリアスである。
- --logical-out
[!] name
- フレームが送出される
(論理的な)
ブリッジインターフェースを指定する
(このオプションは
OUTPUT, FORWARD, POSTROUTING
チェインで有効)
。インターフェース名が
'+'
で終わっている場合、
その名前で始まる ('+'
自体は除く)
インターフェース名全てがマッチングする。
- -s, --source [!]
address[/mask]
- 送信元 MAC
アドレス。マスクとアドレスの両方とも
hex 数値 6 つをコロン区
切りで記述する。あるいは
Unicast, Multicast, Broadcast, BGA (Bridge Group Address)
も指定できる:
Unicast=00:00:00:00:00:00/01:00:00:00:00:00,
Multicast=01:00:00:00:00:00/01:00:00:00:00:00,
Broadcast=ff:ff:ff:ff:ff:ff/ff:ff:ff:ff:ff:ff,
BGA=01:80:c2:00:00:00/ff:ff:ff:ff:ff:ff
である。ブロードキャストアドレスはマルチキャストアドレスにも
マッチングする点に注意すること。
--src
はこのオプションのエイリアスである。
- -d, --destination [!]
address[/mask]
- 送信先 MAC アドレス。MAC
アドレスの詳細については
-s
オプションを参照すること。
--dst
フラグはこのオプションのエイリアスである。
- -c, --set-counter pcnt
bcnt
- -A や -I
と組み合わせた場合、新しいルールの
pcnt, bcnt
それぞれが指定した値になる。
-C や -D
コマンドと組み合わせた場合、
pcnt と bcnt
がパケットカウント値とバイトカウント値と等しいルールのみがマッチングする。
ebtables extension
はユーザスペースツールに動的に組み込まれる。iptables
コマンドで -m
オプションを使っていた時のように、明示的にロードする必要はない。
これらの extension は、ebtables core
コードを補足するものとして、
カーネルモジュールでサポートされている機能を扱っている。
802.3 DSAP/SSAP
フィールドあるいは
SNAP
タイプを指定する。プロトコルは
LENGTH
として指定されていなければならない
(上記 -p
オプションを参照)
。
- --802_3-sap [!] sap
- DSAP と SSAP は 802.3 中の 2 つの 1
バイトフィールドである。これらのバイ
トは常に同じなので、
1 バイト (hex 数値で)
の指定のみ必要である。
- --802_3-type [!] type
- 802.3 DSAP と SSAP の値が 0xaa
の場合、SNAP
タイプフィールドがペイロード
プロトコルを決定する。
これは 2 つの 1
バイト引数である (hex
数値で) 。802.3 DSAP/SSAP 0xaa フ
レームのみが検査される。
MAC
アドレスあるいは MAC/IP
アドレスの組に対して、
MAC アドレスあるいは MAC/IP
アドレスの組のリストをマッチングさせる。
リストのエントリは
xx:xx:xx:xx:xx:xx[=ip.ip.ip.ip][,]
の書式で指定する。
リストのエントリはコンマで区切る。
IP アドレスを MAC
アドレスと組み合わせるのはオプションである。
同一 MAC アドレスで IP
アドレスが異なるという複数の
MAC/IP
アドレスの組を登録
しても構わない。 MAC
アドレスがリストのどのエントリともマッチングしなかった場合、
フレームはそのルールにマッチングしなかったことになる
("!"
が使われていない場合)
。
- --among-dst
[!] list
- 送信先 MAC
とリストを比較する。もし
Ethernet フレームが IPv4
あるいは ARP
であれば、リスト中にある送信先
MAC/IP
アドレスペアとの比較も可能である。
- --among-src
[!] list
- 送信元 MAC
とリストを比較する。もし
Ethernet フレームが IPv4
あるいは ARP
であれば、リストにある送信元
MAC/IP
アドレスペアとの比較も可能である。
- --among-dst-file
[!] file
- --among-dst
と同様だが、指定したファイルからリストを読み込む。
- --among-src-file
[!] file
- --among-src
と同様だが、指定したファイルからリストを読み込む。
IPv4
フィールドを指定する。プロトコルは
IPv4
でなければならない。
- --ip-source
[!] address[/mask]
- 送信元 IP アドレス。
--ip-src
フラグはこのオプションのエイリアスである。
- --ip-destination
[!] address[/mask]
- --ip-dst 送信先 IP
アドレス。 --ip-dst
フラグはこのオプションのエイリアスである。
- --ip-tos [!]
tos
- IP
サービスタイプを、hex
表記の数値で。 IPv4
のものである。
- --ip-protocol
[!] protocol
- IP プロトコル。 --ip-proto
フラグはこのオプションのエイリアスである。
- --ip-source-port
[!] port1[:port2]
- IP プロトコル 6 (TCP), 17 (UDP), 33 (DCCP),
132 (SCTP)
における、送信元
ポートあるいはポートの範囲。
--ip-protocol オプションで
TCP, UDP, DCCP, SCTP
のいずれかが指定されていなければならない。
port1
が省略された場合は
0:port2 が使われる。
port2
が省略されたがコロンが指定された場合は
port1:65535 が使われる。
--ip-sport
フラグはこのオプションのエイリアスである。
- --ip-destination-port
[!] port1[:port2]
- IP プロトコル 6 (TCP), 17 (UDP), 33 (DCCP),
132 (SCTP)
における、送信先
ポートあるいはポートの範囲。
--ip-protocol オプションで
TCP, UDP, DCCP, SCTP
のいずれかが指定されていなければならない。
port1
が省略された場合は
0:port2 が使われる。
port2
が省略されたがコロンが指定された場合は
port1:65535 が使われる。
--ip-dport
フラグはこのオプションのエイリアスである。
IPv6
のフィールドを指定する。プロトコルは
IPv6
でなければならない。
- --ip6-source
[!] address[/mask]
- 送信元 IPv6 アドレス。
--ipv6-src
フラグはこのオプションのエイリアスである。
- --ip6-destination
[!] address[/mask]
- 送信先 IPv6 アドレス。
--ipv6-dst
フラグはこのオプションのエイリアスである。
- --ip6-tclass
[!] tclass
- IPv6
トラフィッククラスを
hex 表記の数値で。
- --ip6-protocol
[!] protocol
- IP プロトコル。 --ip6-proto
フラグはこのオプションのエイリアスである。
- --ip6-source-port
[!] port1[:port2]
- IP プロトコル 6 (TCP), 17 (UDP), 33 (DCCP),
132 (SCTP)
における、送信元
ポートあるいはポートの範囲。
--ip6-protocol オプションで
TCP, UDP, DCCP, SCTP
のいずれかが指定されていなければならない。
port1
が省略された場合は
0:port2 が使われる。
port2
が省略されたがコロンが指定された場合は
port1:65535 が使われる。
--ip6-sport
はこのオプションのエイリアスである。
- --ip6-destination-port
[!] port1[:port2]
- IP プロトコル 6 (TCP), 17 (UDP), 33 (DCCP),
132 (SCTP)
における、送信先
ポートあるいはポートの範囲。
--ip6-protocol オプションで
TCP, UDP, DCCP, SCTP
のいずれかが指定されていなければならない。
port1
が省略された場合は
0:port2 が使われる。
port2
が省略されたがコロンが指定された場合は
port1:65535 が使われる。
--ip6-sport
フラグはこのオプションのエイリアスである。
- --ip6-icmp-type
[!]
- {type[:type]/code[:code]|typename}"
マッチングさせる ipv6-icmp
タイプとコード。タイプとコードのどちらも範囲
指定できる。
タイプとコードはスラッシュで区切る。
タイプとコードとして有効な数値は
0 から 255
の範囲である。
あるタイプのすべてのコードにマッチングさせるには、数値の代わりにシンボル
名を使って指定することもできる。
既知のタイプ名については次のコマンドでリストが表示される。
ebtables --help ip6
このオプションは
--ip6-protocol ipv6-icmp
についてのみ有効である。
このモジュールは
token bucket
フィルタを使って、マッチングにレートリミッ
トを付ける。この extension
を使っているルールは、リミットに到達するまではマッチングする。
例えば --log watcher
と組み合わせて使うと、レートリミットのついたロギングを行うことが
できる。 iptables における
limit
マッチングと同様に使える。
- --limit [value]
- マッチングレート最大平均値:
数値指定で、 /second,
/minute, /hour, day
サフィックスを付けることができる;
デフォルト値は 3/hour
である。
- --limit-burst
[number]
- マッチングする初期パケット最大値:
上記のリミットに到達しなかった場合、
毎回指定した数値までリチャージされる;
デフォルト値は 5
である。
- --mark [!] [value][/mask]
- 符号なし数値の mark
でフレームにマッチングする。
value と mask
が指定されている場合、フレームの
mark 値とユーザ指定の
mask 値の論理和 (AND)
が計算されてから、ユーザ指定の
mark value
値と比較される。
value
のみが指定された場合、ユーザ指定の
mark value と同一の値の mark
を持ったパケットのみがマッチングする。
mask
のみが指定された場合、フレームの
mark 値とユーザ指定の
mask 値の論理和 (AND)
が計算され、結果が非
0
であるフレームがマッチングする。
mask
のみ指定する方法は、複数の
mark
値とマッチングさせるのに便利である。
- --pkttype-type
[!] type
- フレームの Ethernet "class"
にマッチングし、これは一般的なネットワーク
コードによって決まる。取りうる値は、
broadcast (送信先 MAC
アドレスがブロードキャストアドレス),
multicast (送信先 MAC
アドレスがマルチキャストアドレス),
host (送信先 MAC
アドレスが受信ネットワークデバイス),
otehrhost (それ以外)
のいずれかである。
This module matches on a given string using some pattern matching
strategy.
- --string-algo
algorithm
- The pattern matching strategy. (bm = Boyer-Moore, kmp =
Knuth-Pratt-Morris)
- --string-from
offset
- The lowest offset from which a match can start. (default: 0)
- --string-to
offset
- The highest offset from which a match can start. (default: size of
frame)
- --string [!] pattern
- Matches the given pattern.
- --string-hex
[!] pattern
- Matches the given pattern in hex notation, e.g. '|0D 0A|', '|0D0A|',
'www|09|netfilter|03|org|00|'
- --string-icase
- Ignore case when searching.
802.1Q
タグ制御情報フィールドを指定する。プロトコルは
802_1Q (0x8100)
でなければならない。
- --vlan-id [!]
id
- VLAN 識別子フィールド
(VID)。0 から 4095 の間の 10
進数の数字。
- --vlan-prio
[!] prio
- 優先度フィールドで、0
から 7 までの 10
進数の数字。VID は 0 ("null
VID")
か、無指定であるべきです
(後者の無指定の場合
VID は 0 であるとされる)
。
- --vlan-encap
[!] type
- 格納されている Ethernet
フレームの type/length
の値。0x0000 から 0xFFFF
の範囲の hex 数値か
/etc/ethertypes
にあるシンボル名で指定する。
watchers
は通過するフレームを観測するだけで、
フレームを変更したり許可するかどうかの判断を行ったりはしない。
これらの watcher
はフレームがルールにマッチングするかどうかを見るだけで、
それはターゲットが実行される前に行われる。
log watcher
はフレームの説明を
syslog に書き出す。
- --log
-
デフォルトの logging
オプションでロギングを行う:
log-leve= info , log-prefix="", ip
ログなし, arp
ログなし。
- --log-level
level
-
logging
レベルを定義する。取りうる値は
ebtables -h log
を参照すること。デフォルトのレベルは
info である。
- --log-prefix
text
-
ログ情報の行頭にプリントする
text
プレフィックスを定義する。
- --log-ip
-
ルールで ip
プロトコルにマッチングした際に生成されるフレームの
ip
情報をログする。デフォルトでは
ip
情報はログされない。
- --log-ip6
-
ルールで ipv6
プロトコルにマッチングした際に生成されるフレームの
ipv6
情報をログする。デフォルトでは
ipv6
情報はログされない。
- --log-arp
-
ルールで (r)arp
プロトコルマッチングした際に生成されるフレームの
(r)arp
情報をログする。デフォルトでは
(r)arp
情報はログされない。
nflog watcher
はパケットをログするためにロードされた
logging バックエン
ドにパケットを渡す。
これは通常 logging
バックエンド nfnetlink_log
との組み合わせで使用され、
これが netlink
ソケット経由でパケットを指定したマルチキャストグループにマルチキャストする。
1
つあるいは複数のユーザスペースプロセスがそのグループに参加してパケット
を受け取ることができる。
- --nflog
-
デフォルトの logging
オプションでログする。
- --nflog-group
nlgroup
-
パケットが送出先である
netlink グループ (1 から 2^32-1
の間) (nfnetlink_log
でのみ有効)。デフォルト値は
1。
- --nflog-prefix
prefix
-
ログメッセージに含まれるプレフィックス文字列で、最大
30 文字まで。
ログの中でメッセージを区別するのに便利。
- --nflog-range
size
-
ユーザスペースにコピーされるバイト数
(nfnetlink_log でのみ有効)。
nfnetlink_log
インスタンスでも範囲指定可能で、
このオプションはそれを上書きする。
- --nflog-threshold
size
-
ユーザスペースに送る前にカーネル内のキューイングするパケットの数
(nfnetlink_log でのみ有効)。
大きな数値にすると 1
パケットあたりのオーバーヘッドは小さくなるが、
ユーザスペースにパケットが届くまでの遅延は大きくなる。デフォルト値は
1。
ulog watcher は netlink
マルチキャストソケットを使ってユーザランド
logging
デーモンにパケットを渡す。
log watcher との違いは、
パケットの説明ではなくパケット全体がユーザスペースに送信されるという点と
syslog ではなく netlink
マルチキャストソケットが使われるという点である。
この watcher
ではユーザスペースのプログラムでパケットを解析することができ、
物理ブリッジの入出力ポートの情報も
netlink
メッセージに含まれている。
ulog watcher
モジュールは、(modprobe
などで) カーネルに
ロードされる際にパラメータを
2
つ受け取ることができる。
nlbufsiz で各 netlink
マルチキャストグループが持つバッファの大きさを指定できる。例えば
nlbufsiz=8192
では、ユーザスペースに送り出す前に
8kB
の数のパケットまでカーネル内に
溜めることができる。
128kB
より大きな値を設定することはできない。ここでのバッファサイズは
nlgroup そ
れぞれについて確保されるということにも注意。
つまり消費カーネルメモリはその倍数で増えていく。デフォルト値は
4096 である。 flushtimeout
で、キューが一杯にならなかった場合に、どれだけの間待ってから
flush するかを、 100 分の 1
秒刻みで指定する。デフォルト値は
10 である (0.1秒) 。
- --ulog
-
デフォルトの設定を使う:
ulog-prefix="", ulog-nlgroup=1, ulog-cprange=4096,
ulog-qthreshold=1
- --ulog-prefix
text
-
ユーザスペースに送られるパケットに含まれるプレフィックスを定義する。
- --ulog-nlgroup
group
-
どの netlink
グループ番号を使うかを定義する
(1 から 32 の間の数字) 。
iptables ULOG
ターゲットで使われている
netlink グループ番号と ebtables
ulog watcher
のものとは異なるものにすること。
デフォルトのグループ番号は
1 である。
- --ulog-cprange
range
-
ルールにマッチングしたパケットについて、ユーザスペースにコピーされる範囲
の最大値を定義する。
デフォルトの範囲は 0
で、これは nlbufsiz
で指定された範囲の最大値を意味する。128*1024
より大きな値を指定しても意
味はない。
なぜなら、ユーザスペースに送られるパケットサイズの上限は
128*1024 だからである。
- --ulog-qthreshold
threshold
-
netlink
ソケット経由でユーザスペースに送りだす前に
threshold
の数までパケットをキューイングする。
キューが埋まる以前であってもパケットは送出されることがあることに注意すること。
これは ulog
カーネルタイマが達した際に起こる
(このタイマの周期は
flushtimeout
により決まる)。
arpreply ターゲットは
nat テーブルの PREROUTING
チェインで使うことができる。ターゲットが
ARP
リクエストを発見すると、
自動的に ARP reply
を返す。reply に使う MAC
アドレスを指定することができる。プロトコルは
ARP
でなければならない。ARP
メッセージが ARP
リクエストではなかったり、ARP
リクエストが Ethernet
ネットワーク上の IP
アドレスに対するものではなかった場合、この
ターゲットでは無視される
(CONTINUE)。 ARP
リクエストが不正だった場合、破棄される
(DROP)。
- --arpreply-mac
address
- reply に返す MAC
アドレスを指定する。Ethernet
送信元 MAC アドレスと ARP
ペイロード中の送信元
MAC
アドレスの両方がこのアドレスになる。
- --arpreply-target
target
- 標準のターゲットを指定する。ARP
reply
を送信した後に、ebtables
がその ARP request
に対してさらに何を行うかを指定する。デフォルトのターゲットは
DROP である。
dnat は broute
テーブルの BROUTING
チェインと、 nat
テーブルの PREROUTING と
OUTPUT
チェインでのみ使える。送信先
MAC
アドレスを変更するときに指定する。
- --to-destination
address
-
送信先 MAC
アドレスを指定した
address に変更する。
--to-dst
フラグはこのオプションのエイリアスである。
- --dnat-target
target
-
標準のターゲットを指定する。dnat
を行った後に、ebtables
がその
フレームに対してさらに何を行うかを指定する。デフォルトのターゲットは
ACCEPT である。 CONTINUE
にすると、同一フレームに対して複数の
target extension を使える。 DROP
は BROUTING チェインで
redirect
ターゲットと使うときにのみ意味がある。
RETURN
を基本チェインで使うことはできない
(理由は明らかでしょう)。
mark
ターゲットはどのテーブルのどのチェインでも使える。bridge-nf
がカーネルに
組み込まれていれば
ebtables と iptables の両方で mark
できる。どちらも同じ場所に
mark を記 録するので、
ebtables と iptables
間の通信にもなる。
- --mark-set
value
-
フレームに非負数の
value を mark する。
- --mark-or
value
-
フレームに非負数の
value で OR
した値を記録する。
- --mark-and
value
-
フレームに非負数の
value で AND
した値を記録する。
- --mark-xor
value
-
フレームに非負数の
value で XOR
した値を記録する。
- --mark-target
target
-
標準のターゲットを指定する。mark
を行った後に、ebtables
がその
フレームに対してさらに何を行うかを指定する。デフォルトのターゲットは
ACCEPT である。 CONTINUE
にすると、後続のチェインのルールでフレームに対して何らかの他の処理ができる。
redirect
ターゲットは MAC
ターゲットアドレスをフレームが到達したブリッジデバイス
のものに変更する。
このターゲットは
broute テーブルの BROUTING
チェインと nat
テーブルの PREROUTING
チェインでのみ使える。
BROUTING
チェインではブリッジポートの
MAC
アドレスが送信先アドレスとして使われ、
PREROUTING
チェインではブリッジの
MAC
アドレスが使われる。
- --redirect-target
target
-
標準のターゲットを指定する。MAC
リダイレクトを行った後に、ebtables
がさ
らに何を行うかを指定する。
デフォルトのターゲットは
ACCEPT である。 CONTINUE
にすると、同一フレームに対して複数の
target extension を使える。 BROUTING
チェイン中で DROP
を使うと、そのフレームは
route される。 RETURN
も使うことができる。
RETURN
を基本チェインで使うことはできない。
snat ターゲットは
nat テーブルの POSTROUTING
でのみ使うことができる。送信元
MAC
アドレスを変更する際に使いる。
- --to-source
address
-
送信元 MAC
アドレスを指定した
address に変更する。
--to-src
フラグはこのオプションのエイリアスである。
- --snat-target
target
-
標準のターゲットを指定する。snat
を行った後に、ebtables
がさらに何を行う
かを指定する。
デフォルトのターゲットは
ACCEPT である。 CONTINUE
にすると、同一フレームに対して複数の
target extension を使える。 DROP
は
意味をなさないが、実行することはできる。
RETURN も使える。 RETURN
を基本チェインで使うことはできない。
- --snat-arp
-
パケットが arp
メッセージであり、かつ、arp
ヘッダ中のハードウェアアドレ
スの長さが 6
バイトであった場合に、arp
ヘッダ中のハードウェア送信元アドレスも変
更する。
ファイル
/etc/ethertypes /var/lib/ebtables/lock
環境変数
EBTABLES_ATOMIC_FILE
メーリングリスト
http://netfilter.org/mailinglists.html 参照