PROJET AUTOBLOG


Le blog de Seboss666

Site original : Le blog de Seboss666

⇐ retour index

EditorConfig, restez consistants sur l’écriture du code !

samedi 2 mars 2019 à 10:30

Le hasard fait parfois bien les choses. En faisant le ménage dans mes flux rss inactifs, je découvre que celui d’OpenMediaVault est en erreur. En effet, le site a été refait apparemment et il n’y a plus de flux 🙁 Mais j’ai découvert le dépôt Github, et dans celui-ci un petit fichier que je ne connaissais pas mais que je vais certainement adopter sous peu 🙂

EditorConfig est en fait un format de fichier contenant des directives concernant l’écriture du code. Il permet par exemple d’indiquer comment est gérée l’indentation (largeur, espace ou tabulation), le format de fin de ligne (unix ou windows), le charset par défaut (devrait être utf8 pour tous, mais sur certains dossiers anciens, ça pourrait aider d’en spécifier un autre), et appliquer certains éléments sur des modèles comme les extensions de fichiers ou chemins particuliers.

Le fichier .editorconfig qui contient les directives se place à la racine d’un projet, et celui d’OpenmediaVault est simple, du coup c’est très parlant :

# EditorConfig is awesome: http://EditorConfig.org

root = true

[*]
end_of_line = lf
insert_final_newline = true

[*.{js,php,inc,sh,xml,json,html,css}]
charset = utf-8
indent_size = 4
indent_style = tab

[*.py]
charset = utf-8
indent_style = space
indent_size = 4

[*.sls]
indent_size = 2
indent_style = space

On voit que la première section s’applique à tout le monde, les suivantes s’appliquent uniquement à certains types de fichiers. Je vous laisse lire la doc sur le site officiel pour comprendre l’étendue des possibilités.

Pourquoi toi ?

Ce format a surtout été conçu pour le travail collaboratif, où plusieurs contributeurs pourraient même inconsciemment ne pas toujours suivre à la lettre les conventions des formats de fichiers et de la mise en forme du code, par exemple quand deux développeurs utilisent des systèmes d’exploitations différents et des éditeurs de code différents.

Et donc pourquoi moi qui bosse surtout tout seul ? Par curiosité d’abord, et puis par bonne pratique quand on veut à terme partager ses productions et qu’on a pas envie que les contributions deviennent une foire à la saucisse. Et surtout, parce c’est supporté par presque tous les éditeurs de code et environnements de développement du marché, que ce soit nativement ou via des plugins, donc aucune mauvaise raison de ne pas en tenir compte.

C’est notamment le cas de Sublime Text, L’installation est à portée d’un Install dans Package Control. Il y a même une extension snippets qui peut générer des modèles de fichiers .editorconfig pour vous. De cette façon, vous n’avez même plus à réfléchir sur comment adapter la configuration de l’éditeur à la base de code sur laquelle vous comptez travailler, votre éditeur s’en charge pour vous. Et comme pour tout ce qui permet à un informaticien de nourrir sa feignantise, autant dire que je ne peux que vous conseiller de l’adopter 🙂

La fibre chez ma mère, chapitre 3 : on tente de prendre le contrôle du réseau

mercredi 27 février 2019 à 18:30

Comme je l’avais indiqué à la fin du premier chapitre, j’étais bloqué par un bug en attente de correction pour pouvoir m’occuper des paramètres du réseau local. Ce n’était pas bloquant pour commencer à profiter d’une vraie connexion digne de ce nom en 2019, mais tout de même, vu les besoins, il fallait se pencher dessus. Attaquons donc le tour du propriétaire.

J’attendais donc une mise à jour de la box, finalement j’ai eu un rappel téléphonique du support de NordNet  : y’a peut-être pas besoin d’attendre 107 ans. De son côté, l’opératrice voit la box, via son numéro de série, déconnectée depuis le 3 janvier, jour de l’activation de la ligne. Original quand on sait que la connexion en question fonctionne parfaitement avec la box fournie. La personne au téléphone me propose donc de tenter un redémarrage à la fois de la box et du convertisseur (au cas où).

Eh bien ça a fait le café, via l’interface client on sait maintenant accéder aux maigres options proposées, à savoir la gestion du wifi, et le gestion des ouvertures de port :

Juré j’ai rien caché, ça servait à rien de vous montrer le vide autour. Alors c’est marrant de proposer de l’ouverture de ports quand on sait qu’on va devoir jouer aux devinettes pour récupérer l’adresse IP de la connexion qui va passer sa vie à changer, contrairement à la connexion Free qui elle a la même adresse depuis 2010 lors du passage en dégroupage total. Mais bon, à la limite, il n’est pas impossible que ça soit les fonctions les plus utilisées donc pourquoi pas. Côté gestion du wifi c’est assez spartiate aussi, à part activer/désactiver les deux points d’accès (5ghz et 2.4Ghz), changer le nom et la clé, on est vite limité.

Mais c’est pas suffisant du tout, pour rappel je veux avoir accès aux réglages avancés du point d’accès, je veux pouvoir manipuler le DHCP, le DNS, d’éventuelles fonctions avancées comme du point d’accès Wifi invité, bref, pas mal de choses (je suis d’ailleurs en train de faire un gros billet sur le sujet). Avant de raccrocher avec le service client je leur demande comment accéder à l’interface locale. La personne en face me donne des codes d’accès qui sont manifestement des codes par défaut tellement peu sécurisés qu’il faudrait brûler l’idiot qui pu penser que c’était une bonne chose de faire ça comme ça.

Et là, c’est moche, très moche, visuellement parlant. Déjà le mec qui a touché au CSS est un flemmard de première, ça a pensé à forcer la couleur du texte dans les formulaires, mais pas du fond, ce qui fait que sur un thème sombre le texte et le fond ont la même couleur donc on ne voit rien. Dieu merci j’ai toujours Stylus sous la main. Concernant les fonctionnalités c’est autre chose, et là on souffle le bon et le moins bon. Dans le bon on a la main sur le DHCP, notamment pour le désactiver si besoin, par contre pas moyen de modifier les résolveurs DNS, sachant que le DHCP fournit l’IP de la box qui fait donc office d’intermédiaire avec les résolveurs DNS qui sont indiqués sur la page de statut.  Heureusement donc qu’on peut désactiver le service DHCP pour en utiliser un plus complet et sous contrôle qui peut fournir des résolveurs propres, ou des résolveurs adaptés (pihole ?).

