Académique Documents
Professionnel Documents
Culture Documents
9 avril 2009
Contexte
Transport : 27 Commutateurs HP Procurve Spanning-tree VLAN : 802.1Q 25 VLAN Intelligence du rseau : sous Linux Routage et filtrage (Netfilter) Fonctions DNS/DHCP Serveurs Radius (Freeradius) .Filaire et Wifi. (authentification mac-based et 802.1X) Serveurs VPN (OpenVpn)
Contexte
Tous les systmes Linux participants au rseau sont boots sur CDROM Gnrs par RAMUX/CDNUX Fedora 9 Pas de disque Mmoire flash (cl USB) Dispositif de continuit des services rseau Deux routeurs Linux redondants. Utilisation de VRRP (actif/passif) Trois serveurs DNS/DHCP/RADIUS (machines physiques) Un (puis deux) serveur(s) Openvpn (actif/actif) Capacit de booter les CD sur n'importe qu'elle machine Architecture rseau Liaisons redondantes entre les commutateurs (spanning tree) Rle redondant des commutateurs Configurations rseau et filtrage Gnres par LabWall (Netfilter)
Sminaire RAISIN - Serge Bordres - CENBG
Contexte
Routeur matre Openvpn1 Internet
Tagged
VRRP
Tagged
rseau interne
Tagged
Routeur backup
Openvpn2
Sminaire RAISIN - Serge Bordres - CENBG
Questions de dpart
Est-il possible de mettre en place une plateforme virtuelle de tests des configurations rseau, des filtrages et des relations entre les diffrents lments du rseau (routeurs, serveurs...) ? Il est trs difficile de faire des tests sur la configuration relle parce que le fonctionnement du rseau est hyper-sensible pour l'ensemble des applications. Pour se familiariser avec les protocoles mis en oeuvre (provoquer des situations, analyser les comportements, dfinir des stratgies...) Est-il envisageable d'utiliser la plateforme virtuelle comme solution de secours ? Est-il envisageable que le rseau en exploitation soit toujours virtuel ? Comment techniquement ?
KVM: pourquoi ?
Souhait d'une solution de virtualisation aussi intime que possible avec l'environnement Linux => KVM est inclus dans le noyau Linux (depuis 2.6.20) Souhait d'une solution de virtualisation rapidement mise en oeuvre L'objectif c'est d'abord de travailler sur l'application et pas de passer trop de temps sur la mise en oeuvre du systme de virtualisation. Avec KVM journe a suffit pour apprendre et mettre en place l'environnement initial. Ncessit de boot sur image ISO : KVM sait faire naturellement. Existence d'un commutateur virtuel (VDE), supportant 802.1Q Possibilit de crer plusieurs commutateurs virtuels relis entre-eux (ventuellement sur des machine physiques diffrentes) Curiosit pour KVM
KVM
Hyperviseur de virtualisation inclus dans le noyau Linux (depuis 2.6.20) Drive du projet QEMU Solution de full virtualisation Possibilit de paravirtualisation possible (notamment sur l'interface rseau) (driver VIRTIO dans le kernel) Utilise les extensions VT des processeurs Intel ou AMD-V pour AMD
Cration du monde...virtuel
Connecter une machine virtuelle sur un VLAN La faire communiquer avec le rseau rel dans son VLAN et avec les autres VLAN
Cration du monde...virtuel
MV1
Vswitch
?
T
Machine hte
?
Vlan 10
Cration du monde...virtuel
Interconnexion du rseau virtuel et du rseau physique Crer une interface virtuelle TAP dans la machine hte Crer le commutateur virtuel Connecter l'interface TAP sur le commutateur Connecter l'interface physique (eth0) sur un port tagged du commutateur physique Relier l'interface TAP l'interface physique eth0 => pont
Cration du monde...virtuel
Schma d'interconnexion virtuel<=> rel
vlan 10 port2
port1 vlan 10
Vswitch tap_host
Vlan 20
Cration du monde...virtuel
Configurations
Crer l'interface tap tunctl -t tap_host L'interface tap_host est automatiquement branche sur le port 1 du commutateur virtuel
vde_switch -s /var/run/vde.ctl -tap tap_host Faire un pont entre le eth0 et tap_host brctl addbr br0 brctl addif br0 eth0 brctl addif br0 tap_host ifconfig br0 up
Cration du monde...virtuel
Configurations
Crer les ports sur le commutateur virtuel vde$ port/create 2 Crer les VLAN vde$ vlan/create 10 vde$ vlan/create 20 => Cration du vlan 10 sur vswitch => Cration du vlan 20 sur Vswitch => Cration du port 2 sur Vswitch
Affecter les VLAN aux ports vde$ port/setvlan 2 10 vde$ port/addport 10 1 vde$ port/addport 20 1 => Affectation statique du VLAN 10 sur le port 2 => Tag du VLAN 10 sur le port 1 => Tag du VLAN 20 sur le port 1
Cration du monde...virtuel
Lancement de la machine virtuelle et connexion sur le commutateur virtuel vdekvm -cdrom ramux.MV1.iso -m 500 mmoire Socket du commutateur virtuel Port de connexion sur le commutateur virtuel
-net vde,vlan=0,sock=/var/run/vde.ctl,port=2
Cration du monde...virtuel
port1 vlan 10 port2 T Vswitch tap_host br0 Eth0 Machine hte Rseau physique T
Vlan 10
Vlan 20
Cration du monde...virtuel
Cration du monde...virtuel
Suppression du tag
Routage
Processus local
ETH0
Prcautions prendre
DANGER : Si la machine hte est sur plusieurs VLAN Si une machine virtuelle dfinie la machine hte comme gateway par dfaut alors elle pourra communiquer avec un autre sous-rseau sans passer par le filtrage du routeur et la politique de scurit risque d'tre contourne.
Remdes : Ne pas mettre la machine hte sur plusieurs VLAN Ne pas lui permettre le routage La placer seule sur VLAN et filtrer ses communications vers le reste du rseau
MV1
vlan20
Vconfig
Vlan 20
MV1
MV2
Machine hte
vlan10
vlan20 RROUTE
Sminaire RAISIN - Serge Bordres - CENBG
VIRTUALISATION DU ROUTEUR
Virtualisation du routeur
VROUTE MV2
port1 vlan 10 port2 T port4 T Vlan vlan 50 20 Port 5 Port 3 tap_host Vswitch
vlan20
vconfig
Vlan 50
Vlan 50
Vlan 10
X
T
X
vlan10 vlan20 vlan50 RROUTE
Sminaire RAISIN - Serge Bordres - CENBG
Rseau physique
Virtualisation du routeur
Lancement de la machine virtuelle du routeur et connexion sur le commutateur virtuel vdekvm -cdrom ramux.RT1.iso -m 500 -net nic,model=virtio,macaddr=00:16:3e:00:00:02,vlan=0 -net vde,sock=/var/run/vde.ctl,port=4 -net nic,model=virtio,macaddr=00:16:3e:00:00:03,vlan=1 -net vde,vlan=1,sock=/var/run/vde.ctl,port=5 -name RT1 i& La 1re interface Ethernet du routeur est place sur le port 4
Tagged
Le routeur matre est gateway par dfaut pour l'ensemble du rseau Le routeur backup est passif VRRP En cas de dfaillance sur le matre, ou sur le commutateur du matre, le routeur backup devient matre est l'annonce au rseau Le protocole qui gre l'lection d'un nouveau matre est VRRP
Tagged
Routeur backup
Sminaire RAISIN - Serge Bordres - CENBG
Le protocole VRRP
VRRP= Virtual Router Redondancy protocol (dcrit dans RFC3768) C'est un protocole de redondance de routeurs c'est--dire qui permet un routeur de secours de prendre automatiquement la place d'un routeur principale en cas de dfaillance
Le protocole VRRP
Routeur virtuel Routeur matre Routeurs backup
VRRP dfini : Un routeur master initial (celui qui a la responsabilit du routage en temps normaux). Il a la priorit la plus grande. Un ou plusieurs routeur(s) de backup Un routeur virtuel plac sur le routeur master courant. Les clients du rseau ne voient que le routeur virtuel comme gateway par dfaut En cas de dfaillance du matre, il y a lection d'un nouveau master et le routeur virtuel se dplace sur cette machine.
Le protocole VRRP
Chaque interface (physique ou VLAN) du routeur master possde une adresse relle Chaque interface de routeurs backup possde une adresse relle Le routeur virtuel = une adresse virtuelle sur chaque interface du routeur dans l'tat master. Le protocole prvoit galement une adresse MAC virtuelle par interface mais dans Linux on ne peut pas avoir deux adresses MAC par interface. L'annonce du changement se fait par des gratuitous arp Le matre diffuse sa priorit (advert) sur le rseau intervalle rgulier (multicast sur 224.0.0.18) Les backup coutent ces messages. Si un backup a une priorit suprieure ou s'il ne reoit plus rien, il se dclare matre. Il n'y a pas de rpartition de charge. Le (ou les) routeur(s) backup sont passifs.
Le protocole VRRP
@relle=10.58.20.12
@virt=10.58.20.100
@relle=10.58.20.11
Routeur matre
@relle= 172.16.20.200 @virt=172.16.20.1
eth0
@relle= 172.16.10.200 @virt=172.16.10.1
eth0
Routeur backup
@relle= 172.16.10.201
@relle= 172.16.20.201
eth1(tagged)
VLAN10 VLAN20
IP=172.16.20.5 GW=172.16.20.1
Le protocole VRRP
@relle=10.58.20.12 @relle=10.58.20.11
@virt=10.58.20.100
Routeur matre
@relle= 172.16.20.200
eth0
@relle= 172.16.10.200
eth0
Routeur backup
eth1(tagged)
IP=172.16.20.5 GW=172.16.20.1
Le protocole VRRP
Le paquetage KEEPALIVED implmente : Le protocole VRRP Le support de Linux Virtual Server (LVS) Virtualisation d'un groupe de machines (cluster) permettant le partage de charge et la redondance.
vrrp_instance interne { state MASTER interface vlan10 virtual_router_id 100 priority 100 advert_int 5 authentication { auth_type PASS auth_pass azerty } virtual_ipaddress { 172.16.10.1./24 brd 172.16.255.255 dev vlan10 172.16.20.1./24 brd 172.16.255.255 dev vlan20 10.58.20.100/24 brd 10.58.20.255 dev eth0 } }
vrrp_instance externe { state MASTER interface eth0 virtual_router_id 101 priority 100 advert_int 5 authentication { auth_type PASS auth_pass azerty } virtual_ipaddress { 172.16.10.1./24 brd 172.16.255.255 dev vlan10 172.16.20.1./24 brd 172.16.255.255 dev vlan20 10.58.20.100/24 brd 10.58.20.255 dev eth0 } }
vrrp_instance interne { state BACKUP interface vlan10 virtual_router_id 100 priority 50 advert_int 5 authentication { auth_type PASS auth_pass azerty } virtual_ipaddress { 172.16.10.1./24 brd 172.16.255.255 dev vlan10 172.16.20.1./24 brd 172.16.255.255 dev vlan20 10.58.20.100/24 brd 10.58.20.255 dev eth0 } }
vrrp_instance externe { state MASTER interface eth0 virtual_router_id 101 priority 50 advert_int 5 authentication { auth_type PASS auth_pass azerty } virtual_ipaddress { 172.16.10.1./24 brd 172.16.255.255 dev vlan10 172.16.20.1./24 brd 172.16.255.255 dev vlan20 10.58.20.100/24 brd 10.58.20.255 dev eth0 } }
Solution : Labwall
$INTERNALDEV
@IPgateway 172.16.10.1 172.16.20.1 netmask 255.255.255.0 255.255.255.0 broadcast Nom
@IPnetwork
pooling 5
broa
$INTERNALDEV 172.16.10.0 $INTERNALDEV 172.16.20.0 Adresse relle de l'interface sur le MASTER initial
172.16.10.100-172.16.10.200-172.16.10.1-100* 172.16.20.100-172.16.20.200-172.16.20.1-100
Adresse virtuelle du routeur sur cette interface Gnre la configuration keepalived Sminaire RAISIN - Serge Bordres - CENBG
port1 vlan 50 port2 vlan20 Vconfig br0 Eth0 Machine hte Rseau physique T T port4 T vlan 50 Port 5 tap_host T Port 3 Vswitch
X
50
RROUTE1 MASTER
T
RROUTE2 BACKUP
50
openvpn
Tap-Win32
tun1
tun2
VLAN20
Routage Filtrage
Port x
openvpn
Tap-Win32
tun1
Port z
VLAN10
Tagged
openvpn
tun3
Tap-Win32
VLAN30
VLAN30
Tap-win32
Routeur/filtrage
Openvpn/routage/filtrage
PROXYARP
VLAN10
VLAN20
Machines internes
Routeur/filtrage
Solution : Reverse proxy Connexion sur un port unique en HTTP-CONNECT Le port final est pass dans le protocole HTTP-CONNECT Le port sera choisi de faon minimiser les risques de filtrage en sortie (port standard d'Openvpn = 1194)
http-proxy vpn1.demo.fr 443 </connection> <connection> remote vpn2.demo.fr 1110 http-proxy vpn2.demo.fr 443 </connection>
Problme 2 Un client ne doit pas pouvoir se connecter sur un autre VLAN que le sien.
Solution :Utilisation l'option client-connect qui permet l'excution d'un script qui: Interroge un serveur Radius pendant la phase de connexion pour obtenir l'autorisation et l'adresse IP du client. Vrifie s'il y a correspondance entre le VLAN demand et l'adresse IP renvoye par le serveur. Si non, la connexion est refuse.
Serveur OpenVpn
VLAN10 VLAN20
Port y openvpn
tun2
443
Port x
VLAN20
Routage Filtrage
openvpn
Tap-Win32
SQUID
tun1
Port z
VLAN10
Tagged
openvpn
tun3
Tap-Win32
VLAN30
VLAN30
Tap-win32
H ttp -C c ne on t
OpenVpn virtualis
VROUTE
Adresse IP externe
Vradius
Vopenvpn
port1 vlan 50 100 port2 T port4 tap_host vlan20 Vconfig br0 Eth0 Machine hte Rseau physique 30 T 100 T 30 T Port 3 vlan 100
X
50 T T
RROUTE
Rradius
Ropenvpn
PERFORMANCES
Performances
Pas vraiment de tests de performance CPU raliss Mais une constatation : Lenteur d'excution de script Bash Exemple : -Test sur PC Latitude D430 dual-core -KVM-65 -Fedora 9 , kernel 2.6.26 -Excution du script Labwall de positionnement des rgles Netfilter : Environ 230 macros (shell scripts) qui gnrent environ 650 rgles Netfilter Excution en machine virtuelle = 6 x le temps dans la machine hte
Performances
Influence du trafic sur la charge CPU d'un routeur (Linux/netfilter) Donnes obtenues sur le routeur rel DELL POWEREDGE 1950 DUAL-CORE 3,16GHz L'augmentation de la charge rseau a peu de consquence sur la charge CPU L'lment dterminant pour la virtualisation sera plutt la performance des E/S rseau
Performances
Comparaison des dbits rseau Tests de performances raliss entre : Machine virtuelle vers machine relle Machine hte vers la mme machine relle Conditions: PC machine hte : - DELL Latitude D430 -CPU Intel double-coeur 1,2 Ghz - Interface Ethernet: Broadcom BCM 5752 PC machine relle : - DELL Precision 380 - CPU Intel 3,2 Ghz - Interface Ethernet: Broadcom BCM 5751 Liaison en 100Mb/s entre la machine hte et la machine relle KVM-65 Utilisation du driver virtio
Sminaire RAISIN - Serge Bordres - CENBG
Performances
1er test : Transfert de fichiers SCP vers la machine relle
Temps de transfert (sec)
4500 4000 3500 3000 20 2500 2000 1500 1000 500 0 0,2 1,97 3,93 7,86 15,72 19,65 20 15 10 5 0 0,2 25 1,97 3,93 7,86 15,72 19,65
Mb/s 45
40 35 30 25
Dbits
Ecart
Quantit transfre en Go
15
10
1,97
3,93
7,86
15,72
19,65
Performances
2me test : La machine relle reoit les donnes avec netcat et les jette au fur et mesure (pas de d'accs disque)
Temps de transfert
7000 6000 80 5000 4000 3000 2000 18 16 14 14,63 29,26 58,51 1000 0 0,15 75
Mb/s
95
Dbits
90 85
Quantit transfre en Go
Transfert Machine virtuelle vers une machine relle du rseau Transfert Machine hte vers la mme machine relle du rseau
Ecart
quantit
Conclusions
Mettre le routeur master en machine virtuelle en exploitation Pas acceptable - Tout de mme une dgradation de performances - Environnement ncessaire plus compliqu - Volont de pouvoir booter la machine en rel dans un cadre simple Sauf pour des cas provisoires ou d'urgences Mettre le routeur de backup en machine virtuelle Trs acceptable Mettre les 2 serveurs VPN en machine virtuelle Trs envisageable moyennant la vrification des performances Globalement on ne gagne pas beaucoup en nombre de machines relles et il y a des consquences sur la simplicit de mise en oeuvre des fonctions vitales du rseau. Cependant, quand on dispose de cet environnement rseau virtuel on peut ajouter d'autres machines places sur diffrents VLAN (dns/radius/mail/DMZ....)
Conclusions
Il y a deux intrts majeur dans la virtualisation de rseau Le rseau virtuel peut compltement prendre le relai du rseau rel dans une seule machine dans certains cas : (rseau portable) Sinistre majeur ou localis Maintenance dans la salle machine ncessitant l'arrt de machines/clim.... .....
Capacit de test l'identique avant mise en production Associ avec le boot sur CD , la machine virtuelle teste est exactement quivalente la machine relle de production.
Rfrences
KVM : http://www.linux-kvm.org
VDE :
http://vde.sourceforge.net http://wiki.virtualsquare.org