Routage avec plusieurs uplinks
L'objectif de cet article est d'illustrer de façon simple une méthode permettant à une passerelle Linux de gérer deux uplinks.
En prérequis, il est nécessaire d'avoir le package "iproute" installé.
La première étape consiste à créer les tables "iproute" correspondant aux deux uplinks mentionnés ci-dessus, via "/etc/iproute2/rt_tables" :
200 uplink_fai1
201 uplink_fai2
La seconde est de réaliser le paramétrage réseau. Voici un exemple de fichier "/etc/network/interfaces" (Debian) avec deux FAI :
# FAI1
auto eth0
iface eth0 inet static
address 10.10.1.253
netmask 255.255.255.0post-up ip route add 10.10.1.254/32 dev eth0 src 10.10.1.253 table uplink_fai1
post-up ip route add default via 10.10.1.254 table uplink_fai1
post-up ip rule add from 10.10.1.253 table uplink_fai1post-up ip route del 10.10.1.254/32 dev eth0 src 10.10.1.253 table uplink_fai1
post-up ip route del default via 10.10.1.254 table uplink_fai1
post-down ip rule del from 10.10.1.253 table uplink_fai1# FAI2
auto eth1
iface eth1 inet static
address 10.10.2.253
netmask 255.255.255.0post-up ip route add 10.10.2.254/32 dev eth0 src 10.10.2.253 table uplink_fai2
post-up ip route add default via 10.10.2.254 table uplink_fai2
post-up ip rule add from 10.10.2.253 table uplink_fai2post-up ip route del 10.10.2.254/32 dev eth0 src 10.10.2.253 table uplink_fai2
post-up ip route del default via 10.10.2.254 table uplink_fai2
post-down ip rule del from 10.10.2.253 table uplink_fai2
Il est ainsi possible dans une telle configuration de définir des routes additionnelles spécifiques à chaque lien.
Sortie de Debian Squeeze
La sortie de Debian Squeeze (version 6.0) a été annoncée le 6 février 2011.
Pour upgrader de Lenny à Squeeze, consultez au préalable ch-upgrading.fr.html. Si vous utilisez Shorewall, et comme l'indique ce guide, consultez aussi LennyToSqueeze.html.
Voici un listing non exhaustif des étapes d'un tel upgrade :
- Suppression des pining d'APT ;
- Mise à jour du sources.list (attention, debian-volatile n'existe désormais plus) ;
- Puis :
sudo aptitude update
sudo aptitude install apt apt-get aptitude dpkg
sudo aptitude clean
sudo aptitude safe-upgrade - Analyse et remplacement manuel des fichiers de configuration ;
- Attention au passage de PHP en version 5.3, et au port de Postgrey qui devient 10023/tcp ;
- Enfin :
sudo aptitude full-upgrade - Nettoyage des packages en statut '''rc'''.
Debian 6.0, dernière étape
Debian 6.0, connue sous le nom de code "Squeeze" est entrée dans la dernière étape de son cycle de développement, et le projet Debian demande donc à ses utilisateurs d'augmenter le nombre d'installations / utilisations afin d'accélérer le reporting des bugs et de diminuer les entrées de l'Errata. C.f. Debian.org .
Rappelons que les phases de "Wide Testing" représentent souvent un sujet sensible dans le monde des OS Open Source orientés serveur, les utilisateurs finals privilégiant l'utilisation des versions stables. Le problème fût d'ailleurs largement évoqué chez OpenBSD fin 2007.
Virtualisation avec KVM
VMware et Xen sont deux systèmes de virtualisation très répendus. En terme d'inconvénients, on peut citer le fait que :
- VMware soit propriétaire ;
- Xen ait un avenir incertain depuis son rachat par Citrix ; ce dernier peut également s'avérer contraignant (kernels xenifiés, etc.)
Bon nombre de technologies alternatives existent (Hyper-V, OpenVZ, etc.) bien que se plaçant à des niveaux différents (virtualisation, para-virtualisation, simple système de conteneurs, etc.) ; KVM est actuellement en vogue dans le monde Linux et son principal intérêt est d'être pleinement intégré aux OS récents. C'est d'ailleurs sur ce dernier que s'appuie Redhat Deltacloud.
KVM (pour "Kernel Based Virtual Machine") est initialement un dérivé de Qemu (le bien connu système d'émulation) ; cependant, le monde Open Source connait de nombreux forks mais aussi des regroupements, et ses fonctionnalités ont été intégrées aux sources de Qemu ce qui simplifie les évolutions futures.
Pour les habitués de VMware ou de Xen, notons au passage que KVM n'est pas un hyperviseur ,il s'agit d'une suite d'outils permettant de créer et d'administrer des machines virtuelles indépendantes.Pour un fonctionnement de type "hyperviseur", vous pouvez utiliser des systèmes comme l'API libvirt.
Voici quelques informations minimales au sujet de cette solution.
KVM dispose d'une ensemble de services réseau intégrés au mode utilisateur (comme un serveur DHCP), notons que :
- le réseau par défaut est 10.0.2.0/8 ;
- la passerelle est en 10.0.2.2 ;
- le serveur de noms est en 10.0.2.3 ;
- le serveur SMB est en 10.0.2.4 ;
- les machines virtuelles sont adressés à partir de 10.0.2.15.
Notons également que :
- Plusieurs outils d'administration existent (voir la liste complète) ;
- Il est possible de travailler avec le switch virtuel vde dont les fonctionnalités sont pleinement supportées ;
- LVM peut représenter un bon complément dans certains cas.
Enfin, notons que la version intégrée à Debian Lenny peut poser quelques problèmes (par exemple, l'installation d'une vm peut planter lors du grub-install) et il est préférable de passer aux packages de Squeeze (le package "qemu-kvm" remplace "kvm").
Passons à l'installation sur une Dedibox :
- Connexion au serveur en SSH (X forwarding, compression, et l'utilisateur doit avoir des privilèges suffisants dans sudo) :
$ ssh -XC USER@VOTRE_SERVEUR
- Ajout dans /etc/apt/sources.list de :
# squeeze
deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free# squeeze security
deb http://security.debian.org/ squeeze/updates main contrib non-free
deb-src http://security.debian.org/ squeeze/updates main contrib non-free
- Dans /etc/apt/preferences :
Package: qemu-kvm
Pin: release a=testing
Pin-Priority: 999Package: *
Pin: release a=stable
Pin-Priority: 500Package: *
Pin: release a=lenny-backports
Pin-Priority: 400Package: *
Pin: release a=testing
Pin-Priority: 200
- Puis :
$ sudo aptitude install bridge-utils qemu-kvm
- Vérification de la présence des modules :
$ lsmod|grep kvm
kvm_intel 37600 0
kvm 213196 1 kvm_intel
- Téléchargement d'un media d'installation de Debian Lenny 64 :
$ mkdir installs && cd installs
$ wget http://cdimage.debian.org/debian-cd/5.0.5/amd64/iso-cd/debian-505-amd64-netinst.iso
- Création d'un disque virtuel de 30Go, au format qcow2 :
$ sudo kvm-img create -f qcow2 /home/vms/srv01-vm01.qcow 30G
- Le format qcow2 est nécessaire aux fonctionnalités de type snapshot. Si vous ne choisissez pas le format qcow2, le disque virtuel sera créé au format raw. Pour convertir un tel disque ou un disque au format qcow au format qcow2, vous pouvez utiliser la commande (comptez 15 minutes pour un disque de 30 Go) :
$ qemu-img info /home/vms/srv01-vm01.qcow
image: /home/vms/srv01-vm01.qcow
file format: qcow
virtual size: 30G (32212254720 bytes)
disk size: 2.0G
cluster_size: 4096
$ kvm-img convert -O qcow2 /home/vms/srv01-vm01.qcow /home/vms/srv01-vm01.qcow2
- Lancement de l'installation :
$ sudo kvm -no-kvm -k fr -hda /home/vms/srv01-vm01.qcow2 -cdrom ~/installs/debian-504-amd64-netinst.iso -boot d
- Lancement de la vm (avec 1 vcpu, 128 Mo de RAM, un service VNC activé, et le service SSH accessible sur le port 23/tcp via l'adresse IP du serveur) :
$ sudo kvm -no-kvm -k fr -hda /home/vms/srv01-vm01.qcow2 -redir tcp:23::22 -daemonize -vnc localhost:0
- Lancement de la vm avec 2 vcpus et 256Mo de RAM :
$ sudo kvm -no-kvm -k fr -hda /home/vms/srv01-vm01.qcow2 -redir tcp:23::22 -daemonize -vnc localhost:0 -smp 2 -m 256
- Vous pouvez ensuite vous y connecter :
$ vncviewer -via VOTRE_SERVEUR localhost:0
- Il est alors possible de switcher avec control+alt+1/2/3 entre la console de la vm, le moniteur Qemu, et le port série de la vm.
- Ligne de démarrage à ajouter dans /etc/rc.local :
/usr/bin/kvm -no-kvm -k fr -hda /home/vms/srv01-vm01.qcow2 -redir tcp:23::22 -daemonize -vnc localhost:0
- Pour créer un snapshot dans le moniteur Qemu, vous pouvez exécuter :
(qemu) savevm snap1
- Pour visionner vos snapshots :
(qemu) info snapshots
- Pour le restaurer en temps réel, depuis le moniteur Qemu :
(qemu) loadvm snap1
- Si votre vm ne boot plus, vous pouvez également le restaurer depuis la ligne de commande :
$ sudo kvm -no-kvm -k fr -hda /home/vms/srv01-vm01.qcow2 -redir tcp:23::22 -daemonize -vnc localhost:0 -loadvm snap1
