wiki:Documentation/Fr/Administrateur/Installer/DediboxVserver

Version 31 (modified by anonyme, 5 years ago) (diff)

--

Si vous trouviez des erreurs ou des imprécisions dans ce document faites m'en part sur le  https://alternc.org/#Participerauxd%C3%A9veloppements chan IRC
Olivier aka Olivier_54

Introduction

Cette documentation décrit l'installation d'AlternC sur un vserver installé sur une dedibox.
Il est possible que la méthode ne diffère pas de beaucoup pour des vservers sur d'autres machines, mais cette document prend en compte certaines spécificités des dedibox.

Pré-requis

  • Une dedibox
  • Une installation de la dedibox en Debian GNU/Linux "Etch"
  • Un nom de domaine par exemple mondomaine.net

Principe de fonctionnement

Pourquoi utiliser des vservers

Dedibox fournit un service à un prix très attractif, à ce prix, si la bande passante est très largement fournie ainsi que la quasi non limitation du volume de données, avoir plusieurs adresses ip a un coût. Comme dans mon cas, en tant que particulier je ne voulais pas trop dépasser le prix d'un abonnement internet, je me suis résolu à ne disposer que d'une adresse ip. L'utilisation de vservers me permet de disposer potentiellement de plusieurs serveurs, en particulier pour faire mes tests, ou de backup mes serveurs dans un état spécifique et pouvoir revenir dessus rapidement si nécessaire. Je me suis rendu compte par la suite que travailler avec une seule ip et plusieurs vservers derrière m'a permis de changer un serveur derrière un port de la dedibox de façon quasi transparente pour les utilisateurs de mon alternc. Pour avoir eu besoin dans d'autres circonstances de transférer des vservers d'une machine à une autre, j'ai choisi cette solution pour me permettre de migrer sur d'autres serveurs si le besoin s'en faisait sentir.
Par ailleurs c'est aussi à ma connaissance la seule solution de "virtualisation" qui n'engendre pas de perte de performance par rapport au même processus fonctionnant nativement sur le serveur.
Bref c'est très souple ... et on verra par la suite que c'est en même temps un peu contraignant.

Comment ça marche

Principe de fonctionnement Le principe est de gérer les différents ports ouverts sur l'ip publique de la dedibox et de les diriger avec netfilter vers les vservers comme s'il s'agissait d'un réseau local avec plusieurs serveur distinct. La nuance réside dans le fait que le routage n'est pas activé, au niveau du noyau c'est uniquement par réécriture d'adresses que les vservers repondent. Un exemple de script iptables qui fait ce travail

#!/bin/bash
IPTABLES="/sbin/iptables";
ROUTE="/sbin/route";
LAN="192.168.1.0/24";
LAN_GW="192.168.1.254"; # Vous devez créer une interface eth0:0 ayant l'adresse ip 192.168.1.254 qui servira de "passerelle"
WAN_GW="88.191.11.1";
WAN_IFACE="eth0";
WAN_IP="88.191.11.109";
ALTERNC_HOST="192.168.1.1";

# Flushing tables
$IPTABLES -F
$IPTABLES -X
$IPTABLES -t nat -F

# Define default policy
$IPTABLES -P INPUT DROP
$IPTABLES -P OUTPUT ACCEPT
$IPTABLES -P FORWARD DROP
# Define standard fw rules
$IPTABLES -A INPUT -j ACCEPT -m state --state ESTABLISHED,RELATED
$IPTABLES -A INPUT -j ACCEPT -p tcp --dport 22
$IPTABLES -t nat -A POSTROUTING -o $WAN_IFACE -s $LAN -j MASQUERADE
echo "0" > /proc/sys/net/ipv4/ip_forward
$ROUTE add $WAN_GW gw $LAN_GW

# SMTP
$IPTABLES -A INPUT -j ACCEPT -p tcp --dport 25 -d $ALTERNC_HOST -m state --state NEW
$IPTABLES -t nat -A PREROUTING -p tcp --dport 25 -i eth0 -d $WAN_IP -j DNAT --to-destination $ALTERNC_HOST:25

