Un de mes clients m’a demandé récemment de lui installer une solution de monitoring et de filtrage web basée sur un pare-feu Linux tournant sous CentOS avec un proxy Squid transparent. J’ai déjà effectué des installations de ce genre au cours des dernières années. Côté hardware, je choisis le plus souvent du matériel serveur standard comme les HP Proliant ou Dell PowerEdge. Or, cette fois-ci, je me suis retrouvé confronté à une simple contrainte d’encombrement, étant donné qu’il fallait essayer de caser le tout dans un rack déjà passablement rempli de matériel.
Choix du matériel
Après avoir cherché un peu sur le web, je suis tombé sur les cartes mère de la marque PC Engines, commercialisées en France par Calexium. J’ai appelé cette entreprise, et je suis tombé sur Sébastien, un commercial/technicien extrêmement compétent, qui a pris le temps de tout m’expliquer de A à Z. Je tiens ici à le remercier pour sa gentillesse.
J’ai donc commandé une carte APU 2 munie d’un processeur AMD GX quatre coeurs, de 4 Go de RAM, de trois ports Ethernet Gigabit, de deux ports USB, d’un port SATA et d’un port série. Pour avoir quelque chose de fonctionnel, j’ai également commandé un disque dur 2,5″, un boîtier, une alimentation, un câble série et un adaptateur USB/série.

Je note au passage qu’initialement, j’avais voulu installer deux disques SATA 2,5″ pour les configurer en software RAID 1, et je me suis rendu compte un peu trop tard que la carte mère que j’ai commandée ne disposait que d’un seul port SATA. Si l’on souhaite disposer de deux ports SATA, il faut commander la carte APU 1 et spécifier le nombre de ports dans le menu déroulant au moment de la commande. Ce sera donc pour la prochaine fois.
Montage
Le matériel a été livré sans la moindre notice, ce qui m’a un peu surpris. Du coup j’ai cherché des infos sur le web, et je me suis inspiré de cette vidéo pour le montage.
De mémoire, voici ce que j’ai fait, dans l’ordre.
- Coller la pâte thermique sur le processeur.
- Coller la plaque de refroidissement sur le boîtier.
- Enlever les caches des ports Ethernet de la façade.
- Poser la carte mère délicatement à l’emplacement prévu.
- Visser la carte mère dans le boîtier (4 vis).
- Visser les deux barres de fixation sur le disque SATA 2,5″ (4 vis).
- Visser le disque dur dans le boîtier (4 vis).
- Relier le disque dur au port SATA et à l’alimentation.
Voilà à quoi ça ressemble une fois que c’est monté.

