1
0
Fork 0
contenu/blog/2021/03/09/mon-reseau/index.md

16 KiB
Executable File

title date tags
Mon réseau 2021-03-09T02:04:16+01:00
SysAdmin
Réseau
Hardware
Linux
Debian
Raspberry Pi
Cockpit
OPNsense
free
IPv6
OVH
Wifi
TP-Link
Synology
NAS
Routeur
Serveur
DNS
Reverse-proxy
Caddy
HomeAssistant
Domotique
ESP8266
Station météo
Thermostat
LEDs
Tablette
Auto-hébergement
Apple

J'avais envie d'honorer une vieille tradition geek : présenter mon réseau, son architecture, son contenu, etc. Deux objectifs sont poursuivis : un objectif de mémoire - un jour, je relirai cet article avec nostalgie... - et un objectif d'échange - si vous trouvez des infos intéressantes ici, ou si vous avez des idées d'amélioration.

  • Il n'y a aucun lien d'affiliation dans mes articles, et celui-ci ne fait pas exception.
  • L'historique de cet article est consultable depuis ma forge logicielle

Généralités

Je suis client free depuis 2004, et j'ai la fibre depuis mars 2023.

Infrastructure

Freebox

Ma Freebox est une Pop configurée en bridge. Je dispose d'une adresse IPv4 « full-stack », demandée dès que l'option était disponible, et de l'IPv6 natif.

Routeur

<x-shortcodes.imgproc url="images/ak34.jpg" />

Mon routeur est un AWOW AK34. Il dispose d'un Celeron N3450, 6Go de DDR4, un SSD de 128Go et surtout, deux ports gigabit. Il est installé sous OpnSense.

L'un des ports est relié à la Freebox ; du point de vue de OpnSense, c'est l'interface WAN. L'autre port est relié au switch ; c'est l'interface LAN.

La freebox Pop permet d'atteindre en théorie un maximum de 5GB/s en téléchargement et 700Mb/s en envoi. En pratique, les 5Gb/s sont répartis entre les deux ports filaires 1Gb/s et le port 2.5GB/s, et le wifi.

Par conséquent, mon architecture bride d'office l'ensemble de mon réseau à 1GB/s en téléchargement. Je pourrais passer à 2.5Gb/s en changeant de routeur, mais je ne dépasserai pas ce débit avec la Pop.

Il faut cependant relativiser tout cela : je me suis satisfait d'une connexion ADSL à 16Mb/s en téléchargement et 1Mb/s en envoi pendant très, très longtemps.

En outre, en tant qu'auto-hébergeur, c'est surtout le débit en envoi qui m'intéresse, et ce débit n'est pas bridé par mon architecture.

Je note que le passage à de tels débits n'est pas sans conséquences sur les performances de mon routeur. Je ne peux saturer la connexion 1Gb/s qu'en désactivant Suricata. Avec la protection activée, le débit plafonne à environ 250Mb/s, tout en sollicitant fortement le CPU.

Switch

<x-shortcodes.imgproc url="images/TL-SG1016.jpg" />

Je dispose d'un switch TP-Link TL-SG1016 de 16 ports.

Wifi

<x-shortcodes.imgproc url="images/mr2200ac.jpg" />

