PROJET AUTOBLOG


Le blog de Seboss666

Site original : Le blog de Seboss666

⇐ retour index

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

Les dangers d’un projet géré par une seule personne

vendredi 15 février 2019 à 18:30

Il y a quelques temps, sur Twitter j’ai vu passer quelque chose de vraiment sympa pour ceux qui touchent souvent à du code, à savoir la coloration multiples des différents niveaux de crochets/accolades imbriqués pour faciliter la lecture en cas d’indentation douteuse. J’ai voulu tester ça sur Sublime Text et ça ne s’est pas passé comme prévu. Un symptôme qui peut arriver à d’autres projets.

Un week-end qui s’annonçait bien…

Voilà le Tweet qui m’a saucé :

<script async src="https://platform.twitter.com/widgets.js" charset="utf-8">

La réponse était disponible en déroulant les discussions, ce qui n’est pas toujours évident pour ceux qui découvrent Twitter. Et donc j’ai voulu installer ça sur Sublime Text. Si vous n’avez pas déjà lu mes articles précédents et que vous découvrez cet éditeur de code, il existe un outil de référence pour faciliter l’installation et la gestion des addons, Package Control, qui a un site dédié.

Le plugin que je comptais installer est BracketHighlighter, dont le code est disponible sur Github si vous êtes fondus d’installation à la main. Son développeur recommande toutefois l’installation via Package Control. Cependant, j’ai eu droit à un message d’erreur dégueulasse en cherchant à installer le package :

Package Control: Error downloading channel. HTTP error 404 downloading https://packagecontrol.io/channel_v3.json.

Bon, c’est donc parti pour un peu de debug, de recherches Qwant, je tombe sur la page de troubleshooting (traduit littéralement, fusiller les troubles), qui ne m’aide pas tant que ça mais du coup je sais maintenant qu’elle existe, et comme je n’ai pas plus d’infos je me tourne vers le forum. Je passe sur le fait qu’il repose sur cette horreur de Discourse et tombe sur LE sujet qui m’explique et m’apprend beaucoup trop de choses d’un coup.

« Vous êtes le maillon faible »

J’ignorais complètement le fait, mais via les discussions je découvre que cet utilitaire repose sur les épaules d’une seule personne. Site web, serveur qui héberge le dépôt pour les extensions, développement du plugin, et donc financement de tout ça. Et il s’avère que le serveur en question était arrivé à saturation, ce qui a au passage corrompu la base de données. Avant d’arriver à saturation, la taille de la base avait rendu sa routine de sauvegarde inopérante. Le serveur avait été installé il y a plus de six ans, tout à la main.

La résolution a pris du temps, puisqu’elle a pris la forme d’un nouveau serveur et la définition de playbooks Ansible pour permettre de futurs déploiements plus rapides et automatisés. Il aura également fallu reproduire plusieurs semaines de mises à jour et d’ajouts de plugins à la base de données puisque la sauvegarde ne fonctionnait plus.

Je n’ai pas vu de message insultant sur l’incompétence du gars ou sa lenteur à réparer, ce qui me rassure quand je vois les torrents de merde qui se déversent fréquemment (regardez les commentaires d’applications mobiles gratuite quand une nouvelle version fout la merde, les humains sont vraiment des déchets), que du soutien voire même des conseils d’amélioration, et la question notamment du support financier a été amenée sur le tapis. C’est là qu’on apprend que si l’auteur a démarré ça de manière complètement indépendante, il travaille maintenant pour Sublime HQ, qui développe Sublime Text. mais le projet est resté complètement indépendant et maintenu sur du temps libre. La revue et la publication des extensions sur le channel sont tout de même à la charge de deux autres personnes, mais le coût financier principal est effectivement dans les mains d’un seul homme, qui investit mille dollars par an dans l’infrastructure. Et prévoit d’en mettre un peu plus pour pouvoir faire de nouveau des sauvegardes fiables. C’est toujours mieux qu’un budget clopes vous me direz, mais tout de même…

La difficulté à gérer un projet seul

