lundi 12 octobre 2020

LXC 3.0 sur Debian 10

Pourquoi revenir à LXC ?

  • J'ai utilisé avec bonheur LXD 2.0 sur Ubuntu 16.04, mais depuis la version 4.0 il est obligatoire d'utiliser "snap" pour l'installation. J'ai alors eu de gros problèmes de compatibilité entre les conteneurs crées sur "apt" et leur mise en oeuvre avec "snap".
  • Snap ne me conviens pas. Je trouve ce système de package lent et gourmand en ressources.
  • Je reviens donc à la version LXC d'origine sur une distribution qui me semble plus adapté dans un contexte serveur : Debian 10.

Installation

  • Utilisation de la commande : apt install lxc

Installation/création d'un bridge virtuel (en mode NAT)

  • Création d'un fichier /etc/default/lxc-net avec le contenu suivant :
USE_LXC_BRIDGE="true"
  • Modification du fichier /etc/lxc/default.conf. Remplacer la ligne "lxc.net.0.type = empty" par :
lxc.net.0.type = veth
lxc.net.0.link = lxcbr0
lxc.net.0.flags = up
lxc.net.0.hwaddr = 00:16:3e:xx:xx:xx
  • Il est possible (mais pas obligatoire) d'affiner la configuration dans le fichier /usr/lib/x86_64-linux-gnu/lxc/lxc-net
  • Relance du service avec : systemctl restart lxc-net
  • Vérification de la présence d'une nouvelle carte réseau : ip addr

Création d'un conteneur (en mode privilégié)

  • Les templates sont dans le dossier /usr/share/lxc/templates, il est possible de les modifier (à vos risques et perils). Sur Debian, seuls les templates "alpine", "debian" et "ubuntu" fonctionnent.
  • La commande générale de création est : lxc-create -n nomImage -t nomTemplate -- -r release . Les paramètres situés après "--" sont les paramètres du template.
  • Par exemple pour une Ubuntu 16.04 : lxc-create -n srv1 -t ubuntu -- -r xenial
  • Les conteneurs sont créés dans le dossier : /var/lib/lxc
  • Pour afficher la liste des conteneurs : lxc-ls -f
  • Pour la démarrer : lxc-start -n srv1
  • Pour l'arrêter : lxc-stop -n srv1
  • Pour lancer le conteneur après un reboot, ajouter à la fin du fichier /var/lib/lxc/srv1/config :
lxc.start.auto = 1

Création d'un conteneur avec "download" (en mode privilégié)

  • Les conteneurs suivants sont disponibles :
    • alpine : 3.9  3.10  3.11  3.12  edge
    • alt : Sisyphus  P9
    • apertis : v2019.4  v2020.2
    • archlinux : current
    • centos : 6  7  8  8-Stream
    • debian : bulleye  buster  sid  stretch
    • devuan : ascii  beowolf
    • fedora : 31  32  33
    • funtoo : 1.4
    • gentoo : current
    • kali : current
    • mint : sarah  serena  sonya  sylvia  tara  tina  tricia  ulyana
    • opensuse : 15.1  15.2  tumbleweed
    • openwrt : 18.06  19.07  snapshot
    • oracle : 6  7  8
    • plamo : 6.x  7.x
    • pld : current
    • sabayon : current
    • ubuntu : bionic  focal  groovy  hirsute  trusty  xenial
    • voidlinux : current
  • Les architectures : i386  amd64 (et plus rarement ppc64el  s390x  armhf  arm64)
  • La commande générale de création est : lxc-create -n nomImage -t download -- --dist centos --release 7  --arch amd64

Backup d'un conteneur (en mode privilégié)

  • On utilise le conteneur "myDebian" par exemple
  • Arrêt du conteneur : lxc-stop -n myDebian
  • Archivage avec tar, dans le dossier /var/lib/lxc : tar -cvzf myDebian.tgz myDebian
  • Il est possible de copier l'archive sur un autre serveur LXC
  • Désarchivage, myDebian.tgz doit être dans le dossier /var/lib/lxc : tar -xvzf myDebian.tgz
  • Il est possible de renommer le conteneur : lxc-copy -R -n myDebian -N srv99
  • Dans ce cas, il faut ensuite modifier le fichier hostname :
    • lxc-attach -n srv99
    • mcedit /etc/hostname

