当eth处于Promisc模式时,是否有适合iptables的链接?

我有一台前端机器。 机器有2个eth卡。 我想使用netfilter队列对数据包进行一些检查。

我这样设置eth:ifconfig eth0 0.0.0.0 promisc up ifconfig eth1 0.0.0.0 promisc up

我想要一个像这样的iptable规则(仅举例):iptables -A INPUT -i eth0 -j LOG – 日志前缀“eth0包”

但是数据包没有通过iptables传递,因为它的目标是这个MAC。 Promisc模式没有帮助。

我看到有一种方法可以为PROMISC添加iptables链 ,但需要编译…有没有更简单的方法来让iptables规则在数据包不是针对这个eth时。

目前我通过创build一个桥梁之间的2 eth和把规则在前面绕过这个,但我想要创build桥梁。

请记住,在与以太网交换机连接的networking上,即使网卡处于混杂模式,也不会看到大部分数据,除非您拥有带端口镜像的托pipe交换机。

实现你想要的一种方法是使用arp中毒工具,比如Ettercap。 您应该能够应用netfilter规则或tcpdump您需要的信息。

编辑 – 更多详细信息请求OP:

从你的问题,这听起来像你希望窥探通过networkingstream量,并通过iptables传递。

通过使用桥梁,您可以通过坐在有趣的机器和网关之间来实现这一目标,但是听起来您希望以更加被动的方式来做,因此您为什么要尝试使用混合模式网卡。 对? (如果你不知道,混杂模式允许你也看到没有发往你的网卡的以太网帧)

您所遇到的问题是,以太网交换机的devise使其能够了解每个端口上的MAC地址,并根据其MAC地址将以太网帧“路由”到正确的端口。 这是为了减less与以太网集线器相关的冲突(这些日子你很less看到)。 因此,您将只能看到发往或来自NIC的以太网帧,包括广播以太网帧(如ARP),而不是外部通信。 这是一件好事:)

大多数pipe理型交换机(不是愚蠢的桌面型)允许您指定一个端口镜像,以便所有的以太网帧都被复制到特定的端口上,您可以在混杂模式下连接一台机器,并使用tcpdump / Wireshark捕获“外部”以太网帧。

但是,这仍然不会让他们被iptables捕获。 所以你需要一种方式来在感兴趣的主机和它们的网关之间再次扮演一个以太网桥的angular色,而不需要在物理path上。 进入一个arp中毒工具Ettercap。 它哄骗你感兴趣的主机(和交换机),你的机器MAC地址现在通过发送一个“免费的ARP”来拥有旧的IP网关的IP。 有趣的机器会不知不觉地将所有网关/默认路由指定的stream量发送到您的机器。 您的机器现在将通过其IP堆栈转发数据包,就好像它是网关一样。

在这种情况下,如果在交换机上启用了“端口安全”function,这种做法并不罕见。 这是通过阻止IP从一个以太网端口移动到另一个以太网端口的免费arp来阻止arp中毒。

对我而言,你似乎对你的需求缺乏清晰的理解。 这就是为什么你很难实现这一点。

主要的问题不是iptables的“合适链”,而是如何让stream量stream入盒子 ,然后如何处理OS内核或用户空间。

桥梁是相当自然的方式,但实际上我不知道如何将FORWARD链,定义为转发 ,帮助处理交换stream量。

你当然必须有这个stream量转发,这意味着,你的比赛。 应该是该stream量的路由器。 如果你能以一种自然的方式来pipe理它 – 去做吧。 如果你没有这种可能性,我会说,像proxy_arp机制可能可以帮助。

UPD。 :我最近重读了LARTC,遇到了“ Proxy-ARP伪桥 ”,这让我意识到我的build议非常合适。