您可以使用内置在Linux内核中的“netem”功能,它随大多数现代版本的发行版一起提供。netem是一个流量控制模块,可以故意延迟、丢弃和重新排序数据包,并且具有高度可配置性。由于队列仅限于出站数据包,因此这仅适用于发送数据包(所以您可能希望在两个测试机之间放置一个带有netem的路由器主机,并在两个接口上运行netem(如果您喜欢,则具有不同的参数)。最简单的方法是在虚拟机中运行netem,以在两个虚拟机网络之间进行路由。我发现这非常方便。
你可以尝试使用scapy。它是一个Python库,用于操作数据包。你可以使用tcpdump、wireshark或其他工具来捕获pcap会话,然后使用scapy以任意顺序重放捕获的数据包。a=rdpcap("/spare/captures/isakmp.cap") for pkt in a.reverse(): sendp(pkt) 根据你抓取数据包的方式,可能需要使用send(第三层)而不是sendp(第二层)。