Attribution d'adresses IP fixes

  • Dans mon exemple, je garde une plage d'adresse IP dynamique entre 10.0.3.100 et 10.0.3.254. Les adresses IP fixes seront configurés manuellement entre 10.0.3.2 et 10.0.3.99. Je configure ensuite le conteneur "srv99".
  • Dans le fichier /usr/lib/x86_64-linux-gnu/lxc/lxc-net :
LXC_DHCP_RANGE="10.0.3.100,10.0.3.254"
LXC_DHCP_MAX="155"
  • Lancer la commande systemctl restart lxc-net pour prendre en compte les modifications.
  • Dans le fichier /var/lib/lxc/srv99/config , ajoutez les lignes :
lxc.net.0.ipv4.address = 10.0.3.99/24
lxc.net.0.gateway = auto
  • Dans le conteneur srv99, dans le fichier /etc/network/interfaces , commenter ensuite les lignes :
#auto eth0
#iface eth0 inet dhcp

Configuration du firewall

  • Il faut activer le routage, pour cela activez la ligne net.ipv4.ip_forward=1 dans le fichier /etc/sysctl.conf
  • Pour la configuration iptables, installez avec apt : iptables-persistent
  • Puis modifiez le fichier /etc/iptables/rules.v4 :
###########
# REGLES NAT
###########

*nat
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]

# SNAT
-A POSTROUTING -s 10.0.3.0/24 ! -d 10.0.3.0/24 -j MASQUERADE

# EXEMPLE DNAT
-A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to-destination 10.0.3.45:80

COMMIT

###########
# REGLES FIREWALL
###########

*filter
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]

COMMIT
  • Pour recharger la nouvelle configuration : systemctl restart netfilter-persistent

 

 

vendredi 15 mai 2020

LXD 4.0 sur Ubuntu 20.04

Installation avec la commande : apt install lxd En réalité, la commande apt execute un "snap". Il n'y a pas de version classique. Première initialisation Would you like to use LXD clustering : no Do you want to configure a new storage pool : yes Name of the new storage pool : default Name  […]

Lire la suite

lundi 11 mai 2020

Systemd (systemctl)

Systemd (commande "systemctl") est un système d'initialisation qui a été spécifiquement conçu comme alternative à SysVinit ( commandes "/etc/init.d" et "service"). Ce service est activé par défaut, à partir des distributions suivantes : Debian 8 Ubuntu 16.04 CentOs 7  […]

Lire la suite

vendredi 3 avril 2020

Première utilisation d'OpenNebula

Utilisation d'OpenNebula en tant que front-end pour un cloud privé. Les noeuds fonctionnent avec LXD. Nebula-1.webm  […]

Lire la suite

mardi 31 mars 2020

Installation d'une maquette OpenNebula

Objectif OpenNebula est une solution de cloud privé, complète et assez simple à mettre en oeuvre La maquette disposera de 4 machines virtuelles : Un routeur DebHub16 ou Pfsense, pour que chaque élève soit isolé Un front-end OpenNebula basé sur Debian 10 64 bits : mémoire 1 Go, disque de 20 Go, 1  […]

Lire la suite

samedi 28 mars 2020

Downgrade du réseau sur Ubuntu 16.04 et plus

Voici deux manipulations qui permettent de revenir à la configuration réseau de l'Ubuntu 14.04 Predictable Network Interface Device Names Vous ne voulez plus des interfaces réseau du style "eno1", "enp0s1" et revenir à "eth0" Dans le fichier /etc/default/grub, à la  […]

Lire la suite

dimanche 24 novembre 2019

La commande netstat

La commande Netstat permet de lister tous les ports ouverts sur une machine Options utiles -p  Affiche le nom du programme -t  Tous les ports TCP en mode "ETABLISHED" ou "WAIT" -u  Tous les ports UDP en mode "ETABLISHED" ou "WAIT" -a  Voir aussi les ports en  […]

