« Proxmox et KVM » : différence entre les versions

Aller à la navigation Aller à la recherche
10 593 octets ajoutés ,  16 mai 2015
aucun résumé des modifications
Aucun résumé des modifications
 
(22 versions intermédiaires par le même utilisateur non affichées)
Ligne 2 : Ligne 2 :
[[Category:debian]]
[[Category:debian]]
[[Category:virtualisation]]
[[Category:virtualisation]]
* '''Cette page n'est plus maintenue, les informations contenues ici sont potentiellement obsolètes'''


=Prérequis=
=Prérequis=
Ligne 16 : Ligne 19 :
* <code>/etc/hosts</code>
* <code>/etc/hosts</code>
* <code>/etc/fstab</code>
* <code>/etc/fstab</code>
* <code>/etc/mdadm/mdadm.conf </code>
* <code>/etc/mdadm/mdadm.conf</code> si vous disposez d'un raid logiciel
* tout fichier de personnalisation de grub (<code>/etc/grub.d/06_OVHkernel</code> par exemple)
* tout fichier de personnalisation de grub (<code>/etc/grub.d/06_OVHkernel</code> par exemple)


Ligne 62 : Ligne 65 :
Nous ne créerons pas de volume logique dans le LVM maintenant. Nous laisserons en effet proxmox et KVM se charger de créer des volumes logiques pour chaque VM.
Nous ne créerons pas de volume logique dans le LVM maintenant. Nous laisserons en effet proxmox et KVM se charger de créer des volumes logiques pour chaque VM.


=Installation du système de base=
=Installation de proxmox=
 
==Installation du système de base==


<pre>
<pre>
Ligne 74 : Ligne 79 :
<pre>debootstrap --arch=amd64 lenny /mnt http://ftp.fr.debian.org/debian</pre>
<pre>debootstrap --arch=amd64 lenny /mnt http://ftp.fr.debian.org/debian</pre>


=Configuration de Debian=
==Configuration de Debian==


<pre>
<pre>
Ligne 95 : Ligne 100 :
</pre>
</pre>


Mettez à jour les paquets :
<pre>
<pre>
aptitude update
aptitude update
aptitude safe-upgrade
aptitude safe-upgrade
</pre>
Installez les locales et la configuration de console :
<pre>
aptitude install locales  
aptitude install locales  
dpkg-reconfigure locales
dpkg-reconfigure locales
aptitude install console-data
aptitude install console-data
dpkg-reconfigure console-data # from arch > french > latin9)
dpkg-reconfigure console-data # from arch > french > latin9)
</pre>
Définissez la zone horaire :
<pre>
tzselect
tzselect
dpkg-reconfigure tzdata
dpkg-reconfigure tzdata
</pre>
Installez mdadm pour gérer le raid software :
<pre>
aptitude install mdadm
aptitude install mdadm
</pre>
</pre>
Ligne 157 : Ligne 175 :
echo votrehostname > /etc/mailname
echo votrehostname > /etc/mailname
</pre>
</pre>
N'oubliez pas de configurer les dns (ceux de votre hébergeur dédié) :
<pre>nameserver XX.XX.XX.XX</pre>


==Installation de proxmox==
==Installation de proxmox==


Ajoutez le dépot proxmox dans le fichier /etc/apt/source.list :
Ajoutez le dépot proxmox dans le fichier /etc/apt/source.list :
Ligne 211 : Ligne 231 :
<pre>
<pre>
aptitude install proxmox-ve-2.6.35 ntp lvm2
aptitude install proxmox-ve-2.6.35 ntp lvm2
</pre>
==configuration réseau avancée==
===Ajout d'une IPv6 sur vmbr0===
Ajoutez les lignes suivantes dans <code>/etc/network/interfaces</code>
<pre>
iface vmbr0 inet6 static
        address <votreipv6>
        netmask <votre masque ipv6 (généralement 64)
