使用docker和boot2docker运行tcpreplay

pbgvytdp  于 2023-10-16  发布在  Docker
关注(0)|答案(2)|浏览(105)

我正在做一个网络流记录器,我想设置一些自动化的性能测试。我想把我的测试pcap从一个运行在boot 2docker下的docker镜像中重放到我的程序中。网络的这一面是难倒我。
我可以从运行在boot 2docker下的docker镜像中访问我的桌面(托管boot 2docker vm的机器)(scp/ssh/netcat似乎都能按预期工作)。然而,当我在docker镜像中运行pcap上的tcpreplay时,我从来没有在桌面上看到过流量。
我所尝试的:

  • 将pcap中的srcip重写为docker主机的srcip
  • tcpdump通过netcat管道传输(netflow是UDP,所以我不关心连接设置)流量通过了,但是我的程序出现了一些异常并死亡。这并不让我感到惊讶,但它确实表明我可以将流量从docker vm中取出并进入我的程序。
  • 我可以在一个普通的debian vm中成功地tcpreplay pcap到我的程序中

我需要做什么才能让tcpreplay把我的pcap发送到我的桌面上?

qnakjoqk

qnakjoqk1#

尝试将目标MAC地址更改为docker0的MAC地址,这是默认运行的VM。这对我很有效。

mctunoxg

mctunoxg2#

对我来说,它是使用 Docker 桥工作:

docker network create -d bridge --subnet=192.168.x.0/30
--gateway=192.168.x.1 -o parent=eth0 bridge_net

然后你可以使用tcpreplay(如https://hub.docker.com/r/dgarros/tcpreplay)预安装的docker镜像,并启动为:

docker run --net bridge_net --rm -t -v <your_host_folder_pcap_dir>:/data -i dgarros/tcpreplay /usr/bin/tcpreplay --intf1=eth0 <your_pcap_file_located_in_host_folder_pcap_dir>.pcap

相关问题