Les paramètres Wifi semblent assez complets, rien à voir avec l’interface client, par contre, en recoupant toutes les infos on a l’impression que par défaut le point d’accès Wifi fonctionne en WPA et pas en WPA2. C’est pour le moins surprenant comme paramétrage par défaut, il y a donc besoin de retoucher ça. Très cool par contre, la possibilité de créer jusqu’à trois points d’accès invités par point d’accès principal (un pour le 5Ghz, un pour le 2.4), je ne comprend pas par contre comment modifier leurs mots de passe. Mais ça permettra d’isoler les invités et leurs appareils non contrôlés/contrôlables du reste de votre propre réseau, et ça c’est juste obligatoire.

L’interface de gestion du NAT est très peu ergonomique, de plus on a les noms « linux » des interfaces c’est pas évident pour tout le monde. Le contrôle parental est lui aussi très succinct, il consiste surtout à définir des plages horaires de créneaux de blocage, et de blocage complet. Ça se base sur l’adresse MAC et  si c’est un téléphone avec Android 9 qui utilise la randomisation, ça sera un peu la merde pour le contrôler. M’enfin c’est là, c’est mieux que rien. L’option Dyndns ne sert à rien vu que seulement deux services sont proposés. On peut par contre modifier les serveurs NTP.

Enfin, pour les plus aventureux il y a une option DMZ pour tenter d’héberger des trucs chez soi.

Alors pour la blague j’ai repassé un nmap maintenant que tout est fonctionnel, bizarrement y’a des ports qui ont été refermés :

Nmap scan report for NordNetBox_Impulsion.Home (192.168.5.1)
Host is up (0.0061s latency).
Not shown: 992 closed ports
PORT     STATE    SERVICE
21/tcp   filtered ftp
22/tcp   filtered ssh
23/tcp   filtered telnet
80/tcp   open     http
139/tcp  open     netbios-ssn
445/tcp  open     microsoft-ds
631/tcp  open     ipp
5431/tcp open     park-agent

Dommage pour le SSH, j’aurais bien aimé mettre les mains dedans. Mais il y a effectivement plus de ports qui apparaissent désormais.

Pour la blague j’ai cherché un peu à récupérer la documentation officielle du routeur chez Sagem. Quand je vois la couverture fonctionnelle que propose officiellement le fabricant sur le routeur, les multiples coupes effectuées par NordNet dans le firmware sont à la limite du compréhensible.

Bilan : il me faut un Raspberry Pi

Malgré quelques options bienvenues on a l’impression que NordNet a voulu faire son possible pour que l’on ne puisse rien faire avec leur box, alors même qu’elle a pas mal de possibilités en soi. Un choix regrettable, pas seulement pour les techniciens, quand je vois comment on pourrait éviter de passer son temps à filer toutes les clés de son réseau local au moindre gamin de couple d’amis, voire au couple d’amis, juste pour qu’ils profitent du bon débit est assez pénible. Et pourtant ça ne prendrait pas non plus énormément de ressources au niveau de l’interface client pour implémenter.

Dans mon cas plus précisément, il manque aussi le fait de pouvoir contrôler le DNS. C’est à la limite de l’éliminatoire pour moi. La fonction dyndns ne sert à rien non plus, puisqu’il n’y a qu’un seul service proposé. Donc pour à la fois remonter un bastion, proposer un vrai serveur DHCP, utiliser un autre service de DNS dynamique (coucou ovh), et pourquoi pas tenter d’autres choses, je pense que le plus simple est de déployer une petite machine dédiée à ces tâches, ce qui permettra à la fois de gérer le DHCP, pourquoi pas un cache DNS en plus (en se basant sur des résolveurs qui sentent pas le moisi), une tâche planifiée qui s’occupe de mettre à jour le domaine de la madre pour qu’on puisse accéder à distance (se basant sur celui que j’avais pondu lors du déploiement de gogs sur Docker Swarm), et pourquoi pas un reverse proxy parce qu’après tout, pas la peine de se faire chier pendant 107 ans sur la multiplication des ouvertures de ports.

Et rien de tel qu’un Raspberry pi qui consomme à peine 3W avec le vent dans le dos, le tout avec une alimentation de smartphone qui pour une fois ne prendra pas la place de la concorde sur une rallonge. Si je pensais recycler le pi 1 qui est en convalescence chez moi depuis un moment, je pense qu’il est préférable d’éviter l’acharnement thérapeutique et partir sur un Pi 3, je préfère la souplesse du multicœurs plutôt que me limiter pour gagner quelques euros. D’autant plus que je penses le raccorder au réseau en Wi-Fi, afin de pouvoir éviter d’utiliser une énième prise Ethernet, car il y en a déjà trois d’exploitées sur les quatre : Xbox 360, lecteur bluray, box videofutur (bientôt remplacée elle aussi).

Si je pense qu’il faudra en dire quelque chose en particulier, je vous ferai un billet sur les choix logiciels et les paramétrages effectués pour remplir le rôle du bousin. Le prochain billet sera surtout consacré à la situation « TV » et aux options qui s’offrent ou pas à nous quand on est abonné chez un opérateur de « seconde zone ». Même avec la fibre, la fracture existe encore…


PS : Quid d’un autre routeur ?

Apparemment, il est possible d’utiliser un autre routeur en remplacement de la Nordnetbox si l’on en ressent le besoin. Sachant que la connexion est toute fraîche, je vais encore patienter pour jauger déjà de la fiabilité de tout ça, ne serait-ce que pour avoir un réel retour d’expérience sur du matériel fourni à un public qui n’est pas forcément aguerri au fait de changer de matos. D’autant plus qu’il faudra se poser la question de la ligne téléphonique, et là ça va être costaud si on change la box pour un routeur classique.

