Project

General

Profile

StageKVMBIRD

Projet de maquettage réseau virtualisé avec interconnexion de niveaux 2 et 3 (routage dynamique)

Projet

Technique

  • Installation et prise en main de KVM/libvirt, Open vSwitch, BIRD.
  • Accès aux machines virtuelles par groupe d'utilisateurs (accès non root)
  • Etablissement de plusieurs topologies de test (voir schéma en lien)
  • Utilisation de routes statiques puis réglages d'OSPF

Information / gestion

  • Documentation et prise en main de BIRD, open vSwitch, KVM

Point d'avancement

Installation et lancement de Open vSwitch :

aptitude install openvswitch-brcompat openvswitch-common openvswitch-datapath-dkms

cat /etc/network/interfaces
# The loopback network interface
auto lo
iface lo inet loopback@

# The primary network interface
auto eth0
iface eth0 inet manual
up ifconfig $IFACE 0.0.0.0 up
down ifconfig $IFACE down

# Host Network
iface ovsbr0p1 inet dhcp

ovs-vsctl add-br ovsbr0
ovs-vsctl add-port ovsbr0 eth0
ovs-vsctl add-port ovsbr0 ovsbr0p1 -- set interface ovsbr0p1 type=internal
reboot

Ajout de VMs avec qemu-kvm :

qemu-img create -f raw debian.raw 2G // Création d'une image disque au format RAW
virt-install --connect qemu:///system --name=DebianTestingSource --hvm --noautoconsole --ram 1024 --file=./debian.raw --vnc --os-type=linux --cdrom ./debian-wheezy-DI-rc1-amd64-CD-1.iso --nonetworks // Ajout d'une VM utilisant l'image
virt-clone --connect qemu:///system --original DebianTestingSource --name X --file ./debianX.raw // Clônage de la machine virtuelle
virt-manager // Pour superviser les VMs en mode graphique
virt-viewer nomVM // Pour lancer la vue sur une VM en ligne de commande

Accès aux utilisateurs non root résolu via l'utilisation de plusieurs commandes :

cat /etc/polkit-1/localauthority/50-local.d/50-libvirt-remote-access.pkla
[libvirt Management Access]
Identity=unix-group:libvirt;unix-user:root
Action=org.libvirt.unix.manage
ResultAny=yes
ResultInactive=yes
ResultActive=yes

Ce fichier permet de déclarer les accès à la supervision des machines virtuelles selon le nom ou le groupe d'un utilisateur.

adduser vince kvm
adduser vince libvirt
adduser vince vde2-net

On ajoute l'utilisateur en question au groupe. Puis on se reconnecte sur la machine pour que les changements de groupe soient pris en compte.
Ne pas oublier par la suite de manipuler les machines virtuelles avec cet ajout dans les commandes :

--connect qemu:///system

Edition de la VM pour ajouter l'interface créée via Open vSwitch :

virsh edit DebianTestingSource
<interface type='bridge'>
<source bridge='ovsbr0'/>
<virtualport type='openvswitch' />
<model type='virtio'/>

Installation et lancement de BIRD :

aptitude install bird bird6 // Installation du paquet BIRD (et BIRD6 pour ipv6)
vim /etc/bird.conf // Edition du fichier de configuration
birdc // Invite de commande pour BIRD
service bird stop|start // Relancer le service BIRD

Topologie du triangle BGP (3 AS) avec routes statiques :

Sur 3 Vms, effectuer l'activation du routage IP :

cat /etc/sysctl.conf
net.ipv4.ip_forward=1
sysctl -p /etc/sysctl.conf

Configuration de BIRD :

cat /etc bird.conf // CONFIGURATION H3

log syslog all;

protocol kernel {
scan time 20; # Scan kernel routing table every 20 seconds
export all; # Default is export none
}

# This pseudo-protocol watches all interface up/down events.
protocol device {
scan time 10; # Scan interfaces every 10 seconds
}

protocol static {
import all;
route 192.0.1.0/24 via 192.0.1.1;
route 192.0.2.0/24 via 192.0.2.1;
}

protocol bgp h31 {
description "BGP H3 65001";
local as 65000;
neighbor 192.0.1.2 as 65001;
import all;
export all;
}

protocol bgp h32 {
description "BGP H3 65002";
local as 65000;
neighbor 192.0.2.2 as 65002;
import all;
export all;
}

cat /etc bird.conf // CONFIGURATION STRI

log syslog all;

protocol kernel {
scan time 20; # Scan kernel routing table every 20 seconds
export all; # Default is export none
}

