Tcpreplaying usando VMware

Tcpreplaying usando VMware

Isso é mais como uma questão de configuração de teste.

Quero usar o VMware para depurar algum código de rede no kernel do Linux na VM. Minha VM possui duas interfaces de rede. O que eu quero fazer é reproduzir o arquivo de captura no host e receber os pacotes na VM. Meu problema é que não vejo pacotes repetidos na VM.

  1. Estou executando o VMware e o tcpreplay no host como sudo. Portanto, acho que não deve haver nenhum problema ao acessar os arquivos dos dispositivos.
  2. Estou executando a estação de trabalho VMware 7.0

a. Comecei com a rede personalizada, pois ela oferece a opção de criar seu próprio nome de rede virtual. Eu escrevi /dev/vmnet3 e /dev/vmnet4 para as duas interfaces respectivamente. No entanto, após inicializar o convidado, não vi nenhuma dessas interfaces ou arquivos de dispositivos (em/dev) criados no host.

b. Então tentei 'Host Only', mas isso não mostra qual arquivo de ponte/dispositivo está associado à interface.

c. Finalmente tentei o modo de rede em ponte.

Vejo vmnet1, vmnet8 e vboxnet0 no host. Eu pré-reproduzi o arquivo de captura em cada uma dessas interfaces, para todos os três casos acima. Tentei capturar pacotes na VM usando "tcpdump -i any". No entanto, não vejo nenhum pacote.

Alguma idéia/sugestão?

Responder1

Não tentei isso no VMware Workstation recentemente, mas normalmente isso é resultado de um dos seguintes:

  1. A VM da qual você está tentando capturar não está colocando a NIC em modo promíscuo, portanto, não é possível ver pacotes que não são destinados a ela. Você pode resolver isso executando tcpdump como root na VM ou alterando seu tcpreplay para usar o endereço MAC da VM como destino para os pacotes que ela está enviando (tcpreplay vem com tcprewrite, o que facilita esse tipo de mudança). Alternativamente, você pode tornar o endereço MAC de destino dos pacotes sendo reproduzidos o endereço de broadcast, ff:ff:ff:ff:ff:ff (AVISO: MUITO PERIGOSO. A menos que você realmente entenda o que está fazendo, recomendo desconectar do físico rede antes de fazer isso).

  2. O host não permite que a VM coloque a interface em modo promíscuo. Não tenho certeza de como ajustar isso no VMware Workstation, mas no ESX[i] há uma opção no vSwitch para "Permitir modo promíscuo". Você também pode contornar isso alterando o endereço MAC de destino do fluxo tcpreplay conforme mencionado em 1.

  3. As permissões na vmnet no host não estão corretas para permitir o funcionamento do modo promíscuo (supondo que você esteja usando Linux como sistema operacional host). Há vários artigos da base de conhecimento da VMware sobre isso, e resolvê-los é, na melhor das hipóteses, inconsistente. Você pode fazer isso chmodding a interface /dev/vmnetX para 777, mas provavelmente será melhor apenas tornar seu tráfego de repetição destinado ao MAC da VM se uma das outras respostas não resolver o problema primeiro.

Boa sorte,

--jed

Responder2

Se o endereço MAC de destino na captura que você está reproduzindo não for o MAC na interface dentro da VM e houver um host na mesma VLAN que possui esse MAC, você não verá nenhum tráfego, porque o switch virtual encaminhará os quadros no porta associada a esse MAC.

Tente listar a tabela de encaminhamento de ponte e procure seu mac de destino.

informação relacionada