Tcpreplaying с использованием VMware

Tcpreplaying с использованием VMware

Это больше похоже на вопрос настройки испытательного стенда.

Я хочу использовать VMware для отладки некоторого сетевого кода в ядре Linux в VM. У моей VM есть два сетевых интерфейса. Я хочу воспроизвести файл захвата на хосте и получить пакеты в VM. Моя проблема в том, что я не вижу воспроизведенных пакетов в VM.

  1. Я запускаю VMware и tcpreplay на хосте как sudo. Поэтому я думаю, что не должно быть никаких проблем с доступом к файлам устройств.
  2. Я использую VMware Workstation 7.0.

a. Сначала я начал с Custom networking, поскольку он предоставляет возможность создания собственного имени виртуальной сети. Я написал /dev/vmnet3 и /dev/vmnet4 для двух интерфейсов соответственно. Однако после загрузки гостя я не увидел ни одного из этих интерфейсов или файлов устройств (в /dev), созданных на хосте.

б. Затем я попробовал «Только хост», но это не показывает, какой файл моста/устройства связан с интерфейсом.

в) Наконец, я попробовал режим мостовой сети.

Я вижу vmnet1, vmnet8 и vboxnet0 на хосте. Я выполнил tcpreplayed файла захвата на каждом из этих интерфейсов для всех трех вышеупомянутых случаев. Я попытался захватить пакеты в VM с помощью "tcpdump -i any". Однако я не вижу никаких пакетов.

Есть идеи/советы?

решение1

В последнее время я не пробовал это делать в VMware Workstation, но обычно это происходит по одной из следующих причин:

  1. Виртуальная машина, с которой вы пытаетесь захватить данные, не переводит сетевую карту в беспорядочный режим, поэтому не видит пакеты, которые не предназначены для нее. Вы можете решить эту проблему, запустив tcpdump как root в виртуальной машине или изменив tcpreplay на использование MAC-адреса виртуальной машины в качестве пункта назначения для отправляемых ею пакетов (tcpreplay поставляется с tcprewrite, что упрощает такие изменения). В качестве альтернативы вы можете сделать MAC-адрес назначения воспроизводимых пакетов широковещательным адресом, ff:ff:ff:ff:ff:ff (ВНИМАНИЕ: ОЧЕНЬ ОПАСНО. Если вы действительно не понимаете, что делаете, я рекомендую отключиться от физической сети перед этим).

  2. Хост не позволяет виртуальной машине переводить интерфейс в режим неразборчивого доступа. Я не уверен, как это настроить в VMware Workstation, но в ESX[i] есть опция vSwitch для "Разрешить режим неразборчивого доступа". Вы также можете обойти это, изменив MAC-адрес назначения потока tcpreplay, как указано в 1.

  3. Разрешения на vmnet на хосте неверны для работы неразборчивого режима (предполагая, что вы используете Linux в качестве хостовой ОС). На эту тему есть куча статей VMware KB, и решение этой проблемы в лучшем случае непоследовательно. Вы можете сделать это, изменив интерфейс /dev/vmnetX на 777, но вам, вероятно, лучше просто сделать так, чтобы ваш трафик воспроизведения был предназначен для MAC виртуальной машины, если один из других ответов не решит эту проблему в первую очередь.

Удачи,

--Джед

решение2

Если MAC-адрес назначения в воспроизводимом захвате не является MAC-адресом на интерфейсе внутри виртуальной машины и в той же VLAN есть хост с этим MAC-адресом, вы не увидите никакого трафика, поскольку виртуальный коммутатор будет пересылать кадры на порт, связанный с этим MAC-адресом.

Попробуйте просмотреть таблицу переадресации моста и найти нужный Mac.

Связанный контент