ebtables和iptables类似,都是linux系统下网络数据包过滤的配置工具。
为什么叫配置工具呢?
是因为他们只制定规则,具体的实施者是内核!也就是说过滤功能是由内核底层提供支持的,这两个工具只是负责制定过滤的rules。
ebtables就是以太网桥防火墙,以太网桥工作在数据链路层,ebtables主要用来过滤数据链路层数据包。
ebtables 能过滤桥接流量。
ps : ebtables的主要工作的就是过滤,同iptables,ebtables也有多个过滤节点,通过过滤节点来说明工作原理
1. 过滤时机
数据包从进入到离开系统,要经过preroute,input,forward,postroute,output这五个阶段。每个阶段中包括了一些节点,每个节点就是一个过滤时机。当数据包行进到某个节点时,系统就是检测对应节点的过滤规则并进行过滤。
2、使用方法
ps : 主要讲解过滤原理与配置
规则也叫目标(targets)
每个链中有一系列规则,每个规则定义了一些过滤选项。每个数据包都会匹配这些项,一但匹配成功就会执行对应的动作。
所谓动作,就是过滤的行为了。有四种,accept,drop,return和continue。
详解一下:
当帧匹配一个规则(rule)时,下一个动作(action)由target指定。
targets由四个:
- accept:意味着让一个帧通过
- drop:意味着帧已经被dropped。注意:在brouting chain中,1、2有特殊的意思
- continue:意味着下一个规则(rule)将被检查
- return:意味着停止遍历此链,并在前一个调用链的下一条规则中恢复。其实就是退出,和代码中的
continue差不多,这里就是退出在此链继续遍历,直接进行后续操作 (详见下文使用场景中的ruturn使用)
ps:这里主要是对andi设备使用ebtables的场景进行分析,以便于能更清晰明了的理解过滤的概念
详细分析:
- -p:指明使用的协议类型
- --vlan-encap 0806 带vlan的arp
vlan tag中的一个字段,ieee 802.1q协议规定该字段的取值为0x8100
0806:0806指的是后面的数据是属于arp包的所以上述命令的意思就是:
- 允许带vlan的qrp包通过
- 允许arp包通过
详细分析:
上述指令就是将sat0出的且标记不为0x1的报文转到自建链sense_bus_chain中处理
-o:指明从那片网卡出去
注意:这也就是我们前面提到的自定义的链也是挂接在对应的内置链内,此处自建链“sense_bus_chain”就挂载内置链postrouting中。
详细分析:
说明:报文从postrouting链转到自建链处理,先阅读一下指令
- ip协议的报文执行return
- 带vlan的ip协议执行return
- 执行return
分析:3个retrun 一眼看过去,毫无意义。所有报文即使不走前两个也会在第三个return。为什么要这么做呢?这里主要是为了计数区分ip和非ip报文
附:以太网帧结构的type字段为:0x0800, 表示该帧是ip协议
ebtables使用规则如下:
ebtables [-t table] -[adi] chain rule-specification [match-extensions] [watcher-extensions]
-t table :一般为forward链。
-adi:a添加到现有链的末尾;d删除规则链(必须指明规则链号);i插入新的规则链(必须指明规则链号)。
-p:规则表的默认规则的设置。可以drop,accept,return。
-f:对所有的规则表的规则链清空。
-l:指明规则表。可加参数,--lc,--ln
-p:指明使用的协议类型,ipv4,arp等可选(使用时必选)详情见/etc/ethertypes
--ip-proto:ip包的类型,1为icmp包,6为tcp包,17为udp包,在/etc/protocols下有详细说明
--ip-src:ip包的源地址
--ip-dst:ip包的目的地址
--ip-sport:ip包的源端口
--ip-dport:ip包的目的端口
-i:指明从那片网卡进入
-o:指明从那片网卡出去
ebtables基本命令
有了上面的简单介绍,再熟悉一些基本命令就可以使用了。
1. 列表:
ebtables -l
ebtables -l –lc , 查看各rule的匹配次数以及字节数
2. 新建/删除链
ebtables -n
ebtables -x
3. 新建规则
ebtables -a
[rules]有几种
-s 源mac -d 目标mac -i 入接口 -o 出接口
命令示例:
ebtables -p forward accept
ebtables -p input accept
ebtables -p output accept
ebtables -f
ebtables -a forward -p ipv4 -i eth0/eth1 --ip-proto (6/17) --ip-dst(目的ip) --ip-dport(目的端口) -j drop
ebtables -a fprward -p ipv4 -i eth0/eth1 --ip-proto (7/17) --ip-src(源ip) --ip-sport(源端口) -j drop参考:
如对本文有疑问, 点击进行留言回复!!
linux下文本编辑器vim的使用方法(复制、粘贴、替换、行号、撤销、多文件操作)
网友评论