Virtualisation avec KVM sur serveur dédié : #4 Réseau
Rédigé par Xavier - -
Maintenant que notre machine virtuelle est installée, nous allons faire en sorte qu'elle puisse contacter le réseau extérieur, et être joignable elle aussi.

Après avoir passé des heures et des heures à parcourir les forums francophones et anglophones, j'ai enfin trouvé la solution.
Il faut créer un périphérique réseau virtuel (tap0), puis un pont (bridge, br0) avec la carte réseau physique (eth0).

(NIC = Carte réseau)
Outils
Il faut installer bridge-utils pour pouvoir créer un pont, et uml-utilities pour le périphérique virtuel.
Note
Ne me demandez pas pourquoi, mais le fait de faire un pont réseau avec l'interface eth0 fait sauter l'adresse IP de cette dernière. Pour pouvoir joindre votre serveur via cette interface, il faudra attribuer une IP au pont (br0). C'est avec elle que vous pourrez connecter votre client VNC.
Configuration Réseau
Ouvrez le /etc/network/interfaces et recopiez (ou adaptez) le contenu ci-dessous:
auto lo iface lo inet loopback auto eth0 iface eth0 inet manual auto br0 iface br0 inet static address 192.168.3.50 netmask 255.255.255.0 pre-up tunctl -u xavier -t tap0 bridge_ports eth0 tap0 bridge_maxwait 5
- lo est bien sûr l'interface de loopback
- eth0 c'est notre carte réseau. Ça ne sert à rien de lui mettre une IP vu qu'elle saute quand on fait le pont
- br0 c'est notre pont réseau. On lui donne une IP (à adapter chez vous) et un netmask
- pre-up tuntcl sert à créer le périphérique virtuel. On lui spécifie que l'utilisateur "xavier" doit avoir le droit de l'utiliser
- bridge_ports spécifie les interfaces à relier
Note: Si vous voulez plusieurs machines virtuelles, avec un pont réseau, vous devez rajouter des lignes pre-up tunctl -u xavier -t tap1 puis tap2, etc... ensuite dans la ligne bridge_ports rajoutez vos interfaces tapX.
Redémarrez votre réseau. Un ifconfig doit montrer l'interface br0 (avec son adresse IP) et tap0 (sans adresse IP).
Carte réseau paravirtualisée
Pour aller doucement, nous allons commencer par configurer une carte réseau paravirtualisée (elle n'aura pas encore accès au pont, ça viendra plus tard). Pour cela, voici l'option à passer à kvm:
Note: Si on ne spécifie pas d'adresse MAC, toutes vos machines virtuelles auront la même. Donc pour chaque machine virtuelle on rajoute macaddr= et on doit en mettre une unique. Bon dans notre cas ce n'était pas gênant car nous n'avons qu'une seule machine virtuelle.
La carte réseau paravirtualisée nécessite des pilotes. Heureusement nous les avons récupérés tout à l'heure (sur l'iso "NETKVM..."). Voici la commande complète pour lancer KVM:
$ kvm \ -m 1024 \ -drive file=img/win2008.img,if=virtio,boot=on \ -vga vmware \ -vnc :1 \ -usbdevice tablet \ -net nic,model=virtio,macaddr=52:54:00:12:34:56 \ -cdrom iso/NETKVM-20081229.iso \
Connectez vous avec votre client VNC pour récupérer l'affichage de votre Windows Server 2008. Après vous être loggé, vous aurez un message vous signalant la détection d'un nouveau périphérique.
Sélectionnez "Locate and install driver software"
Don't search online
Browse my computer for driver software. Puis sélectionnez votre lecteur de cdrom. Les pilotes s'installent...
Si vous avez ceci, alors tout est bon.
Éteignez maintenant votre Windows Server 2008. Nous allons devoir modifier la commande de lancement de KVM. Tout d'abord nous n'avons plus besoin de l'iso NETKVM puisque les pilotes sont installés. Ensuite nous allons devoir rajouter des options pour que la carte réseau paravirtualisée soit liée à tap0 (notre interface faisant partie du pont avec eth0). Bref voici la commande:
$ kvm \ -m 1024 \ -drive file=img/win2008.img,if=virtio,boot=on \ -vga vmware \ -vnc :1 \ -usbdevice tablet \ -net nic,model=virtio,macaddr=52:54:00:12:34:56 \ -net tap,ifname=tap0,script=no
Rendez-vous dans le Centre Réseau de Windows, et paramétrez une IP pour votre nouvelle carte réseau (ou laissez-là en automatique si vous disposez d'un serveur DHCP).
A présent vous pouvez ouvrir une console et essayer de pinger des machines du réseau. Normalement, c'est bon. Pour qu'elles puissent vous pinger, vous devez désactiver le parefeu de Windows (ou le paramétrer).
Votre serveur peut désormais être contacté à partir du réseau! Bon alors évidemment nous avons choisi la solution difficile, car entièrement manuelle, tout en sachant que Proxmox, Ovirt et libvirt peuvent le faire de manière simple. Mais il est toujours bon de connaitre le fonctionnement initial de KVM.