浅析ebtables的概念和一些基本应用

摘要:
与iptables一样,ebtable也是Linux系统中用于网络数据包过滤的配置工具。Ebtables是以太网桥防火墙。以太网网桥在数据链路层工作。ebtable主要用于在数据链路层过滤数据包。Ebtables可以过滤桥接流量。有四个目标:ACCEPT:这意味着一个帧通过DROP;这意味着帧已被丢弃。

一、ebtables 是什么?

  ebtables和iptables类似,都是Linux系统下网络数据包过滤的配置工具。
为什么叫配置工具呢?

  是因为他们只制定规则,具体的实施者是内核!也就是说过滤功能是由内核底层提供支持的,这两个工具只是负责制定过滤的rules

二、ebtables 的用途?

 ebtables就是以太网桥防火墙,以太网桥工作在数据链路层,ebtables主要用来过滤数据链路层数据包。
ebtables 能过滤桥接流量

三、ebtables 的工作原理

ps : ebtables的主要工作的就是过滤,同iptables,ebtables也有多个过滤节点,通过过滤节点来说明工作原理

1. 过滤时机

数据包从进入到离开系统,要经过PreRoute,Input,Forward,PostRoute,Output这五个阶段。每个阶段中包括了一些节点,每个节点就是一个过滤时机。当数据包行进到某个节点时,系统就是检测对应节点的过滤规则并进行过滤
浅析ebtables的概念和一些基本应用第1张

  • prerouting:数据进来还未查询路由表之前的规则。
  • input:由外部发往用户空间内部的规则。(
    说直白点就是负责过滤目标地址是本机的数据包)
  • forward:不进入用户空间,进行路由转发的规则。(负责转发流经主机但不进入本机的数据包)
  • postrouting:查询完路由表后,将要转发的规则。
  • output:由用户空间内部发往外部的规则。(负责处理本机发出的数据包)
注意:ebtables每个阶段的的过滤时机都比iptables要早。(这个不是绝对的从本机上层下来的报文经过postrouting是先ip再eb)
2、使用方法

ps : 主要讲解过滤原理与配置

ebtables的配置分为表、链和规则三级。

  1. 表是内置且固定的,共有三种: filter, nat, broute,用-t选项指定。最常用的就是filter了,所以不设-t时默认就是这个表。
    filter过滤本机流入流出的数据包是默认使用的表,nat用于地址转换-mac地址,broute用于以太网桥-产生一个桥路器。
  2. 链(chains)
    链有内置和自定义两种 。不同的表内置的链不同,这个从数据包的流程图中就可以看出来。所谓自定义的链也是挂接在对应的内置链内的,使用-j让其跳转到新的链中。如果以太网帧没有匹配到当前的规则,就会去检查下一个规则。(实例见使用场景介绍)
  3. 规则也叫目标(targets)
    每个链中有一系列规则,每个规则定义了一些过滤选项。每个数据包都会匹配这些项,一但匹配成功就会执行对应的动作
    所谓动作,就是过滤的行为了。有四种,ACCEPT,DROP,RETURN和CONTINUE。
    详解一下:
    当帧匹配一个规则(rule)时,下一个动作(action)由target指定。

targets由四个:

  1. ACCEPT:意味着让一个帧通过
  2. DROP:意味着帧已经被dropped。注意:在BROUTING chain中,1、2有特殊的意思
  3. CONTINUE:意味着下一个规则(rule)将被检查
  4. RETURN:意味着停止遍历此链,并在前一个调用链的下一条规则中恢复。其实就是退出,和代码中的
    continue差不多,这里就是退出在此链继续遍历,直接进行后续操作
    (详见下文使用场景中的ruturn使用)

四、ebtables 的使用场景

ps:这里主要是对linux设备使用ebtables的场景进行分析,以便于能更清晰明了的理解过滤的概念

1. 在后台输入命令:ebtables nat -t 查看nat表

浅析ebtables的概念和一些基本应用第2张

详细分析:
浅析ebtables的概念和一些基本应用第3张

  • -p:指明使用的协议类型
  • --vlan-encap 0806 带vlan的arp
    VLAN Tag中的一个字段,IEEE 802.1q协议规定该字段的取值为0x8100
    0806:0806指的是后面的数据是属于arp包的

所以上述命令的意思就是:

  1. 允许带vlan的qrp包通过
  2. 允许arp包通过
