使用 iptables 过滤镜像端口流量

使用 iptables 过滤镜像端口流量

我从镜像端口接收流量,我想将其发送到 NFQUEUE 进行处理。由于镜像端口,数据包的目标 MAC 地址不是我的主机 MAC 地址。因此流量永远不会到达我的 NFQUEUE。(如果我拿一个数据包并使用 Scapy 手动将目标 MAC 地址替换为我的主机 MAC 地址,它就会起作用)

即使在过滤管道中尽快应用 iptable 规则,它也无法与镜像端口一起工作:

iptables -A PREROUTING -t raw -j NFQUEUE --queue-num 1

正如在其他一些线程中提到的,我尝试在我的接口上创建一个桥并使用以下命令过滤流量。

tunctl -u root
brctl addbr br0
brctl addif br0 eth0
brctl addif br0 tap0
brctl setfd br0 0
brctl stp br0 off  
ifconfig br0 up
ifconfig eth0 up 0.0.0.0
ifconfig tap0 up 0.0.0.0
echo 0 > /sys/class/net/br0/bridge/ageing_time
echo 1 > /proc/sys/net/bridge/bridge-nf-call-iptables
iptables -F
iptables -A FORWARD -j NFQUEUE --queue-num 1

但即使这个解决方案也不能解决我的问题。交通无法通过这座桥,因为网桥-nf-调用-iptables指令。但是我无法将数据包放入队列中。

顺便说一下,我的内核版本是3.13.0-32。

我正在寻找任何允许将接收到的具有随机 mac 地址的数据包放入我的 NFQUEUE 的解决方案。

谢谢你的帮助,朱利安

答案1

您的内核会忽略未寻址到本地网络接口的软件包。您应该将 eth0 更改为混杂模式:

ip link set dev eth0 promisc on

您可以通过网络配置使其持久化:

Debian

auto eth0
iface eth0 inet manual
    up ifconfig eth0 promisc up
    down ifconfig eth0 promisc down

红帽

BOOTPROTO=static
DEVICE=eth0
TYPE=Ethernet
PROMISC=yes
...

相关内容