PPS : Entre temps, Free a officialisé la signature du partenariat avec Covage (dont Tutor Somme est une filiale) pour déployer ses offres sur les RIP gérés par l’opérateur. Sauf qu’arrivé fin février, l’offre n’est toujours pas active dans la Somme, et le support Free a été incapable de mettre une date. J’ai donc pris l’amère décision de mettre fin à une relation de 13 ans avec le même opérateur dont la seule faute aura été d’être incapable de faire bouger un autre opérateur en situation abusive de monopole sur la gestion d’infrastructure (la ligne téléphonique, qui reste propriété d’Orange), qui est payé en théorie pour l’entretenir mais ne veut le faire que pour ses propres abonnés. De toute façon, l’arrivée de la Delta et de la One a rendu l’offre Free complètement inintéressante (augmentation de tarifs, box mal segmentées, engagement d’un an sur la plupart, l’achat à 500 balles du player Devialet…). Non vraiment la situation du marché du THD en France est une catastrophe d’un point de vue du consommateur.

Adieu HHVM, et merci bien pour le poisson

dimanche 24 février 2019 à 10:30

HHVM, si vous n’en avez jamais entendu parler, est un environnement d’interprétation et de compilation à la volée de code logiciel développé par Facebook pour ses propres besoins et publiés en open-source. Sa popularité venait du fait qu’il apportait, à l’époque de sa découverte, une compatibilité partielle mais suffisamment étendue du langage PHP, qui reste le plus populaire dans le monde du web, avec des performances bien supérieures au moteur d’exécution officiel. Mais ça, c’était avant.

Le Hack, un dérivé de PHP

La compatibilité partielle de la HipHop Virtual Machine avec PHP ne sortait pas ne nulle part : Facebook cherche à améliorer l’exécution du code PHP qu’il exploite pour le réseau social aux plus d’un milliard d’utilisateurs réels. Pour différentes raisons, plutôt que d’aider à pousser le développement de PHP 7 sur lequel je reviendrai tout à l’heure, Facebook planche d’abord sur un environnement d’exécution optimisé pour le code qu’il écrit. HHVM dans ses premières itérations se concentre donc uniquement sur les fonctions que Facebook utilise. Jusqu’à voir que certaines limitations ne peuvent pas seulement être levées par le compilateur et que le langage doit évoluer. Le Hack était né, dérivé de PHP, le langage et l’environnement d’exécution sont donc très liés, mais le support de PHP dans une certaine mesure était facilité, puisque la base des deux étaient la même (la version 5.6 était toute jeune, la version 7 à peine en développement).

Le principal intérêt, pour les aventureux voulant tout de même l’exploiter avec PHP, résidait alors principalement dans les performances qui dépassaient de loin celles d’un PHP-FPM qui représentait le Graal de l’époque. j’ai moi-même brièvement utilisé HHVM et je vous en avait fait un petit comparatif. J’ai également eu à gérer une petite incompatibilité avec PHPMyAdmin, qui traduisait bien les différences parfois insolubles entre les deux protagonistes.

Ça poutrait bien fort

La fin d’une époque

En effet, Facebook vient de publier la version 4 d’HHVM, qui continue et entérine la fin du support de PHP pour se concentrer définitivement sur le Hack, un choix qui est logique selon moi vu les objectifs du runtime, qui ne peut pas indéfiniment supporter correctement les deux langages maintenant qu’ils ont bien dérivé chacun de leur côté. Le développement a beau être open-source, la majorité du boulot est à mon avis encore fortement piloté et nourri par les ingénieurs de Facebook, et comme n’importe quelle société, doit gérer des budgets de développement qui tout simplement exploseraient, continuer le support de PHP devient maintenant un non-sens technique et économique.

A noter que tout n’est pas supprimé d’un coup, mais la couverture fonctionnelle a déjà été rapidement castrée. Déjà, PHP7 n’a même pas été considéré, là le support est officiellement abandonné. Ça pourra encore fonctionner un peu, mais sauf surprise de dernière minute la prochaine version 4.1 ne comprendra plus du tout les scripts qui commencent par « <?php ». L’extension même des fichiers doit maintenant être obligatoirement .hack pour les fichiers écrits dans ce langage, tout à fait logique pour plein de raisons d’ailleurs.

On est bien avec PHP7 en fait

En effet, depuis, PHP 7.0 a été publié et a dépoussiéré pas mal de choses, en particulier au niveau des performances. Pendant les dernières étapes de son développement on a d’ailleurs vu les développeurs d’HHVM et PHP-FPM se tirer la bourre, pour le bien de tous au final puisque le gain était énorme, avec un PHP7 au niveau voire meilleur qu’HHVM sur certains scénarios d’exécution. J’ai moi-même vite rebasculé dessus car j’avais des soucis de stabilité avec HHVM, que je n’avais jamais vraiment investigué.

Et surtout, les développeurs de PHP ne se sont pas reposés sur leurs lauriers, PHP 7.1, 7.2, et désormais 7.3 ont continué de chercher entre autres choses une amélioration de performances, plus ou moins marquée à chaque étape, PHP 7.2 a introduit de la crypto robuste, moderne ET performante dans vos programmes PHP via l’extension sodium, bref, il n’y a plus aucune raison de se faire mal avec un environnement d’exécution qui ne considère plus vos applications comme dignes de lui, et revenir au standard vous donnera pleinement satisfaction. Sinon c’est que le langage que vous utilisez n’est peut-être plus adapté.

Attention, j’ai vu passer quantité d’alertes en fin d’année avec la fin du support simultané de PHP 5.6 ET PHP 7.0. Si leur fin de vie n’augure rien de bon dans les mois à venir en termes de sécurité, vous avez encore le temps, si vous n’avez pas encore finalisé votre migration, de vous pencher sur ce qui va vous péter à la tronche et aux corrections à apporter pour basculer sur une version supportée. Et pour les plus inquiets, je vous laisse imaginer le stress au boulot avec plusieurs de nos clients encore sur PHP 5.2, 5.3, et 5.4. Avec des machines sans reboot depuis 8 ans, ou un record d’ancienneté logicielle avec une Debian 3.1…

D-Link DAP-2660, un point d’accès Wifi qu’il est bien, mais qu’il est cher, mais qu’il est bien…