2、自建链讲解

详细分析:
浅析ebtables的概念和一些基本应用第4张
上述指令就是将sat0出的且标记不为0x1的报文转到自建链SENSE_BUS_CHAIN中处理
-o:指明从那片网卡出去
注意:这也就是我们前面提到的自定义的链也是挂接在对应的内置链内,此处自建链“SENSE_BUS_CHAIN”就挂载内置链POSTROUTING中。

3、return的使用

详细分析:
浅析ebtables的概念和一些基本应用第5张
说明:报文从POSTROUTING链转到自建链处理,先阅读一下指令

  1. IP协议的报文执行return
  2. 带VLAN的IP协议执行return
  3. 执行return
    分析:3个retrun 一眼看过去,毫无意义。所有报文即使不走前两个也会在第三个return。为什么要这么做呢?这里主要是为了计数区分IP和非IP报文
    浅析ebtables的概念和一些基本应用第6张
    附:以太网帧结构的TYPE字段为:0x0800, 表示该帧是IP协议

五、ebtables 的常用命令

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 <chain_name>
ebtables -X <chain_name>
3. 新建规则
ebtables -A <chain_name> [ rules ]
[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

参考:

https://www.xuebuyuan.com/3242711.html
https://www.cnblogs.com/balance/p/8711264.html
https://www.jianshu.com/p/79bcf09aed25

免责声明:文章转载自《浅析ebtables的概念和一些基本应用》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇input debounceBitConverter.GetBytes(int)和BitConverter.ToString 方法 (Byte[])下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

IEEE1588精确网络时钟同步协议简介 I

[首发于cnblogs,转载请注明。作者:byeyear/告别年代    Email:east3@163.com] 在阅读本文之前,假定您对以太网和NTP有一定的了解。 至少您应该大致理解以下名词或缩写: NTP,MAC,PHY,TimeStamp IEEE1588是一个主要运行于以太网的网络时钟同步协议,主要目标是在局域网范围内实现高于微秒级的同步精度。...

arp报文格式解析

arp报文格式 arp报文总共42 bytes。其中以太网首部14 bytes,arp字段28字节 一、以太网首部 如下图中:目的mac地址和源mac地址各6 bytes,以太网帧类型2 bytes 二、arp字段 arp字段如下图:从上往下依次是:硬件类型、协议类型、硬件大小、协议大小、op位、发送者mac、发送者ip、目的mac、目的ip 硬件类...

LwIP移植uCos+stm32f407

LwIP同操作系统一起工作的时候模型如下: 1.TCP/IP协议栈和应用程序以分离的任务运行 2.应用同协议栈沟通是通过API函数调用(API函数调用事实上就是通过OS自带的进程间通信机制,由应用程序与协议栈任务进行邮箱通信) 3.除上述两个任务之外,还有一个额外任务(网络接口任务),该任务由中断激活,然后任务将数据传输给协议栈 这几个任务,对应程序中函...

Linux系统中的以太网连接

1.在Linux中,以太网连接接口被命令为:eth0,eth1等,其中0,1表示网卡编号。 2.lspci来查看网卡硬件信息(USB则是lsusb) 3.ifconfig来查看接口信息   ifconfig -a来查看所有接口   ifconfig eth0来查看特定eth0接口信息。   ifup和ifdown来启用或者是禁用一个解口。如:ifup et...

常见局域网类别

目前,流行的局域网包括:以太网、令牌环网和FDDI(光纤分布式数据接口)。 1.以太网和IEEE 802.3 IEEE 802.3是以以太网为基础的。二者占据了局域网市场的份额,而以太网通常指所采用载波监听多路访问/访问检测(CSMA/CD)的局域网,包括IEEE 802.3。 二者较为相似,都隶属于CSMA/CD LAN,也都隶属于广播网络。 二者也存在...

Ubuntu16.04 同时连接无线网络和以太网端口

背景: 激光雷达VLP16通过以太网线连接电脑。在本博客所述的设置之前,一旦连接以太网线,本机(dell笔记本)的无线网络立即断开,即无法同时连接无线网络和以太网端口。 问题查找: 命令行  $ ip route show  或者  $ ifconfig  ,查看本机的有线网络和无线网络IP。 有线网络标记为,enp2s0;无线网络标记为,wlp3s0;...