On le voit, si apparemment le budget n’est pas tant un problème, gérer seul sur son temps libre limité n’a pas été de tout repos quand ça a pété : plusieurs jours pour restaurer les services, devoir tout remonter sur du neuf parce que l’ancien était saturé, et point valable pour tout hébergement géré de manière indépendante, quid de la sécurité ? (au moins ça tourne pas sur du WordPress, mais apparemment sur une application Python)

Je comprend très bien la situation, hébergeant moi-même ce blog et ayant beaucoup moins de temps libre, aussi bien pour l’écriture que la maintenance, c’est difficile. Et Arowan est aussi bien moins disponible qu’avant pour maintenir l’infrastructure quand je ne suis pas là. Sans rentrer dans trop de détails, on est toujours en Proxmox 4, la VM du blog est toujours en Debian 8 (les travaux pour sa remplaçante sont au point mort, par flemme), je dois passer une fois par semaine à peine sur les différentes VMs pour vérifier/faire les mises à jour, car je n’ai jamais pu faire en sorte qu’unattended-upgrades fonctionnent sur celles-ci alors que ça tourne nickel sur mon cluster swarm, je dois toujours monter l’environnement test du blog sur ce dernier pour bosser sur une refonte, bref, je pourrais continuer comme ça longtemps sur les projets au ralenti voire en pause à cause de ce temps libre qui manque (sans parler de la motivation parfois).

Et je ne pense pas être le seul dans ce cas, donc quand on voit des sujets discutant d’automatiser un max de choses, ou de reposer sur des prestataires de services qui s’occupent d’un max de choses pour vous, il n’y a rien de surprenant, c’est d’ailleurs ce qui a fait le succès du « cloud public » et d’outils dit « devops » qui permettent de gagner un max de temps sur les opérations du quotidien.

Quid de la gouvernance « commerciale » ?

Je l’ai dit, le développeur qui a démarré le projet de manière complètement indépendante travaille maintenant pour la société qui développe l’éditeur de code. Pourquoi dès lors ne pas se poser la question de la pérennisation d’un utilitaire qui a certainement contribué au succès dudit éditeur ? Parce que franchement, gérer à la main l’installation et la maintenance des plugins c’est une tannée, et même si manifestement le développeur n’est pas près de lâcher son bébé, si jamais les imprévus de la vie font qu’il doit tout abandonner, comment faire pour que le projet survive correctement ? Parce que si le code de l’utilitaire est open-source, je ne sais pas ce qu’il en est de la partie serveur, et la reprise d’un nom de domaine n’est pas non plus triviale pour s’assurer d’une transparence du côté des utilisateurs.

Parce que bon, des outils open-source chapeautés par des sociétés, n’en déplaise aux extrémistes, c’est très, très, très courant. Canonical, ça vous dit quelque chose ? Ben ce n’est pas une association loi 1901, mais une société qui vit de contrats de supports et de déploiement sur la base d’une distribution Linux développée en source ouverte et fournie gratuitement au public (leurs contributions aux projets « de base » sont plus nombreuses qu’auparavant). Gnome et une palanquée d’autres projets ne seraient pas ce qu’ils sont sans le support de RedHat, qui fait la même chose que Canonical mais qui a commencé il y a vingt ans. Quand vous regardez les plus gros contributeurs du noyau Linux, il est loin le temps où les développeurs indépendants sur leur temps libre étaient la norme, désormais les contributeurs sont souvent payés par leur employeur pour bosser sur le noyau, et Microsoft est même maintenant un des plus gros contributeurs, un comble !. Malgré tout le noyau reste un logiciel libre accessible à tous, c’est donc que ce modèle est possible.

Pour Package Control on peut donc imaginer pas mal de formes de soutien :

On pourrait évidemment penser à n’importe quel hybride des quelques idées que je viens de proposer. Ne serait-ce que pour conserver un équilibre entre ce qui est géré en interne et ce qui est géré par la communauté, en effet, il ne s’agirait pas de trop fermer l’accès à l’annuaire pour conserver l’intérêt des développeurs tiers pour la création, la publication et l’évolution d’extensions.

Si vous pouvez, soutenez

