XEN : mon réseau

Il existe plusieurs manières de configurer le réseau dans un serveur XEN afin que les Machines Virtuelles (MV) disposent chacune d'un accès réseau. 
Les différents modes sont :

  • NAT
  • Bridge
  • Route

Le plus simple pour moi est le mode "Bridge" car chaque MV dispose de sa propre adresse IP et de tous les ports disponibles sans aucun paramétrage spécifique au niveau du domaine-0. Dans mon cas où toutes les machines sont des machines de test bien à l'abri derrière un pare-feu sur la machine "pont" de mon réseau cela ne me pose pas de problèmes de sécurité. 
La situation pourrait être très différente sur des machines accessibles directement depuis Internet ou surtout dans le cas de machines de production où la sécurité est primordiale. Par ailleurs dans ce cas là les ports utilisés sont peu nombreux et la gestion du routage entre les machines  n'est pas trop évolutive. 
En effet je n'aimerais pas toucher à un script iptables compliqué sur des machines de production ..... au risque de bloquer l'accès à des ressources critiques. 

J'ai donc choisi le mode "Bridge" qui répond à mes besoins. 
Paramétrage du mode "Bridge".

  • Au niveau du paramétrage de XEN.

Il s'agit de mettre en place les bons paramètres dans le fichier "xend-config.sxp".

  • (network-script L-NT ) 
    c'est le script utilisé par le démon xend au démarrage pour initialiser le(s) bridge(s)
  • (vif-script vif-bridge) 
    c'est le script utilisé par xend à la création de chaque interface de chaque MV

Comme je dispose de deux interfaces réseau j'utilise un petit script perso qui initialise les deux ponts d'un seul coup en appelant le script "standard" de Suse :

#!/bin/bash 
# L-nt : Start XEN bridge

MKBRIDGE () 
{ 
"$dir/network-bridge" "$@" vifnum=1 bridge=eth1 netdev=eth1 
sleep 1 
"$dir/network-bridge" "$@" vifnum=0 bridge=eth0 netdev=eth0   
brctl show 
echo '.' 
echo ' ' 
} 
MKBRIDGE $1 $2  

Les deux ponts sont activé et les MV peuvent se "brancher" et accéder aux réseaux. 

Le script standard OpenSuse ne traite qu'un interface il faut donc passer par un script intermédiaire. 
Par ailleurs le démarrage du script par le démon est effectué à un mauvais moment dans la séquence d'init et cela provoque des ennuis divers, je lance donc ce script complètement en fin de la séquence de boot ou "à la main" lorsque j'effectue des manips. 

Dernières nouvelles : 
Avec OpenSuse 11.2 le réseau est d'office installé en "pont" il ne reste rien à faire ... et cela marche sans problèmes. 
Le "pont" est créé automatiquement lors de l'installation et est utilisé même dans les modes non "Xen". 
Les performances réseau ne semblent pas en souffrir si ce n'est que la gestion du MTU fonctionne mal. Il est impossible de mettre un MTU à 4000 en automatique. Il est inutile de configure le MTU à 4000 avec les outils graphiques, cela n'a aucun effet. Même en remplissant les fichiers de configuration "à la main" avec la bonne valeur, on constate qu'après un reboot le MTU est retombé à 1500. J'aime bien avoir l'interface utilisant le iSCSI avec un MTU plus élevé. 
Attention la version 11.2 n'est pas encore finalisée et peut présenter quelques inconvénients voir l'article sur le SSD