J'ai deux Synology MR2200ac configurés en mesh. Cela confère un certain nombre d'avantages :

  • toute la configuration de mon réseau sans-fil se fait depuis une seule interface (ce n'est pas spécifique à Synology)
  • je n'ai à configurer qu'un seul SSID sur toutes mes machines, qu'elles utilisent la bande de 5GHz, 2.4GHz, en wifi g, n ou ac
  • la connexion est stable, même en basculant d'un point d'accès à l'autre

Serveur domotique

<x-shortcodes.imgproc url="images/gn41.jpeg" />

Le serveur domotique est un Kodlix GN41, doté d'un Celeron N4100, de 8Go de mémoire vive et d'un SSD Samsung 850 EVO de 120Go.

J'ai intégralement conçu et manufacturé toute la domotique de mon logement. J'ai dessiné les circuits imprimés, et je les ai réalisés grâce à la bonne vieille méthode du bain au perchlorure de fer, apprise plus de vingt ans plus tôt en cours de technologie...

Ma domotique est donc constituée des éléments suivants, tous construits autour d'ESP8266 :

  • 1 station météo

Elle fait ma fierté, parce que j'ai passé beaucoup de temps à la concevoir et qu'elle fonctionne parfaitement bien et sans interruption depuis près de deux ans.

<x-shortcodes.imgproc url="images/station-meteo.jpg" />

Elle dispose de son propre système de régulation de température et d'humidité, basé sur un contrôleur de ventilateurs PWM (et de deux ventilateurs Noctua, de 8cm en aspiration sur le dessous et 12cm en extraction sur le dessus), d'une résistance PTC de 80℃ (disposée sur un vieux radiateur de processeur afin de répartir la chaleur dans le boitier) et d'un capteur SHT31-D, afin de s'assurer que l'alimentation et l'électronique soient maintenues à des températures et humidité relative acceptables (c'est-à-dire, selon les normes de fonctionnement préconisées par les constructeurs des différents éléments constitutifs de l'électronique de la station). Le contrôleur de ventilateurs et la résistance sont pilotés par des MOSFET IRLZ34N (placés chacun sur un circuit imprimé, en haut à gauche de l'image ci-dessus)

Elle dispose d'un capteur de luminance TSL2561, d'un capteur de température, humidité relative et pression atmosphérique BME280, et d'un capteur d'orage MOD-1016.

Une alimentation de 12V 5A fourni le courant à l'ensemble des composants. J'ai choisi cette puissance pour tenir compte de la résistance chauffante et des ventilateurs. De plus, une alimentation capable de délivrer plus que ce dont elle a besoin signifie souvent qu'elle chauffe moins. À l'exception du BME280 et du MOD-1016, tous les composants de la station météo prennent place dans un boitier spécifique planqué sous la véranda. Le BME280 et le MOD-1016 sont placés dans un boitier de ma conception, basé sur des tuyaux de 10cm de diamètre : une section droite centrale contient un circuit imprimé sur lequel les capteurs sont enfichés, et une section coudée à 90 degrés de chaque côté, ouverture vers le bas. Ainsi, les capteurs sont à l'air libre, mais protégés des intempéries. Ils sont reliés à la station principale par un câble ethernet blindé, qui fait transiter le signal I2C et l'alimentation.

  • 5 thermostats

Ils disposent de deux modes, « Présent » et « Absent ». Les plages horaires de chaque mode sont définies dans un calendrier spécifique à chaque thermostat. L'ESP8266 présent dans chaque boitier mural contrôle simplement un relais, et capte la température et l'humidité de la pièce via un SHT31-D.

  • 7 lumières, dont 6 bandeaux de LEDs et une prise Sonoff S20

J'ai défini deux entrées dans Home Assistant, respectivement pour l'extinction et l'allumage « inconditionnel » de l'éclairage. Ainsi, quoiqu'il arrive, les lumières automatisées (certaines ne le sont pas parce que ce n'est pas nécessaire) ne s'allumeront jamais dans cette plage horaire (typiquement entre 2h30 et 5h45, soit entre l'heure à laquelle je me couche et celle à laquelle mon épouse se lève).

En outre, les lumières automatisées ne s'allument que si la luminance extérieure fournie par la station météo est en dessous d'un certain seuil que je peux définir pour chacune d'entre elles. Enfin, le calendrier me permet de définir les plages horaires pendant lesquelles elles doivent présenter une scène particulière. J'ai défini quatre types d'ambiance : heures de passage (pour un éclairage à pleine puissance), éclairage normal, éclairage tamisé, et éteint.