# This pseudo-protocol watches all interface up/down events.
protocol device {
scan time 10; # Scan interfaces every 10 seconds
}

protocol static {
import all;
route 192.0.3.0/24 via 192.0.3.2;
route 192.0.1.0/24 via 192.0.1.2;
}

protocol bgp stri1 {
description "BGP STRI 65002";
local as 65001;
neighbor 192.0.3.1 as 65002;
import all;
export all;
}

protocol bgp stri2 {
description "BGP STRI 65000";
local as 65001;
neighbor 192.0.1.1 as 65000;
import all;
export all;
}

cat /etc bird.conf // CONFIGURATION N7

log syslog all;

protocol kernel {
scan time 20; # Scan kernel routing table every 20 seconds
export all; # Default is export none
}

# This pseudo-protocol watches all interface up/down events.
protocol device {
scan time 10; # Scan interfaces every 10 seconds
}

protocol static {
import all;
route 192.0.2.0/24 via 192.0.2.2;
route 192.0.3.0/24 via 192.0.3.1;
}

protocol bgp n71 {
description "BGP N7 65000";
local as 65002;
neighbor 192.0.1.1 as 65000;
import all;
export all;
}

protocol bgp n72 {
description "BGP N7 65001";
local as 65002;
neighbor 192.0.3.2 as 65001;
import all;
export all;
}

Ici, relancer les services BIRD sur chaque machine et patienter quelques secondes...
(voir schema route-BGP-static.png)

Topologie du triangle BGP (3 AS) avec routes dynamiques (OSPF) :

La mise en place est un succès, nous déclarons les area OSPF de tous les routeurs "Rx" iBGP puis également sur les interfaces intra-AS des routeurs eBGP. Ainsi ils diffusent leurs routes à l'ensemble du réseau.
Pour les eBGP, les routes sont diffusées via BGP.

Tâches en cours

Vincent

A se partager avec Othmane :

  • Prévoir l'utilisation de VLANs
  • Regarder les rejets de routes
  • Faire le bilan sur les possibilités de la virtualisation (partage de systèmes de fichiers) et comparer avec notre avancement
  • Faire cohabiter Quagga / BIRD dans la topologie pour constater notamment les différences d'accès à l'espace utilisateur / espace noyau
  • Vérifier et noter la sécurité des VMs par rapport à des erreurs de manipulations entre différents utilisateurs
  • Mettre en place la topologie suivante :

  • Automatiser l'installation / la configuration des VMs au moyen de scripts
  • Rédiger le rapport et préparer l'oral (plan à venir)

Othmane

Documentation et Installation de KVM+OVS
Documentation et Installation de BIRD
Documentation sur l'utilisation des vlans dans ovs

Réponse:

Ayant pas reçu un mail et du fait que j'ai vue votre publication très tard,je voudrais m'excuser pour ne pas avoir été présent en réunion la semaine passé.

Justement nous avons pu lancer le virt-manager au niveau d'un utilisateur normal.

je viens de voir l'aspect routage(quagga ospfd) entre 3 vm (topologie logique triangle) et je vois que le routage ospf fonctionne bien,sachant que j'ai pas

configurer ports taggés sur le open vswitch.

Serait il nécessaire de passer par des vlans au niveau OVS?

Merci d'avance pour m'avoir apporter quelque explications pour la prochaine étape .

20130304 13h45 : les VLANs ne sont pas prioritaire pour l'association. Est-ce que vous avez un document qui montre ce qu'il faut faire pas a pas pour lancer le switch et 3 VMs interconnectées avec BIRD ? Que pensez-vous presenter a votre soutenance entreprise le mercredi 13 mars dans un peu plus d'une semaine ? / Laurent GUERBY

20130304 14h05 : Oui pour l'instant je travaille essentiellement sur BIRD pour interconnecter les VMS sur du statique puis bientôt OSPF donc les vlans seront étudiés si le temps le permet. Pour le 13 mars je suis d'accord. Je n'ai pas encore recrée la topologie dans son intégralité car je suis encore sur les 3 machines en triangle mais une documentation en étapes sera éditée pour monter l'architecture effectivement. Je peux la fournir dès que j'aurai réussi avec BIRD. / Vincent Passama

Liens utiles

KVM

open vSwitch

BIRD

Fichiers et documentation

Notes

20130204 15h13 je passe au Batiment U2 salle 213 pour voir vos collegues mercredi 6 fevrier a 9h, ou en-ete-vous ? On se voit aussi ? / Laurent

Je suis actuellement sur la topologie de Laurent, j'ai refais le schéma mais j'ai des doutes sur pas mal d'éléments (voir le fichier ajouté). / Vincent