想做一个通过交换机端口镜像录音的功能。
大致流程是这样:两台 linux 服务器放在同一个交换机下面,在交换机上配置 A 服务器所在接口到 B 服务器所在接口的镜像,那么经过 A 服务器上的所有流量都会被交换机复制一份转发给 B 服务器(一般运维通过这个功能监测网络,也叫旁路监控)。
现在问题来了,通过 tcpdump 在 B 服务器上抓取数据包,是能抓到我们要的数据包的(即 A 服务器上的所有流量);通过 java 的一个库 pcap4j 也是可以抓取的,只是抓取出来的包和 tcpdump 出来是一样的,ip 拆包等问题都需要自己解决;但是通过 socket 监听数据包的端口的时候,始终抓取不到。网卡的混杂模式也已经开启了。目前怀疑的可能原因是因为数据包复制过来,mac 地址没有改变,目的 mac 地址和 B 服务器 mac 地址不匹配,linux 丢弃了该数据包。
想问一下可能的原因或者 linux 本身就不支持这样的操作。
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于