# HTTP
$IPTABLES -A INPUT -j ACCEPT -p tcp --dport 80  -d $ALTERNC_HOST -m state --state NEW
$IPTABLES -t nat -A PREROUTING -p tcp -s $LAN --dport 80 -i eth0 -j DNAT --to-destination $ALTERNC_HOST:80

# FTP
$IPTABLES -A INPUT -j ACCEPT -p tcp --dport 21  -d $ALTERNC_HOST -m state --state NEW
$IPTABLES -t nat -A PREROUTING -p tcp -s $LAN --dport 21 -i eth0 -j DNAT --to-destination $ALTERNC_HOST:21

# HTTPS
$IPTABLES -A INPUT -j ACCEPT -p tcp --dport 443 -d $ALTERNC_HOST -m state --state NEW
$IPTABLES -t nat -A PREROUTING -p tcp --dport 443 -i eth0 -j DNAT --to-destination $ALTERNC_HOST:443

#IMAP only internal
$IPTABLES -A INPUT -j ACCEPT -d $ALTERNC_HOST -m state --state NEW

# IMAPS
$IPTABLES -A INPUT -j ACCEPT -p tcp --dport 993 -d $ALTERNC_HOST -m state --state NEW
$IPTABLES -t nat -A PREROUTING -p tcp --dport 993 -i eth0 -j DNAT --to-destination $ALTERNC_HOST:993

# MYSQL only internal
$IPTABLES -A INPUT -j ACCEPT -p tcp --dport 3306 -d $ALTERNC_HOST -m state --state NEW

# DNS
$IPTABLES -A INPUT -j ACCEPT -p udp --dport 53 -d $ALTERNC_HOST
$IPTABLES -t nat -A PREROUTING -p udp -s ! 192.168.1.0/24 --dport 53 -d $WAN_IP -j DNAT --to-destination $ALTERNC_HOST:53

Installation de la dedibox

Je passerai rapidement sur l'installation de la dedibox en elle même dans la mesure ou l'installeur web fourni par dedibox se suffit à lui même. La seule chose à définir est que vous devrez à ce moment là demander une installation d'un système debian la plus minimale possible, c'est à dire avec rien de plus qu'un serveur ssh et le système de base Debian.
Pour le reste je vous laisserai consulter la documentation de  http://documentation.dedibox.fr/doku.php dedibox

Rendre la dedibox vserver proof

Installation du noyau

La capacité d'une machine à faire fonctionner des vservers, vient de son noyau linux qui a reçu un patch spécifique lui permettant d'isoler les processus entre eux dans plusieurs contextes différents. Pour celà debian fournit maintenant un paquet permettant de disposer d'un noyau de ce type sans recompilation, c'est lui que nous allons installer.

 apt-get install linux-image-vserver-686

Installation des outils vserver

Pour créer, supprimer, ou déplacer nos vserver nous allons avoir besoin d'outils qui eux aussi sont inclus à Debian.

 apt-get install util-vserver vserver-debiantools

Test du noyau vserver

Après reboot de la machine sur le nouveau noyau, la commande vserver-stat vous dira si le noyau est capable de supporter les vserver en répondant ceci

  vserver-stat

  CTX   PROC    VSZ    RSS  userTIME   sysTIME    UPTIME NAME
  0       42 136.3M  19.5K   1d24h37   3h42m47 181d35h53 root server

Comme vous n'avez pas accès physiquement à la dedibox, je vous suggère ici de garder dans un premier temps le noyau fourni par dedibox comme noyau par défaut au démarrage (editer le /boot/grub/menu.lst) et à l'aide de grub-reboot de provoquer un reboot unique sur le nouveau noyau. En cas d'échec, vous pourrez ainsi rebooter matériellement la dedibox et la laisser démarrer sur le premier noyau. Si le reboot sur le kernel vserver est correct, vous pourrez alors modifier le boot pour que dorénavant se noyau démarre par défaut.
Je ne détaillerai pas plus la façon d'utiliser grub et grub-reboot, les manpages servent à ça.

Installation du vserver

Maintenant que nous avons un noyau capable de faire fonctionner notre vserver, nous allons installer celui-ci avec l'aide des commandes suivantes:

 newvserver --hostname alternc --domain mondomaine.net --ip 192.168.1.1/24

