Воспроизведение с использованием VMware
Это больше похоже на вопрос настройки тестового стенда.
Я хочу использовать VMware для отладки сетевого кода в ядре Linux на виртуальной машине. Моя ВМ имеет два сетевых интерфейса. То, что я хочу сделать, это воспроизвести файл захвата на хосте и получить пакеты в виртуальной машине. Моя проблема в том, что я не вижу воспроизведенные пакеты в виртуальной машине.
- Я использую VMware и tcpreplay на хосте как sudo. Поэтому я думаю, что не должно быть никаких проблем с файлами устройств доступа.
- Я работаю на рабочей станции VMware 7.0
а. Сначала я начал с настраиваемой сети, так как она позволяет создать собственное имя виртуальной сети. Я написал /dev / vmnet3 и /dev / vmnet4 для двух интерфейсов соответственно. Однако после загрузки гостя я не увидел ни одного из этих интерфейсов или файлов устройств (в /dev), созданных на хосте.
б. Затем я попробовал "Только хост", но это не показывает, какой файл моста / устройства связан с интерфейсом.
с. Наконец я попробовал режим сетевого моста.
Я вижу vmnet1, vmnet8 и vboxnet0 на хосте. Я tcpreplayed файл захвата на каждом из этих интерфейсов, для всех трех вышеупомянутых случаев. Я попытался перехватить пакеты в виртуальной машине, используя "tcpdump -i any". Однако я не вижу никаких пакетов.
Любые идеи / указатели?
2 ответа
Я не пробовал это в VMware Workstation в последнее время, но обычно это результат одного из следующих действий:
Виртуальная машина, с которой вы пытаетесь захватить, не переводит сетевой адаптер в беспорядочный режим, поэтому не может видеть пакеты, которые ему не предназначены. Вы можете решить эту проблему, запустив tcpdump от имени пользователя root в виртуальной машине или изменив свой tcpreplay на использование MAC-адреса виртуальной машины в качестве места назначения для отправляемых пакетов (tcpreplay поставляется с tcprewrite, что упрощает подобные изменения). В качестве альтернативы, вы можете сделать MAC-адрес dest из пакетов, воспроизводимых широковещательным адресом, ff: ff: ff: ff: ff: ff (ВНИМАНИЕ: ОЧЕНЬ ОПАСНО. Если вы действительно не понимаете, что делаете, я рекомендую отключить от физического сеть, прежде чем делать это).
Хост не позволяет виртуальной машине переводить интерфейс в беспорядочный режим. Я не уверен, как настроить это в VMware Workstation, но в ESX[i] есть опция на vSwitch для "Разрешить случайный режим". Вы также можете обойти это, изменив MAC-адрес назначения потока tcpreplay, как упомянуто в 1.
Разрешения на vmnet в хосте не являются правильными, чтобы разрешить беспорядочный режим работы (при условии, что вы используете Linux в качестве хост-ОС). Об этом написано несколько статей о VMware KB, и решение в лучшем случае противоречиво. Вы могли бы сделать это, изменив интерфейс /dev/vmnetX на 777, но вам, вероятно, лучше просто сделать свой трафик воспроизведения предназначенным для MAC виртуальной машины, если один из других ответов не решит его первым.
Удачи,
--jed
Если MAC-адрес назначения в воспроизводимом вами захвате не является MAC-адресом на интерфейсе внутри виртуальной машины, и в той же VLAN, где есть этот MAC-адрес, есть узел, вы не увидите никакого трафика, поскольку виртуальный коммутатор будет пересылать кадры на порт, связанный с этим MAC.
Попробуйте перечислить таблицу переадресации моста и найдите свой целевой Mac.