jeudi 21 février 2019 à 18:30

Je laisse les plus alertes trouver la référence cinématographique de ce titre très mauvais en grammaire, pour me concentrer sur le sujet du Wi-Fi, et plus particulièrement de la situation dans mon appartement. Parce que la Mini 4k de Free est trop limitée et que je n’ai pas besoin de la Freebox Revolution, les capacités sans fil sont vite insuffisantes parfois même pour seulement communiquer en local avec la box, ce qui amène des latences de porc. J’ai donc cherché un moyen d’améliorer tout ça.

La situation dans mon appartement

Je suis au deuxième et dernier étage d’un bâtiment en bord de route, entourés d’autres bâtiments du même type, des deux côtés de la route. Si je précise c’est que cette configuration permet de mettre ça en lumière :

Et j’ai déjà eu pire…

C’est le nombre de réseaux Wi-Fi que je capte chez moi. Il y a donc tout le monde ou presque dans l’entourage géographique, y compris les voisins d’en face. Et c’est un vrai problème.

L’occupation sur le 2.4Ghz vu par la Freebox

Je vais essayer de rappeler un concept simple en tête mais pas évident à mettre en mots. Les ondes radios ne se superposent pas. Bosser à une certaine fréquence demande d’être tout seul pour des performances maximales, sinon tout le monde doit se partager l’espace. Comme toutes les box utilisent par défaut du Wi-Fi sur la « bande » 2.4Ghz, même avec une segmentation et une répartition sur plusieurs canaux, dans un cas comme le mien c’est l’enfer et le débit réel s’écroule rapidement, et la latence explose. Pour reprendre une image culinaire, la bande radio est un gros gâteau unique et plus il y a de monde, plus la part à laquelle vous aurez droit est petite.

Jugez plutôt : chez ma mère le Wi-Fi N permettait un débit pouvant atteindre en pointe les 10Mo/s vers le NAS, et ce à 3 mètres de distance, et je gardait plus de 3Mo/s à près de 10 mètres et un étage de différence, mais on ne capte personne, ou alors faut être collé à un des murs à l’extrémité de la maison pour capter un voisin. Chez moi, toujours en Wi-Fi N le soir à moins d’un mètre de la box, le débit tombe à parfois 1Mo/s, et dépasse très difficilement les 2. En fonction de l’heure de la journée ça peut remonter à 6 voire 8 les jours de fête. Un simple téléchargement HTTPS comme une mise à jour Manjaro (pour prendre un des cas les plus volumineux), ne dépasse rarement les 1.2Mo/s, alors que câblé je blinde les 2Mo/s que me permettent la connexion ADSL.

Et début janvier j’ai pris la grosse claque dans la gueule : les tests de débits de la connexion fibre de ma mère, en Wi-Fi, poutrent entre 30 et 40 Mo/s, grâce à l’utilisation d’une nouvelle norme Wi-Fi : le Wi-Fi AC. Pas de bol je ne peux pas en profiter sur la mini 4k, cette norme est réservée à la plus onéreuse freeteuse Révolution et la très onéreuse freeteuse Delta qui m’est complètement inutile puisque chez moi toutes les fonctionnalités hors Wi-Fi sont gérées par du matériel dédié.

Ah, euh, oui, vous êtes perdus avec les normes Wi-Fi ? On va prendre une seconde pour faire un résumé histoire de ne perdre personne d’autre.

Petit résumé des principales normes de connexion Wi-Fi

À l’heure actuelle, la norme Wi-Fi la plus répandue est la norme « N », lettre tirée du vrai nom technique à savoir 802.11n. Cette norme permet une communication de l’ordre de 150Mbps par antenne sur la bande 2.4Ghz, mais également sur la bande 5Ghz qui avait déjà été exploitée sur la norme 802.11a (quand vous voyez un appareil annoncer un support Wi-FI 802.11 a/b/g/n, c’est qu’il supporte le n sur 5Ghz, sinon il ne supportera que le 2.4). Il est possible d’augmenter le débit en utilisant plusieurs antennes, dans la même bande toutefois, et certains fabricants ont parfois dérivés dans leur coin pour mixer les bandes, mais ça demande de s’équiper intégralement chez eux. Le standard brut permet un maximum théorique de 450Mbps, soit 50Mo/s, mais dans la pratique les appareils ont rarement proposé trois antennes, en particulier dans les appareils clients (laptops, smartphones…), qui en ont deux dans le meilleur des cas, et parfois seulement pour du secours, donc une seule antenne est réellement utilisée…

Il y a 4 ans à été finalisé le remplaçant, sous le petit nom 802.11ac. Ses promesses, comme d’habitude, meilleur débit, consommation électrique contenue, meilleure portée. Uniquement sur les 5Ghz, on double la taille des bandes de fréquences, on a plus de canaux, les algorithmes de corrections sont plus efficaces, il est possible de mettre plus d’antennes en parallèle, bref tout est mieux. En particulier le débit théorique : au maximum 7Gbps, soit 896Mo/s, un sacré boost potentiel donc. Pratique avec l’arrivée progressive de la fibre optique et ses promesses de débits proche du gigabit, voire du 10Gigabit d’après Free. Là encore, sur le sans-fil ça dépend principalement du nombre d’antennes embarquées dans les matériels.

Par contre, avec l’arrivée du WiFi AC, les constructeurs ont commencé à jouer avec les chiffres, en annonçant des débits max de ouf alors qu’en pratique, une partie du débit n’est valable que pour la bande de 2.4Ghz (Wi-Fi N) et le reste pour la bande des 5Ghz (Wi-Fi AC). Attention donc au débit réel auquel s’attendre avec un routeur ou un point d’accès.

Le Wi-Fi AC, ça coûte une couille

De retour chez moi, j’ai donc commencé à chercher un point d’accès Wi-Fi qui supporte la norme AC. Mais là, j’ai fait face à un sacré problème : le matériel AC, ça coûte super cher ! Là où vous trouvez des routeurs (qui embarquent donc pas mal de fonctionnalités déjà présentes dans les box) Wi-Fi N à des prix très abordables (moins de 30€ parfois), les routeurs AC sont beaucoup plus chers alors que la norme a déjà plus de quatre ans. Et c’est pareil pour les points d’accès. Ce dernier type de matériel est vraiment ce dont j’ai besoin : de quoi raccorder des appareils compatibles, le reste des fonctions es déjà assuré par du matériel dédié (pour l’instant, la box mini 4K puisqu’elle est particulièrement bien fournie), rien de plus.

