Modifications entre les versions 2 et 3
Version 2 à la date du 2008-06-03 11:11:19
Taille: 10847
Commentaire:
Version 3 à la date du 2008-06-03 11:16:56
Taille: 10898
Commentaire:
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)

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/

# 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à!

NacerAdamouSaidou/OpenVZ (dernière édition le 2012-01-09 11:01:13 par NacerAdamouSaidou)