问题标签 [ebtables]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
3464 浏览

linux - 如何为 ebtables 编写自定义模块?

基本上,我想编写一个内核模块,为 ebtables 添加一个可能的过滤器。然后我需要告诉 ebtables 在我设置的网桥上使用我的过滤器。

我需要编写自己的模块的原因是我想在连续包之间引入延迟(出于某些测试原因)。为了演示,我的网络最初有这样的流量:

其中+显示一个包裹的流量,-表示在线上没有包裹。我想在两者之间架起一座桥梁,以便数据包的模式变为:

这意味着我会确保每个数据包到达之间会有一定的延迟。

现在我编写了以下简单的代码,这些代码基本上来自 linux-source/net/bridge/netfilter/ebt_ip.c:

我成功加载了模块。但好像它不存在一样。我没有得到里面的日志matchcheck功能,所以桥显然没有考虑我的过滤器。我究竟做错了什么?

我已经尝试了许多首先加载我的过滤器、先设置网桥或先设置 ebtables 规则的组合,但它们都没有改变任何东西。

PS桥本身可以工作。我确信 ebtables 也有效,因为如果我添加删除包的策略,我不会在最终计算机上收到它们。我想不通的是如何告诉 ebtables 也考虑我的过滤器。

0 投票
1 回答
92 浏览

wireless - 如何在使用 iptables/ebtables 重定向到任何端口之前将客户端的 MAC 地址存储在文件中

我想在重定向到某个 IP 或端口之前将客户端的 MAC 地址存储到文件中。我正在使用 iptables 进行重定向。是否可以获取客户端的 MAC 并将其存储在文件中?

0 投票
1 回答
736 浏览

iptables - 如何在使用 Iptables 重定向到 URL 时将请求的 MAC 地址作为参数发送?

我想将客户端重定向到不同的 URL。我已经使用端口重定向完成了这项工作。但现在我想要客户端的 MAC 地址作为 URL 的参数。如何获取 MAC 地址并使用 URL 发送。

0 投票
1 回答
1360 浏览

shell - 当 ebtables 规则匹配时如何执行 shell 脚本?

当特定的 ebtables 规则匹配时,我想执行一个 shell 脚本。脚本应该获取客户端的 MAC 地址和客户端连接的接口。我怎样才能做到这一点?

0 投票
2 回答
2166 浏览

linux - 如何在 Linux 虚拟网桥中创建 DHCP 侦听规则

我有一台运行 DHCP 服务器和虚拟网桥的 Linux 服务器 (10.0.0.1)。虚拟网桥连接 4 个以太网接口,作为连接我的用户的主交换机。

如果某些用户不小心创建了一个恶意 DHCP 服务器,该服务器在他们到达主 DHCP 服务器之前回答了 DHCP 请求,就会出现问题。

因此,我想阻止所有进入虚拟交换机端口之间的 DHCP 请求,但不阻止发往/来自主 DHCP 服务器的请求。我可以设置哪些 ebtables 规则来执行此操作?

0 投票
2 回答
3252 浏览

iptables - 使用 iptables/ebtables 进行 MAC 过滤

我试图在我的网络中的一个节点上删除一个 MAC 地址。现在,我尝试了两个工具 iptables 和 ebtables,但都失败了:

  • iptables -A INPUT -m mac --mac-source 00:0F:EA:91:04:08 -j DROP导致“iptables:该名称没有链/目标/匹配”。
  • ebtables -A INPUT -s 00:11:22:33:44:55 -j DROP导致“致命:找不到模块 ebtables。内核不支持 ebtables '过滤器'表。”

我正在使用内核版本 2.6.32:uname -r结果为“2.6.32-042stab049.6.emulab.1”

我怎样才能使(至少一个)它起作用?我已经搜索了有关此故障的信息,但找不到太多信息。如何让内核支持 ebtables 'filter' 表?为什么“没有该名称的链/目标/匹配”?

0 投票
2 回答
15132 浏览

iptables - iptables/ebtables/bridge-utils: PREROUTING/FORWARD 通过单个 NIC 到另一台服务器

我们有许多用于转发连接的 iptables 规则,这些规则可靠且运行良好。

例如,端口 80 转发到同一台机器(网络服务器)上的端口 8080。当给定的网络服务器重新启动时,我们将请求转发到端口 8080 上的另一个 IP,该 IP 显示维护页面。在大多数情况下,此其他 IP 位于单独的服务器上。

在我们安装了 bridge-utils 并更改为使用网桥 br0 而不是 eth0 作为接口之前,这一切都运行良好。

我们转为使用网桥接口的原因是为了访问 ebtables 的 MAC SNAT/DNAT 功能。我们没有其他理由在服务器上添加桥接接口,因为它们实际上并没有桥接多个接口上的连接。