Eh bien je ne trouve rien en dessous de 70€, alors qu’il n’y a pas besoin de fonctions avancées en dehors de la connectivité. C’est frustrant, rageant, limite incompréhensible. J’ai donc fouillé, fouillé, et j’ai finalement eu la chance de dégoter un appareil apparemment de qualité pour un peu plus de 40€, bien plus compatible avec ce dont on est en droit d’attendre d’un appareil dont la fonction est limitée par rapport à un routeur plus complet. Cette chance, c’est d’avoir pu bénéficier d’un rabais de 50% (c’est un appareil d’occasion) avec un supplément de 15%. Oui, l’appareil neuf coûte un peu plus de 120€, par contre c’est un appareil tout de même au dessus des basiques que je pensais acquérir, mais vu l’offre, ça ne se refusait pas.

C’est tout de même dommage, et le symptôme est le même sur les appareils clients : sur les laptops le Wi-Fi AC est trop souvent réservé à des machines qui tapent dans le haut de gamme, soit vers les 1000€ et plus, même s’il est possible sur Internet de trouver des références mieux équipées pour des prix plus contenus (mais pas mal d’acheteurs ne traversent que les rayons des grandes surfaces et là c’est pas beau à voir). Alors que c’est moins souvent le cas sur les smartphones où mon P20 Lite qui coûte moins de 400€ permet d’en profiter.

Here comes a new challenger : D-Link DAP-2660

Quand je disais que la trouvaille est au dessus des basiques, c’est qu’il est avant tout destiné aux entreprises, les fonctions sont plus avancées que sur d’autres gammes : apparemment il est pilotable par SSH en plus d’une interface Web, il sait orienter le flux Wifi en fonction des appareils connectés (je pourrai éviter de rayonner la rue par exemple), il supporte le PoE, c’est à dire l’alimentation directement via le câble Ethernet (Power over Ethernet, intéressant quand on a pas la possibilité de tirer une alimentation là où on veut poser le point d’accès, donc un seul câble –remember l’enfer de l’installation de la box NordNet avec tous ces putains de gros transfos), et pas mal d’autres points qui seront ou pas intéressants pour vous, je vous laisse lire la description sur le site officiel de D-Link. Il est sobre, et l’emballage va à l’essentiel :

Un package optimisé, avec support mur/plafond 🙂

Grosse mauvaise surprise, l’appareil n’est fourni avec aucune alimentation même si une prise 12V/1A est présente à côté de la prise réseau, le fabricant met clairement en avant le PoE (802.3af pour le petit nom de la norme) comme méthode à privilégier. Pas de bol vérification faite je n’ai aucun appareil réseau permettant d’alimenter le point d’accès, que ce soit la Freebox ou le switch que j’ai installé à côté. J’ai un deuxième switch pas encore installé et un vieux routeur Netgear qui ne proposent pas non plus la moindre prise supportant le PoE. Et le moins qu’on puisse dire, c’est que les solutions pour en faire se trouvent difficilement, surtout en boutique physique, et une fois encore à des prix pas toujours attractifs, constat qu’a également fait INpact Hardware de son côté. Et pourtant à y regarder de plus près c’est super intéressant comme techno, utiliser un seul câble pour faire du réseau et de l’alimentation, c’est génial ! A une ère d’objets connectés, difficile de comprendre pourquoi Orange ou Free, qui mettent ces usages du futur en avant, n’en proposent pas dans leur box horriblement chères…

Comme je pensais remettre un appareil du genre dans ma caisse à outil, j’ai d’abord trouvé un transformateur universel qui permet de proposer entre 3 et 12V et jusqu’à 2,25A, donc suffisant, pour presque 20€ chez Electrodédpot. Il existe également une version 1A pour un peu moins de 13€, dont le bloc alim est naturellement plus petit. Le côté universel fait que la prise a un certain embonpoint pas facile à gérer étant donné l’emplacement du connecteur sur le point d’accès, mais c’est rentré. Et oh magie, ça fonctionne ! Mais c’est pas viable comme installation (surtout que le transformateur prend une place de malade sur la multiprise, étonnant non ?), et le PoE m’intéresse beaucoup en fait, du coup j’ai cherché un switch qui propose une ou plusieurs prises sans que ça soit trop ruineux. J’ai jeté mon dévolu sur un Netgear GS308P-100PES qui est à prix réduit sur Amazon en ce moment, une version très proche de celui que j’ai déjà à part qu’il propose quatre prises PoE (et on voit que par rapport à un GS308 sans P, on fait un x2 sur le prix sans la réduction…).

Une agréable consolation est venue de la procédure de première configuration. J’ai pris l’habitude de pester contre tous ces appareils réseau dont la première configuration repose sur un utilitaire qui n’est pas dispo sous Linux, parfois même pas sous Mac, donc que Windows, ou pire, via une application Android. Eh bien il s’avère qu’ici, point de logiciel. Le point d’accès (que je vais appeler AP par la suite, pour Access Point) est configuré sur une IP 192.168.0.50 par défaut, si votre réseau est déjà configuré sur cette plage d’adresse c’est un peu plus simple sinon, vous reliez l’AP à votre switch, votre ordinateur à ce même switch, vous paramétrez manuellement une adresse IP en 192.168.0.x et vous pouvez directement accéder à l’interface Web. Évidemment c’est moins kikoulol qu’un clicodrome qui fait le taf pour vous en trois clics (et qui de plus en plus enregistre les infos chez le fabricant…), mais il faut se souvenir que c’est un appareil avant tout destiné à des gens dont c’est le métier. Malgré tout le « quick start guide » est suffisamment clair, avec des schémas de câblage, ainsi que toute la procédure que je viens de vous présenter. De mon côté je le fous dans la plage d’adresse de mon réseau local tout de suite, histoire de pas me faire chier pour la suite des évènements.

