ebtalbes 是 netfilter 针对Linux网桥防火墙的一个过滤工具。ebtables透明地过滤通过Linux网桥传输的数据流。这个ebtables过滤可以限制链路层过滤以及一些更网络层的基础过滤。同时也包括了高级日志,MAC DNAT/SNATbrouter能力。

brouterbridge router,也就是同时作为网桥(交换机)和路由器的网络设备。brouter 为已知协议路由数据包,同时将其他所有非已知协议数据包类似网桥方式进行简单转发。(Bridge router - Wikipedia

ebtables可以结合到其他Linux过滤工具(iptablesip6tablesarptables)来使网桥防火墙能够过滤更高网络层。这个网桥过滤架构已经包含到标准Linux内核。

什么是ebtables

ebtables工具在Linux网桥上实现了基础的以太网帧过滤,日志,MAC NAT和brouting功能。ebtables只提供基础的IP过滤(完整功能的IP过滤由iptables实现)。一个称为bridge-nf的代码让iptables能够看见网桥过的IP数据包饼实现透明的IP NAT。防火墙工具iptablesebtables可以结合使用、互为补充。etables可以提供iptables不能提供的网桥过滤,实现非IP流量的过滤。

ebtalbes功能

ebtables主要功能包括:

  • 使用方法类似 iptables
  • 以太网过滤
  • MAC NAT:可以修改MAC以太网的源和目的地址。这个功能在一些特殊设置中非常有用。
  • Brouting(网桥路由):决定哪个流量可以在两个接口间交换并决定相同的两个接口哪些流量可以路由。这两个接口属于一个逻辑网桥设备,但是它们有自己的IP地址并且可以属于不同的子网。
  • 使用netlink sockets(ulog监视器)给用户空间程序传递数据包

etables可以做什么?

  • 以太网协议过滤
  • MAC地址过滤
  • 简单的IP头过滤
  • ARP头过滤
  • 802.1Q VLANgu哦旅
  • 进/出 接口过滤(逻辑和物理设备)
  • MAC地址nat
  • 日志
  • 帧计数
  • 可以添加,删除和插入规则;刷新过滤链路;计数器清零
  • Brouter功能
  • 可以自动加载一个完整表,包含你创建的所有规则到内核
  • 支持用户定义过滤链
  • 支持标记帧和匹配标记的帧

ebtables不能做什么?

  • 全功能的IPv4/IPv6/ARP过滤(请使用iptables/ip6tables/arptables)
  • 过滤高于802.3以太网层的协议,过滤在802.3以太网帧内的ARP包。{Ip,Ip6,Arp}tables当前也不能过滤在802.3以太网帧的IPv4/IPv6/ARP流量

有关802.3以太网帧,请参考 浅谈以太网帧格式四种格式的以太网帧结构

Ethernet 802.3是IEEE制定的,但是没有像预期地流行起来。

Ethernet V2(ARPA)是intel和DEC等几个公司制定的,现在是以太网帧事实上的标准,使用的非常广泛。

大多数应用的以太网数据包是Ethernet V2的帧(如HTTP、FTP、SMTP、POP3等应用),而交换机之间的BPDU(桥协议数据单元)数据包则是IEEE802.3的帧,VLAN Trunk协议如802.1Q和Cisco的CDP(思科发现协议)等则是采用IEEE802.3 SNAP的帧。

什么是bridge-netfilter

从Linux内核3.18-rc1开始,需要使用modprobe br_netfilter命令来激活bridge-netfilter

bridge-netfilter代码激活了以下功能

  • {ip,ip6,arp}tables 可以过滤交换类型的IPv4/IPv6/ARP数据包,即使这些数据包是使用了 802.1Q VLAN 或PPPoE头包装的。这个功能可以用于状态型透明防火墙。
  • 所有过滤、日志、NAT功能都可以用于交换类型帧。
  • 结合ebtablesbridge-nf代码可以让Linux实现非常强劲的透明防火墙。
  • 创建透明的masquerade(伪装,即NAT)主机,使得所有本地主机都以为它们是直接连接Internet
  • 可以通过使用相应的proc对象让{ip,ip6,arp}tables检查交换类型数据流。即proc文件系统的/proc/sys/net/bridge/目录下
    • bridge-nf-call-arptables
    • bridge-nf-call-iptables
    • bridge-nf-call-ip6tables
      同样,让上述防火墙工具能够检查 802.1Q VLAN 和 PPPoE 包装的数据包也可以在相同目录下激活proc
    • bridge-nf-filter-vlan-tagged
    • bridge-nf-filter-pppoe-tagged

这些proc对象是常规文件,使用1开启功能(echo 1 > file),而使用0则关闭功能。

进阶文档

以下详细文档待整理和学习

参考