Debian face à Meltdown et Spectre

Je ne vais plus vous présenter ces deux failles de sécurités  qui en ont bien fait couler de l’encre depuis quelques jours/semaines/mois … Pour plus d’information à ce sujet, je vous renvoie sur la page wikipedia qui traite le sujet sur Spectre et Meltdown.

Pour avoir une idée de où est ce qu’on en est concernant la progression sur la résolution des problèmes de sécurités cités ci-dessus, je vous renvoie à la page qui traite du sujet.

Tout d’abord, vérifier quel noyau vous devriez avoir sur votre système en fonction de la version de votre distribution.

Sur ma machine, la version 9.3 (Stretch) de Debian tourne avec le noyau 3.16.0-4-amd64.

Pour rappel, et au cas où certains d’entre vous ne savent plus comment faire pour avoir le nom et la version d’une distribution Debian,

~$ lsb_release -a

~$ cat /etc/*-release

Et pour la version du noyau,

~$ uname -r

Pour vérifier si le système est sécurisé ou non, contre Spectre et Meltdown, installer le paquet spectre-meltdown-checker.

~$ sudo apt-get install spectre-meltdown-checker

Lancer ensuite le programme:

~$ sudo spectre-meltdown-checker

Evidement que mon système n’est pas protégé.

De ce fait, mettons à jour notre noyau.

~$ uname -r
3.16.0-4-amd64

Il me faut donc installer la version 64bits (amd64) du noyau linux.

~$ sudo apt-get install linux-image-amd64

Redémarrer votre machine une fois l’installation terminée, puis refaites le test.

~$ uname -r
4.9.0-5-amd64

Selection_001

Lancer de nouveau le programme:

~$ sudo spectre-meltdown-checker

Comme vous pouvez le constater, le problème avec Meltdown est réglé. Attendons les prochaines mises-à-jour du noyaux sous Debian pour voir ce qu’il en est de Spectre.

Une dernière chose. Vérifier que vous avez activé les mises-à-jour de sécurité dans le dépot de debian. Si ce n’est pas le cas, faites en sorte que vous ayez plus ou moins les mêmes informations que moi.

~$ sudo vim /etc/apt/sources.list

Backport et deb-src ne sont pas obligatoire, par contre ceux que j’ai encadré, ils le sont.

Sources:

HowToUpgradeKernel
The Spectre & Meltdown Vulnerability Checker for Linux Is Now in Debian’s Repos
Deux failles critiques : Meltdown et Spectre
Information on source package linux
Check for and Patch Spectre and Meltdown on Debian

Publicités

dpkg: unrecoverable fatal error

Mon ordinateur se fait vieux (Macbook pro 2009), mais il fonctionne à merveille et je n’ai pas trop à me plaindre sauf de la batterie.

Contre toute attente, je n’ai rien changé de la configuration d’origine, sauf pour le cable d’alimentation que j’ai du changer une fois.

Puis un jour comme un autre, je reçois un:

dpkg: unrecoverable fatal error, arborting:
  reading files list for package ‘linux-headers-4.9.0-5-amd64’ : Input/output error
E: Sub-process /usr/bin/dpkg returned an error code (2)

 

Comme solution temporaire (workaroud), naviger dans le fichier /var/lib/dpkg/status, puis supprimer les informations du paquet incriminé.

vim /var/lib/dpkg/status

Lancer ensuite les commandes:

sudo dpkg --configure -a

sudo apt-get -f install

Le problème vient probablement du fait que j’ai des secteurs défecteux sur le disque.

dmesg | grep error
[65432.492401] end_request: I/O error, dev sda, sector 556703315

Source:

Thread: dpkg: unrecoverable fatal error, aborting:
How to fix dpkg error [2]?
Recovering from a failed SSD on linux

X Error of failed request: BadRequest (invalid request code or no such operation)

Si certains d’entre vous rencontre des difficultés à lancer skype, à cause d’une très vielle version, ou de la toute nouvelle (version 8.13.0.2), et ben la solution s’avère d’installer une version ni obsolète ni trop récente.

Je ne me suis pas occupé de ce problème depuis, puisque je n’utilise presque plus Skype, puisque les emails et sms fonctionnent toujours sans problème.

/usr/share/skypeforlinux$ ./skypeforlinux 
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM mic_call
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM call
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM mic_call
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM call
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM mic_call
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM call
X Error of failed request:  BadRequest (invalid request code or no such
operation)
  Major opcode of failed request:  140 (RANDR)
  Minor opcode of failed request:  42 ()
  Serial number of failed request:  10
  Current serial number in output stream:  10

Je n’ai pas eu à m’occuper de ce problème jusqu’au moment où ma moitée a changé d’ordinateur et que j’ai du tout réinstaller.

 

Pour rappel,

    1. Faire une liste des applications déjà installées, puis supprimer skype
       dpkg -l | grep skype
       sudo dpkg -r skype
       sudo dpkg --purge skype
    2. Télécharger la version 8.11.0.4
      https://repo.skype.com/deb/pool/main/s/skypeforlinux/skypeforlinux_8.11.0.4_amd64.deb
    3. Installer le paquet deb
       sudo dpkg -i skypeforlinux_8.11.0.4_amd64.deb

Et voilà.

Source:

Latest skype crashes

Configuration d’un serveur DNS-DHCP avec Zentyal

Chap 1. Configuration d’un serveur DNS-DHCP avec Zentyal
Chap 2. Installation de vSphere 6.5 dans Proxmox

Chap 1. Configuration d’un serveur DNS-DHCP avec Zentyal

La configuration de Zentyal comme serveur DNS/DHCP est assez intéressante, surtout si l’on opère sur son propre réseau local qui est en même temps son réseau domestique. Par « intéressante », je veux dire que c’est un petit « challenge ». Avant de parler des soucis que j’ai rencontrés en adoptant cette configuration, je vais tout d’abord vous expliquer le contexte.

Je me suis acheté un micro-serveur pour créer un lab « VMware » pour me préparer à leurs certifications. Cependant, pour me simplifier la vie, mon lab se trouve dans le même réseau que mes autres appareils connectés à internet. Et oui, c’est pas malin! Mais par contre, c’est pratique puisqu’il n’y a pas moyen de créer une route statique via le routeur de mon FAI. Et plus tard, une fois tout configuré, je déplacerai le lab vers la DMZ.
Le serveur DNS, je l’utiliserai surtout pour résoudre les noms de domaine en local, mais surtout pour en profiter pleinement de la fonctionnalité de « recherche de domaine » qui me permet de ne pas taper le nom de domaine entier (http://monserveur.mylab.local), mais juste son alias (http://monserveur). Par la même occasion, il est possible de faire un ping vers le nom d’hôte directement à partir du même réseau, sans passer donc ni par l’adresse IP ni le nom de domaine.

Ne confondez pas « nom d’hôte » et « alias ». Je vais vous montrer où il faut configurer l’alias dans Zentyal, un peu plus loin dans ce chapitre.

Si vous n’êtes pas habitué à configurer un serveur DNS, vous risquez de foutre le bordel sur votre réseau, mais ce n’est pas si grave que çà. Au pire, le temps de résolution d’un nom de domaine peut être très lent, ou peut ne pas se faire du tout. Petit conseil pour vous prémunir contre ce genre d’inconvénience, c’est d’ajouter manuellement un serveur DNS fonctionnel dans les configurations de réseau de vos machines directement connectées à internet. Pour les autres machines qui doivent se connecter au lab, il n’y a rien à faire.

Avant d’avancer dans la configuration de Zentyal comme serveur DNS/DHCP, je tiens à préciser que je n’ai pas réussi à installer l’OS à partir du CD d’installation téléchargé sur le site. Ceci probablement du au fait que je l’installe comme machine virtuelle, malgré plusieurs tentative de modification des différents paramètres comme le type de disque, etc. Du coup, je suis parti sur une base Ubuntu 16.04.

I. Préparation de la machine virtuelle

OS
Type: Linux 4.X/3.X/2.6 Kernel

Hard Disk
Bus/Device: VirtIO
Format: QEMU
Disk1 size: 8GB
Disk2 size: 20GB
Cache: Default
Discard « coché » (si vos disques durs physiques sont des disques SCSI)

CPU
Sockets: 1
Cores: 1
Type: Default (kvm64)

Memory
Use fixed size memory: 2048MB

Network
Bridged mode
Model: VirtIO (paravirtualized)

Configuration du serveur Zentyal

Installer Ubuntu 16.04, puis créer un fichier /etc/apt/sources.list/zentyal.list pour y ajouter un lien vers l’archive du site.

$ sudo vim /etc/apt/sources.list.d/zentyal.list
deb http://archive.zentyal.org/zentyal 5.0 main

Récupérer la clé publique

$ wget -q http://keys.zentyal.org/zentyal-5.0-archive.asc -O- | sudo apt-key add -

Procéder ensuite à l’installation de zentyal et de ces différents modules. Ceux qui m’intéressent sont zentyal-dns, zentyal-dhcp puis zentyal-ntp.

$ sudo apt update
$ sudo apt upgrade

$ sudo apt install zentyal

$ sudo apt install zentyal-ntp zentyal-dhcp zentyal-dns zentyal-common

Note: pendant l’installation, vous devrez donner un mot de passe pour l’administrateur Root de MySQL. Gardez bien ce mot de passe quelque part, puisque vous ne risquez pas de l’utiliser tant que vous n’avez pas de problèmes de bases de données.

II. Configuration du DNS et du DHCP

L’identifiant et le mot de passe par défaut si vous êtes dans une machine Ubuntu, pour accéder à votre session Zentyal – https://localhost:8443  – sont les mêmes que ceux utilisés pour la même session Ubuntu.

  1. Activer les modules DNS et DHCP
  2. Configurer l’interface en mode statique
    Note: ne cochez surtout pas l’option WAN, sinon vous n’aurez pas accès à cette interface ensuite via le réseau LAN
  3. Configurez votre gateway, qui est l’adresse IP locale du routeur de votre FAI, si vous faites une connection directe
  4. Ajouter votre nom de domaine
  5. Configurer le serveur DNS

    Ici, je trouve que cette page n’est pas du tout ergonomique, puisqu’il n’y a pas moyen de vérifier visuellement ce qu’on a configuré sans cliquer sur le bouton de configuration. De plus, il n’y a pas de bouton pour revenir à la page précédente une fois les informations de configuration ajoutées. Bref, voici mes options.Domain: mylab.local (le nom de domaine que j’ai choisi à l’étape 4)
    Domain IP Address: 192.168.1.20 (l’adresse IP du serveur, cf. étape 2)
    Hostname: xxx (ici, il faut rentrer un nom que vous avez choisi pour identifier une serveur. Ce nom peut être le même que celui de l’hote, mais ce n’est pas une obligation)
    Dans cet exemple, vous devriez pouvoir accéder à l’interface de configuration de Zentyal via son nom d’hôte https://dc-zentyal.mylab.local ou son alias https://zentyal.mylab.local.
  6. Configurer le server DHCP

    Dans l’onglet « Common options »Dans l’onglet « Dynamic DNS options »
    Dans l’onglet « Advanced options », il n’y a pas grand chose à modifier.

III. Configuration du routeur FAI et vérification


Comme je le disais au tout début de cet article, afin d’éviter d’avoir des problèmes d’accès à internet à cause d’un problème de résolution de nom, mieux vaut ajouter par précaution d’autres serveurs DNS comme 8.8.8.8 et 8.8.4.4, qui sont des serveurs DNS de google.
Concernant l’ajout d’un deuxième serveur DHCP, la règle c’est celui qui répond en premier à une requête DHCP qui attribuera une adresse IP à la machine qui en fait la demande. Du coup, il n’y pas pas de soucis à avoir deux serveurs DHCP sur le même réseau.

Pour finir, effectuons une petite vérification pour voir que le DNS fonctionne correctement.

Pour en savoir un peu plus sur la configuration de Zentyal, je vous renvoie à leur wiki.

Références:

En/5.0/Zentyal 5.0 Official Documentation
Zentyal installation (Ubuntu documentation)

Installation de vSphere 6.5 dans Proxmox

Chap 1. Configuration d’un serveur DNS-DHCP avec Zentyal
Chap 2. Installation de vSphere 6.5 dans Proxmox

Chap 2. Installation de vSphere 6.5 dans Proxmox

L’installation de vSphère 6.5 dans proxmox n’est peut être pas évident pour tout le monde. C’est pour celà que j’écris cet article.

Avant d’aller plus loin, je tiens à préciser quelques points.

Primo, vous pouvez télécharger gratuitement la suite vSphère sur le site de VMware. Noter que le produit nécessite une license, une fois la période d’essai gratuite de 60 jours terminée.
Secondo, il n’est plus nécessaire d’installer vCenter dans un serveur Windows. Il faut l’installer comme une machine virtuelle à part entière.
Tertio, je tiens à rappeler que j’utilise debian 9.1 sur un macbook pro. Du coup, j’ai rencontré des soucis lorsqu’il fallait appuyer sur la touche F11 du clavier pour valider l’installation de l’ESXi. Bizarrement, c’est la seule touche en combinaison avec fn, qui n’est pas reconnue, puisque F2 et F9 le sont. Même soucis avec un clavier externe attaché au Mac. Il m’a fallut utiliser un PC/linux pour continuer et terminer l’installation.

I. Préparation est installation du serveur ESXi

Je pars du principe que vous avez installé Proxmox sur un ordinateur ou un serveur dédié avec au moins 16GB de mémoire physique.

Créez une machine virtuelle principale pour acceuillir le serveur ESXi, avec les spécifications suivantes.

CPU >= 2 (type: host)
RAM >= 10GB
Local disk0 >= 2GB (format VMDK)
Local disk1 >= 25GB (format VMDK)
Network: VMXNET3
OS: Other OS types

Ajouter un deuxième disque dur pour l’installation du serveur vCenter.


Ici, j’ai pris la taille du disque proposée par défaut, qui est de 35GB.

Une fois la machine virtuelle prête, vous pouvez vous lancer dans l’installation du serveur ESXi.

Concernant les adresses IP à appliquer aux serveurs, il est fortement conseillé d’utiliser une adresse IP statique.

Une fois l’installation terminée, formater le deuxième disque afin qu’il soit utilisable pour l’installation de vCenter. Pour celà, il suffit de taper l’adresse IP du serveur ESXi dans votre navigateur internet.

II. Installation du serveur vCenter

Comme je le disais dans le titre, il est maintenant possible d’installer vCenter à partir d’une machine tournant sous linux, mais cependant pas avec n’importe quelles distributions. Il faut utiliser Ubuntu ou Suse linux.

Je me suis donc créé une machine virtuelle Ubuntu dans Proxmox, puis j’ai lancé le fichier d’installation de vCenter. Ce; tte étape peut se faire en deux étapes. Une fois la première étape terminée, vous pouvez poursuivre l’installation à une date ultérieure, puis de reprendre à partir de la deuxième étape en entrant dans l’URL de votre navigateur l’adresse IP du serveur vCenter.

Étape 1:


En production, il est fortement recommandé d’ajouter un serveur via son nom de domaine au lieu de l’adresse IP. Je vous explique comment faire à la troisième partie de ce chapitre.

Comme je n’ai pas configuré de serveur DNS lors de cette manipulation, et surtout que c’est un lab, je peux donc me permettre d’utiliser l’adresse IP comme solution temporaire.


Note: Je viens de terminer un article expliquant comment configurer un serveur DNS. Je vous renvoie sur cette page pour voir comment procéder.


Étape 2:
Accéder à l’interface du vCenter à partir de son adresse IP. Vous allez constater qu’il vous faut du flash! Et oui, sans flash vous pouvez toujours utiliser l’interface en HTML5, mais avec des fonctionnalitées limitées.

Heureusement, le problème avec flash sera définitivement résolu d’ici 2020, finalement! Adobe a annoncé officiellement que flash sera retiré du marché après cette date:

« as open standards like HTML5, WebGL and WebAssembly have matured over the past several years, most now provide many of the capabilities and functionalities that plugins pioneered and have become a viable alternative for content on the web. (…) Adobe is planning to end-of-life Flash. Specifically, we will stop updating and distributing the Flash Player at the end of 2020 and encourage content creators to migrate any existing Flash content to these new open formats. »

III. Note concernant l’installation du vCenter via Ubuntu, une fois le serveur DNS/DHCP configuré

Dans la première partie de cet article, je vous ai expliqué comment installer un serveur vCenter lorsqu’on n’a pas de serveur DNS en place. Dans cette partie, nous allons en tenir compte de la présence de Zentyal, qui sera notre serveur DNS sur le réseau (cf. chap 1).

Avant de procéder à l’installation du serveur vCenter, je tiens à rappeler que j’utilisez un nom de domaine en .local (mylab.local). Celà pose un problème lorsqu’on utilise la version bureau de Ubuntu qui, utilise un serveur DNS en local (Avahi), et qui, lui aussi traduit les noms de domaines du type le-nom-de-mon-hote.local en adresse IP.

administrator@budgie:~$ ping debian.local
PING debian.local (192.168.1.10) 56(84) bytes of data.
64 bytes from 192.168.1.10 (192.168.1.10): icmp_seq=1 ttl=64 time=2.36 ms
64 bytes from 192.168.1.10 (192.168.1.10): icmp_seq=2 ttl=64 time=1.31 ms
^C
--- debian.local ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
rtt min/avg/max/mdev = 1.317/1.838/2.360/0.523 ms

Par contre,

administrator@budgie:~$ ping esxi-01.mylab.local
ping: esxi-01.mylab.local: Name or service not known

 

Et ceci, malgré le fait que la résolution de noms se fait sans problème.

administrator@budgie:~$ host esxi-01.mylab.local
esxi-01.mylab.local has address 192.168.1.51

Si vous vous décidez tout de même à lancer l’installation de vCenter sans prendre compte les alertes ci-dessus, vous allez recevoir un message d’erreur de type:

error: Could not get certificate fingerprint from host, esxi01.mylab.local: Error: getaddrinfo ENOTFOUND esxi01.mylab.local esxi01.mylab.local:443

Pour comprendre ce problème, jettons un coup d’oeil au fichier /etc/nsswitch.conf. Si je m’intéresser à ce fichier, ce n’est pas par hasard puisque les services comme dig, host, nslookup, etc. y font référence pour résoudre les noms de domaines via la commande getaddrinfo.

Si je reprends l’explication de Wikipedia concernant le fichier NSS (Name Service Switch), ce fichier « autorise le remplacement des traditionnels fichiers Unix de configuration (par exemple /etc/passwd, /etc/group, /etc/hosts) par une ou plusieurs bases de données centralisées ».

hosts: files mdns4_minimal [NOTFOUND=return] resolve [!UNAVAIL=return] dns myhostname

La partie qui nous intéresse dans ce fichier est la partie au niveau de la ligne hosts. La recherche d’information via les commandes comme ping, nslookup, etc., se fait en lisant la ligne de gauche à droite.

  1. files traduit les noms d’hôtes statics via le fichier /etc/hosts
  2. mdns4_minimal traduit les noms de domaines en passant par le multicast DNS (mDNS)
  3. [NOTFOUND=return] signifie que, si la requête juste avant cette commande (ici, une requête mDNS) renvoie une réponde de type notfound, alors le système n’essaie pas d’autre méthode pour résoudre le nom de domaine
  4. dns, comme vous pouvez vous en doutez, traduit les noms de domaine à la façon traditionnelle

Le problème que j’ai rencontré plus haut s’explique par le fait que la recherche du nom de domaine est enclenchée par mDNS, puisque c’est la première requête DNS rencontrée au niveau de la ligne host. Puis la recherche s’arrête net et sans passer par notre serveur DNS puique, si l’on regarde le fqdn qui est esxi-01.mylab.local, mDNS recherche dans sa base de donnée s’il n’y a pas un nom d’hôte ayant pour nom esxi-01.mylab. Comme il n’y a rien de tel, la recherche s’arrête et ne va pas plus loin que [NOTFOUND=return].

Pour régler ce problème, placer dns avant mdns.

hosts: files dns [NOTFOUND=return] resolve [!UNAVAIL=return] mdns4_minimal myhostname

C’est une méthode parmis tant d’autre, et c’est ce que je recommande vivement de suivre.

Pour plus d’information concernant le multicast DNS, je vous renvoie à ces articles:

https://wiki.archlinux.org/index.php/avahi
https://doc.ubuntu-fr.org/zeroconf
https://fr.wikipedia.org/wiki/Avahi_(logiciel)

Information sur le matériel – HP Proliant Gen8

Pour résumé, voici l’essentiel de ce qu’il faut savoir de mon nouveau micro-serveur HP Proliant Gen8.

  • CPU : Intel Xeon E3 1265L Dual-core
  • 16 Go DDR3 ECC
  • 3 Disques durs SCSI

Cependant, je vais en profiter de cette page pour vous faire découvrir quelques commandes utiles pour avoir les informations sur votre système.

Commençons par les commandes pour avoir les informations sur la mémoire RAM.

~# cat /proc/meminfo
MemTotal: 16257496 kB
MemFree: 9012728 kB
MemAvailable: 10773580 kB

~# free -m
total used free shared buff/cache available
Mem: 15876 4947 8800 99 2128 10520
Swap: 10239 0 10239
~# free -h
total used free shared buff/cache available
Mem: 15G 4.9G 8.5G 99M 2.1G 10G
Swap: 9G 0B 9G

Pour avoir les informations sur les mémoires physiques, je n’ai pas trouvé mieux qu’avec la commande « dmidecode -t 17 ». D’autres exemples avec cette seront abordées un peu plus loin.

Puis vient ensuite la série des « ls », comme lscpu pour avoir des informations sur le processeur, lspci pour avoir la liste des bus PCI et des composants qui y sont attachés, etc. D’autres commandes comme lshw, pour avoir une information détaillée sur tout le système, ou encore lsscsi ne font pas parties des commandes de bases. Il faut les installer pour pouvoir les utiliser.

Pour avoir la liste des commandes « ls* », il faut commencer par trouver le dossier dans lequel ces commandes sont placées.

~# which lscpu
/usr/bin/lscpu
~# whereis lscpu
lscpu: /usr/bin/lscpu /usr/share/man/man1/lscpu.1.gz

Ensuite, il suffit de lister le contenu de ce dossier.

~# ls /usr/bin/ | grep ^ls
lsattr
lscpu
lshw
lsinitramfs
lsipc
lslocks
lslogins
lsns
lsof
lspci
lspgpot
lsscsi
lsusb

Voici plus ou moins, ce que vous devriez avoir avec ces commandes. J’ai supprimé les informations inutiles pour ne pas trop charger cette page.

# lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
CPU(s): 8
On-line CPU(s) list: 0-7
Thread(s) per core: 2
Core(s) per socket: 4
Socket(s): 1
NUMA node(s): 1
Model name: Intel(R) Xeon(R) CPU E3-1265L V2 @ 2.50GHz
CPU MHz: 2500.000
Virtualization: VT-x
NUMA node0 CPU(s): 0-7

~# lsscsi
[0:0:0:0] disk ATA Samsung SSD 850 2B6Q /dev/sda
[1:0:0:0] disk ATA Samsung SSD 850 2B6Q /dev/sdb
[2:0:0:0] disk ATA SanDisk SDSSDP12 0 /dev/sdc
[6:0:0:0] disk HP iLO LUN 00 Media 0 2.10 /dev/sdd

~# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 238.5G 0 disk /mnt/850Pro
sdb 8:16 0 238.5G 0 disk /mnt/850Pro2
sdc 8:32 0 117.4G 0 disk
├─sdc1 8:33 0 1M 0 part
├─sdc2 8:34 0 256M 0 part
└─sdc3 8:35 0 117.1G 0 part
├─pve-swap 253:0 0 10G 0 lvm [SWAP]
├─pve-root 253:1 0 29.3G 0 lvm /
├─pve-data_tmeta 253:2 0 64M 0 lvm
│ └─pve-data 253:4 0 63.3G 0 lvm
└─pve-data_tdata 253:3 0 63.3G 0 lvm
└─pve-data 253:4 0 63.3G 0 lvm
sdd 8:48 0 256M 1 disk
└─sdd1 8:49 0 251M 1 part

~# lspci
00:00.0 Host bridge: Intel Corporation Xeon E3-1200 v2/Ivy Bridge DRAM Controller (rev 09)
00:01.0 PCI bridge: Intel Corporation Xeon E3-1200 v2/3rd Gen Core processor PCI Express Root Port (rev 09)
00:06.0 PCI bridge: Intel Corporation Xeon E3-1200 v2/3rd Gen Core processor PCI Express Root Port (rev 09)
00:1a.0 USB controller: Intel Corporation 6 Series/C200 Series Chipset Family USB Enhanced Host Controller #2 (rev 05)
00:1c.0 PCI bridge: Intel Corporation 6 Series/C200 Series Chipset Family PCI Express Root Port 1 (rev b5)
00:1c.4 PCI bridge: Intel Corporation 6 Series/C200 Series Chipset Family PCI Express Root Port 5 (rev b5)
00:1c.6 PCI bridge: Intel Corporation 6 Series/C200 Series Chipset Family PCI Express Root Port 7 (rev b5)
00:1c.7 PCI bridge: Intel Corporation 6 Series/C200 Series Chipset Family PCI Express Root Port 8 (rev b5)
00:1d.0 USB controller: Intel Corporation 6 Series/C200 Series Chipset Family USB Enhanced Host Controller #1 (rev 05)
00:1e.0 PCI bridge: Intel Corporation 82801 PCI Bridge (rev a5)
00:1f.0 ISA bridge: Intel Corporation C204 Chipset Family LPC Controller (rev 05)
00:1f.2 RAID bus controller: Intel Corporation 6 Series/C200 Series Chipset Family SATA RAID Controller (rev 05)
01:00.0 System peripheral: Hewlett-Packard Company Integrated Lights-Out Standard Slave Instrumentation & System Support (rev 05)
01:00.1 VGA compatible controller: Matrox Electronics Systems Ltd. MGA G200EH
01:00.2 System peripheral: Hewlett-Packard Company Integrated Lights-Out Standard Management Processor Support and Messaging (rev 05)
01:00.4 USB controller: Hewlett-Packard Company Integrated Lights-Out Standard Virtual USB Controller (rev 02)
02:00.0 Memory controller: Hewlett Packard Enterprise Device 005f
03:00.0 Ethernet controller: Broadcom Limited NetXtreme BCM5720 Gigabit Ethernet PCIe
03:00.1 Ethernet controller: Broadcom Limited NetXtreme BCM5720 Gigabit Ethernet PCIe
04:00.0 USB controller: Renesas Technology Corp. uPD720201 USB 3.0 Host Controller (rev 03)

Puis vient ensuite la super commande « lshw ».

~# lshw
description: Tower Computer
product: ProLiant MicroServer Gen8 (712317-421)
vendor: HP
*-cpu
description: CPU
product: Intel(R) Xeon(R) CPU E3-1265L V2 @ 2.50GHz

*-memory
description: System Memory
size: 16GiB
capabilities: ecc

*-scsi:0
logical name: scsi0
capabilities: emulated
*-disk
description: EXT4 volume
product: Samsung SSD 850
logical name: /dev/sda
logical name: /mnt/850Pro
size: 238GiB

Une version plus concise de lshw serait,

~# lshw -short
H/W path Device Class Description
============================================================
system ProLiant MicroServer Gen8 (712317-421)
/0 bus Motherboard
/0/0 memory 64KiB BIOS
/0/400 processor Intel(R) Xeon(R) CPU E3-1265L V2 @ 2.50GHz
/0/400/710 memory 128KiB L1 cache
/0/400/720 memory 1MiB L2 cache
/0/400/730 memory 8MiB L3 cache
/0/1000 memory 16GiB System Memory
/0/1000/0 memory 8GiB DIMM DDR3 Synchronous Unbuffered (Unregistered) 1333 MHz (0.8 ns)
/0/1000/1 memory 8GiB DIMM DDR3 Synchronous Unbuffered (Unregistered) 1333 MHz (0.8 ns)
/0/100 bridge Xeon E3-1200 v2/Ivy Bridge DRAM Controller
/0/100/1 bridge Xeon E3-1200 v2/3rd Gen Core processor PCI Express Root Port
/0/100/6 bridge Xeon E3-1200 v2/3rd Gen Core processor PCI Express Root Port
/0/100/6/0 memory Memory controller
/0/100/1a bus 6 Series/C200 Series Chipset Family USB Enhanced Host Controller #2
/0/100/1a/1 usb1 bus EHCI Host Controller
/0/100/1a/1/1 bus Integrated Rate Matching Hub
/0/100/1c bridge 6 Series/C200 Series Chipset Family PCI Express Root Port 1
/0/100/1c.4 bridge 6 Series/C200 Series Chipset Family PCI Express Root Port 5
/0/100/1c.4/0 eno1 network NetXtreme BCM5720 Gigabit Ethernet PCIe
/0/100/1c.4/0.1 eno2 network NetXtreme BCM5720 Gigabit Ethernet PCIe
/0/100/1c.6 bridge 6 Series/C200 Series Chipset Family PCI Express Root Port 7
/0/100/1c.6/0 bus uPD720201 USB 3.0 Host Controller
/0/100/1c.6/0/0 usb4 bus xHCI Host Controller
/0/100/1c.6/0/1 usb5 bus xHCI Host Controller
/0/100/1c.7 bridge 6 Series/C200 Series Chipset Family PCI Express Root Port 8
/0/100/1c.7/0 generic Integrated Lights-Out Standard Slave Instrumentation & System Support
/0/100/1c.7/0.1 display MGA G200EH
/0/100/1c.7/0.2 generic Integrated Lights-Out Standard Management Processor Support and Messaging
/0/100/1c.7/0.4 bus Integrated Lights-Out Standard Virtual USB Controller
/0/100/1c.7/0.4/1 usb3 bus UHCI Host Controller
/0/100/1d bus 6 Series/C200 Series Chipset Family USB Enhanced Host Controller #1
/0/100/1d/1 usb2 bus EHCI Host Controller
/0/100/1d/1/1 bus Integrated Rate Matching Hub
/0/100/1d/1/1/3 bus Hub
/0/100/1d/1/1/3/1 scsi6 storage Ultra Fast Media Reader
/0/100/1d/1/1/3/1/0.0.0 /dev/sdd disk 268MB LUN 00 Media 0
/0/100/1d/1/1/3/1/0.0.0/1 /dev/sdd1 volume 255MiB Windows FAT volume
/0/100/1e bridge 82801 PCI Bridge
/0/100/1f bridge C204 Chipset Family LPC Controller
/0/100/1f.2 storage 6 Series/C200 Series Chipset Family SATA RAID Controller
/0/1 scsi0 storage
/0/1/0.0.0 /dev/sda volume 238GiB Samsung SSD 850
/0/2 scsi1 storage
/0/2/0.0.0 /dev/sdb volume 238GiB Samsung SSD 850
/0/3 scsi2 storage
/0/3/0.0.0 /dev/sdc disk 126GB SanDisk SDSSDP12
/0/3/0.0.0/1 /dev/sdc1 volume 1023KiB BIOS Boot partition
/0/3/0.0.0/2 /dev/sdc2 volume 255MiB Windows FAT volume
/0/3/0.0.0/3 /dev/sdc3 volume 117GiB LVM Physical Volume
/1 power Power Supply 1
/2 vmbr0 network Ethernet interface
/3 tap104i0 network Ethernet interface
/4 tap102i0 network Ethernet interface

Une autre commande que je trouve très intéressante serait « dmidecode ».

~# dmidecode -t
dmidecode: option requires an argument -- 't'
Type number or keyword expected
Valid type keywords are:
bios
system
baseboard
chassis
processor
memory
cache
connector
slot

Dmidecode nécessite qu’on lui fournisse le type (« -t ») d’information à récupérer en option. Cette option peut être un nom, ou un numéro. La commande « dmidecode -t 1 » donne le même résultat que « dmidecode -t system ». Voyez dans le manuel pour plus d’information.

~# man dmidecode
DMI TYPES
The SMBIOS specification defines the following DMI types:

Type Information
────────────────────────────────────────────
0 BIOS
1 System
...

Migration de VMs VirtualBox vers Proxmox

Comment migrer des machines virtuelles de VirtualBox vers Proxmox?

Je vais essayer de vous aider à le faire, à travers ce chapitre. Ce n’est pas difficile à faire, une fois qu’on a compris le principe.

I. Préparation des VMs sous virtualbox

« Clonezilla est un logiciel libre de restauration de données, de clonage de disque, et de création d’image de disque. » (wikipedia)

Voici un petit récapitulatif des matériaux et logiciels utilisés pour cette migration.

– Serveur Physique (HP Proliant Gen 8, OS: Proxmox)
– Machine hôte (Macbook Pro 2010, OS: Debian, serveur SSH activé, Virtualbox)
– VMs (OS: Debian) à migrer
– Live CD (clonezilla-live-2.5.0-25-amd64.iso)

1. Connection SSH

Noter l’adresse IP de la machine hôte, puisqu’on va s’en servir pour une connection SSH à partir de la machine virtuelle, ainsi qu’à partir de Proxmox.

20170522-074707

De ce fait, vérifier que le serveur SSH est installé sur votre ordinateur. Si ce n’est pas le cas, faites le.

# apt-get install openssh-server

Puis vérifier que SSH est activé.

# service ssh status
# service ssh start

Ensuite, configurer ssh pour autoriser l’accès à partir de n’importe quel machine de votre réseau.

$ sudo vim /etc/ssh/sshd_config
PasswordAuthentication yes
PermitRootLogin yes

$ sudo service ssh restart

Notez bien que cette étape n’est pas la bonne pratique à utiliser avec SSH. Pour plus d’information sur comment sécuriser votre accès SSH, je vous renvoir à ce chapitre.

2. Préparation des machines virtuelles

Démarrer la machine virtuelle à migrer, puis vérifier que vous pouvez accéder à la machine hôte en SSH.

Si telnet n’est pas installé sur cette VM, les deux méthodes suivantes permettent de vous confirmer si le port 22 (SSH) est ouvert ou non.

$ cat < /dev/tcp/192.168.1.10/22
SSH-2.0-OpenSSH_6.7p1 Debian-5+deb8u3
^C

$ nc -zv 192.168.1.10 22
[192.168.1.10] 22 (ssh) open

Arrêter ensuite la machine virtuelle pour la suite.

3. Clonezilla

Créer un dossier du même nom que l’outil utilisé, Clonezilla par exemple, dans lequel vous allez placer les images créées par cet outil. Ceci vous permettra d’y accéder plus tard en SSH, en tant qu’utilisateur et non en tant que root.

$ mkdir /home//Clonezilla

Télécharger ensuite le live CD de clonezilla que vous pouvez trouver ici, puis démarrer la machine virtuelle à migrer avec.

J’ai omis certaines captures d’écran, dont les options sont restées par défaut, afin de ne garder que l’essentiel.

Une fois arrivé au niveau de la page « Mount Clonezilla Image directory » choisissez SSH pour accéder à la machine hôte, pour y placer l’image créée par Clonezilla.

Choisissez le mode DHCP afin de ne pas vous prendre la tête à configurer la carte réseau de cette VM.

Taper ensuite l’adrese IP de la machine hôte.

Et enfin, entrez le chemin pour accéder au dossier /home//Clonezilla créé précédement.

Taper « yes » pour continuer, puis entrer le mot de passe de l’utilisateur.

La connection SSH étant établi, Clonezilla peut maintenant se lancer dans la création d’une copie de l’image du VM. Le mode Beginner (débutant) est amplement suffisant. Par contre pour clôner le VM, il faut choisir le mode Expert, que nous allons voir plus loin dans ce chapitre. Donc patience!

Pour le nom de l’image, je vous conseille de choisir quelque chose qui peut vous indiquer la nature du VM, et plus particulièrement si vous avez plusieurs VMs à migrer, afin de savoir laquelle fait quoi.

Une fois l’image créée, il n’y a aucune raison d’allumer la machine virtuelle dans Virtualbox.

Au niveau de l’écran suivant, taper sur la touche « Entrée »pour continuer, puis entrer « y ».

Et voilà, la création de l’image du VM est lancée. La procédure peut prendre du temps en fonction de la taille du disque à copier.

Entre temps, vous pouvez vous occuper de la création de la machine virtuelle sous Proxmox.

II. Préparation de la machine sous Proxmox

Dans le disque local de Proxmox, télécharger une copie de du live CD de clonezilla, qu’on va utiliser pour démarrer la nouvelle machine virtuelle.

Concernant cette nouvelle VM, il faut qu’elle ait la même taille auquel il faut ajouter quelques Go d’espace supplémentaire.

Vérifions dans ce cas, les informations de notre VM dans le Virtualbox.

Comme vous pouvez le voir, ma VM fait 20Go. Il va falloir que je créee une machine avec Promox, de 21Go au moins.

1. Préparation de la nouvelle VM

Créer une machine virtuelle en cliquant en haut à droite sur « Create VM ».

Dans l’écran de création du VM, vous avez plusieurs onglets, dont le premier vous demande de renseigner les informations concernant cette nouvelle machine(Nom de la machine, etc.).

Dans l’onglet « General », il n’y a que le nom du VM à remplir. Cette case peut être laissée vide, mais Proxmox va choisir un nom générique pour votre machine.

Dans l’onglet OS, choisissez le système d’exploitation ou la version du noyau pour les machines sous linux.

Dans l’onglet CD/DVD, sélectionner l’image ISO du live CD de Clonezilla.

Dans l’onglet « Hard Disk »,
– Choisissez l’option VirtIO
– Valider la taille du disque de la VM (20Go + 1Go)
– Cocher la case « Discard » si vous utilisez des disques physiques SSD. Si ce n’est pas le cas, donc nul besoin de cette option

Dans l’onglet CPU, l’option par défaut me convient.

Dans l’onglet Memory, j’ai choisi une taille de mémoire moins importante que celle de ma machine virtuelle dans virtualbox.

Dans l’onglet Network, j’ai gardé les informations par défaut.

Pour information, VirtIO est l’équivalent du GuestOS avec la technologie de vmware.

Et voilà, la VM est prête. Si plus tard, vous n’êtes pas satisfait de votre configuration, vous pouvez toujours modifier les informations des VMs (taille de la mémoire, nombres de processeurs, etc.) comme avec Virtualbox.

2. Migration du/des VMs

Lancer la VM dans proxmox.

Pareil que dans la première étape de création de l’image, connectez vous en SSH à la machine hôte, pour récuperer l’image de la VM créée par Clonezilla.

Puis passer en mode expext pour installer cette image vers la nouvelle destination.

Choisissez ensuite l’option « restoredisk » qui, comme son nom l’indique, permet de restaure un disque. Ce n’est pas tout à fait notre cas, mais ceci pour vous dire que c’est la même procédure à suivre pour restaurer un disque à partir d’une sauvegarde, ou pour la migration de VMs.

Ensuite, il vous sera posée la question de quelles VMs vont être restaurer. D’où l’intérêt d’avoir choisi un nom d’image bien spécifique afin de pouvoir choisir le bon parmi la liste des images dans le même dossier.

Vous ne devriez pas avoir à choisir l’emplacement de la cible.

Dans cette partir, laisser les options choisis par défaut.

De même pour la suivante.

Finalement, choisissez de redémarrer la VM une fois la migration terminée, et de vérifier que tout est bon.

Et voilà, la migration commence.

Taper « y » pour continuer.


Une fois le processus de migration terminée, la VM va redémarrer.

Si tout s’est bien déroulé, la VM devrait démarrer sans problème.

Je n’ai eu aucun problème pour migrer les VMs tournant sous Debian, comme vous pouvez le voir ci-dessus. Par contre, j’ai eu droit à un écran noir avec la machine tourant sous Manjaro. Je n’ai pas chercher à comprendre d’où vient le problème, mais je préfère prévenir au cas où.

Sources

SSH – Debian wiki
How to user SSH to connect to a Remote Server in Ubuntu
Sécuriser votre rpi
Test if a port on a remote system is reachable (without telnet)
Proxmox « no backup », « discard », « iothread »
Proxmox options for Hard disk and CPU tab
how to use clonezilla to backup hard drive and create recovery iso image
restore an image of a hard drive using clonezilla