Configurer le port série
Pour l’instant, le port série est le seul moyen de communiquer avec la machine. Dans un premier temps, je branche mon convertisseur USB/série à ma station de travail, et je la relie au port série du routeur. Mon convertisseur apparaît en tant que /dev/ttyUSB0
.
[root@alphamule:~] # dmesg | grep tty
... console [tty0] enabled
... 00:03: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
... 0000:00:16.3: ttyS1 at I/O 0x2180 (irq = 17) is a 16550A
... usb 2-1.7: ch341-uart converter now attached to ttyUSB0
Pour communiquer avec le port série, j’utiliserai Minicom, un programme de contrôle de modem et d’émulation de terminal pour systèmes Unixoïdes.
[root@alphamule:~] # yum install minicom
Je bascule ma console vers l’anglais pour rendre l’affichage de Minicom plus lisible.
[root@alphamule:~] # LANG=en_US.utf8 && export LANG
Je lance la configuration de Minicom et je me rends dans le menu Serial port setup
.
[root@alphamule:~] # minicom -s
+-----[configuration]------+
| Filenames and paths |
| File transfer protocols |
| Serial port setup |
| Modem and dialing |
| Screen and keyboard |
| Save setup as dfl |
| Save setup as.. |
| Exit |
| Exit from Minicom |
+--------------------------+
Dans la configuration par défaut, Minicom est censé communiquer avec le périphérique /dev/modem
.
+-------------------------------------------------------------+
| A - Serial Device : /dev/modem |
| |
| C - Callin Program : |
| D - Callout Program : |
| E - Bps/Par/Bits : 115200 8N1 |
| F - Hardware Flow Control : Yes |
| G - Software Flow Control : No |
| |
| Change which setting? |
+-------------------------------------------------------------+
Pour changer de périphérique, choisir l’option A - Serial Device
et remplacer /dev/modem
par /dev/ttyUSB0
.
+-------------------------------------------------------------+
| A - Serial Device : /dev/ttyUSB0 |
| |
| C - Callin Program : |
| D - Callout Program : |
| E - Bps/Par/Bits : 115200 8N1 |
| F - Hardware Flow Control : Yes |
| G - Software Flow Control : No |
| |
| Change which setting? |
+-------------------------------------------------------------+
Confirmer par Entrée, puis enregistrer la configuration en optant pour Save setup as dfl
. Quitter le menu de configuration avec Exit
(et non pas Exit from Minicom
). On se retrouve alors dans la console de Minicom.
Welcome to minicom 2.6.2
OPTIONS: I18n
Compiled on Jun 10 2014, 03:20:53.
Port /dev/ttyUSB0, 10:21:53
Press CTRL-A Z for help on special keys
Pour naviguer dans Minicom, il suffit d’appuyer sur [Ctrl]+[A], puis [Z] pour afficher le menu principal. La touche [X] permet alors de quitter Minicom, la commande minicom
invoquée sans arguments permet de relancer l’application.
Lancer l’installation de CentOS
Je ne détaille pas ici la confection d’une clé USB d’installation de CentOS, qui est une tâche triviale. Voici ce qu’il faut faire tout en gardant l’affichage de Minicom dans le terminal du PC.
- S’assurer que le port série est bien relié au convertisseur USB/série du PC.
- Brancher un câble Ethernet relié au switch local à la prise juste à côté du port série.
- Insérer la clé USB d’installation de CentOS.
- Brancher l’alimentation à côté des prises USB du routeur.
Si tout se passe bien, on apercevra le message suivant dans la console de Minicom.
PCEngines apu2
coreboot build 20170228
4080 MB ECC DRAM
SeaBIOS (version rel-1.10.0.1)
Press F10 key now for boot menu
Et quelques secondes plus tard, c’est le menu de l’installateur de CentOS qui s’affiche en mode texte.
+--------------------------------------------------------------+
| CentOS Linux 7 |
|--------------------------------------------------------------|
| |
| |
| Install CentOS Linux 7 |
| Test this media & install CentOS Linux 7 |
| |
| Troubleshooting > |
| |
| |
| |
| Press Tab for full configuration options on menu items. |
| |
| |
+---------------Automatic boot in 56 seconds...----------------+
- Appuyer sur [Tab] pour accéder aux paramètres de démarrage.
- Supprimer les deux dernières options
rd.live.check quiet
en appuyant sur la touche [Backspace].
- Ajouter les options
inst.vnc inst.vncpassword=centos edd=off
.
Si tout se passe bien, Minicom nous affiche le démarrage de l’installateur comme ceci.
Loading vmlinuz........
Loading initrd.img....................................ready.
Les deux options inst.vnc inst.vncpassword=centos
ont lancé un serveur VNC dans le routeur, qui nous permettra de nous connecter à l’installateur graphique depuis la station de travail. Le problème, c’est que l’affichage de l’installateur a disparu depuis le message initial, et nous ne savons plus où le joindre.
Dans ce cas, il suffit de faire une simple recherche avec nmap
dans le réseau local.
[root@alphamule:~] # nmap -sP 192.168.2.* | grep scan
Nmap scan report for nestor.microlinux.lan (192.168.2.1)
Nmap scan report for raymonde.microlinux.lan (192.168.2.4)
Nmap scan report for amandine.microlinux.lan (192.168.2.5)
Nmap scan report for 192.168.2.178
Nmap scan report for hp-officejet.microlinux.lan (192.168.2.252)
Nmap scan report for wifi.microlinux.lan (192.168.2.254)
Nmap scan report for alphamule.microlinux.lan (192.168.2.2)
Nmap done: 256 IP addresses (7 hosts up) scanned in 2.03 seconds
Je procède par élimination, et je me dis que l’adresse 192.168.2.178
, c’est la seule que je ne connais pas dans le réseau. Il y a donc de fortes chances à ce que ce soit mon routeur. Voyons ça de plus près.
[root@alphamule:~] # nmap -sP 192.168.2.178
Starting Nmap 6.40 ( http://nmap.org ) at 2018-03-28 11:10 CEST
Nmap scan report for 192.168.2.178
Host is up (0.00021s latency).
MAC Address: 00:0D:B9:47:7D:48 (PC Engines GmbH)
Nmap done: 1 IP address (1 host up) scanned in 0.06 seconds
Effectivement, il s’agit bien de mon routeur. Voyons si le serveur VNC est accessible.
[root@alphamule:~] # nmap 192.168.2.178
Starting Nmap 6.40 ( http://nmap.org ) at 2018-03-28 11:13 CEST
Nmap scan report for 192.168.2.178
Host is up (0.00015s latency).
Not shown: 998 closed ports
PORT STATE SERVICE
5901/tcp open vnc-1
6001/tcp open X11:1
MAC Address: 00:0D:B9:47:7D:48 (PC Engines GmbH)
Nmap done: 1 IP address (1 host up) scanned in 0.19 seconds
À partir de là, je lance un client VNC sur ma station de travail pour me connecter à l’installateur. Vu que je tourne sous KDE, j’utilise KRDC. Si vous êtes sous GNOME ou Xfce, vous utiliserez sans doute Remmina ou Vinagre ou n’importe quel autre client VNC, peu importe.
Je me connecte au serveur VNC à l’adresse 192.168.2.178:1
.

Étant donné que la machine se situe dans le réseau local, je peux opter pour une connexion de qualité élevée. Ce n’est pas la peine de mémoriser le mot de passe, étant donné que nous y accédons une seule fois.

Ici, il faut saisir le mot de passe que nous avons défini un peu plus haut, c’est-à-dire centos
. Notez au passage que je me suis tapé la tête sur le clavier pendant un bon moment avant de me rendre compte que le mot de passe pour le serveur VNC de l’installateur doit impérativement comprendre entre 6 et 8 caractères. J’ai fini par tomber sur cette limitation dans la documentation Red Hat.

Si tout s’est bien passé, nous nous retrouvons dans l’installateur graphique de CentOS.

À partir de là, nous pouvons installer notre routeur comme n’importe quel autre matériel, en utilisant les fonctionnalités de l’installateur graphique. Pour les détails de cette opération, vous pourrez consulter cet article.
Configuration post-installation
À l’issue du redémarrage initial, il ne faut pas oublier d’enlever la clé USB pour démarrer sur le système installé.
Dans la configuration par défaut, notre nouveau système n’offre pas d’accès via le port série. Il faut donc invoquer à nouveau nmap
comme nous l’avons fait plus haut.
[root@alphamule:~] # nmap -sP 192.168.2.* | grep scan
Nmap scan report for nestor.microlinux.lan (192.168.2.1)
Nmap scan report for raymonde.microlinux.lan (192.168.2.4)
Nmap scan report for amandine.microlinux.lan (192.168.2.5)
Nmap scan report for 192.168.2.178
Nmap scan report for hp-officejet.microlinux.lan (192.168.2.252)
Nmap scan report for wifi.microlinux.lan (192.168.2.254)
Nmap scan report for alphamule.microlinux.lan (192.168.2.2)
Nmap done: 256 IP addresses (7 hosts up) scanned in 2.03 seconds
L’adresse IP attribuée est toujours la même, et je peux me connecter en SSH.
[root@alphamule:~] # ssh root@192.168.2.178
Pour accéder à la console via le port série, il faut modifier le chargeur de démarrage GRUB en éditant /etc/default/grub
. Voici une série d’options qui vont bien.
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=false
GRUB_TERMINAL_OUTPUT="serial console"
GRUB_SERIAL_COMMAND="serial \
--unit=0 \
--speed=115200 \
--word=8 \
--parity=no \
--stop=1"
GRUB_CMDLINE_LINUX="nomodeset \
quiet \
edd=off \
console=ttyS0,115200n8"
GRUB_DISABLE_RECOVERY="true"
Prendre en compte les modifications.
# grub2-mkconfig -o /boot/grub2/grub.cfg
À partir du prochain redémarrage, on pourra se connecter au routeur uniquement via le port série avec Minicom. Voilà à quoi cela ressemble dans la console de ma station de travail.
