我有一个Linux系统(让它成为A)与2个以太网卡,即eth0和eth1连接到两个完全无关的局域网。
基本上,eth0用于正常的应用程序stream量,eth1仅用于debugging目的。 debugging意味着eth1使用交叉电缆连接到运行Wireshark的另一个Linux机器(让它成为B)。 我希望Wireshark能够处理在eth0上传输的应用程序数据包。
基本上我需要将旅行数据包从eth0接口复制到接口eth1,以便B盒上的Wireshark可以嗅探它们(出于某些原因,我没有物理访问LAN eth0)。 我也可能需要根据某些规则(仅仅基于TCP / IP字段)指定从eth0到eth1复制哪些数据包。
还要注意,A的eth0不需要放在混杂模式,因为我只想复制一个包含A作为目的地的数据包子集
有没有办法使用iptables单独实现这一点? 或者我需要编写一个应用程序来使这个工作? 我应该怎么做“复制”数据包?
如果你的内核足够短 ,你可以使用iptables -tee将帧从eth0转发到捕获机器。
编辑:更新链接,因为原始密码现在在密码提示后面。
你可以使用镜像动作。 例如:对于传入stream量:
tc qdisc add dev eth0 ingress tc filter add dev eth0 parent ffff: \ protocol all prio 2 u32 \ match u32 0 0 flowid 1:1 \ action mirred egress mirror dev eth1
对于传出stream量:
tc qdisc replace dev eth0 parent root handle 10: prio tc filter add dev eth0 parent 10: \ protocol all prio 2 u32 \ match u32 0 0 flowid 10:1 \ action mirred egress mirror dev eth1
searchnetworkingtcpbridge。 这正是工作。 也可以用于Tal虚拟机。 这是如何使用它。
像rinetd这样的东西可能会工作( 只有 TCP的redirect器/服务器,我相信,所以没有ARP,第2层等),但在所有诚实,获得一些pipe理交换机具有端口镜像function,或者如果该框只用于wireshark,你可以添加另一个网卡,桥接两个接口,把它放在机器A的eth0前面,并有一个专用的嗅探机。
将以太网帧从一个接口复制到另一个接口的设备是一个桥梁。 你可以configuration你的Linux系统作为一个桥梁。 一些文档可以在这里find:
您可以使用ebtables将过滤规则应用于桥接通信,这是第2层stream量的iptables模拟。