Je commence tout d’abord par chercher les mises à jour Firmware, histoire d’avoir les corrections et les fonctionnalités à jour. Toujours chercher les mises à jour des appareils, même si c’est d’abord destiné au réseau local, le Wi-Fi par nature est une norme radio qui ne se limite pas à vos murs, et ces dernières années n’ont pas été de tout repos pour la sécurité des normes existantes. C’est valable pour vos smartphones, vos ordinateurs, tout ce qui a un accès réseau quelque soit sa forme. La mise à jour ne prend pas si longtemps et le redémarrage également, tant mieux. L’activité de l’AP est matérialisée sur celui-ci à l’aide d’une unique LED qui change de couleur en fonction de son état de santé, et d’un clignotement quand il y a de l’activité. Simple, sobre, efficace.

La sécurité du Wi-Fi mise à mal…

Bon ici le firmware est déjà le dernier en date, et vérif faite sur le support il date de fin 2016. Est-il faillible à KRACK ? Je ne sais pas, je n’ai pas vraiment vérifié, mais on va dire que vu l’entourage la probabilité est très faible qu’elle soit exploitée.

On attaque ensuite la vraie découverte de l’interface, des fonctions, et on attaque le paramétrage. L’objectif est de désactiver le point d’accès Wi-Fi en 2.4Ghz de la freeteuse, pour ne conserver que le 5Ghz du D-Link. Pour rappel, je peux théoriquement atteindre un débit jusqu’à 900Mbps sur le 5Ghz, je n’ai même pas prévu d’utiliser le Wi-Fi N du D-Link, puisque tous mes appareils sont compatibles.

L’interface est assez moche mais parfaitement fonctionnelle, très détaillée, attention par contre, si vous foirez un paramètre Vous pouvez chercher longtemps. J’avais mal configuré la sécurité du mot de passe et j’étais bridé à 54Mbps de synchro, donc des débits pratiques beaucoup trop bas par rapport à ce que j’ai avec la Freebox, un comble ! Autre point à retenir, pour appliquer la configuration, il faut redémarrer l’AP. C’est plutôt rapide et ça permet de préparer plusieurs éléments de configuration en même temps, mais tout de même, la première fois ça surprend. On peut évidemment sauvegarder la configuration dans un fichier, pratique si pour une raison ou une autre on doit réinitialiser l’AP ou carrément le changer parce qu’il est défectueux (les composants ça s’use, surtout quand ils sont très sollicités).

Parmi les points que j’apprécierai surement, le SNMP (pour le monitoring), le SSH évidemment (si je trouve la doc parce que bien évidemment faire un shell standard alors qu’on a un cœur Linux c’était trop facile, les commande sont custom, un peu comme NSX sur un cluster VMWare), il y a le support des VLAN, pas surprenant pour les entreprises, plus intéressant pour certains un portail captif, à savoir vous devez saisir des informations avant de pouvoir accéder au réseau. Il y a beaucoup de termes que je ne connaissais pas forcément, mais la page d’aide propose une explication de tous les réglages, à garder en parallèle donc lors des premiers jours. Il y a aussi une planification de disponibilité, pour couper l’accès quand il n’est plus utile.

Attention, la déconnexion de la session admin est très rapide en cas d’inactivité. C’est à la fois bien et un peu lourd, mais c’est pas plus mal qu’un cookie de session valide pendant plus d’une journée comme j’ai pu le voir à une époque sur certaines box opérateurs…

Les tests

Je voulais quand même comparer les débits bruts et les débits réels, et j’ai trouvé une image iperf3 pour Docker, j’ai donc déployé une micro stack sur mon cluster Swarm qui permet d’avoir un serveur prêt en permanence pour faire des tests (pour rappel le micro-serveur dispose d’une connexion Gigabit Ethernet, donc pas de souci à prévoir de ce côté-là). et je peux taper sur n’importe quel nœud pour faire le taf.

On commence par faire une première mesure en câblé, puis en Wi-Fi sur la Freebox, afin d’avoir des points de comparaison. J’ai tout fait avec le laptop pour assurer un environnement consistant. Voilà les chiffres pour l’ethernet :

$ iperf3 -c swarmleader.seboss666.ovh
Connecting to host swarmleader.seboss666.ovh, port 5201
[  5] local 192.168.1.49 port 53310 connected to 192.168.1.9 port 5201
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.00   sec  72.3 MBytes   606 Mbits/sec    9    307 KBytes
[  5]   1.00-2.00   sec  83.3 MBytes   699 Mbits/sec    1    405 KBytes
[  5]   2.00-3.00   sec  86.0 MBytes   722 Mbits/sec    1    472 KBytes
[  5]   3.00-4.00   sec  83.6 MBytes   701 Mbits/sec    4    509 KBytes
[  5]   4.00-5.00   sec  85.7 MBytes   719 Mbits/sec    0    524 KBytes
[  5]   5.00-6.00   sec  76.1 MBytes   638 Mbits/sec    2    561 KBytes
[  5]   6.00-7.00   sec  58.1 MBytes   487 Mbits/sec    5    603 KBytes
[  5]   7.00-8.00   sec  66.2 MBytes   555 Mbits/sec    2    655 KBytes
[  5]   8.00-9.00   sec  58.5 MBytes   491 Mbits/sec    3    696 KBytes
[  5]   9.00-10.00  sec  61.9 MBytes   519 Mbits/sec    2    737 KBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec   732 MBytes   614 Mbits/sec   29             sender
[  5]   0.00-10.04  sec   730 MBytes   610 Mbits/sec                  receiver

