« L'hyperviseur Xen sous Debian Wheezy » : différence entre les versions

Aller à la navigation Aller à la recherche
m
 
(17 versions intermédiaires par le même utilisateur non affichées)
Ligne 162 : Ligne 162 :
<pre>
<pre>
$ mount /dev/sda1 /mnt
$ mount /dev/sda1 /mnt
$ debootstrap --arch=amd64 squeeze /mnt
$ debootstrap --arch=amd64 wheezy /mnt
...
...
I: Base system installed successfully
I: Base system installed successfully
Ligne 179 : Ligne 179 :
Editez le fichier <code>/etc/apt/sources.list</code> :
Editez le fichier <code>/etc/apt/sources.list</code> :
<pre>
<pre>
deb http://ftp.fr.debian.org/debian squeeze main contrib non-free
deb http://ftp.fr.debian.org/debian wheezy main contrib non-free
deb-src http://ftp.fr.debian.org/debian squeeze main contrib non-free
deb-src http://ftp.fr.debian.org/debian wheezy main contrib non-free


#Sec
#Sec
deb http://security.debian.org/ squeeze/updates main contrib non-free
deb http://security.debian.org/ wheezy/updates main contrib non-free
deb-src http://security.debian.org/ squeeze/updates main contrib non-free
deb-src http://security.debian.org/ wheezy/updates main contrib non-free


#anciennement debian-volatile
#anciennement debian-volatile
deb http://ftp.fr.debian.org/debian squeeze-updates main contrib non-free
deb http://ftp.fr.debian.org/debian wheezy-updates main contrib non-free
deb-src http://ftp.fr.debian.org/debian squeeze-updates main contrib non-free
deb-src http://ftp.fr.debian.org/debian wheezy-updates main contrib non-free
</pre>
</pre>


Ligne 317 : Ligne 317 :


Modifier la ligne <code>GRUB_CMDLINE_XEN</code> dans <code>/etc/default/grub</code> :
Modifier la ligne <code>GRUB_CMDLINE_XEN</code> dans <code>/etc/default/grub</code> :
<pre>GRUB_CMDLINE_XEN="dom0_mem=512M"</pre>
<pre>
GRUB_CMDLINE_XEN="dom0_mem=512M"
GRUB_CMDLINE_XEN_DEFAULT="dom0_mem=512M"
</pre>
 
Puis mettez à jour la configuration de grub :
<pre>update-grub</pre>


Modifiez ensuite les lignes suivantes dans <code>/etc/xen/xend-config.sxp</code> :
Modifiez ensuite les lignes suivantes dans <code>/etc/xen/xend-config.sxp</code> :
Ligne 323 : Ligne 329 :
(dom0-min-mem 512)
(dom0-min-mem 512)
(enable-dom0-ballooning no)
(enable-dom0-ballooning no)
</pre>
Il faut bien évidemment rebooter pour appliquer ces paramètres.
==Forcer l'arrêt des VMs (shutdown) lors du reboot de xen==
Par défaut, si l'hyperviseur reboot, Xen sauvegarde l'état des VMs plutôt que de les shutdown proprement. Si vous voulez vous affranchir de ce comportement, modifiez <code>/etc/default/xendomains</code> :
<pre>
XENDOMAINS_RESTORE=false
XENDOMAINS_SAVE=""
</pre>
</pre>


Ligne 333 : Ligne 348 :
<pre>
<pre>
(vif-script vif-bridge)
(vif-script vif-bridge)
(network-script 'network-bridge bridge=br0')
</pre>
</pre>
après vos modifications, redémarrez le démon xend :
<pre>/etc/init.d/xend restart</pre>


Editez le fichier <code>/etc/network/interfaces</code> de cette façon :
Editez le fichier <code>/etc/network/interfaces</code> de cette façon :
<pre>
<pre>
auto lo
auto lo
iface lo inet loopback
iface lo inet loopback


auto xenbr0
auto br0
iface xenbr0 inet static
iface br0 inet static
         address 91.121.117.116
         address 91.121.117.116
         netmask 255.255.255.0
         netmask 255.255.255.0
Ligne 390 : Ligne 402 :
=Configuration de Xen-Tools pour créer automatiquement des machines virtuelles debian=
=Configuration de Xen-Tools pour créer automatiquement des machines virtuelles debian=


Par défaut sous debian squeeze, le fichier <code>/etc/xen-tools/xen-tools.conf</code> est adapté à la création de VMs debian squeeze.
Par défaut sous debian wheezy, le fichier <code>/etc/xen-tools/xen-tools.conf</code> est adapté à la création de VMs debian wheezy.


Notre configuration permettra :
Notre configuration permettra :
* de créer les partitions des VMs sur le LVM
* de créer les partitions des VMs sur le LVM
* d'utiliser debootstrap pour créer des VMs vierges sous debian squeeze
* d'utiliser debootstrap pour créer des VMs vierges sous debian wheezy
* de configurer automatiquement l'ip sur la VM
* de configurer automatiquement l'ip sur la VM


