Aujourd'hui petit tutoriel pour ceux qui comme moi cherchent à émuler des ports série (également appelés ports RS-232) sous Linux. Nous verrons, au travers de ce tutoriel, comment compiler et charger le module tty0tty, qui va se charger de créer quatre paires de ports RS-232 (allant de tnt0 à tnt7), communiquant deux à deux. Ainsi, tnt0 et tnt1 agiront comme s'ils étaient reliés à un même câble physique : tout caractère transmis à l'un sera reçu par l'autre, et inversement. Même principe pour tnt2 et tnt3, tnt4 et tnt5, et enfin tnt6 et tnt7. Let's go!

Installation du module tty0tty

Note : les commandes suivantes devront être exécutées en tant que root. Un petit sudo -i fera l'affaire.

Nous allons commencer par cloner le dépôt contenant les sources dans un répertoire, ici /opt :

cd /opt
git clone https://github.com/freemed/tty0tty

Une fois le dépôt cloné, nous allons pouvoir passer à la compilation :

cd tty0tty/module
make

Si la compilation s'est déroulée sans erreurs, nous allons pouvoir passer à la prochaine étape : l'installation dans le noyau. À noter que cette étape sera à réaliser après chaque mise à jour du noyau.

cp /opt/tty0tty/module/tty0tty.ko /lib/modules/$(uname -r)/kernel/drivers/misc/

Il ne nous reste plus qu'à charger le module dans le noyau. Pour cela, nous allons re-générer les « maps » de dépendances (man depmod pour plus d'informations) puis charger le module dans le noyau :

depmod
modprobe tty0tty

Enfin, nous pouvons, si vous le souhaitez, automatiser le chargement du module à chaque démarrage du noyau. Pour cela, il suffit d'éditer (toujours avec les droits root) le fichier /etc/modules

nano /etc/modules

Puis d'y rajouter la ligne suivante, tout à la fin :

tty0tty

Vérifions que tout fonctionne correctement

Pour tester le bon fonctionnement de nos ports série, rien de plus simple. Ouvrez deux terminaux. Dans le premier, nous écouterons sur /dev/tnt0 :

sudo cat /dev/tnt0

Dans le second, nous enverrons un message à /dev/tnt1. Les deux ports agissant comme s'ils étaient physiquement reliés, /dev/tnt0 devrait ainsi pouvoir le recevoir.

sudo echo "Bonjour le monde !" > /dev/tnt1

Si tout s'est bien passé, vous devriez avoir quelque chose comme ceci :
tty0tty_demo

Et voilà. Enjoy !

Aujourd'hui, je vous propose un petit tutoriel qui va vous permettre de mieux gérer le réseau de vos machines virtuelles sous Proxmox, avec entre autre la création d'un nouveau réseau dédié aux machines virtuelles et la mise en place d'un serveur DHCP pour distribuer des adresses IP aux machines et containers.

