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