Installer Calculate sous Debian LXC
Updated 7 Mars 2019
Introduction
Peu de fournisseurs de serveurs VPS/VDS permettent d'installer votre système personnalisé à partir d'une image ISO, plutôt que d'utiliser un système courant. Vous pouvez néanmoins exécuter Calculate Linux dans un conteneur. Cette solution a deux avantages principaux:
- Votre système ne dépend pas d'un contrat d'hébergement et peut être facilement transféré;
- Vous pouvez utiliser autant de conteneurs avec Calculate Linux à bord que vous le souhaitez, chacun d'entre eux étant dédié à une tâche spécifique si vous le souhaitez.
Prenons Debian 9 comme exemple de système hôte.
Configuration du pont réseau
Installez d'abord les logiciels nécessaires:
apt-get install bridge-utils
Configurez le pont en ajoutant à la fin du fichier de configuration:
/etc/network/interfaces
auto br0 iface br0 inet static bridge_ports none bridge_fd 0 address 192.168.0.1 netmask 255.255.255.0
Redémarrer le réseau:
systemctl restart networking
Assurez-vous que le réseau br0 est opérationnel :
br0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.0.1 netmask 255.255.255.0 broadcast 192.168.0.255 inet6 fe80::418:f4ff:fe48:10e9 prefixlen 64 scopeid 0x20<link> ether 06:18:f4:48:10:e9 txqueuelen 1000 (Ethernet) RX packets 0 bytes 0 (0.0 B) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 5 bytes 438 (438.0 B) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
Installer un conteneur avec Calculate Linux
Installez tous les logiciels nécessaires. Pour extraire l'image du système, vous aurez besoin du paquet app-arch/xz-utils, alors installez-le:
apt-get install lxc xz-utils
Installez une version récente de Calculate Container Scratch. Le nom du conteneur sera calculate. Vous serez invité à indiquer un nom de version disponible (17.12.2):
Downloading the image index
WARNING: Running without gpg validation!
---
DIST RELEASE ARCH VARIANT BUILD
---
CCS 17.12.2 x86_64 default 20180221
---
Release: 17.12.2
Downloading the image index
Downloading the rootfs
Downloading the metadata
The image cache is now ready
Unpacking the rootfs
---
You just created a Gentoo container (release=17.12.2, arch=amd64, variant=default)
To enable sshd, run: rc-update add sshd
For security reason, container images ship without user accounts
and without a root password.
Use lxc-attach or chroot directly into the rootfs to set a root password
or create user accounts.
Modifiez les paramètres du conteneur:
/var/lib/lxc/calculate/config
# Network configuration lxc.network.type = veth lxc.network.flags = up lxc.network.name = eth0 lxc.network.link = br0 lxc.network.ipv4.address = 192.168.0.2/24 lxc.network.ipv4.gateway = 192.168.0.1 lxc.start.auto = 1
Redémarrez le conteneur et ajoutez le daemon au démarrage automatique:
systemctl start lxc
Synchronizing state of lxc.service with SysV service script with /lib/systemd/systemd-sysv-install. Executing: /lib/systemd/systemd-sysv-install enable lxc
Vérifiez le conteneur :
Name: calculate State: RUNNING PID: 20111 IP: 192.168.0.2 CPU use: 8.16 seconds BlkIO use: 50.00 MiB Memory use: 58.30 MiB KMem use: 6.67 MiB Link: veth0 TX bytes: 858 bytes RX bytes: 438 bytes Total bytes: 1.27 KiB
Configurer Calculate Linux
Connectez-vous au système LCX et
lxc-attach -n calculate
passwd
/etc/init.d/sshd start
rc-update add sshd default
cl-setup-locale -l ru_RU
exit
Configuration du pare-feu
Vous aurez besoin du logiciel Shorewall pour configurer le routage et le pare-feu. Tout d'abord, installez Shorewall:
apt-get install shorewall
Copiez la configuration du modèle:
cp /usr/share/shorewall/configfiles/{interfaces,policy,rules,snat,zones} /etc/shorewall/
Modifier les paramètres communs de Shorewall, permettant la redirection IP:
/etc/shorewall/shorewall.conf
IP_FORWARDING=On
Vous devez connaître le nom de l'interface, car il sera spécifié dans les paramètres. Si vous ne le savez pas, lancez:
ifconfig
...
ens3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
Important
Dans les exemples ci-dessous, ens3 représente le nom de l'interface. N'oubliez pas de le remplacer par le vôtre !
/etc/shorewall/conf.d/zones
#ZONE TYPE fw firewall loc ipv4 net ipv4
Définir les zones d'interface
/etc/shorewall/conf.d/interfaces
?FORMAT 2 #ZONE INTERFACE OPTIONS net ens3 tcpflags,nosmurfs,routefilter loc br0 tcpflags,nosmurfs,routefilter,routeback
Configurez le masquage IP afin d'avoir une connexion Internet dans le conteneur:
Important
Remplacez 12.34.56.56.78 par votre IP externe.
/etc/shorewall/conf.d/snat
#ACTION SOURCE DEST SNAT(12.34.56.78) 192.168.0.0/24 ens3
Configurez la politique de connexion : les connexions doivent être autorisées dans la zone locale, tandis que les appels entrants sont refusés.
/etc/shorewall/conf.d/policy
#SOURCE DEST POLICY LOGLEVEL fw all ACCEPT loc all ACCEPT net all DROP all all REJECT INFO
Configurez l'accès au système hôte
Configurez l'accès au système hôte : autorisez l'accès pour ping et ssh, et définissez la règle de transfert pour le conteneur ssh via le port 222:
/etc/shorewall/conf.d/rules
?SECTION NEW #ACTION SOURCE DEST PROTO DPORT Ping(ACCEPT) all $FW SSH(ACCEPT) net $FW DNAT net loc:192.168.0.2:22 tcp 222
Run(@debian) Shorewall:
shorewall start
Vérifier l'accès au conteneur via ssh, port 222:
ssh -p 222 server.example.org
où server.example.org est le serveur.
Si tout va bien, ajoutez Shorewall au démarrage automatique:
Synchronizing state of shorewall.service with SysV service script with /lib/systemd/systemd-sysv-install. Executing: /lib/systemd/systemd-sysv-install enable shorewall