ebtables介绍



ebtables是与iptables类似的命令, 区别在于ebtables用于对以太网帧的过滤,iptables用于对ip数据包的过滤。

过滤流程见图



(原图来源于 http://blog.csdn.net/wuruixn/article/details/8107862)

图片不太清晰, 我分成两部分





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

http://blog.csdn.net/wuruixn/article/details/8107862
external/ebtables/docs/how_it_works.html

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值