[Hyper-V] Configurer correctement vos protocoles réseau sur un Server Core Windows 2008 avec NVSPBind
Introduction
Afin de vider ma liste de sujets à blogger qui s’entassent depuis plusieurs mois dans mes brouillons, je continue ma série de posts sur l’infrastructure IT. Dans mon post précédent vous avez pu apprendre que Wygwam a migré en Mars d’une infrastructure hétérogène Virtual Server 2005 / VMWare vers une architecture homogène sous Windows Server 2008 R2 avec Hyper-V et SCVMM en version 2008 R2.
J’ai donc déployé sur notre serveur “primaire” un Windows 2008 R2 Full avec System Center Virtual Machine Manager (SCVMM), un outil de la gamme System Center permettant le management centralisé de notre infrastructure virtuelle (création, configuration et déploiement des machines virtuelles, allocations des ressources, déplacement à chaud, gestion des templates de VM, etc.. etc..).
Dans notre architecture, SCVMM pilote plusieurs serveurs de virtualisation Hyper-V, véritables machines de course (Bi-Quad Core, 8 à 12 Go de DDR3 et disques SAS 15000tr/min).
Etant donné que ces serveurs de virtualisation n’ont qu’un seul rôle : virtualiser, ils ont été installé en “Server Core”. L’installation “Server Core” est un Windows Server ultra-minimaliste sans interface graphique ni bureau ou Explorateur de fichier, juste le “coeur” de Windows afin de gagner en performance, réduire la maintenance (et le nombre de mise à jour à appliquer) et par la même occasion, réduire la surface d’attaque. Cela simplifie énormément l’administration, et SCVMM me permet ensuite de gérer mon parc de VM que je repartie ensuite sur les serveurs “Core” dédiés à la virtualisation.
Cartes réseau et Réseau virtuel
Une fois mes serveurs de virtualisation installés avec en “Server Core” avec le rôle “Hyper-V” et ajoutés dans les listes “Hosts” de SCVMM, il faut créer le réseau virtuel pour connecter les VM qui tourneront dessus.
Pour bien faire, j’ai à chaque fois deux cartes réseau installées sur chaque serveur Core. Une carte réseau sera dédiée pour la machine hôte (le serveur en lui-même) et l’autre carte réseau dédiée pour les machines virtuelles.
Pour cela, dans les propriétés de chaque serveur hôte dans SCVMM, sous l’onglet “Network”, je crée un “Virtual Network” que j’attache à une de mes deux cartes réseau. Chez nous, les cartes réseau D-Link Gigabit sont utilisées pour les machines virtuelles :
En se connectant sur les “Server Core”, on retrouve toujours nos deux interfaces réseau (via un “ipconfig /all”) :
On retrouve bien une 1ère interface “Local Area Connection” sur ma carte Broadcom réservée pour le serveur hôte et la 2ème interface “Local Area Connection 4” lié au “Microsoft Virtual Network Switch Adapter”.
C’est cette seconde interface qui va servir de “switch” pour toutes les machines virtuelles.
Mais en théorie, pour faire les chose proprement, il faudrait désactiver tous les protocoles réseau sur cette interface et ne laisser que le “Microsoft Virtual Network Switch Procotol”.
Sur un serveur classique (en Full Install), on retrouve dans les propriétés de la carte réseau les différents protocoles activés pour la carte en question :
Il suffit de ne sélectionner, pour la carte dédiée aux VMs, que le protocole “Microsoft Virtual Network Switch Protocol” et surtout de désactiver les protocoles TCP/IP (v4 et v6), le client MS Network, le File Sharing, etc…
L’outil NVSPBind
Malheureusement, sur un “Server Core”, il n’y pas de véritable interface graphique. Vous ne pourrez donc pas trouver la fenêtre des propriétés permettant d’activer ou de désactiver les protocoles réseau sur une carte comme montré ci-dessus.
A la place, on trouve sur le site MSDN de Microsoft, un outil nommé : NVSPBind à l’adresse : http://code.msdn.microsoft.com/nvspbind
Comme l’indique l’introduction…
nvspbind is a tool for modifying network bindings from the command line. It is especially useful in Server Core environments with the Hyper-V role enabled.
… cet outil à spécialement été conçu pour les “Server Core” avec le rôle Hyper V installé afin de permettre de regler correctement les protocoles réseau des cartes utilisées.
Il vous faudra tout d’abord récupérer le package sur le site et l’installer dans le répertoire que vous souhaitez :
En lançant le programme”nvspbind.exe” vous obtiendrez la liste des interfaces réseau et leurs protocoles :
Pour régler correctement l’interface réseau utilisée par les machines virtuelles, il faut trouver l’interface “Internal”. Dans notre cas ci-dessous, nous avons :
- La BroadCom en “Local Connection Aera” : correspondant à la carte réseau de la machine “hote”
- La “Local Connection Aera 2” correspond au Switch Hyper-V (vms_mp)
- La D-Link en “Local Connection Aera 3” où tout est désactivé sauf le “vms_pp” : c’est la carte utilisée pour nos VMs configurée dans VMM
- La “Local Connection Aera 4”: 2ème interface réseau de ma carte D-Link configurer avec tous les protocoles (avec donc une IP attribuée comme on peut le constater dans un ipconfig).
C’est cette dernière interface, définie en “Internal” de type “vms_mp”, qui nous est inutile. Pour suivre les best-pratices, sur notre carte réseau D-Link, il ne devrait y avoir QUE le “vms_pp” utilisé pour les VMs et nous devrions désactiver les protocoles sur la vms_mp.
Comme sur la fenêtre graphique des propriétés de l’interface réseau présentée ci-dessus, il faut désactiver les protocoles :
- ms_netbios : NetBios Interface
- ms_server : File and Printer Sharing for MS Networks
- ms_msclient : Clients for MS Networks
- ms_tcpip : Internet Protocol v4 (TCP/IPv4)
- ms_tcpip6 : Internet Protocol v6 (TCP/IPv6)
- ms_netbt : WINS Client protocol
- ms_smb : MS NetBiosSmb
On peut cependant laisser les protocoles QoS Packet Scheduler (ms_pacer), et les Link-Layer Topology Discovery Mapper et Responder (ms_lltdio et ms_rspndr).
Pour cela tapez les commandes suivantes :
nvspbind /d « Local Area Connection 4 » ms_netbios
nvspbind /d « Local Area Connection 4 » ms_server
nvspbind /d « Local Area Connection 4 » ms_msclient
nvspbind /d « Local Area Connection 4 » ms_tcpip6
nvspbind /d « Local Area Connection 4 » ms_netbt
nvspbind /d « Local Area Connection 4 » ms_smb
nvspbind /d « Local Area Connection 4 » ms_tcpip
Et voilà vos interfaces réseau sur vos Windows Server Core correctement configurées 😉