</pre>
===Ajout d'un réseau interne===
Nous allons voir comment créer un réseau interne avec proxmox, c'est à dire, un réseau qui ne sera attaché à aucune interface réseau physique. L'intérêt est d'offrir un débit bien supérieur pour les communications entre les VMs.
Ajoutez les lignes suivantes dans <code>/etc/network/interfaces</code>
<pre>
auto vmbr1
iface vmbr1 inet static
        address  192.168.0.1
        netmask  255.255.255.0
        broadcast 192.168.0.255
        bridge_ports dummy0
        bridge_stp off
        bridge_fd 0
        #post-up /etc/pve/kvm-networking.sh
</pre>
Si vous voulez utiliser deux interfaces internes, ajoutez la ligne suivante dans <code>/etc/modprobe.d/local</code> :
<pre>options dummy numdummies=2</pre>
Note : vous pouvez faire de même en ipv6 :
* il faut utiliser le range fd00::/8 (http://en.wikipedia.org/wiki/Unique_Local_Address)
* pour générer votre ula : http://pfoo.csnu.org/ula/gen-ula.html
==reboot et postinstallation==
<pre>
exit
umount /mnt/boot
umount /mnt/var
umount /mnt/proc
umount /mnt/sys
umount /mnt/dev
umount /mnt
</pre>
Rebootez votre serveur en mode normal :
<pre>reboot</pre>
Créez votre utilisateur :
<pre>adduser pfoo</pre>
Je vous conseil de commencer à sécuriser votre ssh :
* désactivez le login root (directive PermitRootLogin no dans <code>/etc/ssh/sshd_config</code>)
* ajoutez la directive allowusers pfoo dans <code>/etc/ssh/sshd_config</code>
=Utiliser son propre certificat ssl pour l'interface web=
Je vous renvoi sur http://wiki.csnu.org/index.php?title=Installation_et_configuration_de_OpenSSL pour la mise en place d'une autorité de certification.
Dans l'exemple suivant, je créé un certificat proxmox et le signe avec l'autorité onyx_ca :
<pre>
openssl req -newkey rsa:2048 -keyout proxmox.key -out proxmox.req
openssl ca -name onyx_ca -extensions PROXMOX -in proxmox.req -out proxmox.pem
</pre>
<pre>
mkdir /etc/apache2/ssl/
mv proxmox.* /etc/apache2/ssl/
cat /etc/ssl/root_ca/root_ca.pem /etc/ssl/onyx_ca/onyx_ca.pem > /etc/apache2/ssl/cachain.pem
</pre>
Modifiez le fichier <code>/etc/apache2/sites-enabled/pve.conf</code> comme suit :
<pre>
<VirtualHost *:443>
    SSLEngine on
    SSLProtocol all -SSLv2
    #SSLCertificateFile /etc/pve/pve-ssl.pem
    #SSLCertificateKeyFile /etc/pve/pve-ssl.key
    SSLCertificateFile /etc/apache2/ssl/proxmox.pem
    SSLCertificateKeyFile /etc/apache2/ssl/proxmox.key
    SSLCertificateChainFile /etc/apache2/ssl/cachain.pem
    RewriteEngine on
    RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK)
    RewriteRule .* - [F]