Je sais que c’est un message qui commence à être vomitif (comme tous les YouTubers qui mendient les pouces bleus et les partages à chaque fin de vidéo), mais il y a effectivement pas mal de formes de soutien et elles sont d’autant plus importantes que le nombre de personnes impliquées sur un projet est restreint (voire ici, unique). Un synonyme de soutien en particulier dans le monde du logiciel libre/open-source, c’est la contribution, et ça, j’en ai déjà parlé il y a un bon moment maintenant mais c’est toujours aussi valide aujourd’hui, presque plus quand on voit les complaintes de certains par rapport au nombre d’utilisateurs passifs qui pose problème sur certains projets.

(crédit image : Mohamed Elhusseiny)

Quelques liens en vrac et en français, 31° édition

mardi 12 février 2019 à 18:30

Je vous avais laissé le dernier épisode pour conclure 2018 avec une grosse, grosse livraison de lecture, après un mois et demis de repos on reprend les chemins de la culture et de la découverte, toujours en français c’est la règle, en essayant de garder une diversité les sujets 🙂

Une avocate a réécrit les conditions d’utilisation d’Instagram comme si elles étaient expliquées à un enfant de 8 ans

Constat amer au Royaume-uni, les parents laissent près de la moitié des enfants de moins de 10 ans s’inscrire sur Instagram, et ça dépasse la moitié pour la tranche 12/15 ans, très inquiétant. D’autant qu’aucun d’entre eux n’a lu et ne peut comprendre les conditions d’utilisations acceptées aveuglément. A la demande du délégué au droit des enfants, une avocate a réécrit ces fameuses conditions d’utilisations pour qu’un enfant de huit ans les comprenne. Sachant qu’à de rares exceptions près, c’est le même schéma pour n’importe quel service, qu’il soit américain ou pas, dès qu’il est gratuit.

Une nouvelle chaine YouTube sur l’univers Linux

Certes orientée sysadmin/devops/cloud (on arrête là le bullshit bingo), cette nouvelle chaîne française lancée par Thomas mérite je pense un petit soutien, en tout cas je la surveille avec attention (abonnement/flux rss toussa). Et je vous invite à en faire de même.

Faut-il passer à la 4K tout de suite ?

J’ai moi-même sauté le pas il y a plusieurs mois à l’occasion d’une bonne affaire, mais j’ai déjà eu l’occasion d’en parler je pense, entre autre sur mon passage contrôlé à Windows 10. Mais la question doit encore se poser, pour plein de raisons, en fonction de vos besoins mais pas que, et cette série d’articles fait bien le tour de cette réflexion qui n’est pas si évidente que ça.

Ce que récolte Google, revue de détail

J’ai déjà évoqué le pouvoir qu’a acquis Google sur notre monde numérique, mais je suis resté volontairement évasif sur les techniques qui lui ont permis de rentabiliser au maximum son ciblage publicitaire car ce n’était pas le cœur de sujet de l’article. Framasoft s’en est de toute façon très bien chargé pour nous, et fait un inventaire en plusieurs articles de ce que l’on a pu apprendre soit officiellement soit officieusement sur la gloutonnerie du géant en matière de tout ce qui peut concerner nos vies, sans même demander la permission pour des éléments parfois très intimes.

Photorec : trier automatiquement la restauration par type d’extensions

Photorec est un outil de récupération de fichiers (pas seulement de photos comme son nom pourrait le laisser penser), que j’ai déjà pu utiliser personnellement avec succès sur une clé USB défaillante. Cet outil dispose de nombreuses options, et ligne de commandes oblige il est possible de faire tout un tas de bidouilles avec, comme ici, trier les fichiers restaurés 🙂

Terminologie DNS

Les erreurs de vocabulaires sont très courantes à propos du DNS, même pour ceux qui pratiquent au quotidien (parler de racine plutôt que d’apex par exemple), et l’âge de la norme qui n’avait jamais été rafraichie n’aide pourtant pas. Via cette nouvelle RFC, qui ne fait que rassembler plusieurs dizaines d’années de spécifications successives (le DNS date de 1983), on a dans un seul document pratiquement tout le vocabulaire et les définitions pour maitriser son sujet, et sans surprise on peut remercier Stéphane Bortzmeyer pour son résumé/traduction 🙂

Comment la France s’est vendue aux GAFAM / Les GAFAM ont gagné, que faire ?

