Дифференцировать сетевой адаптер VMware от физических сетевых адаптеров -или- Обнаружение виртуального сетевого адаптера

Мне нужно различать реальные адреса и адреса VM, используя любой Windows API. Я использую API GetAdaptersAddresses для заполнения списка IP-адресов для локальной машины. Мне нужно извлечь только "реальные" адреса, кроме адресов, связанных с сетевым адаптером VMware и другими адресами (адреса автоматической конфигурации и туннеля). Я не смог найти какой-либо API или любой флаг, чтобы отличить это. Можно ли это сделать?

PS: флаг IfType в структуре IP_ADAPTER_ADDRESSES, возвращаемый GetAdaptersAddresses, не помогает мне различать адреса VMware и реальные адреса.

Ответы

Ответ 1

Начало (первые 3 сегмента) MAC-адреса показывает, является ли виртуальный интерфейс:

"00:05:69"; //vmware1
"00:0C:29"; //vmware2
"00:50:56"; //vmware3
"00:1C:42"; //parallels1
"00:03:FF"; //microsoft virtual pc
"00:0F:4B"; //virtual iron 4
"00:16:3E"; //red hat xen , oracle vm , xen source, novell xen
"08:00:27"; //virtualbox

ИЗМЕНИТЬ
Чтобы быть более понятным, если интерфейс имеет MAC-адрес, который начинается с любой из приведенных выше строк, тогда он виртуальный.

Ответ 2

Я нашел сайт, чтобы получить более полный список префикса MAC-адреса после чтения clyfe.

Посетите: Поиск и поиск MAC-адресов/Ethernet/Bluetooth MAC-адресов

Например: VirtualBox имеет 17 префикс MAC!

Prefix  Vendor
000F4B  Virtual Iron Software, Inc. (was: Katana Technology)
001307  Paravirtual Corporation (was: Accenia, Inc.)
0013BE  Virtual Conexions
0021F6  Virtual Iron Software
00240B  Virtual Computer Inc.
00A0B1  First Virtual Corporation
00E0C8  virtual access, ltd.
545200  linux kernal virtual machine (kvm)
000F4B  Virtual Iron Software, Inc. (was: Katana Technology)
001307  Paravirtual Corporation (was: Accenia, Inc.)
0013BE  Virtual Conexions
0021F6  Oracle Corporation (was: Virtual Iron Software)
00240B  Virtual Computer Inc.
00A0B1  First Virtual Corporation
00E0C8  virtual access, ltd.
18922C  Virtual Instruments
3CF392  Virtualtek. Co. Ltd

В конце я предпочел обнаружить виртуальный сетевой адаптер из "Описание сетевой карты". Если я вижу в нем слово "Virtual" или "VMWare" (С++: IP_ADAPTER_INFO:: Description), я предполагаю, что это виртуальный сетевой адаптер.