iperf Done.
$ iperf3 -R -c swarmleader.seboss666.ovh
Connecting to host swarmleader.seboss666.ovh, port 5201
Reverse mode, remote host swarmleader.seboss666.ovh is sending
[  5] local 192.168.1.49 port 53318 connected to 192.168.1.9 port 5201
[ ID] Interval           Transfer     Bitrate
[  5]   0.00-1.00   sec  95.5 MBytes   801 Mbits/sec
[  5]   1.00-2.00   sec  93.0 MBytes   780 Mbits/sec
[  5]   2.00-3.00   sec   111 MBytes   931 Mbits/sec
[  5]   3.00-4.00   sec   104 MBytes   873 Mbits/sec
[  5]   4.00-5.00   sec   108 MBytes   907 Mbits/sec
[  5]   5.00-6.00   sec  97.6 MBytes   819 Mbits/sec
[  5]   6.00-7.00   sec  66.0 MBytes   553 Mbits/sec
[  5]   7.00-8.00   sec  63.3 MBytes   531 Mbits/sec
[  5]   8.00-9.00   sec  96.7 MBytes   812 Mbits/sec
[  5]   9.00-10.00  sec   106 MBytes   891 Mbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.05  sec   944 MBytes   788 Mbits/sec   40             sender
[  5]   0.00-10.00  sec   941 MBytes   790 Mbits/sec                  receiver

iperf Done.

Des débits attendus pour un réseau Gigabit. Et pour le Wi-Fi N de la Freebox, c’était un bon jour (sisi je vous assure) :

$ iperf3 -c swarmleader.seboss666.ovh
Connecting to host swarmleader.seboss666.ovh, port 5201
[  5] local 192.168.1.10 port 45810 connected to 192.168.1.9 port 5201
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.00   sec  3.70 MBytes  31.0 Mbits/sec    2    154 KBytes
[  5]   1.00-2.00   sec  7.11 MBytes  59.7 Mbits/sec    0    177 KBytes
[  5]   2.00-3.00   sec  6.50 MBytes  54.5 Mbits/sec    0    195 KBytes
[  5]   3.00-4.00   sec  4.66 MBytes  39.1 Mbits/sec    0    201 KBytes
[  5]   4.00-5.00   sec  4.72 MBytes  39.6 Mbits/sec    1    208 KBytes
[  5]   5.00-6.00   sec  5.58 MBytes  46.8 Mbits/sec    0    218 KBytes
[  5]   6.00-7.00   sec  7.05 MBytes  59.1 Mbits/sec    0    235 KBytes
[  5]   7.00-8.00   sec  7.18 MBytes  60.2 Mbits/sec    0    250 KBytes
[  5]   8.00-9.00   sec  6.01 MBytes  50.4 Mbits/sec    0    254 KBytes
[  5]   9.00-10.00  sec  6.01 MBytes  50.4 Mbits/sec    2    258 KBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec  58.5 MBytes  49.1 Mbits/sec    5             sender
[  5]   0.00-10.01  sec  57.8 MBytes  48.4 Mbits/sec                  receiver

iperf Done.
$ iperf3 -R -c swarmleader.seboss666.ovh
Connecting to host swarmleader.seboss666.ovh, port 5201
Reverse mode, remote host swarmleader.seboss666.ovh is sending
[  5] local 192.168.1.10 port 45814 connected to 192.168.1.9 port 5201
[ ID] Interval           Transfer     Bitrate
[  5]   0.00-1.00   sec  4.49 MBytes  37.6 Mbits/sec
[  5]   1.00-2.00   sec  4.11 MBytes  34.5 Mbits/sec
[  5]   2.00-3.00   sec  2.22 MBytes  18.6 Mbits/sec
[  5]   3.00-4.00   sec  3.89 MBytes  32.6 Mbits/sec
[  5]   4.00-5.00   sec  2.41 MBytes  20.2 Mbits/sec
[  5]   5.00-6.00   sec  1.48 MBytes  12.4 Mbits/sec
[  5]   6.00-7.00   sec  1.75 MBytes  14.7 Mbits/sec
[  5]   7.00-8.00   sec  3.04 MBytes  25.5 Mbits/sec
[  5]   8.00-9.00   sec  2.02 MBytes  16.9 Mbits/sec
[  5]   9.00-10.00  sec  3.20 MBytes  26.8 Mbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.08  sec  29.6 MBytes  24.7 Mbits/sec  311             sender
[  5]   0.00-10.00  sec  28.6 MBytes  24.0 Mbits/sec                  receiver

iperf Done.

On le voit, c’est famélique, et encore, je l’a dit c’est un bon jour. Voyons donc maintenant les résultats en Wi-Fi AC :

$ iperf3 -c swarmleader.seboss666.ovh
Connecting to host swarmleader.seboss666.ovh, port 5201
[  5] local 192.168.1.10 port 54352 connected to 192.168.1.9 port 5201
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.00   sec  24.1 MBytes   202 Mbits/sec    4    190 KBytes
[  5]   1.00-2.00   sec  40.2 MBytes   337 Mbits/sec    4    298 KBytes
[  5]   2.00-3.00   sec  49.9 MBytes   418 Mbits/sec    0    401 KBytes
[  5]   3.00-4.00   sec  48.7 MBytes   408 Mbits/sec    1    475 KBytes
[  5]   4.00-5.00   sec  47.2 MBytes   396 Mbits/sec    1    532 KBytes
[  5]   5.00-6.00   sec  53.4 MBytes   448 Mbits/sec    0    595 KBytes
[  5]   6.00-7.00   sec  52.6 MBytes   441 Mbits/sec    2    636 KBytes
[  5]   7.00-8.00   sec  52.9 MBytes   443 Mbits/sec    0    666 KBytes
[  5]   8.00-9.00   sec  55.4 MBytes   465 Mbits/sec    0    695 KBytes
[  5]   9.00-10.00  sec  53.8 MBytes   452 Mbits/sec    0    721 KBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec   478 MBytes   401 Mbits/sec   12             sender
[  5]   0.00-10.00  sec   476 MBytes   399 Mbits/sec                  receiver