J’ai décidé de compacter deux liens dans le même sujet, puisque le deuxième est une réaction au premier, et que donc pour avoir le tableau d’ensemble il faut lire les deux. Tariq Krim est un entrepreneur français emblématique dans le domaine de l’Internet, premier étranger récompensé par la revue Technology review du MIT en tant qu’innovateur, il a publié une tribune dénonçant l’abandon de nos dirigeants face aux géants américain du numérique, en retraçant toute l’histoire depuis la naissance d’Internet. Qu’on soit d’accord avec le point de vue ou pas, cet historique est très intéressant à connaitre. Et l’article a bien circulé, particulièrement dans les sphères de ceux qui veulent se battre contre ces même GAFAM.

André Ani est un libriste convaincu, militant, contributeur, écrivain de plusieurs ouvrages autour des sujets qu’il affectionne, il a tout naturellement vu et lu cette tribune, et bien qu’il soit d’accord en grande partie avec Tariq Krim, partage et complète son propre point de vue sur la question en allant un peu plus loin, car comme souvent, dénoncer c’est bien, proposer autre chose c’est mieux. Avec un soupçon d’autocritique de quelqu’un qui fait déjà des choses, et c’est toujours appréciable à lire.

Faire adhérer CentOS 7 à un domaine Active Directory

C’est un fait, aussi malheureux soit-il, mais Microsoft Active Directory reste LA solution de référence pour la gestion d’un parc de postes informatiques en entreprise, ce qui impose donc aussi d’utiliser Windows en tant qu’OS sur les postes clients (pc fixes, laptop, tablettes/hybrides). Mais il est tout de même possible de relier des postes sous OS Linux au domaine, et Adrien D nous a documenté tout ça dans une page de wiki très propre. On en est pas encore à se débarrasser du serveur (Samba 4 avance sur pas mal de points mais c’est pas encore ça), mais voilà, dans une certaine mesure, pour les clients, c’est possible.

PAROLE 2 PRO. Romain Vincent de JVH (Jeux vidéo & Histoire)

L’utilisation de jeux vidéos pour l’enseignement à l’école ? Ce professeur et chercheur a tenté l’aventure, et en a discuté pendant un entretien avec l’équipe d’UnDropDansLaMare, sur les avantages, les inconvénients, les limites, le rôle des parents et surtout leur absence, bref, un entretien très intéressant à lire et partager.

15 Mesures de sécurité essentielles à WordPress

Je l’ai rappelé dans mon billet sur Tumblr, WordPress représente désormais plus de 30% du web visible. C’est à la fois une sacrée performance mais un sacré défi pour l’avenir proche, vu que les choix d’Automattic ne vont pas dans le sens de la sécurité, il faut s’armer de son côté pour éviter d’alimenter les nombreux réseaux de zombies commandés par des malfrats qui font payer leur service d’attaque via des sites infectés.

Qui dit popularité dit ressources nombreuses sur le CMS, et c’est sans surprise chez l’une des références françaises de la formation autour de WordPress que l’on peut découvrir ce guide/rappel de sécurité qui a déjà plus d’un an mais qui est plus que jamais d’actualité.

Project Alias : Un hack pour rendre sourd vos assistants personnels

A mon grand regret, les enceintes connectées ont eu beaucoup trop de succès à Noël, permettant aux géants américains d’écouter désormais vos conversations privées directement au cœur des foyers, sans possibilité de contrôle autre que de débrancher l’enceinte quand elle ne sert pas, ce qui est un peu contradictoire avec un outil qui doit être disponible à portée de voix.

Autre point pénible, pas possible de personnaliser l’accroche de commande (OK Google, Dis Siri…), donc n’importe qui peut prendre le contrôle de ce genre d’appareil sans barrière. Le projet Alias est donc doublement utile : ce capot à poser sur les micros d’une enceinte connectée génère du bruit évitant toute écoute passive de la part des sociétés via leurs appareils, mais permettent quand même de les utiliser via une commande personnalisée (le bruit s’arrête alors pour transmettre votre commande à l’assistant).

