Tcpreplaying usando VMware

Tcpreplaying usando VMware

Esto se parece más a una pregunta de configuración de un banco de pruebas.

Quiero usar VMware para depurar algún código de red en el kernel de Linux en la VM. Mi VM tiene dos interfaces de red. Lo que quiero hacer es reproducir el archivo de captura en el host y recibir los paquetes en la VM. Mi problema es que no veo los paquetes reproducidos en la VM.

  1. Estoy ejecutando VMware y tcpreplay en el host como sudo. Por lo tanto, creo que no debería haber ningún problema para acceder a los archivos de los dispositivos.
  2. Estoy ejecutando la estación de trabajo VMware 7.0

a. Primero comencé con las redes personalizadas, ya que ofrecen la opción de crear su propio nombre de red virtual. Escribí /dev/vmnet3 y /dev/vmnet4 para las dos interfaces respectivamente. Sin embargo, después de iniciar el invitado, no vi ninguna de estas interfaces o archivos de dispositivos (en /dev) creados en el host.

b. Luego probé con 'Solo host', pero eso no muestra qué archivo de puente/dispositivo está asociado con la interfaz.

C. Finalmente probé el modo de red en puente.

Veo vmnet1, vmnet8 y vboxnet0 en el host. He reproducido previamente el archivo de captura en cada una de estas interfaces, para los tres casos anteriores. Intenté capturar paquetes en la VM usando "tcpdump -i any". Sin embargo, no veo ningún paquete.

¿Alguna idea/consejo?

Respuesta1

No he probado esto en VMware Workstation últimamente, pero normalmente es el resultado de uno de los siguientes:

  1. La máquina virtual desde la que intenta capturar no pone la NIC en modo promiscuo, por lo que no puede ver los paquetes que no están destinados a ella. Puede resolver esto ejecutando tcpdump como root en la VM o cambiando su tcpreplay para usar la dirección MAC de la VM como destino de los paquetes que envía (tcpreplay viene con tcprewrite, lo que facilita este tipo de cambios). Alternativamente, puede hacer que la dirección MAC de destino de los paquetes que se reproducen sea la dirección de transmisión, ff:ff:ff:ff:ff:ff (ADVERTENCIA: MUY PELIGROSO. A menos que realmente comprenda lo que está haciendo, le recomiendo que se desconecte de la red física). red antes de hacer esto).

  2. El host no permite que la VM ponga la interfaz en modo promiscuo. No estoy seguro de cómo ajustar esto en VMware Workstation, pero en ESX[i] hay una opción en vSwitch para "Permitir modo promiscuo". También puede solucionar este problema cambiando la dirección MAC de destino de la transmisión tcpreplay como se menciona en 1.

  3. Los permisos en vmnet en el host no son correctos para permitir que funcione el modo promiscuo (suponiendo que esté utilizando Linux como sistema operativo host). Hay un montón de artículos de VMware KB sobre esto y resolverlo es, en el mejor de los casos, inconsistente. Es posible que pueda hacerlo modificando la interfaz /dev/vmnetX a 777, pero probablemente sea mejor que simplemente haga que el tráfico de reproducción esté destinado a la MAC de la VM si una de las otras respuestas no lo resuelve primero.

Buena suerte,

--jed

Respuesta2

Si la dirección MAC de destino en la captura que está reproduciendo no es la MAC en la interfaz dentro de la VM y hay un host en la misma VLAN que tiene esa MAC, no verá ningún tráfico, porque el conmutador virtual reenviará las tramas en la puerto asociado con esa MAC.

Intente enumerar la tabla de avance del puente y busque su mac de destino.

información relacionada