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

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

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

2 ответов


начало (первые 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-адрес это начинается с любой из приведенных выше строк, то это виртуальный.


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

пожалуйста, посетите: поставщик / 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

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