Informations :
Dates
- Publish : : Tuesday 10 january 2012
- Modification : Tuesday 23 october 2012
- 5395 views
Share :
Proxmox Virtual Environment est un logiciel libre de virtualisation, plus précisément un hyperviseur de machine virtuelle. Nous allons étudier vulgairement ses fonctionnalités et différentes configurations.
Nous disposons d'1 adresse publique + 3 adresses publique en IP_FAIL_OVER.
Nous souhaitons virtualiser un parc de machines serveurs, afin d'héberger un service Mail, un service Web* ainsi qu'un service d'Active Directory.
Dans cette configuration :
- IP de l'hôte (noyeau proxmox) :
46.105.127.65
- IP privée d'un KVM :
10.59.100.187
- Les services d'AD, on choisit comme nom de machine : xtra.zw3b.loc - IP publique d'un KVM :
46.105.40.188
- Les services W3B*, on choisit comme nom de machine : net.zw3b.fr - IP publique d'un autre KVM :
46.105.40.189
- Les services MAIL, on choisit comme nom de machine : mail.zw3b.fr
Pour cela, nous installons 3 KVM via l'interface Web Proxmox, pour y héberger les services Mails, Web et de l'AD. Sur chacun des KVMs nous installerons Linux-Vservers pour y faire tourner les services nécessaires bien séparément.
Chez OVH, pour optenir des adresses IP_FAIL_OVER rendez-vous dans votre OVH-Manager-V3 à l'heure d'aujourdh'ui. Elles seront actives quelques minutes après les avoir créés et assosiés donc à votre serveur/MAC Address.
Configuration de l'hôte PVE
Ici on detail la configuration de certains fichiers de la machine hôte. Laquelle va recevoir tous les paquets, elle jouera le rôle de passerelle.
on vérifie déjà que le noyeau est le bon (PVE):
Script avec 3 lignes
001uname -a
002Linux zw3b.ovh.net 2.6.32-4-pve
003
okay... le noyeau est bien celui de proxmox, nous sommes sur l'hôte.
Dans un premier temps, on vérifie, configure le fichier vim /etc/network/interfaces
qui correspond au fichier de configuration réseaux.
Je met ici le fichier actuel, je détaillerai au cours de la rédaction du papier.
Script avec 46 lignes
001# /etc/network/interfaces
002 003# network interface settings
004auto lo
005iface lo inet loopback
006 007iface eth0 inet manual
008 009# vmbr0: Bridging. Make sure to use only MAC adresses that were assigned to you.
010auto vmbr0
011iface vmbr0 inet static
012address 46.105.127.65
013netmask 255.255.255.0
014gateway 46.105.127.254
015broadcast 46.105.127.255
016bridge_ports eth0
017bridge_stp off
018bridge_fd 0
019network 46.105.127.0
020 021post-up echo 1 > /proc/sys/net/ipv4/conf/vmbr0/proxy_arp
022post-up ip route add 46.105.40.188 dev vmbr0 # ici on ajoute une route pour notre adresse IP_FAILOVER (un des "futur" KVM)
023post-up ip route add 46.105.40.189 dev vmbr0 # ici aussi.
024post-up ip route add 10.59.100.187 dev vmbr0 # ici vous remarquez que c'est une adresse privée.. mais c presque pareil.. en vrai :/
025post-down ip route del 46.105.40.188 dev vmbr0
026post-down ip route del 46.105.40.189 dev vmbr0
027post-down ip route del 10.59.100.187 dev vmbr0
028post-down echo 0 > /proc/sys/net/ipv4/conf/vmbr0/proxy_arp
029 030# for Routing - Pour les OpenVZ.. par exemple (172.16.0.XXX/24).. nous n'en utilisons pas
031auto vmbr1
032iface vmbr1 inet manual
033bridge_ports dummy0
034bridge_stp off
035bridge_fd 0
036# post-up echo 1 > /proc/sys/net/ipv4/ip_forward
037# post-up iptables -t nat -A POSTROUTING -s '172.16.0.0/24' -o vmbr1 -j MASQUERADE
038# post-down iptables -t nat -D POSTROUTING -s '172.16.0.0/24' -o vmbr1 -j MASQUERADE
039 040auto eth0:0
041iface eth0:0 inet static
042address 10.59.100.254
043netmask 255.255.255.0
044network 10.59.100.0
045broadcast 10.59.100.255
046
On redémare le réseau /etc/init.d/networking restart
pour que la configuration soit prise en compte.
On peut vérifier que nos routes soient bien appliquées au systeme
Script avec 9 lignes
001route -n
002Table de routage IP du noyau
003Destination Passerelle Genmask Indic Metric Ref Use Iface
00446.105.40.188 0.0.0.0 255.255.255.255 UH 0 0 0 vmbr0
00546.105.40.189 0.0.0.0 255.255.255.255 UH 0 0 0 vmbr0
00610.59.100.187 0.0.0.0 255.255.255.255 UH 0 0 0 vmbr0
00746.105.127.0 0.0.0.0 255.255.255.0 U 0 0 0 vmbr0
00810.59.100.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
0090.0.0.0 46.105.127.254 0.0.0.0 UG 0 0 0 vmbr0
En plus d'ajouter les routes à l'hôte, pour les KVM en IP privées, il faut logiquement NATer les paquets. (c'est comme si l'hôte était une passerelle Linux et qu'un KVM était une machine sur le réseau ; et que l'on souhaitait avoir InterNet sur cette machine)
En français ;) çà donne :
Script avec 3 lignes
001NET_IF=vmbr0
002KVM3_IP=10.59.100.187
003
Script avec 5 lignes
001# régle iptables à ajouter seulement si vous disposer d'un KVM en IP privée
002iptables -t nat -A POSTROUTING -o $NET_IF -s $KVM3_IP -j MASQUERADE
003# pour l'enlever... :/
004iptables -t nat -D POSTROUTING -o $NET_IF -s $KVM3_IP -j MASQUERADE
005
A partir de ce moment, notre hôte est prêt à accueillir et envoyer des requêtes aux serveurs virtuels.
Configuration d'un KVM n'ayant pas la même classe d'IP que son hôte
?€ partir de cet instant, sur le KVM il faut bien entendu configurer /etc/resolv.conf
avec 1 DNS ou 2 ou 3 :) pour la résolution des noms/IP, ainsi que son fichier réseaux vim /etc/network/interfaces
en ajoutant la gateway.
Ici, on s'occupe de la configuration suivante :
- IP Hote OVH :
46.105.127.65
donc l'adresse de la gateway OVH est46.105.127.254
- IP (failover) KVM :
46.105.40.188
Script avec 5 lignes
001# /etc/resolv.conf
002nameserver 213.186.33.99
003nameserver 8.8.8.8
004nameserver 8.4.8.4
005
Script avec 21 lignes
001# /etc/network/interfaces
002auto lo
003iface lo inet loopback
004 005# The primary network interface
006#allow-hotplug eth0
007auto eth0
008iface eth0 inet static
009address 46.105.40.188
010netmask 255.255.255.255
011broadcast 46.105.40.188
012 013post-up route add -host 46.105.127.254 dev eth0
014post-up route add default gw 46.105.127.254
015post-down route del -host 46.105.127.254 dev eth0
016post-down route del default gw 46.105.127.254
017018
# dns-* options are implemented by the resolvconf package, if installed
019dns-nameservers 213.186.33.99 8.8.8.8 8.4.8.4
020dns-search ovh.net
021
Il faut bien préciser le broadcast 46.105.40.188
vers la même machine et mettre le netmask 255.255.255.255
.
Puis pour que le systeme accepte une machine (IP) externe à son réseau, il faut l'indiquer explicitement au système, On va donc ajouter l'IP en question (celle de la gateway), puis, ensuite appliquer notre route pour la passerelle :
Script avec 4 lignes
001# la ligne supplementaire
002route add -host 46.105.127.254 dev eth0
003# puis comme d'habitude
004route add default gw 46.105.127.254
On vérifie nos routes après avoir redémarer le réseau /etc/init.d/networking restart
Script avec 5 lignes
001route -n
002Table de routage IP du noyau
003Destination Passerelle Genmask Indic Metric Ref Use Iface
00446.105.127.254 0.0.0.0 255.255.255.255 UH 0 0 0 eth0
0050.0.0.0 46.105.127.254 0.0.0.0 UG 0 0 0 eth0
Configuration d'un KVM ayant la même classe d'IP que son hôte
Ce n'est pas forcement la bonne solution (ou interdit) d'avoir la même classe d'IP sur des réseaux différents. Vu que techniquement, nous avons un réseau réel et un réseau virtuel.
Voilà, on ping l'InterNet... :) depuis notre KVM
Vulgairement comme je vous ai dis plus haut, c'est ce qu'il faut pour comprendre Proxmox. Ensuite sur chaqu'un de nos KVMs, on installe un noyeau linux-vserver et on crée nos différents linux-vservers...
IPv6 Configuration
- J'ajoute un lien vers l'article GNU/Linux > Réseaux > Howto IPv6 - Proxmox - OVH qui explique comment configurer l'IPv6 sur les VMs de Proxmox2