我知道在服务器上添加网桥是一个奇怪的原因,但是我们在一个新项目中使用 MAC SNAT/DNAT 功能,并且 ebtables 似乎是最安全、最快和最简单的方法,因为我们已经如此熟悉iptables。

问题是,由于转换为 br0 接口,iptables PREROUTING 转发到外部服务器不再起作用。

内部 PREROUTING 转发工作正常(例如:请求进入端口 80,它转发到端口 8080)。

OUTPUT 链也可以工作(例如:我们可以通过本地目标 IP:8080 从盒子向外连接,OUTPUT 链将其映射到不同服务器上的维护服务器 IP,端口 8080,并返回一个网页)。

但是,如果目标 IP 是外部 IP,则在 PREROUTING 规则之后进入该框的任何流量似乎都会消失。

这是我们的设置示例:

旧设置:

新设置:(也尝试了各种格式的旧设置...,尝试记录 eth0 和 br0 数据包)

在更改为 br0 之前,客户端请求将转到端口 9080 的服务器 A,然后被伪装到另一个服务器 $MAINTIP。

如上所述,如果 $MAINTIP 在同一台机器上,这可以正常工作,但如果它在另一台服务器上,则数据包永远不会在新的 br0 设置下发送到 $MAINTIP。

我们希望数据包从它们进来的同一个接口(伪装)出去,就像在我们切换到使用单 NIC 网桥 (br0/bridge-utils) 之前所做的那样。

我尝试在 iptables 的所有阶段添加日志记录。由于某种原因,iptables TRACE 目标在此设置上不起作用,所以我无法获得 TRACE 日志,但数据包显示在 PREROUTING 表中,但之后似乎被静默丢弃。

我已经阅读了这份出色的文档,并且对 iptables 和 ebtables 之间的流程有了更好的理解:http: //ebtables.sourceforge.net/br_fw_ia/br_fw_ia.html

据我了解,网桥似乎没有将数据包转发到它们进入的同一接口,而是丢弃它们。如果我们添加了第二个接口,我想它会将它们转发到该接口(桥的另一侧) - 这就是桥的工作方式;-)

是否有可能按照我们想要的方式进行这项工作,并像我们以前一样通过它们进入的同一接口预路由/转发这些数据包?

我希望有一些 ebtables 规则可以与 iptables PREROUTING/FORWARD/POSTROUTING 规则结合使用,以使 iptables 转发以通常的方式工作,并将路由数据包发送到 br0 (eth0) 而不是丢弃它们。

欢迎评论,火焰,任何和所有的建议!

最好的问候,尼尔

0 投票
0 回答
1521 浏览

iptables - 用于桥接接口的 Captive Portal

我喜欢创建一个简单的强制门户,它适用于作为桥梁一部分的界面。

网桥接口 br0 (10.19.1.1/16) 由两个接口 eth0 和 eth1 组成。eth1 后面是客户端计算机。eth0 后面是一个连接互联网网关的交换机。

对于强制门户,所有来自 eth1 后面的客户端对端口 80 的 tcp 请求都需要定向到本地 Web 服务器。

当网站请求被重定向到本地 Web 服务器时,以下几行似乎有效。问题是一旦使用下面的认证行,客户端就不能再加载任何常规网站了。

我已经搜索了互联网,但没有找到解决方案。

0 投票
1 回答
446 浏览

linux - EBTABLES. Type of packets "otherhost"

I've got a question concerning ebtables. The question is concerned with --pkttype-type option. In description of this option (MAN) I see there are four possible values:

  1. broadcast
  2. multicast
  3. host
  4. otherhost (non of the above)

Please explain me what 4-th option otherhost means. As I know packet can be broadcast, multicast and unicast. Perhaps more packet types exist which I don't know? What happens when I use option --pkttype-type otherhost?

0 投票
1 回答
618 浏览

linux - 自定义 ebtables 模块 && skb 操作 && 内核恐慌

前段时间我实现了基于 Ashwin Kashyap 的 vnat 模块的 ebtables 模块(http://www.research.rutgers.edu/~ashwink/misc_projs/ebt_vnat.html)。模块可用于 broute 表中的 BROUTING 链,用于剥离 vlan 标签并将 vlan id 放入 nf 标记中。模块还允许根据 nat 表的 POSTROUTING 链中的 nf 标记值添加 vlan 标记。模块在处理桥接流量时没有任何问题。系统坚如磐石,稳定。一旦我将 tproxy 拦截添加到混合中,问题就开始了。这会在运行一段时间后导致内核恐慌。我强调这样一个事实,即在经过几分钟的 tproxied 流量流之后,我在第一个数据包后没有看到内核恐慌。看来我处理 SKB 的方式对于 L3+ 处理来说不够干净。顺便说一句,我正在开发 2.6.32 内核。请在下面的评论中找到模块的关键部分:

我将不胜感激任何指针(只要它们至少为 64 位长)。谢谢!