iperf Done.
$ iperf3 -R -c swarmleader.seboss666.ovh
Connecting to host swarmleader.seboss666.ovh, port 5201
Reverse mode, remote host swarmleader.seboss666.ovh is sending
[  5] local 192.168.1.10 port 54360 connected to 192.168.1.9 port 5201
[ ID] Interval           Transfer     Bitrate
[  5]   0.00-1.00   sec  48.0 MBytes   402 Mbits/sec
[  5]   1.00-2.00   sec  53.1 MBytes   446 Mbits/sec
[  5]   2.00-3.00   sec  55.7 MBytes   467 Mbits/sec
[  5]   3.00-4.00   sec  53.1 MBytes   445 Mbits/sec
[  5]   4.00-5.00   sec  53.0 MBytes   445 Mbits/sec
[  5]   5.00-6.00   sec  58.3 MBytes   489 Mbits/sec
[  5]   6.00-7.00   sec  60.6 MBytes   508 Mbits/sec
[  5]   7.00-8.00   sec  61.6 MBytes   517 Mbits/sec
[  5]   8.00-9.00   sec  62.4 MBytes   523 Mbits/sec
[  5]   9.00-10.00  sec  65.3 MBytes   548 Mbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.02  sec   574 MBytes   481 Mbits/sec    3             sender
[  5]   0.00-10.00  sec   571 MBytes   479 Mbits/sec                  receiver

iperf Done.

Le résultat est sans appel. on s’approche de la moitié du débit Gigabit. Du vrai réseau ! Pour vérifier en conditions réelles, j’ai fait quelques essais de transferts vers/depuis le NAS :

faire un x20 sur le débit en pratique, c’est maintenant bien plus confortable, et je suis sur une bande de fréquence qui est bien moins saturée qu’avant (grosso modo je suis seul). J’ai remarqué que les fortes latences pour des éléments basiques comme la résolution DNS étaient aussi moins fréquentes (va falloir que je réinstalle un cache sur le bastion et reparamétrer le DHCP un de ces jours; à moins que je ne donne sa chance à Pi-Hole ?), c’est donc que du bonus.

Comment en profiter chez vous ?

Ceux qui ont des box opérateurs récentes, Freebox Revolution, box fournies pour des abonnements fibres, n’ont souvent qu’à se soucier des clients. Si votre ordinateur n’est pas équipé, vous pouvez tenter l’option la plus simple et relativement abordable de la clé USB Wi-Fi–relativement abordable, mais attention aux débits proposés par les moins chers, une fois de plus, c’est souvent minable. Pour les smartphones à moins d’en changer pour un récent qui le supporte c’est mort. Les plus aventureux démonterons leur ordinateur portable pour changer la carte Wi-Fi intégrée, une manipulation qui n’est pas à la portée de tout le monde et qui là aussi peut avoir un coût non négligeable, un peu à l’instar de passer à un stockage SSD. Sans parler du piège de la taille de la carte remplaçante, une histoire vécue par votre serviteur à l’époque où il a voulu passer au Wi-Fi N sur son laptop de 2006.

Si vous n’avez pas de support sur la box et que votre opérateur ne vous propose pas d’option pour la mettre à jour, ou alors en subordonnant le changement de box à un passage à un abonnement plus cher, le mieux est de s’acheter un vrai routeur qui permettra de reprendre le contrôle du réseau, mais attention : les fournisseurs d’accès font tout leur possible pour vous imposer un appareil que vous ne maîtriserez pas, et vouloir se libérer voudra souvent dire perte de fonctionnalités comme la TV et/ou le téléphone qui sont aussi imposés dans les abonnements. Bref, ça sera beaucoup plus compliqué, ça sera beaucoup plus onéreux, donc à voir si c’est une nécessité pour vous d’investir dans une installation de ce type tout de suite ou de laisser le renouvellement « naturel » du matériel vous amener ces technologies. En tout cas j’ai fait mon choix, et j’en suis très content 🙂

Goreplay, un utilitaire diablement pratique à essayer (et adopter)

lundi 18 février 2019 à 18:30

Dans le cadre de tests d’une nouvelle plate-forme pour un client, j’ai voulu observer le comportement en temps réel avec du trafic public existant. En cherchant mes options je suis tombé sur goreplay, et je ne peux que vous inviter à l’essayer.

Comme son nom l’indique, Goreplay est un utilitaire écrit en go. Comme tous les outils écrits dans ce langage, il est distribué sous la forme d’un unique binaire ce qui le rend à la fois simple à installer et chiant à maintenir à jour de manière automatique. M’enfin pour du test ponctuel ce n’est pas la mort.

Goreplay fonctionne un peu comme tcpdump, en ce sens qu’il capture le trafic, il est toutefois très orienté Web puisqu’on peut assaisonner le trafic capturé pour le rejouer avec des contraintes supplémentaires. Dans mon cas, les vhosts de la nouvelle plate-forme sont protégés par authentification http basique, j’ai donc indiqué à goreplay d’injecter le header « Authorization » contenant les bonnes informations.

On peut rejouer le trafic en temps réel ou l’enregistrer dans un fichier et le rejouer à l’envi. Pour ma part la comparaison dans le même contexte temporel me paraissait intéressante j’ai donc rejoué en temps réel. Pour dire à quel point c’est facile à utiliser, il ne m’a fallu que quelques minutes pour obtenir la routine suivante :

goreplay --input-raw :80 --output-http="http://1.2.3.4:80" -http-original-host -http-set-header "Authorization: Basic sDgfo6R4V6SZBybziwMTg="

output-http permet d’indiquer la destination, http-original-host permet de conserver le domaine dans les requêtes, et http-set-header, hein, pas besoin de vous faire une photo. Pour le reste, je vous laisse fouiller la documentation pour trouver votre bonheur.

Attention cependant : si goreplay sait envoyer le trafic sur une destination https, par nature il ne sait pas capturer le même trafic à la source HTTPS puisque il est encore chiffré à ce moment-là. Il n’y a pas de solution magique dans ce cas, il faut que la terminaison soit effectuée en amont (reverse proxy, load balancer?), ensuite seulement il peut être capturé.

Ses capacités sont intéressantes même si j’ai rencontré quelques petits bugs. Le programme s’arrête quand il n’arrive pas à interpréter une requête pour la rejouer sur la cible. Le fait est que le numéro de version montre bien que le logiciel n’est pas encore parfait, il faut toutefois le suivre de près, fouiller les issues, bref, c’est une solution intéressante et peu coûteuse pour analyser le comportement d’une plate-forme sans passer par un complexe test de montée en charge qui ne peut que simuler le comportement utilisateur d’un point de vue réseau. Il ne teste que la partie réseau ceci dit, il vous faudra d’autres outils pour doser la fiabilité au sein du navigateur