L'idée est simple : votre serveur hôte dispose d'une seule carte réseau, branchée à votre réseau local (ici 192.168.0.0/24). Une machine virtuelle de routage, sous pfSense, est « bridgée » à cette interface (c'est-à-dire qu'elle agit comme si elle était connectée physiquement à votre réseau local, avec sa propre adresse IP). Cette machine est reliée à une seconde interface, cette fois-ci purement virtuelle (c'est-à-dire que des machines virtuelles peuvent s'y connecter, mais elle n'est associée à aucune carte réseau physique), à laquelle elle fournira des adresses IP.

Bridges, interfaces physiques, késako?

Avant de nous lancer dans le vif du sujet, je vous propose une petite explication sur ce que sont les bridges (que l'on pourrait également qualifier « d'interface virtuelle ») et interfaces physiques.

Commençons par les interfaces physiques. Comme leur nom l'indique, ce sont des cartes réseaux physiques (principalement des cartes Ethernet, donc). Branchées à votre box, elles vous fourniront Internet. Branchées à un ordinateur (et correctement configurées, ce que nous effleurerons dans cet article), elles vous permettront de vous connecter au réseau local dédié aux machines virtuelles. Elles sont notées, sous Proxmox, ethX (X étant un nombre unique, débutant à zéro et incrémenté automatiquement).

Passons ensuite aux bridges (appelées « ponts » dans la traduction française de Proxmox). Notés sous la forme vmbrX (X étant un nombre choisi par l'administrateur système, toujours sans doublon possible), ce sont des cartes réseau totalement virtuelles. C'est-à-dire qu'elles n'existent qu'au travers de quelques lignes d'un fichier de configuration : elles ne correspondent à aucune carte réseau physique. On peut y « brancher » (toujours au travers des fichiers de configuration) deux choses : des machines virtuelles et des interfaces physiques. Du point de vue des machines virtuelles, ce sont les seules cartes réseaux associables.

Ainsi, il n'est pas possible de relier la machine virtuelle « Truc01 » à la carte réseau « eth0 » (que nous considérerons comme reliée à une box) pour lui amener Internet. Pour arriver à cela, il va falloir passer par l'intermédiaire d'un bridge « vmbr0 », auquel sera associé notre carte eth0, que nous brancherons à notre machine Truc01. Ainsi, lorsqu'elle démarrera, notre machine virtuelle se comportera comme si elle était branchée physiquement à notre box et obtiendra, au même titre que notre serveur, sa propre adresse IP sur le réseau.

Mais ce comportement n'est pas forcément idéal, surtout si vous comptez utiliser beaucoup de machines virtuelles et/ou souhaitez expérimenter avec les services réseaux (tel que le DHCP, par exemple). Cela tombe bien : il est possible de faire autrement. C'est ce que nous allons voir ici.

Création de deux réseaux et d'une machine virtuelle de routage

Maintenant que nous en savons un peu plus sur la manière dont fonctionne le réseau sous Proxmox, je vous propose de passer à la configuration. Commencez par vous connecter sur l'interface d'administration de Proxmox (par défaut http://ip-de-l-hyperviseur:8006/). Sélectionnez ensuite dans la vue de gauche votre machine, puis cliquez sur l'onglet « Réseau ».

La première étape consiste ici à vérifier que notre interface physique eth0 n'est pas configurée avec une adresse IP statique (nous la configurerons ailleurs, plus tard). Pour cela, double cliquez dessus puis assurez-vous que l'ensemble des champs (à l'exception de « Nom » et de « Commentaire », qui n'ont aucune importance) sont vides :

Proxmox_vue_interface_eth0

Nous allons ensuite pouvoir passer à la création de deux bridges. Le premier, vmbr0, sera l'interface de liaison avec notre box (donc le côté « WAN », du point de vue de notre routeur). Le second, vmbr20 (j'ai choisi ce nom car la plage IP associée sera 10.0.20.0/24), sera une interface purement virtuelle sur laquelle les autre machines virtuelles pourront obtenir une adresse IP. Ce sera donc le côté « LAN » du point de vue du routeur.

Pour créer un bridge, rien de plus simple. Toujours dans l'onglet « Réseau » de l'hyperviseur, cliquez sur « Créer », puis sélectionnez « Linux Bridge ». Une boîte de formulaire s'ouvre alors. Remplissez-là comme il suit :

  • Nom : nom de l'interface virtuelle (vmbr0 par exemple)
  • Adresse IP : adresse que prendra le serveur Proxmox sur l'interface. Sur vmbr0, c'est l'adresse IP (statique) qu'aura le serveur sur le réseau de la box. Remplissez ensuite le masque de sous-réseau en conséquence.
  • Passerelle : adresse par laquelle il est possible de joindre d'autre réseaux (par exemple Internet). Ici l'adresse IP de la box.
  • Ports membres : cartes réseaux (ethX) associées au bridge

Ainsi, pour vmbr0 (connexion à la box) vous devriez obtenir quelque chose comme ceci :

Proxmox_vue_interface_vmbr0

Et pour vmbr20 (réseau local pour les machines virtuelles) :

Proxmox_vue_interface_vmbr20

Note : ici 10.0.20.1 sera l'adresse IP de l'hyperviseur sur le réseau et 10.0.20.254 sera l'adresse IP de la machine virtuelle pfSense

Proxmox n'appliquant les modifications du réseau qu'au redémarrage, relancez votre serveur. Si tout s'est bien passé, votre hyperviseur est toujours accessible et vous pouvez passer à l'étape suivante. Dans le cas contraire, je vous invite à vérifier votre configuration pour déceler d'éventuelles erreurs.

Configuration de pfSense pour le routage et la fourniture d'adresses IP

Maintenant que nos interfaces sont correctement configurées, nous allons pouvoir passer à la dernière étape de notre aventure : la configuration d'une machine virtuelle sous pfSense. Pour cela, commencez par récupérer une ISO d'installation sur le site officiel de pfSense. Une fois celle-ci téléchargée, créez une nouvelle machine virtuelle (pensez à sélectionner « Autre types d'OS » pour le choix du système d'exploitation : pfSense est une BSD, pas une Linux!) avec deux cartes réseaux en accès par pont, sur vmbr0 et vmbr20 (il faudra, pour cela, passer par l'onglet Matériel → Ajouter → Carte réseau). Niveau ressources allouées, à vous de voir : j'ai personnellement choisi d'allouer 1 CPU, 256 Mo de mémoire vive et 5 Go de disque dur, ce qui pour mon usage est amplement suffisant.

Démarrez maintenant la machine virtuelle, puis passez en console : nous allons procéder à l'installation de pfSense. Ne vous prenez pas trop le choux : la « quick install » fonctionne très bien. Pensez simplement à choisir le « standard kernel », indispensable pour la suite de ce tutoriel.

Une fois l'installation terminée et pfSense lancé, nous allons devoir reconfigurer manuellement pfSense. Nous situant du côté « WAN » (c'est-à-dire pour un pare-feu du côté ennemi), nous ne pouvons pas encore accéder aux différents outils d'administration du pare-feu (interface web et SSH).

Pour remédier à cela, nous allons commencer par désactiver temporairement le pare-feu. Dans l'interface console, choisissez l'option « 8) Shell » puis entrez la commande suivante :

pfctl -d

Il vous est maintenant possible d'accéder à l'interface web en vous rendant sur https://[ip-wan-du-firewall/. Connectez-vous ensuite avec l'identifiant admin et le mot de passe pfsense. Configurez votre pare-feu comme bon vous semble. N'oubliez pas, à la fin de l'assistant de configuration, de re-désactiver le pare-feu. Nous procéderons ensuite à l'autorisation du trafic WAN entrant dans le pare-feu et nous reconfigurerons ensemble le réseau LAN pour utiliser la plage d'adresses 10.0.20.0/24.

Commençons si vous le voulez bien par la reconfiguration du pare-feu. Dans le menu situé tout en haut, sélectionnez Firewall → Rules. Cliquez ensuite sur le bouton « ^ Add » pour ajouter une nouvelle règle. Configurez-là comme il suit :

  • Section « Edit Firewall Rule »
    • Action : Pass
    • Interface : WAN
    • Address family : IPv4
    • Protocol : any
  • Section « Source »
    • Source : network, 192.168.0.0/24 (où 192.168.0 est le début de l'adressage IP du réseau de votre box, qui peut également être 192.168.1(.0))
  • Section « Destination »
    • Source: WAN address
    • : from HTTPS (443) to HTTPS (443)
  • Section « Extra options »
    • Description : ce que vous voulez

Sur la page qui s'ouvre ensuite, cliquez sur la roue crantée en face de la règle « Block private networks ». Dans la page qui s'ouvre ensuite, descendez jusqu'en bas pour décocher l'option « Block private networks and loopback addresses ». Cliquez enfin sur le bouton « Apply changes » pour valider les changements. Ré-activez ensuite le pare-feu en exécutant la commande suivante :

pfctl -e

Le pare-feu est maintenant correctement configuré pour être administré depuis votre réseau local (perçu, je vous le rappelle, comme le WAN). Il ne nous reste plus qu'à configurer correctement le DHCP.

Pour cela, commencez par vous rendre dans Interfaces → LAN. Dans la section « Static IPv4 Configuration », changez l'adresse IPv4 par 10.0.20.254/24. Appliquez les modifications. Rendez-vous ensuite dans Services → DHCP Server, puis changez la « Range » par quelque chose comme 10.0.20.10 - 10.0.20.100 (n'oubliez pas que 10.0.20.0 et 10.0.20.255 sont des adresses non attribuables, et que 10.0.20.1 et 10.0.20.254 sont déjà utilisées par notre hyperviseur et notre instance pfSense). Sauvegardez ensuite.

Toutes mes félicitations : nous avons maintenant terminé. Je vous laisse tester en créant une nouvelle machine virtuelle connectée à l'interface réseau vmbr20. Voici le résultat chez moi, avec une machine virtuelle sous Fedora 24 :

Tuto_proxmox_pfsense_fin

J'ai une adresse IP dans la bonne plage et l'accès à Internet fonctionne.

Ah, et n'oubliez pas d'activer le démarrage automatique pour votre machine virtuelle, au risque que le réseau ne fonctionne plus au prochain démarrage de votre hyperviseur!

Et voilà. Ce dernier article de notre série sur la création d'un hyperviseur sur le HP Pro 6000 SFF est maintenant terminé. J'espère qu'il vous aura été utile. Comme toujours, enjoy!

Note : cet article faisant suite à Un hyperviseur pour 130€ avec le HP Pro 6000 sff, les tests ont donc été effectués sur cette machine. D'autres machines HP et Compaq sont probablement compatibles, cependant je ne peux vous le garantir.

Aujourd'hui, petit tutoriel pour ceux qui, comme moi, ont eu besoin de mettre à jour le BIOS de leur machine HP/Compaq sans pouvoir passer par l'utilitaire officiel, fonctionnant uniquement sous Windows. Pour se faire, nous allons récupérer puis exécuter l'outil de mise à jour du BIOS compatible DOS, à l'aide du clone open-source FreeDOS.

Attention : cette manœuvre n'est pas sans risque et peut conduire à la mort de votre machine.

La première étape consiste donc à récupérer l'utilitaire de mise à jour du BIOS HP, vous l'aurez compris, sur le site de l'assistance HP. Vous devriez ainsi obtenir un fichier .exe de quelques méga-octets. Par exemple, pour le HP Pro 6000 sff, ce fichier appelé SP73556.exe pèse 6,7Mo. Une fois le fichier récupéré, décompressez-le (cela se fait par un simple clic droit sous la plupart des distributions Linux). Gardez ces fichiers de côté.

La prochaine étape consiste ensuite à créer une « clé bootable » de FreeDOS. Pour cela, récupérez une clé USB de l'un de vos tiroirs puis partitionnez là de telle sorte à ce qu'elle ne contienne qu'une seule partition, avec le système de fichiers FAT32. Sous Windows, passez par l'outil gratuit Rufus (qui, en prime, vous installera automatiquement FreeDOS). Sous Linux, tel de vrais barbus, nous allons le faire en passant par le terminal, en partant du principe que votre clé USB est référencée en tant que /dev/sdc par le noyau. Ouvrez un terminal puis exécutez :

sudo fdisk /dev/sdc

Une fois entré dans le prompt de fdisk, exécutez les opérations dans l'ordre suivant (entrez la lettre puis appuyez sur entrée) :

  • o : créer une nouvelle table de partitions sur la clé
  • n : créer une nouvelle partition
    • p : de type primaire
    • appuyez sur entrée (choix par défaut) pour toutes les autres questions
  • w : valider les changements sur le disque

Nous allons maintenant pouvoir formater notre partition, /dev/sdc1, en FAT 32. Pour cela, exécutez la commande suivante :

sudo mkfs.vfat -F 32 /dev/sdc1

Une fois ceci fait, téléchargez puis installez le logiciel unetbootin (référez vous à la documentation de votre distribution préférée pour davantage d'informations). Paramétrez-le comme sur l'image ci-dessous :
unetbootinpuis validez le paramétrage en appuyant sur « OK ». Une fois l'installation terminée, unetbootin vous proposera soit de redémarrer, soit de quitter. Quittez simplement l'application.

Nous allons pouvoir passer à la dernière étape préparatoire : la copie de l'utilitaire sur la clé. Pour cela, commencez par ouvrir votre clé USB puis copiez-y à la racine le dossier « DOS Flash », contenu dans l’utilitaire précédemment décompressé. Pour plus de facilité, nous allons renommer ce dossier en « BU ».

Nous allons maintenant pouvoir passer à la mise à jour du BIOS. Insérez la clé sur un port USB de l'ordinateur, puis démarrez dessus (touche F9 sur le HP Pro 6000, possiblement ECHAP sur d'autres). Une fois dans le prompt DOS (un écran noir avec des écritures blanches, dont la dernière ligne commence par C:\), déplacez-vous dans le dossier BU puis exécutez FLASHBIN.EXE :

CD C:\BU\
FLASHBIN.EXE

Suivez les indications à l'écran, répondez aux quelques questions posées. Si votre ordinateur a été reconnu, la mise à jour devrait se lancer. Laissez-là se faire, sans l'interrompre, puis redémarrez.

Et voilà, si tout s'est bien passé, votre BIOS est maintenant à jour. Enjoy!

Dans un prochain tutoriel, nous verrons comment installer un réseau local virtuel avec pfSense et Proxmox 4 sur le HP Pro 6000 sff.

Ceux qui me suivent sur Twitter sont sans doute déjà au courant : je suis depuis début août l'heureux propriétaire d'un hyperviseur qui m'aura coûté la modique somme de 125€ (frais de ports inclus). Étant étudiant et celui-ci ne devant me servir qu'à monter des postes et réseaux virtuels pour me former et passer à terme quelques certifications Linux, je n'avais ni l'envie de dépenser trop d'argent, ni besoin d'une foudre de guerre. Dans cet article, je vais vous partager mes quelques astuces pour monter le vôtre au meilleur prix.

La première question à se poser est bien entendu celle de la configuration. Voici de quoi nous allons avoir besoin :

  • un processeur supportant les instructions de virtualisation (Intel VT-x ou AMD-v)
  • des cœurs CPU : plus le processeur en a, le plus de machines virtuelles concurrentes pourront travailler
  • de la mémoire vive DDR3 : même principe qu'avec les cœurs CPU
  • du stockage (rapide, si possible) : les machines virtuelles peuvent rapidement prendre de la place

Pour trouver des pièces au meilleur prix, vous avez l'embarras du choix : le bon coin, eBay ou encore des sites spécialisés (je vous laisse rechercher cela dans votre moteur de recherche favori). J'ai personnellement choisi eBay pour son côté international et sa protection des acheteurs : les prix y sont bien plus attractifs que sur les sites franco-français (l'ordinateur que j'ai choisi était disponible en Allemagne, dans le même état, pour 55€, contre 130€ en France), surtout chez les revendeurs allemands, et les vendeurs peuvent être évalués par la communauté (évitant ainsi de se faire avoir par des gens peu scrupuleux).

Commençons par l'ordinateur : après quelques recherches, j'ai trouvé un HP Pro 6000 SFF d'occasion chez un revendeur allemand. Côté caractéristiques, on y retrouve un processeur Intel dual core E5800 sur socket 775 (ce détail a son importance), 4 Go de mémoire vive DDR3 (sur deux emplacements, ce qui en laisse deux autres de libre), un disque dur de 250Go, quatre ports SATA (pour pouvoir y brancher trois autres disques). Du côté du BIOS, ce dernier supporte le Wake-On-LAN (bien pratique pour allumer l'ordinateur à distance et ainsi éviter de consommer de l'électricité inutilement). Parfait !

Passons ensuite au processeur : l'Intel Pentium E5800 fourni avec la tour utilise un socket 775. Une recherche rapide nous indique que ce socket supporte également la gamme de processeur quad-cœurs Intel Core 2 Quad. Après quelques recherches sur eBay, j'ai jeté mon dévolu sur l'Intel Core 2 Quad Q9300, qui supporte les instructions de virtualisation VT-x et qui, en bonus, intègre 6Mo de cache L2. Ce dernier est disponible chez cet autre revendeur allemand. Attention à ne pas oublier également la pâte thermique, indispensable pour changer le processeur.

Terminons enfin sur la mémoire vive : ici rien de bien compliqué, ou presque, puisque l'ordinateur en question ne supporte que la DDR3 SDRAM non ECC et sans cache... Pas du tout compliqué ! Coup de chance, je suis tombé sur une vente aux enchères de deux barrettes Kingston DDR3 2GB 1XR8-PC3-10600U, vendues pour à peine 10€ (contre environ 30€ pour des barrettes comparables chez les gros revendeurs). Parfait !

Voici donc, pour les plus pressés d'entre vous, ma liste de courses (les prix sont TTC, avec les frais de ports):

  • Une tour HP Pro 6000 SFF : 73€
  • Un processeur Intel Core 2 Quad Q9300 : 33€
  • 2x 2Go de mémoire vive non ECC unbuffered : 13€
  • De la pâte thermique Arctic MX-2 : 6€

Soit un coût total de 125€, frais de ports depuis l'Allemagne inclus. Il ne reste plus qu'à assembler tout cela (rassurez-vous, rien de bien compliqué, d'autant plus que les processeurs à sockets 775 n'utilisent pas de pics qui pourraient se tordre durant le transport).

Dans un prochain article, nous verrons ensemble comment mettre à jour le BIOS de la machine vers une version plus récente.

Si l'un d'entre vous m'avait annoncé, il y a six ans de cela, que ce site, lancé par un collégien une belle journée d'août 2010 serait toujours vivant, malgré un passage au lycée, malgré le bac, malgré la lassitude, malgré les études supérieures, je lui aurais probablement ri au nez. Six ans et 60 000 visiteurs plus tard, je ne peux que constater que que je me serais trompé. Et tant mieux, d'ailleurs!

Un énorme merci à vous tous, visiteurs inconnus comme lecteurs réguliers de mes articles irréguliers (et oui, je vous vois, avec vos lecteurs de flux RSS!).

Concernant cette fin d'année 2016, elle devrait être l'occasion pour moi de faire une petite refonte graphique et de recommencer à publier quelques articles, fortement orientés Linux et réseau.

À (très) bientôt pour plein de nouveaux articles, promis!

« Entrées plus anciennes