</VirtualHost>
</pre>
=Installer un serveur dns pour ses VEs=
Commencez par installer le serveur bind9 :
<pre>aptitude install bind9 bind9-host dnsutils</pre>
Éditez le fichier <code>/etc/bind/named.conf.options</code> et ajoutez y les lignes suivantes :
<pre>
allow-query {
        127.0.0.1;
        91.121.141.220;
        ::1;
        2001:41d0:1:bcdc::220;
        192.168.0.0/24;
};
allow-recursion {
        127.0.0.1;
        91.121.141.220;
        ::1;
        2001:41d0:1:bcdc::220;
        192.168.0.0/24;
};
allow-query-cache {
        127.0.0.1;
        91.121.141.220;
        ::1;
        2001:41d0:1:bcdc::220;
        192.168.0.0/24;
};
version "[SECURED]";
allow-notify {
        127.0.0.1;
        91.121.141.220;
        ::1;
        2001:41d0:1:bcdc::220;
        192.168.0.0/24;
};
//interdiction du transfère complet de zones
allow-transfer {"none";};
listen-on    { 127.0.0.1; 192.168.0.0/24; 91.121.141.220; };
listen-on-v6 { ::1; 2001:41d0:1:bcdc::220; };
transfer-source 91.121.141.220;
transfer-source-v6 2001:41d0:1:bcdc::220;
notify-source 91.121.141.220;
notify-source-v6 2001:41d0:1:bcdc::220;
</pre>
Vous pouvez noter que j'ai autorité toutes les IPs 192.168.0.0 à interroger le serveur dns étant donné que je me servirais de cette classe pour créer un réseau interne pour mes VEs.
Ajoutez les lignes suivantes dans <code>/etc/resolv.conf</code> :
<pre>
nameserver ::1
nameserver 127.0.0.1
nameserver 192.168.0.1
nameserver 2001:41d0:1:bcdc::220
nameserver 91.121.141.220
</pre>
=Sécuriser et configurer le serveur mail de son host=
Lors de l'installation de l'interface proxmox, <code>postfix</code> a été automatiquement installé.
Modifiez la configuration de postfix dans <code>/etc/postfix/main.cf</code> comme suit :
<pre>
# See /usr/share/postfix/main.cf.dist for a commented, more complete version
smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
biff = no
# appending .domain is the MUA's job.
append_dot_mydomain = no
# Uncomment the next line to generate "delayed mail" warnings
#delay_warning_time = 4h
readme_directory = no
# TLS parameters
smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
smtpd_use_tls=yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
# See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for
# information on enabling SSL in the smtp client.
myhostname = onyx.csnu.org
mydomain = onyx.csnu.org
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = onyx.csnu.org, localhost
relayhost =
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 192.168.0.0/24
mailbox_size_limit = 0
recipient_delimiter = +
inet_protocols = all
inet_interfaces = 127.0.0.1, [::1], 192.168.0.1, 91.121.141.220, [2001:41d0:1:bcdc::220]
smtpd_sender_restrictions =
  reject_unknown_sender_domain,
  reject_non_fqdn_sender
smtpd_recipient_restrictions =
  permit_mynetworks,
  permit_sasl_authenticated,
  reject_non_fqdn_hostname,
  reject_non_fqdn_sender,
  reject_non_fqdn_recipient,
  reject_unauth_destination,
  reject_unauth_pipelining,
  reject_invalid_hostname
