Différences entre versions de « VServer »
imported>SylvainBeucler m (→Survie : suppression to '/' en fin d'adresse de miroir - vserver en rajoute un tout seul) |
imported>SylvainBeucler m (Adresses IP privées) |
||
Ligne 83 : | Ligne 83 : | ||
vserver "$NAME" exec update-rc.d -f "$i" remove | vserver "$NAME" exec update-rc.d -f "$i" remove | ||
done | done | ||
+ | |||
+ | == Adresses IP privées == | ||
+ | |||
+ | Si vous ne disposez que d'un jeu limité d'adresses IP publiques, mais voulez installer plus de vservers, une bonne architecture est d'installer les vservers sur des adresses IP privées (192.168.30.0/24), et de centraliser l'association IP/port publics -> IP/port privés dans le pare-feu, avec un peu de NAT. | ||
+ | <pre> | ||
+ | PUBLIC_IP=123.123.123.123 | ||
+ | # Restrict host/domU IP usage | ||
+ | sed -i -e "s/^#ListenAddress 0.0.0.0/ListenAddress $PUBLIC_IP/" /etc/ssh/sshd_config | ||
+ | invoke-rc.d ssh restart | ||
+ | #same for Exim/Postfix | ||
+ | sed -i -e "s/^QUEUERUNNER=.*/QUEUERUNNER='queueonly'/" /etc/default/exim4 | ||
+ | invoke-rc.d exim4 restart | ||
+ | |||
+ | # NAT | ||
+ | cat <<EOF >> /etc/network/firewall.sh | ||
+ | #!/bin/bash | ||
+ | # Clean-up | ||
+ | # Use 'ACCEPT' by default - safer when using '-F' manually | ||
+ | iptables -F | ||
+ | iptables -P INPUT ACCEPT | ||
+ | iptables -P OUTPUT ACCEPT | ||
+ | iptables -P FORWARD ACCEPT | ||
+ | |||
+ | # Table 'nat' clean-up | ||
+ | iptables -t nat -F | ||
+ | iptables -t nat -P PREROUTING ACCEPT | ||
+ | iptables -t nat -P POSTROUTING ACCEPT | ||
+ | iptables -t nat -P OUTPUT ACCEPT | ||
+ | |||
+ | # Connection sharing with internal servers | ||
+ | iptables -t nat -A POSTROUTING -s 192.168.30.0/24 -d ! 192.168.30.0/24 -j SNAT --to-source $PUBLIC_IP | ||
+ | |||
+ | # Forward services to the appropriate internal server | ||
+ | iptables -t nat -A PREROUTING -d $PUBLIC_IP -p tcp --dport 10022 -j DNAT --to-destination 192.168.30.10:22 | ||
+ | iptables -t nat -A OUTPUT -d $PUBLIC_IP -p tcp --dport 10022 -j DNAT --to-destination 192.168.30.10:22 | ||
+ | iptables -t nat -A PREROUTING -d $PUBLIC_IP -p tcp --dport http -j DNAT --to-destination 192.168.30.10 | ||
+ | iptables -t nat -A OUTPUT -d $PUBLIC_IP -p tcp --dport http -j DNAT --to-destination 192.168.30.10 | ||
+ | iptables -t nat -A PREROUTING -d $PUBLIC_IP -p tcp --dport domain -j DNAT --to-destination 192.168.30.10 | ||
+ | iptables -t nat -A OUTPUT -d $PUBLIC_IP -p tcp --dport domain -j DNAT --to-destination 192.168.30.10 | ||
+ | iptables -t nat -A PREROUTING -d $PUBLIC_IP -p udp --dport domain -j DNAT --to-destination 192.168.30.10 | ||
+ | iptables -t nat -A OUTPUT -d $PUBLIC_IP -p udp --dport domain -j DNAT --to-destination 192.168.30.10 | ||
+ | # ... | ||
+ | EOF | ||
+ | chmod 755 /etc/network/firewall.sh | ||
+ | cat <<EOF >> /etc/network/interfaces | ||
+ | pre-up /etc/network/firewall.sh | ||
+ | EOF | ||
+ | |||
+ | # Attribute an IP to a VServer: | ||
+ | cd /etc/vservers/myvserver | ||
+ | cd interfaces | ||
+ | mkdir 12 | ||
+ | echo 'eth0' > dev | ||
+ | echo '192.168.30.12/32' > 12/ip | ||
+ | </pre> | ||
== Liens == | == Liens == |
Version du 16 avril 2008 à 20:25
Atouts
- on peut "entrer" dans un vserver depuis l'hôte sans passer par login (pas de mot de passe) (
vserver monvserver enter
) - pas d'émulation, donc rapidité
- fonctionne comme un chroot sécurisé - pas besoin d'image disque ou de partition LVM séparée
- peut partager des dossiers entre vservers, en lecture seule ou en écriture
- une version pour tous les noyaux Linux - pas besoin de régresser à 2.6.18
- fonctionne partout, serveurs ou portables (pas besoin de PAE)
- très proche d'un noyau classique, pas de comportement bizarre à la Xen (port série, clavier...)
- l'hôte peut éventuellement voir tous les processus hébergés, la charge totale, etc. Ce n'est pas juste un vserver parmi les autres.
Inconvénient
- pas d'émulation réseau, donc pare-feu centralisé sur l'hôte (pas d'iptables dans les vservers)
- configuration mal agencée
Survie
- Création:
vserver monvserver build -m debootstrap -- -d etch -m http://mirror/debian
- Lister les VServers:
vserver-stat
- Entrer dans un VServer:
vserver monvserver enter
- (re)Démarrer un VServer:
vserver monvserver stop vserver monvserver start vserver monvserver restart
- Emplacement physique:
/vservers/monvserver/ /etc/vservers/monvserver/ # configuration
Renommer un VServer
Fichiers concernés:
/vservers/monvserver /etc/vservers/monvserver /etc/vservers/monvserver/name /etc/vservers/monvserver/uts/nodename /etc/vservers/monvserver/cache -> /etc/vservers/.defaults/cachebase/monvserver /etc/vservers/monvserver/vdir -> /etc/vservers/.defaults/vdirbase/monvserver
Par script:
FROM=download TO=sftp vserver $FROM stop mv /vservers/$FROM /vservers/$TO mv /etc/vservers/$FROM /etc/vservers/$TO echo $TO > /etc/vservers/$TO/name echo $TO > /etc/vservers/$TO/uts/nodename ln -sf /etc/vservers/.defaults/cachebase/$TO /etc/vservers/$TO/cache ln -sf /etc/vservers/.defaults/vdirbase/$TO /etc/vservers/$TO/vdir vserver $TO start
Vous aurez peut-être besoin de modifier également /vservers/$TO/etc/hosts
.
Vérifiez enfin vos fstab.remote
si vous avez partagé des dossiers entre vservers.
Précis de configuration
context
: mettre un identifiant numérique unique pour le vservername
: le nom dansvserver-stat
- lancement automatique au démarrage de l'hôte:
echo "default" > apps/init/mark
- le hostname du vserver:
uts/nodename
- autoriser un vserver de sauvegarde (rsync) à utiliser mknod:
echo MKNOD >> /etc/vservers/backup/bcapabilities
Optimiser le démarrage
Depuis util-vserver >= 0.30.214, util-vserver optimise le démarrage en supprimant des entrées dans /etc/rc?.d
. Attention cependant, cela rend plus difficile de migrer le vserver vers une autre solution de virtualisation.
Si vous souhaitez en profiter pour d'ancien vservers sans les réinstaller, cf. /usr/lib/util-vserver/distributions/debian
. Ou plus directement:
NAME=builder for i in bootlogd checkfs checkroot halt hwclock.sh ifupdown klogd \ libdevmapper1.02 makedev module-init-tools mountall.sh \ mountdevsubfs.sh mountnfs.sh mountkernfs.sh mountvirtfs \ networking reboot setserial single stop-bootlogd \ stop-bootlogd-single umountfs umountnfs.sh umountroot \ urandom; do vserver "$NAME" exec update-rc.d -f "$i" remove done
Adresses IP privées
Si vous ne disposez que d'un jeu limité d'adresses IP publiques, mais voulez installer plus de vservers, une bonne architecture est d'installer les vservers sur des adresses IP privées (192.168.30.0/24), et de centraliser l'association IP/port publics -> IP/port privés dans le pare-feu, avec un peu de NAT.
PUBLIC_IP=123.123.123.123 # Restrict host/domU IP usage sed -i -e "s/^#ListenAddress 0.0.0.0/ListenAddress $PUBLIC_IP/" /etc/ssh/sshd_config invoke-rc.d ssh restart #same for Exim/Postfix sed -i -e "s/^QUEUERUNNER=.*/QUEUERUNNER='queueonly'/" /etc/default/exim4 invoke-rc.d exim4 restart # NAT cat <<EOF >> /etc/network/firewall.sh #!/bin/bash # Clean-up # Use 'ACCEPT' by default - safer when using '-F' manually iptables -F iptables -P INPUT ACCEPT iptables -P OUTPUT ACCEPT iptables -P FORWARD ACCEPT # Table 'nat' clean-up iptables -t nat -F iptables -t nat -P PREROUTING ACCEPT iptables -t nat -P POSTROUTING ACCEPT iptables -t nat -P OUTPUT ACCEPT # Connection sharing with internal servers iptables -t nat -A POSTROUTING -s 192.168.30.0/24 -d ! 192.168.30.0/24 -j SNAT --to-source $PUBLIC_IP # Forward services to the appropriate internal server iptables -t nat -A PREROUTING -d $PUBLIC_IP -p tcp --dport 10022 -j DNAT --to-destination 192.168.30.10:22 iptables -t nat -A OUTPUT -d $PUBLIC_IP -p tcp --dport 10022 -j DNAT --to-destination 192.168.30.10:22 iptables -t nat -A PREROUTING -d $PUBLIC_IP -p tcp --dport http -j DNAT --to-destination 192.168.30.10 iptables -t nat -A OUTPUT -d $PUBLIC_IP -p tcp --dport http -j DNAT --to-destination 192.168.30.10 iptables -t nat -A PREROUTING -d $PUBLIC_IP -p tcp --dport domain -j DNAT --to-destination 192.168.30.10 iptables -t nat -A OUTPUT -d $PUBLIC_IP -p tcp --dport domain -j DNAT --to-destination 192.168.30.10 iptables -t nat -A PREROUTING -d $PUBLIC_IP -p udp --dport domain -j DNAT --to-destination 192.168.30.10 iptables -t nat -A OUTPUT -d $PUBLIC_IP -p udp --dport domain -j DNAT --to-destination 192.168.30.10 # ... EOF chmod 755 /etc/network/firewall.sh cat <<EOF >> /etc/network/interfaces pre-up /etc/network/firewall.sh EOF # Attribute an IP to a VServer: cd /etc/vservers/myvserver cd interfaces mkdir 12 echo 'eth0' > dev echo '192.168.30.12/32' > 12/ip
Liens
- Homepage
- Référence de configuration, dite "flower page"