Воспроизведение с использованием VMware

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

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

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

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

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

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

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

Любые идеи / указатели?

2 ответа

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

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

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

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

Удачи,

--jed

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

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

Другие вопросы по тегам