Troisième partie du tutoriel sur la virtualisation « Xen et OpenVswitch sont dans une Debian« .
Dans la partie précédente, nous avons installé Xen. Passons maintenant à l’aspect réseau.
Dans mon premier tutoriel sur la virtualisation, j’utilisais le système de bridge de linux (bridge-utils). Le fonctionnement est OK, pas de soucis, mais cela fait un bout de temps que je voulais tester OpenVswitch . Et cela s’avère même plus simple à l’usage à mon avis.
De plus, OpenVswitch gère les vlans, la QoS, le bonding, le mirroring, bref, un vrai jouet ! (oui, chacun sa notion de jouet…)
I – Installation
Toujours dans notre machine hôte Dom0, nous installons le paquet :
# apt-get install openvswitch-switch
On vérifie que tout est ok :
# ovs-vsctl show 051fd463-96f5-4529-a55a-ff0b03004ffc ovs_version: "2.6.2"
Rien de plus, y’a pas à dire, les paquets, c’est fichtrement pratique 😉
II – Création du premier switch
Nous allons maintenant créer le premier switch: br0. Celui ci servira a faire le lien entre eth0 (la connexion physique) et les machines que nous brancherons dessus. En l’occurrence, une fois tout en place, nous aurons deux machines dessus, le Dom0 et la VM Routeur.
# ovs-vsctl add-br br0
Regardons ce que cela a fait :
# ovs-vsctl show 051fd463-96f5-4529-a55a-ff0b03004ffc Bridge "br0" Port "br0" Interface "br0" type: internal ovs_version: "2.6.2"
On voit le bridge br0 et un port bro de type interne (port sur lequel est branché le dom0). En effet :
# ifconfig br0 br0 Link encap:Ethernet HWaddr 42:1e:59:f4:5c:49 BROADCAST MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 lg file transmission:0 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
Le dom0 a bien un brin br0 de type ethernet.
Nous allons modifier le fichier interfaces /etc/network/interfaces :
auto lo iface lo inet loopback allow-ovs br0 iface br0 inet static address IP_PUBLIQUE netmask 255.255.255.0 gateway GATEWAY ovs_type OVSBridge ovs_ports eth0 allow-br0 eth0 iface eth0 inet manual ovs_bridge br0 ovs_type OVSPort
Ici, l’ip publique correspond à l’ip principale de ma Dédibox et la gateway que mon Dom0 utilise déjà. Oui, en gros, c’est la config d’eth0 qu’on retrouve la.
Pour résumer,le noyau linux du Dom0 ne sera plus connecté a eth0. Eth0 sera branché a un switch, et sur ce switch, on connectera le noyau linux sur le lien br0.
On reboot la machine, on croise les doigts, et quelques instants après on doit pouvoir se connecter dessus.
On regarde :
# ovs-vsctl show 051fd463-96f5-4529-a55a-ff0b03004ffc Bridge "br0" Port "br0" Interface "br0" type: internal Port "eth0" Interface "eth0" ovs_version: "2.6.2"
On voit bien le switch, le port eth0 et le port br0.
Puis :
# ifconfig eth0 eth0 Link encap:Ethernet HWaddr 00:0c:29:58:fd:1e adr inet6: fe80::20c:29ff:fe58:fd1e/64 Scope:Lien UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:1911 errors:0 dropped:0 overruns:0 frame:0 TX packets:57 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 lg file transmission:1000 RX bytes:1040132 (1015.7 KiB) TX bytes:8649 (8.4 KiB)
# ifconfig br0 br0 Link encap:Ethernet HWaddr 00:0c:29:58:fd:1e inet adr:IP_PUBLIQUE Bcast:BCASTPUBLIQUE Masque:255.255.255.0 adr inet6: fe80::20c:29ff:fe58:fd1e/64 Scope:Lien UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:112 errors:0 dropped:0 overruns:0 frame:0 TX packets:60 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 lg file transmission:0 RX bytes:11919 (11.6 KiB) TX bytes:9559 (9.3 KiB)
On a bien l’IP affectée à br0.
III – Création du bridge interne.
On va maintenant créer le bridge sur lequel les VMs seront connectées :
# ovs-vsctl add-br brint
Puis :
# ovs-vsctl show 051fd463-96f5-4529-a55a-ff0b03004ffc Bridge "br0" Port "br0" Interface "br0" type: internal Port "eth0" Interface "eth0" Bridge brint Port brint Interface brint type: internal ovs_version: "2.6.2"
On voit notre nouveau bridge avec un port brint qui est branché sur l’hyperviseur.
IV – Création des vlans
Pour le vlan, on va utiliser des fakebridge (des bridges dans un bridge).
# ovs-vsctl add-br vlan2 brint 2 # ovs-vsctl add-br vlan10 brint 10 # ovs-vsctl add-br vlansys brint 99
Cela ajoute trois vlans, vlan 2, taggué 2, vlan10, taggé 10 et un vlansys taggé 99.
# ovs-vsctl show 051fd463-96f5-4529-a55a-ff0b03004ffc Bridge "br0" Port "br0" Interface "br0" type: internal Port "eth0" Interface "eth0" Bridge brint Port vlansys tag: 99 Interface vlansys type: internal Port brint Interface brint type: internal Port "vlan2" tag: 2 Interface "vlan2" type: internal Port "vlan10" tag: 10 Interface "vlan10" type: internal ovs_version: "2.6.2"
Sur le même principe qu’avant, on trouve trois ports branchés sur trois interfaces de l’hyperviseur.
On a un Xen et un début de réseau virtuel. Ne reste qu’a faire beaucoup de café et à se donner rendez vous dans la partie IV : Mise en œuvre.