Отличать сетевой адаптер 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), я предположу, что это виртуальный сетевой адаптер.