(轉自:https://blog.csdn.net/kv110/article/details/47919913)
ebtables是與iptables類似的命令, 區別在於ebtables用於對以太網幀的過濾,iptables用於對ip數據包的過濾。
過濾流程見圖
1. 命令格式
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
2. table
filter: 默認表,處理幀的過濾的表。沒有-t就指filter表
nat: 用於改變Mac地址的表(network address translation)
broute: 用於決定是route還是bridge的表。
3. Chain Rule的集合,通常跟幀流向有關
默認的Chain:
filter: INPUT (接收的幀), OUTPUT(發出去的幀), FORWARD(要轉發的幀)
nat: PREROUTING(幀進來前處理,filter的INPUT之前), POSTROUTING(幀發出去時處理,OUTPUT之後), OUTPUT(要發出去的幀)
broute:只有一個BROUTING, 這個處理比較早。 只有兩個targets.一個是DROP(要路由), 另一個是ACCEPT(要橋接)。
4. 命令
4.1 Chain命令
-N, --new-chain 新建chain
-X, --delete-chain 刪除chain
-E, --rename-chain 重命名chain
-P, --policy 設置chain的default規則。如默認是ACCEPT, DROP 或RETURN.
-F, --flush 清空chain的規則
-Z, --zero 設置chain的counters爲0. 如沒有指定chain, 則所有chains的counter都置爲0
-L, --list 列出chain的規則(rules), 如沒有指定chain, 則指有chains.
4.2 rule命令
-A, --append 新加指定chain的一條rule在後面
-D, --delete 刪除指定chain的一條rule
-I, --insert 插入指定chain的一條rule
-C, --change-counters 改變指定chain的rule的counters
4.3 table命令
--init-table 用init_table數據替換當前table的數據
--atomic-init 拷貝kernel的table的init data到指定文件
--atomic-save 拷貝kernel的table的當前data到指定文件
--atomic-commit 用指定文件的數據替換當前的kernel table數據
4.4 其他命令
-V, --version 顯示版本信息
-h, --help
-j, --jump target target指ACCEPT, DROP, CONTINUE, RETURN。
--atomic-file file command來源於一個指定文件
-M, --modprobe program 如果某個module沒有load, 則在kernel裏load
--concurrent 在update kernel表時使用文件鎖來進行並行操作
5. target 指的是要做什麼操作。
通常指ACCEPT(接受,允許通過, BROUTE指bridge), DROP(不允許通過,放棄, BROUTE指route), CONTINUE(繼續下一個檢查), RETURN(這個檢查停止,進行上一個檢查調用的地方進行下一個檢查)。
target也可以用一個表達式,也可以是自定義的chain.
6. 規則匹配
-p, --protocol [!] protocol 協議匹配
-i, --in-interface [!] name 輸入接口匹配
-o, --out-interface [!] name 輸出接口匹配
--logical-in [!] name 邏輯輸入bridge接口
--logical-out [!] name 邏輯輸出bridge接口
-s, --source [!] address[/mask] 源地址(MAC)
-d, --destination [!] address[/mask] 目的地址(MAC)
-c, --set-counter pcnt bcnt
更多匹配規則詳見http://ebtables.netfilter.org/misc/ebtables-man.html
參考文檔
http://ebtables.netfilter.org/misc/ebtables-man.html