2010-06-17 2 views
14

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

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

ответ

14

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

+2

просто хотел добавить ссылки: используйте эту ссылку - http://standards.ieee.org/regauth/oui/index.shtml, чтобы найти резервирование id. Обратную операцию можно выполнить здесь: http://coffer.com/mac_find/ – Andrey

+0

спасибо, это было очень полезно – Venkat

+0

Это не совсем точно ответит на вопрос: откуда мы знаем из названия компании, если это виртуально или нет? – Gyuri

2

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

Пожалуйста, посетите: Vendor/Ethernet/Bluetooth MAC Address Lookup and Search

Например: VirtualBox has 17 MAC prefix!

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» (C++: IP_ADAPTER_INFO :: Description), я предполагаю, что это виртуальный сетевой адаптер.

+0

Как вы обрабатываете неанглийское «Описание»? – Ajay

Смежные вопросы