Lire la suite

mardi 29 octobre 2019

Quick reference OpenSuse 15

Configuration réseau Configuration d'une carte réseau Les fichiers sont dans le dossier "/etc/sysconfig/network" Sur un serveur en mode CLI, le réseau doit être géré par "Wicked". En GUI, il doit être géré par "NetworManager". Il est possible de changer de mode avec  […]

Lire la suite

Quick reference CentOs 8

Configuration réseau Configuration d'une carte réseau Les fichiers sont dans le dossier "/etc/sysconfig/network-scripts" Il y a un fichier de configuration par carte réseau. Pour la carte "enp0s3" par exemple, il faut utiliser le fichier "ifcfg-enp0s3" Exemple d'adresse  […]

Lire la suite

dimanche 25 août 2019

Clé live-usb MX

La distribution MX linux 18.3 est basée sur Debian9 et permet de réaliser facilement un live-usb avec persistance des données Installation Il faut commencer par charger l'image ISO de MX linux 18.3, et installez celle-ci sur un live-cd. Une alternative est de partir directement d'une clé MX déja  […]

Lire la suite

mercredi 21 août 2019

Mise en oeuvre d'un serveur CentOs 7 ou 8 (64 bits)

Installation CentOs7 J'utilise le CD d'installation "CentOS-7-x86_64-NetInstall-1908.iso L'installateur fonctionne graphiquement, la souris est "presque" fonctionnelle. Dans certains cas il faut utiliser les touches "tab" "enter" et "echap" ! La carte  […]

Lire la suite

lundi 24 juin 2019

LXD 3.0 sur Ubuntu 18.04

Objectif Réaliser une installation de LXD, avec prise en charge de limites : Taille de la mémoire Taille du disque dur Nombre de processeurs Utilisation des profiles "default" (bridge lxdbr0) et "mac" (macvlan) Machine physique Ubuntu 18.04 64 bits est installé sur un disque  […]

Lire la suite

samedi 22 juin 2019

LXD sur un réseau local