Ligne 407 : Ligne 419 :
netmask    = 255.255.255.0
netmask    = 255.255.255.0
broadcast  = IP-du.dom0.255
broadcast  = IP-du.dom0.255
bridge = br0
</pre>
</pre>


Ligne 424 : Ligne 437 :
*<code>swap</code> : défini la taille du swap par défaut pour les VMs
*<code>swap</code> : défini la taille du swap par défaut pour les VMs
*<code>fs</code> : défini le système de fichier à utiliser pour les VMs. Généralement ext3 ou ext4.
*<code>fs</code> : défini le système de fichier à utiliser pour les VMs. Généralement ext3 ou ext4.
*<code>image</code> : défini s'il faut utiliser des images complètes (<code>full</code>) ou a taille variable (<code>sparse</code>) pour les VMs.
*<code>image</code> : défini s'il faut utiliser des images complètes (<code>full</code>) ou a taille variable (<code>sparse</code>) pour les VMs. <code>full</code> donnera les meilleurs performances disque.
*<code>install-method</code> : défini la méthode d'installation par défaut pour les VMs. Les choix possibles sont :
*<code>install-method</code> : défini la méthode d'installation par défaut pour les VMs. Les choix possibles sont :
**<code>debootstrap</code>
**<code>debootstrap</code>
Ligne 552 : Ligne 565 :
#
#
#
#
installDebianPackage ${prefix} locales #already installed in debian-squeeze domU
installDebianPackage ${prefix} locales #already installed in debian-wheezy domU
installDebianPackage ${prefix} ntp
installDebianPackage ${prefix} ntp
installDebianPackage ${prefix} console-data
installDebianPackage ${prefix} console-data
Ligne 617 : Ligne 630 :
#
#


gw=`cat /etc/xen-tools/xen-tools.conf | grep gateway`
gw=`cat /etc/xen-tools/xen-tools.conf | grep "gateway ="`
if [ ! ${gw:0:1} = "#" ]; then
if [ ! ${gw:0:1} = "#" ]; then
         gateway=`echo $gw | cut -f 2 -d "="`
         gateway=`echo $gw | cut -f 2 -d "="`
Ligne 623 : Ligne 636 :
         echo up route add default gw $gateway >> ${prefix}/etc/network/interfaces
         echo up route add default gw $gateway >> ${prefix}/etc/network/interfaces
fi
fi
sed -i -e 's/gateway/#gateway/g' ${prefix}/etc/network/interfaces


#
#
Ligne 630 : Ligne 644 :
#
#
#
#
echo '
#! /bin/sh
### BEGIN INIT INFO
# Provides:            sshguard
# Required-Start:      $remote_fs $syslog
# Required-Stop:        $remote_fs $syslog
# Default-Start:        2 3 4 5
# Default-Stop:       
# Short-Description:    sshguard
### END INIT INFO
case "$1" in
        start)
                iptables -N sshguard
                ip6tables -N sshguard
                iptables -A INPUT -m multiport -p tcp --destination-ports 21,22,110,143,80,443 -j sshguard
                ip6tables -A INPUT -m multiport -p tcp --destination-ports 21,22,110,143,80,443 -j sshguard
                tail -n0 -F /var/log/auth.log | /usr/sbin/sshguard -a 2 -p 1800 -w /etc/sshguard_whitelist &
        ;;
        stop)
                killall /usr/sbin/sshguard
                iptables -D INPUT -m multiport -p tcp --destination-ports 21,22,110,143,80,443 -j sshguard
                ip6tables -D INPUT -m multiport -p tcp --destination-ports 21,22,110,143,80,443 -j sshguard
                iptables -X sshguard
                ip6tables -X sshguard
        ;;
        *)
                echo "Usage: $0 {start|stop}"
                exit 1
        ;;
esac' > ${prefix}/etc/init.d/sshguard
chmod +x ${prefix}/etc/init.d/sshguard
for ip in `ifconfig | grep "inet addr" | cut -d ":" -f 2 | cut -d " " -f 1`; do
for ip in `ifconfig | grep "inet addr" | cut -d ":" -f 2 | cut -d " " -f 1`; do
         if [ ! $ip = "127.0.0.1" ]; then
         if [ ! $ip = "127.0.0.1" ]; then
Ligne 672 : Ligne 652 :
         echo $ip >> ${prefix}/etc/sshguard_whitelist
         echo $ip >> ${prefix}/etc/sshguard_whitelist
done
done
cp /etc/default/sshguard ${prefix}/etc/default/


chroot ${prefix} /sbin/insserv sshguard
#
#
#  Log our finish
#  Log our finish
Ligne 682 : Ligne 662 :


N'oubliez pas de rendre ce fichier exécutable :
N'oubliez pas de rendre ce fichier exécutable :
<pre>chmod +x /etc/xen-tools/main</pre>
<pre>chmod +x /etc/xen-tools/role.d/main</pre>