Et tous les plans et schémas sont en libre accès pour pouvoir adapter aux différentes enceintes du marché. Le modèle prototype pour la Google Home montre que ce n’est pas trop moche par dessus l’appareil qui n’a pas été conçu pour être recouvert à la base, un autre designer saura certainement faire mieux. Ça n’empêchera pas que Google & co enregistre vos questions et les réponses associées, mais au moins ils n’auront plus que ça et pas vos discussions intimes.


C’est qu’on a encore débordé un peu des dix liens dis donc ! Bon pas grave, de toute façon vu la densité, vous avez de quoi faire pendant un bon mois facile, rendez-vous au prochain épisode 😉

Quelques astuces diverses, quinzième

dimanche 10 février 2019 à 10:30

2019 ne fait pas exception aux années précédentes, tant qu’on se servira d’ordinateurs il y aura une foultitudes de petites astuces du quotidien qu’il sera toujours intéressant de découvrir et de partager, alors c’est parti !

De l’importance des options de dd

J’ai offert du SSD dans la famille à Noël cette année. Et j’ai fat le choix de cloner les disques d’origine pour pas me retaper des installations de Windows à la pelle. Pendant mes tests avec deux SSD, je suis surpris de la lenteur du transfert :

sudo dd if=/dev/sdb of=/dev/sdc status=progress
144581120 octets (145 MB, 138 MiB) copiés, 6 s, 24,1 MB/s

En fouillant un peu sur le net, dd propose des options dont une en particulier m’a permis de bien bourrer le débit :

sudo dd if=/dev/sdb of=/dev/sdc bs=128K status=progress
2289303552 octets (2,3 GB, 2,1 GiB) copiés, 12 s, 191 MB/s

Voilà, pour mes besoins ça a suffi, le vrai transfert lui devait durer plus d’une heure avec ces paramètres (correction, il a pris quasiment trois heures pour mon beau-frère, heureusement qu’on était au cinéma), et je suis certain qu’il y a des brutasses pour m’expliquer les formules de calcul pour maximiser encore plus les résultats.

VLC/Qt5 : souci d’échelle pour l’interface

La densité d’affichage a augmenté sur mon nouveau laptop par rapport à l’ancien (14″ Full HD au lieu de 15″ HD ready), ce qui amène des surprises. Des images valant mieux qu’un long discours :

On le voit, les contrôles sont énormes et je vous parle pas des menus. Et la mise à l’échelle d’une appli Qt dans un environnement GTK c’est pas encore ça. Fort heureusement on peut jouer sur ce comportement via une variable d’environnement, ici il faut la poser dans ~/.profile :

export QT_AUTO_SCREEN_SCALE_FACTOR=0

Vous pouvez recharger ensuite votre session, les applis Qt devraient maintenant avoir une meilleure tête. La preuve :

Lister les IPs bannies par fail2ban

fail2ban fait partie des outils que je vous recommande pour apporter une sécurité supplémentaire à votre serveur, en détectant des comportements à partir des journaux système. Pour avoir juste un petit résumé des IPs qu’il a banni, je suis tombé sur cette routine bien affreuse à lire mais tout à fait efficace :

fail2ban-client status | grep "Jail list:" | sed "s/ //g" | awk '{split($2,a,",");for(i in a) system("fail2ban-client status " a[i])}' | grep "Status\|IP list"

Dans mon cas, j’ai découvert un abus de l’utilisation du data saver de Google, qui s’est donc retrouvé bloqué à l’entrée du serveur de mon client.

Exploiter X-Forwarded-For dans IIS

Oui c’est plutôt rare pour être signalé, mais lors de recherches liées à cet entête HTTP très utilisé dans des contextes de load-balancing et de proxyfication, je suis tombé sur cet article qui vous explique comment enregistrer et exploiter cet entête dans IIS, le serveur web phare des plateformes Microsoft Windows. Car on y met généralement l’adresse IP du visiteur.

Pour rappel même si c’est juridiquement un peu flou pour l’instant on est encore obligé de conserver des journaux web d’identification des visiteurs à des fins légales (par exemple en cas d’injure publique, menace de mort, harcèlement…). L’adresse IP du visiteur doit donc être enregistrée correctement.

Comprendre ce qui a merdé dans une requête MySQL

