Nik*_*lub 5 networking linux tcpreplay
我正在尝试将 pcap 文件重播到 HTTP 服务器。在此之前,我尝试手动检查我是否正确使用 tcpreplay。
我已经开始netcat -l 12345监听特定端口。让我们称其为“服务器”在我运行的其他机器上tcpdump捕获所有流量,目标为文件中的特定端口dummy.pcap。之后,我在客户端计算机上运行 netcat,连接到“服务器”并发送几条消息。我检查了 pcap 的结果tshark,它显示数据包已被捕获。
我再次在服务器上启动 netcat,并在客户端上启动 tcpreplay:
tcpreplay -d 5 -i eth0 -t dummy.pcap
但服务器上的 netcat 控制台上没有任何显示。我尝试在“服务器”上运行 tcpdump,它显示已收到数据包。
为什么数据包没有出现在 netcat 控制台中?
TCPreplay 将重放服务器上的流量,但由于 TCP 协议的性质,它实际上并不与服务器“通信”。因此,基本上您的服务器正在接收 TCP 数据包,但从未建立实际的 TCP 连接,因为重放未完成正确的握手。这就是为什么您的 netcat 中没有显示 TCP 会话的原因。
根据我的经验,这种 tcpdump 仅对分析有用,如果您担心复制一系列命令/数据,您需要找到一个特定于您的协议的工具(在我的例子中,它涉及编写自定义客户端)。
来自 tcpreplay维基:
向服务器发送流量
问题
您有一个 pcap 捕获,并希望在另一台服务器上重放该流量。
解决方案
首先,这仅适用于 ICMP 和 UDP 流量。Tcpreplay 不支持在服务器上发送 TCP 流量,因为它不同步 TCP 流中的 Syn/Ack 编号。
也就是说,您需要更改目标 IP 和 MAC 地址以匹配目标服务器的 IP 和 MAC 地址。在本例中,我们假设目标服务器 IP 为 10.10.1.1,其 MAC 地址为 00:01:02:03:04:05。
以及他们的常见问题解答:
=== tcpreplay 支持向服务器发送流量吗?=== 如果“服务器”是指监听端口的守护进程 (Unix) 或服务 (Windows)(常见的例子是 Web 或邮件服务器),那么可能不是。最大的问题是 tcpreplay 不了解 TCP 等常见协议的状态。这意味着它无法同步 Syn/Ack 来创建有效的 TCP 会话。
| 归档时间: |
|
| 查看次数: |
12176 次 |
| 最近记录: |