背景
TCP回包过滤项目里,raw socket捕获不到目标消息对应的port来的数据,需要在本地搭建一下测试环境来复现一下实盘环境;
期望:
数据从docker A 的网卡,发送到docker B 的网卡;
或者如果可以最直接的话,就是某个docker 的网卡直接接收到模拟数据;
思路
tcpreplay来模拟发送,tcpdump来模拟捕获,先确定能够很好的回复实盘环境;
但实际上是不行的:
通过这个测试可以说明,tcpreplay模拟的是通过某个网卡向外发送,而不能模拟接收
tcpreplay -p 10 -i eth0 0302-2.cap
tcpdump -i eth0 “inbound” =》只捕获该网卡接收到的数据包
tcpdump -i eth0 “outbound” =》只捕获该网卡发送出的数据包
如果不设置这个选项,那么是全部捕获的;
通过上面的测试可以发现,tcpdump -i eth0 “inbound” 的打印结果为空,说明该网卡没有接收到任何数据,而 tcpdump -i eth0 “outbound” 则可以看到打印,说明 tcpreplay 模拟的是从当前网卡发送出去数据,而不能模拟接收;
遗留问题
有没有工具能够模拟,读取网络包文件(cap或pcap格式),然后指定某个网卡来直接作为目的来接收–这里可以只是网卡的硬件接收,到上面的应用层面会因为IP addr等原因而被直接过滤掉?