Lors de la mise en place d’une base mysql pour la gestion des utilisateurs de proftpd, on a coincé sur une requête qui vérifie si l’utilisateur est activé et pas expiré :

mysql> SELECT userid, passwd, uid, gid, homedir, shell FROM users WHERE (userid='user1') AND (((disabled!=1 and (NOW()<=expires or expires=-1)))) LIMIT 1;
Empty set, 1 warning (0.00 sec)

Y’a un warning, mais on a pas le détail du warning en question. Ben en fait pour récupérer ce warning c’est tout simple :

mysql> show warnings;
+---------+------+--------------------------------------------------------------+
| Level | Code | Message |
+---------+------+--------------------------------------------------------------+
| Warning | 1292 | Incorrect datetime value: '-1' for column 'expires' at row 1 |
+---------+------+--------------------------------------------------------------+
1 row in set (0.00 sec)

Oui ça parait évident à certains mais je suis pas un expert MySQL/MariaDB non plus même si je me débrouille hein 😀

Réparer pip après l’installation d’azure-cli

Je suis en train d’apprendre à déployer des applis sur un cluster AKS (Azure Kubernetes Services). A l’installation de l’azure-cli via pip, toutes la connectivité HTTPS a été pétée :

$ az aks install-cli
Traceback (most recent call last):
  File "/usr/lib/python2.7/runpy.py", line 174, in _run_module_as_main
    "__main__", fname, loader, pkg_name)
  File "/usr/lib/python2.7/runpy.py", line 72, in _run_code
    exec code in run_globals
  File "/usr/local/lib/python2.7/dist-packages/azure/cli/__main__.py", line 32, in <module>
    az_cli = get_default_cli()
  File "/usr/local/lib/python2.7/dist-packages/azure/cli/core/__init__.py", line 515, in get_default_cli
    help_cls=AzCliHelp)
  File "/usr/local/lib/python2.7/dist-packages/azure/cli/core/__init__.py", line 60, in __init__
    register_ids_argument(self)  # global subscription must be registered first!
  File "/usr/local/lib/python2.7/dist-packages/azure/cli/core/commands/arm.py", line 180, in register_ids_argument
    from msrestazure.tools import parse_resource_id, is_valid_resource_id
  File "/usr/local/lib/python2.7/dist-packages/msrestazure/__init__.py", line 28, in <module>
    from .azure_configuration import AzureConfiguration
  File "/usr/local/lib/python2.7/dist-packages/msrestazure/azure_configuration.py", line 34, in <module>
    from msrest import Configuration
  File "/usr/local/lib/python2.7/dist-packages/msrest/__init__.py", line 28, in <module>
    from .configuration import Configuration
  File "/usr/local/lib/python2.7/dist-packages/msrest/configuration.py", line 37, in <module>
    from .pipeline import Pipeline
  File "/usr/local/lib/python2.7/dist-packages/msrest/pipeline/__init__.py", line 52, in <module>
    from requests.structures import CaseInsensitiveDict
  File "/usr/local/lib/python2.7/dist-packages/requests/__init__.py", line 84, in <module>
    from urllib3.contrib import pyopenssl
  File "/usr/local/lib/python2.7/dist-packages/urllib3/contrib/pyopenssl.py", line 46, in <module>
    import OpenSSL.SSL
  File "/usr/local/lib/python2.7/dist-packages/OpenSSL/__init__.py", line 8, in <module>
    from OpenSSL import crypto, SSL
  File "/usr/local/lib/python2.7/dist-packages/OpenSSL/SSL.py", line 194, in <module>
    if _lib.Cryptography_HAS_SSL_ST:
AttributeError: 'module' object has no attribute 'Cryptography_HAS_SSL_ST'

Pour réparer, c’est un peu dégueu mais ça fonctionne :

$ sudo rm -rf /usr/local/lib/python2.7/dist-packages/OpenSSL/
$ sudo apt install --reinstall python-openssl

Honnêtement vu la quantité de paquets que déclenche l’installation d’azure-cli via pip, j’ai été découragé de chercher la vraie source. Évidemment adaptez le chemin d’installation du dossier OpenSSL à votre version de Python et/ou votre OS 🙂