Un bandeau de LEDs est contrôlé par un capteur de mouvement de type PIR, dont la seule dépendance est la luminance extérieure : même en présence de mouvement, il ne s'allumera pas s'il fait encore jour. Un autre bandeau est uniquement contrôlé par un bouton poussoir. Un dernier ne peut être contrôlé que par Home Assistant.

Au niveau électronique, chaque contrôleur pilote simplement trois MOSFETs (également des IRLZ34n), et dispose de deux entrées (pour un bouton ou un capteur de mouvement). C'est mon premier projet électronique à usage réel.

  • 2 horloges

J'aime bien avoir l'heure partout où je suis. Si j'ai la date complète, et la température extérieure, c'est encore mieux... Alors j'ai conçu deux horloges dotées d'un écran LCD 16x2 piloté en I2C par un ESP8266. Rien de compliqué, rien qui nécessite un circuit imprimé, juste quelques câbles.

  • 1 bouton d'appel

Utilisé pour que mon épouse puisse me signifier sans hurler à travers toute la maison qu'elle va faire dodo quand je suis enfermé dans mon bureau... Quand elle appuie sur son bouton d'appel, j'ai une alerte sur mon tableau de bord. Un appui de ma part sur le tableau de bord éteint sa LED pour lui signifier que j'arrive.

  • 1 bouton « Linge »

Pour que mon épouse puisse m'indiquer s'il y a du linge à étendre ou à passer au lave-linge, je lui ai créé un petit boitier logé près de la machine à laver, dérivé du bouton d'appel, et doté de deux boutons et deux LEDs. Cela provoque l'affichage d'un avertissement sur mon tableau de bord.

Tous ces périphériques tournent sur des ESP8266. En conséquence, j'ai installé ESPHome qui gère tout ça via de simples fichiers de configuration yaml, et connecte le tout à Home Assistant. Ça rend tout le processus très agréable et facile à utiliser et maintenir au quotidien.

J'ai également installé une caméra sous motionEyeOS sur un Raspberry Pi 0W.

Serveur principal

<x-shortcodes.imgproc url="images/u820.webp" />

Mon serveur préféré (chut, ne le dites pas aux autres), c'est aussi celui qui m'a coûté le plus cher, mais c'est le plus polyvalent. C'est un miniforum U820. Son Core i5 8259U (4c/8t @2.30GHz) est accompagné de 16Go de DDR4.

Il dispose de l'USB-C, plein de ports USB 3.0, deux ports ethernet (dont un 2.5Gbit/s), de HDMI et de Display-Port, ce qui me donnerait presqu'envie de le reconvertir en machine desktop plutôt que serveur si j'en avais l'utilité. Mais surtout, il offre deux baies pour SSD 2.5in, ce qui en fait le meilleur candidat au poste de serveur de stockage. Je lui ai donc collé mes deux Samsung 860 EVO de 500Go. Il tourne sous NixOS.