</pre>
==SSL==
Si vous avez votre propre autorité ssl, vous pouvez générer votre propre certificat.
Ajoutez les lignes suivantes dans <code>/etc/ssl/openssl.cnf</code> :
<pre>
[POSTFIX]
nsComment                      = "SMTP Server Certificate"
subjectKeyIdentifier            = hash
authorityKeyIdentifier          = keyid,issuer:always
issuerAltName                  = issuer:copy
basicConstraints                = critical,CA:FALSE
keyUsage                        = digitalSignature, nonRepudiation, keyEncipherment
nsCertType                      = server
extendedKeyUsage                = serverAuth
</pre>
Puis générez la clé et le certificat, et signez le avec votre autorité (onyx_ca dans mon cas) :
<pre>
openssl req -config /etc/ssl/openssl.cnf -nodes -newkey rsa:2048 -keyout postfix.key -out postfix.req
openssl ca -config /etc/ssl/openssl.cnf -name onyx_ca -extensions POSTFIX -in postfix.req -out postfix.pem
</pre>
Déplacez les fichiers dans le répertoire <code>/etc/postfix/ssl</code>:
<pre>
mkdir /etc/postfix/ssl
mv postfix.key /etc/postfix/ssl/
mv postfix.pem /etc/postfix/ssl/
chmod 600 /etc/postfix/ssl/*
cat /etc/ssl/root_ca/root_ca.pem /etc/ssl/onyx_ca/onyx_ca.pem > /etc/postfix/ssl/ca_chain.pem
</pre>
Il faut encore modifier <code>/etc/postfix/main.cf</code> :
<pre>
smtpd_tls_cert_file=/etc/postfix/ssl/postfix.pem
smtpd_tls_key_file=/etc/postfix/ssl/postfix.key
smtpd_tls_CAfile=/etc/postfix/ssl/ca_chain.pem
smtpd_use_tls=yes
smtp_tls_cert_file=/etc/postfix/ssl/postfix.pem
smtp_tls_key_file=/etc/postfix/ssl/postfix.key
smtp_tls_CAfile=/etc/postfix/ssl/ca_chain.pem
</pre>
=Protéger votre proxmox=
==sshguard==
http://wiki.csnu.org/index.php?title=Prot%C3%A9ger_SSH_avec_sshguard
==iptables==
=Télécharger vos images=
Téléchargez les iso des OS que vous souhaitez utiliser dans <code>/var/lib/vz/template/iso</code>
=Créer votre première VM=
Utilisez votre navigateur web pour accéder à https://ip_de_votre_serveur. C'est l'interface web de proxmox.
Cliquez sur <code>Storage</code> puis ajoutez un storage de type "lvm group"
Sur la page d'ajout, sélectionnez le groupe lvm que vous avez créé durant l'installation (ici, je l'avais appelé "main") puis sauvegardez.
Cliquez sur <code>Virtual Machines</code> puis sur <code>create</code>
Dans <code>Installation Media:</code> sélectionnez l'iso que vous avez téléchargé au préalable.
Dans <code>Disk Storage:</code> selectionnez votre LVM.
Configurez l'espace disque et la ram, et nommez votre VM.
Dans la partie <code>Network</code> selectionnez <code>vmbr0</code> comme bridge et précisez l'adresse mac fournie par votre prestataire de service
Cliquez sur <code>create</code> pour créer votre VM
Sélectionnez ensuite votre VM et cliquez sur le bouton <code>Start</code>
=Accéder a une VM avec un client vnc=
Lorsque la VM est lancée, loguez vous en ssh sur votre proxmox et tapez :
<pre>nc -l -p 5900 -c "qm vncproxy VMID PASSWORD"</pre>
VMID étant le numéro de la VM, et password le mot-de-passe pour accéder au vnc.
Il ne vous reste plus qu'à lancer votre client vnc préféré.
Souvenez vous que dans le cas présent, la connexion vnc n'est pas chiffrée ! Il serait bon d'envisager de se connecter au travers d'un tunnel ssh.
=Importer une VM depuis vmware ESXi=
=qm et modification des VMs en ligne de commande=
=Protéger SSH dans une VM=
Reportez vous à [[Protéger SSH avec sshguard]]
=Annexes=
==Erreurs du type <code>IPv6 addrconf: prefix with wrong length 56</code> ==
Cette erreur est typique sous linux si les routeurs de votre serveur annoncent des blocs IPv6 /56 alors que vous configurez des /64.
Ajouter les lignes suivantes dans votre fichier <code>/etc/sysctl.conf</code> :
<pre>
net.ipv6.conf.all.autoconf = 0
net.ipv6.conf.default.autoconf = 0
net.ipv6.conf.lo.autoconf = 0
net.ipv6.conf.eth0.autoconf = 0
net.ipv6.conf.vmbr0.autoconf = 0
net.ipv6.conf.vmbr1.autoconf = 0
net.ipv6.conf.dummy0.autoconf = 0
</pre>
</pre>
4 203

modifications

Menu de navigation