Délester le trafic des bots, version Nginx

Denis a du prendre récemment des mesures sur son blog pour délester son hébergement de robots un peu méchants qui saturaient les ressources de sa machine. Mais il n’a fourni la directive que pour Apache. Si vous êtes sous Nginx, vous pouvez utiliser cette règle :

location / { 
  if ($http_user_agent ~ ""(; |^|@|/|.)?(Ahrefs|Cliqz|Dot|linkfluence|MJ12|[mM]oreover|Nuzzel|[oO]wlin|Rewyer|rogerbot|semantic-visions|Semrush|Slack|[sS]ociallymap|Superfeedr|ubermetrics|YaK)([bB]ot)?(/| |-|.)?"") {
    rewrite ".*" /"https://feeds.feedburner.com/dsfc?format=xml" redirect;
  }
}

Je crois qu’on peut se passer du location, mais si vous avez déjà un location / vous pouvez juste ajouter le « if » dedans 😉

Docker : réutiliser les volumes d’un container existant

La formulation peut être étrange, mais vous allez comprendre. J’ai enfin monté une copie de mon blog sur mon cluster Docker Swarm pour pouvoir faire mes essais de modifications et préparer le futur. Lors d’une migration de WordPress, un outil devenu vite incontournable est wp-cli, qui permet notamment du traitement de masse sur la base de données via la configuration du blog. Sur un hébergement classique on se met à la racine du WordPress et on lance la commande. Mais dans la configuration Docker, on a pas accès à la racine puisqu’elle est dans le container, la seule persistance qui reste est le wp-content.

Docker permet cependant d’exécuter un autre container à partir des données d’un container existant, et c’est parfait pour le cas de wp-cli pour simuler justement le lancement depuis le wordpress installé dans le container voisin. La syntaxe n’est pas évidente, mais elle sauve une vie :

docker run -it --rm --volumes-from <container-id> --network container:<container-id> wordpress:cli search-replace "://old.domain.tld" "://new.domain.tld"

A exécuter sur le nœud qui exécute le container WordPress (si vous avez plusieurs containers, n’importe lequel conviendra). Et dans mon cas, je sais déjà que mon thème va me poser des problèmes pour le futur via des alertes PHP…

grep : concaténer plusieurs filtres d’exclusion ou d’inclusion de recherche

Récemment, j’ai tenté d’obtenir du sens et comparer un certain trafic de journaux web à une semaine d’intervalle. J’ai commencé à empiler les grep -v « blabla » |grep -v « blublu », facile pour itérer sur les exclusions, mais il y a plus lisible (et potentiellement plus rapide et moins consommateur) :

zcat access_log.20.gz |egrep -v ".css|.js|.jpg|.gif|.png|favicon.ico|POST" |wc -l

egrep (qui permet de déclencher le mode expression régulière), et des pipes qui séparent les modèles à exclure. Évidemment vous pouvez procéder de même pour inclure des modèles à rechercher.

Twidere : récupérer les fonctionnalités de messages privés

L’application Twidere sur Android est sympathique, mais le développement a cessé depuis un peu plus d’un an. Entre temps, Twitter a fait le gros dégueulasse avec son API et j’ai découvert que les messages privés n’étaient plus mis à jour dans l’application. En fouillant les issues Github, j’ai trouvé une solution qui a fonctionné pour moi, à savoir modifier les clés d’API dans les paramètres (settings), réseau (icône en forme de terre), Avancé, Paramètres API par défaut :

Clé client (Consumer key) : 3nVuSoBZnx6U4vzUxf5w
Mot de passe client (Consumer secret) : Bcs59EFbbsdF6Sl9Ng71smgStWEGwXXKSjYvPVt7qys

Il faut ensuite supprimer le compte et se relogger dessus, et ça rétablit le service (les messages privés de groupe sont même dispos !). Si ça ne fonctionne pas pour vous, le problème vient peut-être de la clé, auquel cas d’autres sont disponibles sur cette page github.


Voilà, je suis content de cette fournée, elle ne concerne pas que de la ligne de commande, on couvre de l’application de bureau, de l’application Android, et même du Windows, comme quoi tout est possible 🙂