Sa puissance m'est très profitable, puisque j'y fais tourner :

  • Caddy (en reverse-proxy ou serveur web direct pour mes applications disponibles depuis l'extérieur de mon réseau local)
  • un runner pour Drone-CI
  • Gitea (ma fameuse forge logicielle)
  • PostgreSQL (stockage de toutes mes bases de données utilisées par les autres applications)
  • Redis
  • plus quelques autres services natifs et containers

Tableau de bord

Le tableau de bord que je mentionne depuis avant est un iPad Pro de récup.

Station de travail

Ma station de travail est un Mac mini M1. Là encore, vous allez sûrement me critiquer vertement. C'est Apple, c'est pas Libre, etc. Et je vous répondrai ceci.

Je suis passionné d'informatique depuis que j'ai cinq ans (j'en ai presque 40). J'ai touché à tout ou presque (grand bien m'en fasse, je n'ai jamais vu un AS400 de ma vie). J'ai passé un gros tiers de ma vie informatique à bidouiller des machines sous Windows, toutes versions depuis 3.1 jusqu'à Windows 10, en passant par Windows 2000, Server 2003, Home Server, etc. À la grande époque des versions pirates, j'ai touché à tout l'écosystème Microsoft, y compris ISA, Exchange, etc.

Suite à ça, je me suis laissé tenter par GNU-Linux. Pendant un deuxième gros tiers de ma vie informatique, j'ai bidouillé des Mandrake, des Knoppix, des RedHat, des Suse, pour finir par adopter définitivement debian. Je passais des heures à essayer de faire fonctionner un modem USB, à essayer et échouer à compiler le noyau, à désespérer devant mon incapacité à faire fonctionner correctement une carte graphique ou une carte son un peu exotique. Et bien que j'ai fini par pouvoir travailler confortablement avec debian et KDE, je ne pouvais me résoudre à supprimer purement et simplement Windows pour jouer (ce que je n'ai réussi à faire que récemment).

Tout ça, jusqu'au jour où j'ai acheté un iPhone à mon épouse. Puis son iPad. Puis mon iPad. Puis l'AppleTV 4. Puis mon MacBook Pro 13" Retina 2015. Puis une AppleTV 4K. Puis mon Mac mini M1. Mon amour pour cet écosystème n'a fait que grandir. Parce qu'enfin, après les deux premiers tiers de ma vie à bidouiller l'informatique, je pouvais enfin utiliser l'informatique. Tout fonctionne. Pas de hack, pas de configuration étrange, pas de bizarrerie que je dois exécuter sans comprendre. Pardonnez-moi l'expression, mais : « ça juste marche ». Le moment où je n'avais plus envie de bidouiller mais simplement utiliser est venu.

Et quand j'ai vu la conférence d'Apple annonçant sa première puce maison depuis... je ne sais pas combien d'années puisqu'avant l'iPhone de mon épouse, je n'avais cure d'Apple que je détestais presqu'encore plus que Microsoft, j'ai su qu'il me fallait le Mac mini M1, surtout considérant son prix. Si cette machine tenait ses promesses et qu'elle coûtait bien ce qu'ils annonçaient, ça allait être énorme.

Et le fait est que c'est énorme. Cette puce est monstrueuse en termes de performances, comparativement à sa consommation électrique. C'est réellement la révolution qu'ils promettaient. Ce Mac mini M1 est probablement le meilleur investissement de toute ma vie, et vous pouvez me croire, j'en ai eu des ordinateurs (et j'en ai encore, bien plus que listé ici...).

Et même via la couche de compatibilité Rosetta 2, même avec plein d'applications lancées en même temps, tout va plus vite. Tout est quasi instantané. C'est magique. Ça fonctionne, c'est simple, intuitif, esthétique (même si c'est personnel). Mon double-écran fonctionne sans problème (un Alienware 25 pouces FHD 240Hz en HDMI et un Huawei MateView GT34 en 165Hz en USB-C), ma souris SteelSeries Aerox 3 Wireless et mon clavier Akko fonctionnent sans soucis (même si c'était déjà le cas avec le MacBook Pro). J'ai enfin du plaisir à utiliser mon ordinateur. Contextuellement, ma station de travail doit m'aider, pas se mettre sur mon chemin. Un serveur, oui, ça se configure aux petits oignons, je prends mon temps pour l'installer et le paramétrer. Mais ma machine de travail doit fonctionner, tout de suite, et ne doit pas nécessiter mon attention toutes les deux secondes pour autre chose.

Station de jeu

Consommation électrique

Je dispose d'un onduleur Eaton Ellipse 1200 Pro qui présente la caractéristique intéressante de me fournir la consommation réelle de ce qui est branché dessus. Ainsi, je peux dire que l'ensemble de mon réseau consomment au total moins de 40W en moyenne. Je trouve que c'est très satisfaisant. L'onduleur pourrait ainsi fonctionner pendant deux heures sur batterie si une coupure de courant devait survenir. Largement de quoi voir venir...