=Création de votre première VM=
=Création de votre première VM=
Ligne 700 : Ligne 680 :
Voici un autre exemple plus complet détaillant la création d'une VM ubuntu
Voici un autre exemple plus complet détaillant la création d'une VM ubuntu
<pre>
<pre>
xen-create-image --debootstrap --dir=/home/xen --size=10Gb --memory=512Mb --fs=ext3 \  
xen-create-image --size=10Gb --memory=512Mb --fs=ext3 \  
--dist=natty --hostname=vm1.domain.tld --ip=<IP> --netmask=255.255.255.0 --swap=1024Mb \
--dist=natty --hostname=vm1.domain.tld --ip=<IP> --netmask=255.255.255.0 --swap=1024Mb \
--arch=amd64 --kernel=/boot/vmlinuz-2.6.32.5-xen-amd64 --mirror=http://archive.ubuntu.com/ubuntu/ --passwd --role main
--arch=amd64 --kernel=/boot/vmlinuz-2.6.32.5-xen-amd64 --mirror=http://archive.ubuntu.com/ubuntu/ --passwd --role main
Ligne 751 : Ligne 731 :
Commencez par éditer le fichier <code>/etc/network/interfaces</code>
Commencez par éditer le fichier <code>/etc/network/interfaces</code>
<pre>
<pre>
auto dummy0
auto br1
iface dummy0 inet static
iface br1 inet static
         address 172.16.16.1
         address 192.168.10.1
         broadcast 172.16.16.255
         broadcast 192.168.10.255
         netmask 255.255.255.0
         netmask 255.255.255.0
        bridge_ports none
</pre>
</pre>


Puis activez l'interface :
Puis activez l'interface :
<pre>ifup dummy0</pre>
<pre>ifup br1</pre>


Créez ensuite le fichier <code>/etc/xen/scripts/my-network-bridge</code> contenant :
Créez ensuite le fichier <code>/etc/xen/scripts/my-network-bridge</code> contenant :
<pre>
<pre>
#!/bin/sh
#!/bin/sh
/etc/xen/scripts/network-bridge "$@" netdev=eth0
/etc/xen/scripts/network-bridge "$@" netdev=br0
/etc/xen/scripts/network-bridge "$@" netdev=dummy0
/etc/xen/scripts/network-bridge "$@" netdev=br1
</pre>
</pre>


Ligne 776 : Ligne 757 :
Ce script aura comme conséquence :
Ce script aura comme conséquence :
* créer le bridge classique de xen (celui qui était lancé par <code>(network-script network-bridge)</code>
* créer le bridge classique de xen (celui qui était lancé par <code>(network-script network-bridge)</code>
* créer le bridge dummy0 pour notre interface interne
* créer le bridge br0 pour notre interface interne


Il faut ensuite relancer xend :
Il faut ensuite relancer xend :
Ligne 787 : Ligne 768 :
Par exemple pour la vm <code>vm1.domain.tld</code> éditez le fichier <code>/etc/xen/vm1.domain.tld.cfg</code>. Modifiez la ligne <code>vif</code> de cette manière :
Par exemple pour la vm <code>vm1.domain.tld</code> éditez le fichier <code>/etc/xen/vm1.domain.tld.cfg</code>. Modifiez la ligne <code>vif</code> de cette manière :
<pre>
<pre>
vif  = [ 'ip=192.168.0.1,bridge=eth0,mac=00:16:3E:A3:F1:5A','ip=172.16.16.2,bridge=dummy0,mac=00:16:3E:A3:F1:07' ]
vif  = [ 'ip=192.168.0.1,bridge=br0,mac=00:16:3E:A3:F1:5A','ip=172.16.16.2,bridge=br1,mac=00:16:3E:A3:F1:07' ]
</pre>
</pre>


Après redémarrage, la VM aura désormais deux interfaces réseaux :
Après redémarrage, la VM aura désormais deux interfaces réseaux :
* eth0 bridgé sur l'interface eth0 du dom0 (le réseau public)
* eth0 bridgé sur l'interface br0 du dom0 (le réseau public)
* eth1 bridge sur l'interface dummy0 du dom0 (le réseau interne)
* eth1 bridge sur l'interface br1 du dom0 (le réseau interne)


Si votre VM est sous debian, il faudra ajouter la configuration de eth1 dans <code>/etc/network/interfaces</code> (sur la vm!) :
Si votre VM est sous debian, il faudra ajouter la configuration de eth1 dans <code>/etc/network/interfaces</code> (sur la vm!) :
Ligne 798 : Ligne 779 :
auto eth1
auto eth1
iface eth1 inet static
iface eth1 inet static
  address 172.16.16.2
  address 192.168.10.2
  netmask 255.255.255.0
  netmask 255.255.255.0
</pre>
</pre>
4 203

modifications

Menu de navigation