В QEMU возможно ли перехватывать пакеты, отправляемые / получаемые гостевой ОС Linux? - PullRequest
13 голосов
/ 20 апреля 2011

Мы выполняем небольшой проект, который включает мониторинг Гостевой ОС (например, Linux) со слоя гипервизора (то есть QEMU). Одной из вещей, которую мы хотим отслеживать, является сетевой трафик, входящий / выходящий из гостевой ОС. Возможно ли это сделать без изменения гостевой ОС?

Один из способов сделать это - перехватить соответствующие системные вызовы, которые создаются при создании сокетов, и извлекать значения из соответствующих регистров во время выполнения инструкций. Но мы не уверены, легко ли это или правильно ли это делать.

Ответы [ 4 ]

6 голосов
/ 01 июня 2016

В дополнение к ответу @ usr57368 - для устройств, созданных с помощью -netdev, используйте -object filter-dump, ... вместо -net dump:

-object filter-dump,id=id,netdev=dev,file=filename][,maxlen=len]

Дампсетевой трафик на netdev dev в файл, указанный в filename.Хранится не более длинных байтов (по умолчанию 64 КБ) для каждого пакета.Формат файла - libpcap, поэтому его можно проанализировать с помощью таких инструментов, как tcpdump или Wireshark.

5 голосов
/ 24 апреля 2011

Из документации QEMU :

-net dump[,vlan= п ][,file= файл ][,len= LEN ]

Дамп сетевого трафика по VLAN n в файл файл (qemu-vlan0.pcap по дефолт). Максимум len байтов (64 КБ по умолчанию) для каждого пакета хранятся. Формат файла - libpcap, поэтому он может быть проанализированы с помощью таких инструментов, как tcpdump или Wireshark.

Вы также должны иметь возможность осуществлять мониторинг в режиме реального времени, запустив Wireshark на хосте, если вы --net tap.

1 голос
/ 10 июня 2011

Поскольку qemu является открытым исходным кодом, вы можете получить исходный код и вставить код в эмуляцию сетевого устройства, чтобы захватывать и регистрировать пакеты данных по мере их поступления через устройство.Например, смотрите подпрограмму virtio_net_flush_tx () в hw / virtio-net.c.

0 голосов
/ 24 апреля 2011

используйте программу под названием wireshark.Введите фильтр поиска (ip.src eq [IP] или ip.dst eq [тот же ip]), и он сообщит вам все данные, поступающие на этот компьютер и с него.Полезно для более глубокого изучения взаимодействия с сетью или определенных действий.

...