10847
Commentaire:
|
12731
|
Texte supprimé. | Texte ajouté. |
Ligne 7: | Ligne 7: |
|| '''Sécurité'''|| tripwire, iptables || | || '''Sécurité'''|| tripwire, iptables || |
Ligne 226: | Ligne 226: |
Configurer la table de routage sur l'hote physique: # route add 10.45.0.240 dev veth240.0 |
}}} * Configurer la table de routage sur l'hote physique (normalement effectué par le script. si c'est pas le cas redémarrer vz) |
Ligne 346: | Ligne 346: |
== Quelques problèmes rencontrés == * Problèmes de routage * eth0 est configuré et connecté sur le réseau. S'assurer que proc.sys.net.ipv4.conf.{eth0, vethxxx}.{proxy_arp, forwarding}=1 * J'ai créé une machine virtuelle (et donc son espace privé /var/lib/vz/private/xxx) et ensuite j'ai créé des partitions lvm pour différentes sous arborescence du système de fichiers de cette VE. J'ai migré les données de sorte à monter les partitions aux points correspondants (/var/log, /var/spool, / et /tmp). Voici ma situation: {{{ virtual1:~# cat /etc/fstab ... /dev/mapper/serveurs-var--vz /var/lib/vz ext3 defaults 0 3 /dev/mapper/serveurs-root--asterisk /var/lib/vz/private/101 ext3 defaults,userquota 0 4 /dev/mapper/serveurs-log--asterisk /var/lib/vz/private/101/var/log ext3 defaults 0 5 /dev/mapper/serveurs-spool--asterisk /var/lib/vz/private/101/var/spool ext3 defaults 0 6 /dev/mapper/serveurs-temp--asterisk /var/lib/vz/private/101/tmp ext3 defaults 0 7 ... }}} On peut y voir les quatres partitions (asterisk) correspondants à ma VE. Mais après cette manipulation (et montage de ces partitions), à chaque tentative de démarrage de la VE j'obtiens le message suivant:"vzquota : (error) Quota on syscall for 101: Device or resource busy" * pour résoudre ce problème, j'ai désactivé ls quotas ('''heureusement j'en avais pas besoin sur ce serveur là, puisque celui-ci est complètement isolé sur une partition à part''') dans le fichier /etc/vz/vz.conf. L'autre alternative pour résoudre ce problème aurait été de réinitialiser les quotas pour cette machine en faisant: {{{ # vzquota init 101 -b 2097152 -B 2097152 -e 01w -i 200000 -I 220000 -n 01w -p /var/lib/vz/private/101 }}} |
Installation d'un serveur OpenVZ - ma version de l'histoire
Objectif: laisser des traces de ma propre expérience de la mise en place d'un serveur openvz et les soucis particuliers que j'ai rencontrés.
Installation
Fiche serveur
- Sur le noeud physique:
Services |
openssh, openvz (noyau) |
Sécurité |
tripwire, iptables |
|| Suivi/Outils || iproute, ntp, tcpdump, dig, mtr ||
- Sur chaque serveur virtuel
Services |
ça dépend |
Sécurité |
sudo, sXid, Logcheck, PortSentry |
Suivi/Outils |
Git, iproute, mtr, trafshow, tcpdump, dig |
Schéma de partitionnement
/ => 1 Go
- reste en lvm
Configuration réseau
- 2 interfaces actives:
- 1 interface d'administration: elle est configurée complètement
- 1 autre pour le pont ethernet.
Tâches supplémentaires à exécuter
- corriger le fichier /etc/apt/sources.list: utilisation des dépôts locaux.
- mise à jour du système (notamment les mises à jour de sécurité).
- Editer le fichier /etc/hostname
- Editer le fichier /etc/resolv.conf
- Editer le fichier /etc/hosts et supprimer les fichiers /etc/hosts.allow et /etc/hosts.deny
- Installer le noyau correspondant le mieux à l'architecture du serveur et supprimer la version antérieur (après redémarrage bien sûr).
Installation des logiciels
Sudo
# aptitude install sudo # visudo -f /etc/sudoers # /etc/sudoers ... # User privilege specification root ALL=(ALL) ALL nacer ALL=(ALL) ALL
SSH
Suivre la démarche décrite ici.
Ajouter le compte d'administration (ici nacer) au groupe ssh:
$ sudo usermod -a -G ssh nacer
Copier ma clé publique sur le serveur, à partir d'une clé usb par exemple:
$ sudo mount -t vfat /dev/sda1 /mnt/ $ mkdir .ssh $ cat /mnt/id_dsa.pub >> .ssh/authorized_keys $ chmod u=rw,go=r .ssh/authorized_keys
Tester la configuration en essayant de se connecter à partir du poste d'administration.
tripwire
ntp (client)
- Installation:
$ sudo aptitude install ntp ntp-simple ntpdate
- Configuration (fichier /etc/ntp.conf):
... #Paramètres du serveur: server 192.168.100.2 #Restreindre le type d'accès: restrict default notrust nomodify nopeer # configuration de l'hôte local restrict 192.168.100.2 restrict 127.0.0.1 ...
- Activer la configuration:
$ sudo ntpdate 192.168.100.2
- Relancer le service:
$ sudo invoke-rc.d ntp restart
- Corriger l'heure de l'horloge matérielle:
$ sudo hwclock --systohc
- Vérifier avec quel(s) serveur(s) on est synchronisé:
$ ntpdc -p remote local st poll reach delay offset disp ======================================================================= *192.168.100.2 10.45.0.242 14 64 77 0.00027 0.004907 0.43616
Logcheck
PortSentry
sXid
Git
Voir ici
GnuPG
Création d'une image OpenVZ
- installation de quelques logiciels nécessaires:
$ sudo aptitude install quota debootstrap
Il vaut mieux à ce stade avoir /var/lib/vz sur une partition à part
- création de l'image:
mkdir /var/lib/vz/template/debian-etch/ debootstrap --arch i386 etch /var/lib/vz/template/debian-etch/ http://miroir.cm.refer.org/debian/
- Ajuster le fichier de configuration du serveur virtuel:
# sudo vzctl set 240 --applyconfig vps.basic --save
- Ajuster la variable VE OSTEMPLATE
# sudo sh -c 'echo "OSTEMPLATE=debian-4.0" >> /etc/vz/conf/240.conf'
- Ajuster l'adresse IP du serveur virtuel:
# sudo vzctl set 240 --ipadd 10.45.0.240 --save
- Configurer le DNS de la machine virtuelle:
# sudo vzctl set 240 --nameserver 192.168.100.2 --save
- Copier l'image du système pour créer celle du serveur:
# mkdir /var/lib/vz/private/240; cp -r /var/lib/vz/template/debian-etch/* /var/lib/vz/private/240/
Organiser le réseau. Voir les explications de la méthode pont ethernet:
# aptitude install bridge-utils
- mise en place de l'interface veth: vérifier que les modules correspondant sont bien chargés:
# lsmod | grep vzeth vzethdev 12480 0 vzmon 38152 5 vzethdev,vznetdev,vzrst,vzcpt vzdev 3620 4 vzethdev,vznetdev,vzmon,vzdquota
- et sinon:
# modprobe vzethdev
- Rendre persistante la configuration du pont
- éditer le fichier de configuration du serveur virtuel /etc/vz/conf/240.conf
- commenter toute entrée IP_ADDRESS afin d'éviter la création uniquement du périphérique de type VENET dans l'environnement virtuel
- ajouter (ou modifier) l'entrée CONFIG_CUSTOMIZED comme ceci:
CONFIG_CUSTOMIZED="yes"
- ajouter les entrées (en prévision du script à utiliser. Voir la note qui suit).
VZHOSTBR="veth240.0" VETH_IP_ADDRESS=10.45.0.240
- et indiquer un script personnalisé à lancer au démarrage du serveur virtuel, comme par exemple:
# /usr/sbin/vznetaddroute # a script to bring up virtual network interfaces (veth's) in a VE CONFIGFILE=/etc/vz/conf/$VEID.conf . $CONFIGFILE VZHOSTIF=`echo $NETIF |sed 's/^.*host_ifname=\(.*\),.*$/\1/g'` if [ ! -n "$VETH_IP_ADDRESS" ]; then echo "According to $CONFIGFILE VE$VEID has no veth IPs configured." exit 1 fi if [ ! -n "$VZHOSTIF" ]; then echo "According to $CONFIGFILE VE$VEID has no veth interface configured." exit 1 fi for IP in $VETH_IP_ADDRESS; do echo "Adding interface $VZHOSTIF and route $IP for VE$VEID to CT0" /sbin/ifconfig $VZHOSTIF 0 echo 1 > /proc/sys/net/ipv4/conf/$VZHOSTIF/proxy_arp echo 1 > /proc/sys/net/ipv4/conf/$VZHOSTIF/forwarding /sbin/ip route add $IP dev $VZHOSTIF done exit 0
- et le rendre exécutable
# chmod 0500 /usr/sbin/vznetaddbr
Note: le script proposé ici, pris dans la documentation officielle de openvz à l'avantage de prendre en compte une partie de la configuration des interfaces réseaux impliquées, côté noeud physique.
- ajuster le lien vers ce script:
# cat /etc/vz/vznet.conf EXTERNAL_SCRIPT=/usr/local/sbin/vzaddbr
- lier l' interface eth0 de la machine virtuelle à l'interface virtuelle veth240.0 de l'hôte physique:
# vzctl set 240 --netif_add "eth0,00:01:23:45:67:8A,veth240.0,00:01:23:45:67:8B" --save
- Configurer les interfaces sur l'hote physique (eth1 est l'interface ethernet associée au pont sur le noeud physique):
# echo 0 > /proc/sys/net/ipv4/conf/eth1/forwarding # echo 0 > /proc/sys/net/ipv4/conf/eth1/proxy_arp
- Configurer les interfaces et la table de routage dans le VE
# vzctl start 240 # vzctl enter 240 # cat /etc/network/interfaces ... auto eth0 iface eth0 inet static address 10.45.0.240 netmask 255.255.254.0 up route add -net 10.45.0.0 netmask 255.255.254.0 dev eth0 up route add default gw 10.45.0.254 dev eth0 ... # ifconfig eth0 0 # route add default gw 10.45.0.254 dev eth0
- Configurer la table de routage sur l'hote physique (normalement effectué par le script. si c'est pas le cas redémarrer vz)
- Tâches post installation de base dans le serveur virtuel:
- Edition des sources de paquets:
# cat /etc/apt/sources.list deb http://miroir.cm.refer.org/debian/ etch main contrib non-free deb http://miroir.cm.refer.org/debian-security/ etch/updates main contrib non-free
- Mise à jour du système:
# aptitude update # aptitude upgrade
- Installer quelques paquets supplémentaires
# aptitude install ssh quota
- Permissions pour le répertoire /root:
# chmod 700 /root
- Désactivation de la connexion en root par défaut:
#usermod -L root
- Désactiver les sessions getty sur les terminaux du serveur virtuel, vu que le serveur virtuel n'en a pas:
# sed -i -e '/getty/d' /etc/inittab
- Désactiver sync() pour syslog afin d'améliorer les performances d'E/S:
# sed -i -e 's@\([[:space:]]\)\(/var/log/\)@\1-\2@' /etc/syslog.conf
- Ajuster /etc/mtab:
# rm -f /etc/mtab # ln -s /proc/mounts /etc/mtab
- Enlever les paquets inutiles: vu que notre installation s'est faite à partir du système débian de base, il n'y a pas grand chose à enlever (s'il y a même quelque chose).
- Désactiver les services non utilisés/nécessaires
#update-rc.d -f klogd remove #update-rc.d -f inetd remove
- Configurer/copier les clés SSH
- Nettoyer le cache des paquets installés
# aptitude clean
- sortir de la machine virtuelle:
# exit
- Effacer les configurations enregistrées dont on n'a plus besoin et arrêter la machine virtuelle:
# sudo vzctl set 240 --ipdel all --save # sudo vzctl stop 240
- Zipper le répertoire de la machine virtuelle:
# cd /var/lib/vz/private/240 # sudo tar -zcf /var/lib/vz/template/cache/debian-4.0-i386-minimal.tar.gz . # ls -lh /var/lib/vz/template/cache total 56M -rw-r--r-- 1 root root 56M 2008-05-30 19:54 debian-4.0-i386-minimal.tar.gz
Création d'une machine virtuelle OpenVZ
- Créer la machine virtuelle à partir du modèle (image) crée précédemment:
# sudo vzctl create 101 --ostemplate debian-4.0-i386-minimal
- Rendre persistante la configuration du pont comme précédemment:
- éditer le fichier de configuration du serveur virtuel /etc/vz/conf/240.conf
- commenter toute entrée IP_ADDRESS
- ajouter (ou modifier) les entrées CONFIG_CUSTOMIZED, VZHOSTBR et VETH_IP_ADDRESS:
... CONFIG_CUSTOMIZED="yes" VZHOSTBR="veth101.0" VETH_IP_ADDRESS=10.45.0.101
- Paramétrer le réseau:
# vzctl set 101 --netif_add "eth0,20:01:23:45:67:8A,veth101.0,20:01:23:45:67:8B" --save virtual1:~# cat /var/lib/vz/private/101/etc/network/interfaces ... auto eth0 # configuration de l'interface eth0 iface eth0 inet static address 10.45.0.101 netmask 255.255.254.0 up route add -net 10.45.0.0 netmask 255.255.254.0 dev eth0 up route add default gw 10.45.0.254 dev eth0 auto venet0 iface venet0 inet static address 127.0.0.1 netmask 255.255.255.255 broadcast 0.0.0.0 up route add -net 192.0.2.1 netmask 255.255.255.255 dev venet0 #up route add default gw 192.0.2.1
- Lancer la machine virtuelle et voilà!
Quelques problèmes rencontrés
- Problèmes de routage
- eth0 est configuré et connecté sur le réseau. S'assurer que proc.sys.net.ipv4.conf.{eth0, vethxxx}.{proxy_arp, forwarding}=1
- J'ai créé une machine virtuelle (et donc son espace privé /var/lib/vz/private/xxx) et ensuite j'ai créé des partitions lvm pour différentes sous arborescence du système de fichiers de cette VE. J'ai migré les données de sorte à monter les partitions aux points correspondants (/var/log, /var/spool, / et /tmp). Voici ma situation:
virtual1:~# cat /etc/fstab ... /dev/mapper/serveurs-var--vz /var/lib/vz ext3 defaults 0 3 /dev/mapper/serveurs-root--asterisk /var/lib/vz/private/101 ext3 defaults,userquota 0 4 /dev/mapper/serveurs-log--asterisk /var/lib/vz/private/101/var/log ext3 defaults 0 5 /dev/mapper/serveurs-spool--asterisk /var/lib/vz/private/101/var/spool ext3 defaults 0 6 /dev/mapper/serveurs-temp--asterisk /var/lib/vz/private/101/tmp ext3 defaults 0 7 ...
On peut y voir les quatres partitions (asterisk) correspondants à ma VE.
Mais après cette manipulation (et montage de ces partitions), à chaque tentative de démarrage de la VE j'obtiens le message suivant:"vzquota : (error) Quota on syscall for 101: Device or resource busy"
pour résoudre ce problème, j'ai désactivé ls quotas (heureusement j'en avais pas besoin sur ce serveur là, puisque celui-ci est complètement isolé sur une partition à part) dans le fichier /etc/vz/vz.conf.
L'autre alternative pour résoudre ce problème aurait été de réinitialiser les quotas pour cette machine en faisant:
# vzquota init 101 -b 2097152 -B 2097152 -e 01w -i 200000 -I 220000 -n 01w -p /var/lib/vz/private/101