Hyper-V guest sistemleri ve MAC adreslerinin kullanımı

Merhaba,

Yakin zamanda üzerinde çalistigim bir problem kaydi sonrasinda Hyper-V üzerinde guest’lerin kullandiklari MAC adresleri ile ilgili bazi bilgileri paylasmak istedim.

Öncelikle hepimizin bildigi üzere ayni network üzerinde ki sistemlerin birbirleriyle ag üzerinde iletisim kurabilmeleri için farkli MAC adreslerine ihtiyas duyarlar. Fiziksel ortamda Ag karti üreticileri kendilerine ait MAC adres bloklarini kullandiklari için “çakisma” olmasini pek beklemeyiz. Tabii “No name” cihazlarda MAC adresini çogaltma yoluyla yapilan üretimleri burada tartismiyoruz. VIrtualization ortaminda ise, siz Hyper-V kurduktan sonra 3 farkli ag tipini seçerek sanal sistemleri birbirine baglayabilirsiniz:

  1. External
  2. Internal
  3. Private

Her 3 ag tipinde de sanal sistemlerin birbirlerini görmesi için gerekli virtual adapter üzerinde subnet ayarlarini dogru yapiyor olmalisiniz. Ilk iki ag tipinde Hyper-V ayrica host sistem içinde virtual adapter yaratmaktadir. Hyper-V rolünü kurarken External Virtual Network yaratilmasi için seçim yaparsaniz, yükleme esnasinda Fiziksel olarak takili olan Ag karti artik bir switch olarak görev yapacak ve kurulum host makinasi için bir Virtual adapter yaratacaktir. Sonrasinda bu virtual adapter, switch’e baglanacak ve kurulumdan önce kullandiginiz TCP/IP parametleri ve hizmetler aynen bu yeni karta eklenecektir (bind). Bu noktada admin için çok fazla bir sey degismeyecegini düsünsek de, daha sonra ag kartlari ile ilgili çalisma yaparken bazi zorluklar yasayabiliriz. Bunu yasamamak için isimlendirmeyi daha anlamli yapmak yararli olacaktir. Örnegin Hyper-V rolü kurmadan önce sadece tek bir Ethernet kari göreceksiniz (tabii sistemde birden fazla Ethernet karti varsa digerlerini de görebilirsiniz)

image

Rolün kurulmasindan sonra ise Virtual Network Manager üzerinden bir External kart tanimladiginizda, Hyper-V host için bir Virtual Adapter yaratacaktir:

 

image

image

Gördügünüz gibi host üzerinde artik iki tane NIC bulunuyor. Fiziksel kartiniz artik bir switch olarak çalisacaktir ve sadece bir tane protocol bind edilmis olacaktir: Microsoft Virtual Network Switch Protocol. Virtual Adapter ise daha önce kullandiginiz tüm protokelleri kullanacaktir. Yukarida görüldügü gibi isimlendirmeyi uygun yaptiginizda karisikligi engellemis olursunuz. Görüldügü gibi switch olarak kullanilan kart fiziksel adapter’e baglidir.

image

Not: Network Monitor gibi bir monitoring araci yüklediginizde o da bind olabilir.

image

Yukaridaki sekili incelerseniz bu virtual adapter ve switch ayarlamasinin nasil yapildigini daha iyi anlayabilirsiniz. Bundan sonraki adimda, kuracaginiz sanal sistemleri yaratmis oldugunuz “External” network’e baglayabilirsiniz, böylelikle fiziksek kartiniz üzerinden host ile ayni network üzerinde bulunan diger sistemler ile iletisime geçebilirsiniz. Eger Internal adaptörleri tercih ederseniz, sadece o adaptörü kullanan sanal makineler ve tercihen host ile iletisime geçebilirsiniz. Özetle, her yaratacaginiz Internal network için ayni zamanda host üzerinde bir adapter yaratilacaktir. O adapter üzerinde statik IP adreslemesi yaparak sanal makineler ile iletisim kurmasini saglayabilirsiniz.

Peki yeni kurulan sanal sistemlerin kullanacagi MAC adreslerini nasil belirliyoruz?

Ag karti üreticilerinin Institute of Electrical and Electronics Engineers, Incorporated (IEEE)’den almis oldugu OUI (Organizationally Unique Identifier) bulunmaktadir. Microsoft’un kullandigi 00-15-5D Hyper-V için kullanilmaktadir. Böylelikle 3 octect belirlenmis oluyor. Sonraki iki octect ise kurulum yapilan Hyper-V sunucusunun kullandigi IPV4 adresinin son iki octect’inden olusmaktadir. Örnegin benim kurulum yaptigim sunucunun IP adresi 10.165.208.53 ve bu durumda diger iki octect söyle olacaktir: D0-35. En son octect ise otomatik olarak 00 ile FF arasindan seçilecektir. Kurulum yapildiktan sonra registry üzerinden bu araligin kontrolünü yapabilirsiniz. Burada 256 adet sanal sistem için MAC adresi tanimlamasi yapilabilir. Bu registry key üzerinde yapacaginiz degsiklilere dikkat etmelisiniz çünkü ag üzerinde baska bir sistem ile MAC adresi çakismasina sebep olabilirsiniz. Size tavsiyem bu registry anahtarina dokunmamanizdir. Eger illa ki limitlemek istiyorsaniz, son octect’I degistirebilirsiniz.

image

Böylelikle bir sanal makine kurdugunuzda, Hyper-V konsolu üzerinden özelliklerine baktiginizda atanan MAC adresini görebilirsiniz. Ayrica o sanal sistem içerisinde ipconfig /all çiktisini alarak da yine MAC adresini görebilirsiniz.

image

Virtual Network Switch, bildiginiz diger switchlerde de oldugu gibi MAC adresi üzerinde herhangi bir müdahalede bulunmaz. Yani iki farkli ag üzerinde bulunan sanal makineler birbirleriyle görüstügünde ARP tablosu 00-15-5D ile baslayan MAC adreslerini göstermelidir. Benim yakin zamanda yasadigim sorun ayni cluster içerisinde farkli node’larda bulunan sanal makinelerin ARP tablosunda kendisine ait MAC adresi yerine, üzerinde oldugu Hyper-V host’a ait MAC adresinin kullanilmasiydi. Yukarida da anlattigim gibi MAC adresine müdahele edebilecegimiz alanlar ya registry kaydi veya statik olarak MAC adresi verilmesidir. Hyper-V konsolundan kontrol ettigimizde MAC adresini dogru görüyorsak ve yine sanal sistem üzerinde ayni MAC adresini görüyorsak, problemin kaynagi farkli olmalidir diye düsündük. Asagida 4 farkli VM’in ayni MAC adreslerini kullandigini görebilirsiniz:

image

Yaptigimiz arastirmada Boradcom’un host ve VM’in ayni MAC adresini kullanmasini destekledigini ve BASP (Broadcom Advanced Server Program)’in bu adreslemeyi yönetebildigini ve VM’in dogru paketi almasini sagladigini ve “by default” olarak böyle çalistigini ögrendik. Eger farkli MAC adresleri kullanilmasini istiyorsak, asagidaki registry key yardimi ile HyperVMode etkinlestirmemiz gerekiyormus.

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ Blfp\Parameters\1] "HyperVMode"=dword:00000001

VLAN’ler ve diger virtual network özellikleri ile ilgili problemler hakkinda ki diger bir yazida görüsmek üzere…

Okan Çetinim.