Objectif L'utilisation de LXD derrière un bridge "lxdbr0" impose d'utiliser des règles de NAT. Une seule adresse réseau est visible (celle de l'hôte), et bien sur à cause du DNAT, chaque port ne peux être dirigé que vers un seul conteneur. J'ai donc cherché une autre solution, pour que  […]

Lire la suite

mardi 9 avril 2019

Remplacement d'Ansible et sshd sur Cygwin

Critique d'Ansible, après 1 an d'utilisation Ansible est un système qui fonctionne correctement dans le cadre de l'administration système. Les machines cibles sont généralement assez rapides pour que tout se passe sans timeout ! En ce qui concerne l'accès aux machines virtuelles des élèves, sur des  […]

Lire la suite

dimanche 7 octobre 2018

Mise en place d'une configuration de proxy automatique

Principe Le serveur DHCP distribue un nom de domaine par défaut. Le serveur DNS dispose d'un enregistrement "wpad" qui pointe vers un serveur web. Un fichier "wpad.dat" doit être situé à la racine. Les navigateurs sont configurés en "détection automatique des paramètres  […]

Lire la suite

mardi 7 août 2018

Utiliser Ansible avec un serveur Windows

Ansible communique avec Windows grace au protocole winrm, il n'est pas possible d'utiliser SSH. Winrm est apparu avec la version 3.0 de powershell. C'est la version qui est installé par défaut sur Windows 2012 et/ou Windows 8.0 Installation sur le serveur Ansible (Linux) apt-get install python-pip  […]

Lire la suite

vendredi 6 juillet 2018

Retour d'experience sur Ansible en production

Introduction Les scripts YAML d'Ansible peuvent avoir leur interêt, mais je trouve que l'utilisation de scripts Bash est préférable (c'est un avis personnel) : La vitesse Bash+Ansible est la même que Ansible+YAML En Bash je dispose des boucles et de tests Créer des scripts d'installation en Bash,  […]

Lire la suite

jeudi 21 juin 2018

Utilisation du système de gestion de configuration Ansible

Installation Le serveur ansible sera nommé (ans) et la machine à piloter (foo). Sur ans (Ubuntu 18.04) : apt-get install ansible Sur ans, création d'une paire de clés : ssh-keygen A créer dans /root/.ssh/ansible Pas de Passphrase Sur ans, dans /etc/ansible/ansible.cfg : remote_port = 22  […]

Lire la suite

mercredi 20 juin 2018

Backup d'un conteneur LXD

Pour réaliser le backup d'une machine LXD, je propose la méthode suivante : Arrêt du conteneur foo Déplacement dans le dossier /var/lib/lxd/containers/foo Archivage avec TAR. Les compressions gzip, bzip2 et xz fonctionnent Démarrage du conteneur foo Voici un script qui utilise cette méthode de  […]

Lire la suite

lundi 18 juin 2018

Optimisation d'un serveur LAMP

Php5 Dans /etc/php5/apache2/php.ini : Post_max_size = 64M Upload_max_filesize = 64M Apache2 Dans /etc/apache2/mods-enabled/mpm-prefork.conf : StartServers                         2 (à la place de 5) MinSpareServers                  2 (à la place de 5) MaxSpareServers                 5 (à la place de  […]

Lire la suite

lundi 28 mai 2018

Création d'une base de donnée Mysql

Eventuellement, pour vider une ancienne base : drop database foo; Puis : create database foo; create user 'fooUser'@'localhost' identified by 'unMotDePasse'; grant all on foo.* to 'fooUser'@'localhost'; flush privileges; Créer un pseudo-root pour MariaDb create user 'admin'@'localhost' identified  […]

Lire la suite

samedi 19 mai 2018

Eviter d'être considéré comme un spammeur

Si on utilise un serveur SMTP personnel, il arrive souvent que les mails envoyés soient considérés comme des spams. Voici quelques astuces pour éviter cela : Outil J'utilise un site qui permet de déterminer ce qui ne fonctionne pas. Ce site propose gratuitement d'effectuer 3 tests par jour :  […]

Lire la suite

Création de switchs virtuels sur Linux

Vde.png

Il est possible d'utiliser des switchs virtuels administrables sur Linux. Ces switchs peuvent ensuite être interfacés avec Virtualbox. Les switchs VDE permettent d'utiliser les VLANS Installation Sur Ubuntu : apt-get install vde2 Pour créer un switch et sa console d'administration : vde_switch -d -s  […]

Lire la suite

Nom des distributions Debian et Ubuntu LTS

Debian 6    Squeeze 7    Wheezy 8    Jessie 9    Stretch 10    Buster Ubuntu 8.04     Hardy 10.04   Lucid 12.04   Precise 14.04   Trusty 16.04   Xenial 18.04   Artful  […]

Lire la suite

Utiliser un raspberry comme serveur de virtualisation

Il est possible d'utiliser un Raspberry pi 2 ou 3 comme machine hôte pour plusieurs machines "virtuelles". Le processeur ARM ne dispose pas de la fonction VTx, il est impossible d'utiliser KVM. Par contre il est possible d'utiliser l'isolation LXC ou LXD. Si on garde la distribution  […]

Lire la suite

vendredi 18 mai 2018

LXD 2.0 sur Ubuntu 16.04 en mode bridge (lxdbr0)

Introduction LXD est une amélioration de LXC réalisé par Canonical. LXD est un cousin de Docker, les deux logiciels reposent sur LXC, l'utilisation est toutefois totalement différente. LXD est pré-installé sur les machines Ubuntu 16.04, 32 et 64 bits. Si vous voulez utiliser LXD, utilisez Ubuntu !  […]

Lire la suite

Finalisation de la configuration d'une machine Ubuntu 16.04 et plus

A la fin de l'installation d'un serveur ubuntu 16.04, 32 ou 64 bits il faut : Débrayer la mise à jour automatique qui a tendance à bloquer les commandes "apt-get update" et "apt-get upgrade" : Dans le fichier /usr/lib/apt/apt.systemd.daily, modifier la ligne AutoAptEnable=1, pour  […]

Lire la suite