Notre vserver s'appellera alternc.mondomaine.net et aura l'adresse ip 192.168.1.1 avec un masque de sous réseau à 255.255.255.0.
La commande que nous avons passée va utiliser debootstrap pour installer un système de base Debian, après environs 4 minutes (c'est le temps que j'ai mesuré sur une dedibox), il vous sera demandé de répondre à quelques questions concernant la localisation du serveur, le mot de passe root , l'utilisation ou non de MD5 pour les mots de passe. Une fois le processus d'installation terminé notre vserver sera prêt à être démarré.
Nous retrouvons l'arborescence du vserver dans /var/lib/vservers/alternc et la configuration du vserver dans /etc/vservers/alternc.

Premier démarrage du vserver

Pour pouvoir démarrer notre vserver nous allons taper la commande suivante:

 vserver alternc start

Pour vérifier que notre vserver est bien en marche nous réutilisons la commande vserver-stat

  vserver-stat

  CTX   PROC    VSZ    RSS  userTIME   sysTIME    UPTIME NAME
  0       42 136.3M  19.5K   1d24h37   3h42m47 181d35h53 root server
  49180   56 670.4M  49.4K   1m02s26   0m21s12  19h28m39 alternc

Si le résultat de vserver-stat donne quelque chose comme ceci, c'est bon signe nous pouvons poursuivre.

Préparation du système

Les limitations des vservers

Le vservers n'ont pas que des avantages et si on peut en trouver en suffisament grand nombre pour trouver cette solution séduisante, il ne faut pas ignorer que certaines limitations peuvent nous faire perdre un temps précieux. J'énoncerai les deux principales limitations qui posent problème avec alternc:

  • Pas d'accès à localhost(127.0.0.1)
  • Pas d'accès aux capabilities du noyau

Ces limitations posent problème surtout au niveau de l'installation de bind9 pour la partie dns qui utilise ces capabilities et au niveau des références à localhost dans les différentes configurations.

Installation de bind9

Pour que bind9 soit capable de fonctionner sur une machine vserver, il doit être compilé avec l'option --disable-linux-caps, malheureusement pour nous, les paquets debian ne sont pas compilés avec cette option; nous allons avoir deux possibilités:

  • Installer un package précompilé avec l'option en question
  • Compiler nous meme le package debian avec l'option en question puis l'installer

Pour faire vite, j'emploie la première solution qui fonctionne pour les processeurs 32 bits, pour les 64 bits il semble qu'il n'y ait actuellement pas de package disponible, c'est donc la seconde solution qui vous attend.

Modification du sources.list

Dans un premier temps nous modifions le fichier /etc/apt/sources.list en commentant tout ce qui existe puis en rajoutant les deux dernières lignes pointant vers les package bind9 nocaps.

 #deb http://ftp.uk.debian.org/debian/ etch main
 #deb-src http://ftp.uk.debian.org/debian/ etch main

 #deb http://security.debian.org etch/updates main

 deb http://debian.home-dn.net/etch bind-nocaps/
 deb-src http://debian.home-dn.net/etch bind-nocaps/

La mise en commentaire de toute les autres sources nous permet de nous assurer que c'est bien la version nocaps de bind que nous allons installer.

Installation de bind9

Ensuite nous ferons

 apt-get update
 apt-get install bind9

puis décommenterons les lignes dans /etc/apt/sources.list

Résolution du problème du localhost

Pour résoudre le fait que le localhost pointe vers 127.0.0.1 nous éditerons le fichier /etc/hosts et remplacerons le 127.0.0.1 par l'adresse ip interne du vserver, au passage nous mettons à jour la ligne concernant l'ip publique du vserver pointant vers le fqdn de notre vserver.

 # /etc/hosts
 192.168.1.1     localhost
 88.191.11.109   alternc.mondomaine.net alternc

Installation des paquets prérequis

Vous pouvez maintenant poursuivre et terminer sur la http://alternc.org/wiki/Documentation/Fr/Administrateur/Telecharger documentation déjà existante

Attachments