Назад | Перейти на главную страницу

Подготовка с помощью VMware

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

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

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

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

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

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

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

Есть идеи / указатели?

В последнее время я не пробовал это в 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, и решение этой проблемы в лучшем случае непоследовательно. Возможно, вы сможете сделать это, изменив интерфейс / dev / vmnetX на 777, но вам, вероятно, лучше просто сделать ваш трафик воспроизведения, предназначенный для MAC виртуальной машины, если один из других ответов не решит проблему первым.

Удачи,

--джед

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

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