Table des matières

2025/04/13 (hub infra)

Heure de début : 14h

Présences : Tharyrok, Célo, HgO

BBB : https://talk.domainepublic.net/b/neu-er0-cbd-8in

Météo

Moment informel durant lequel on exprime en peu de mots comment on se sent et si on a une attente forte pour la réunion. Ce n'est pas un moment de discussion mais d'expression individuelle et ce n'est pas obligatoire :-)

Fin: pas trop tard si possible → 16h30

Attente(s) forte(s)

Si l'une ou l'autre personne exprime une attente forte, merci de vous en occuper en priorité ou de la noter dans le hub ou dans un point approprié.

Anciens todo

Trouver une date pour :

Suivi des MR

Bah c'est fait !

Hub services

Migration vers LeBureau.coop

Il y a un premier batch en cours, il faut juste payer. On aura accès à une interface graphique d'une zone dns via PowerAdmin.

Envoi de mails

Présentation de stalwart que Tharyrok a mis pour ces propres mail.

Dans les solutions actuelles de mails, il n'y a pas beaucoup d'acteurs chouette qui font tout à notre place. Il y a mailcow par exemple, mais il faut docker. Tharyrok a testé Stalwart sur son infra.

La partie dashboard et monitoring n'est pas inclue dans la version gratuite mais ce n'est pas très grave.

C'est juste un binaire, qui fait autant la partie envoi de mail que réception de mail. On peut utiliser rockdb pour le stockage.

Le stockage peut se faire de manière différentes pour chaque brique (recherche mail, antispam, utilisateurs, mails).

Lit les rapports dmarc ! Mais pas que ceux-là.

Tout est expliqué ici : https://stalw.art/docs/get-started

Autrement dit, cela implémente tout ce qui est nécessaire aujourd'hui pour faire du mail avec les GAFAM.

Quand on envoie moult mails d'un coup, il va aussi faire attention à ne pas spammer le même serveur mail.

Neutrinet aimerait quitter Hetzner et que les mails soient hébergés dans le cluster patata. Mais gérer des mails en installant tous les composants, c'est pénible.

Pour l'envoi, on peut dire à Stalwartz qu'un compte mail authentifié peut envoyer depuis n'importe quel adresse mail du domaine. Il n'y a pas de notion de liste d'envoi, dans le sens où un compte mail ne peut pas envoyer depuis n'importe quelle adresse mail déjà prise (sauf si on autorise tout le domaine)

C'est un cas d'usage qu'on a dans Zammad, où on définit un compte mail par service (nextcloud, backoffice, etc.) mais on envoie depuis une adresse commune (hub-admin, hub-cube, etc.)

Pour la config, on la crée une première fois, mais ensuite on n'y touche plus parce que Stalwart peut la modfiier.

Comme Tharyrok l'a fait pour sa propre infra, il y a déjà tout qui est écrit pour le playbook de Neutrinet.

Cela intègre un outil de diagnostique pour vérifier les configs mails.

Il n'y a pas d'objection pour utiliser Stalwart.

Keycloak VS authentik

Red Hat qui s'occupe du développement de Keycloak n'a pas la bonne réputation de faire attention aux versions open source de ces produits et casse régulièrement les choses.

À l'époque où on parlait du SSO il n'y avait pas beaucoup d'acteurs modernes. Aujourd'hui, la situation a un peu changé. D'où la proposition de questionner le choix de l'époque vers authentik.

Une autre solution serait aussi: https://github.com/authelia/authelia

Il n'y a pas d'objection pour relancer la discussion sur l'outil de SSO. Par contre, Tharyrok en a besoin pour mettre en prod Ketupa, l'idée est donc de déployer un outil (Keycloak, Authentik, osef) en sachant que ce sera du temporaire (avec du ldap derrière pour la gestion des utilisateurs par exemple).

TODO: faire la liste des SSO d'aujourd'hui TODO: neutriton le retour du SSO

Reverse DNS

Nous ne pouvons pas gérer les reverse dns de 80.67.191.0/24 car nous n'avons pas de serveur dns config. Aujourd'hui le ripe demande d'avoir deux serveurs DNS ce que nous n'avons pas et de ce fait, on ne peut pas ajouter les NS pour la zone 191.67.80.in-addr.arpa

NetBOX

Netbox est un IPAM, c'est-à-dire qu'il peut gérer l'attribution de nos IP, et donc de renseigner la reverse ip.

NetBox enverra une notif via un webhook à octoDNS, et tout sera automagique et il y aura des licornes partout.

octoDNS

octoDNS est un projet pour gérer des zones DNS à partir d'une source et de synchroniser vers un provider. Dans notre cas la source pourrait être netbox et le provider rfc2136.

L'idée ce serait de répliquer la zone vers “toutes” nos probes hébergées par les copains de la fédé.

TODO: sudo Tharyrok Faire les MR pour les trois rôles (knot, netbox, octodns)

Migration S3

Nous utilisons ceph pour le stockage des vm, nous utilisons un autre cluster ceph pour le stockage des bucket s3. Les données des bucket s3 sont dupliquées 9 fois (3 vm dupliqué 3 fois). La proposition c'est d'utiliser le cluster ceph des VM pour aussi S3.

TODO : check rclone pour les backups → a priori installé sur les applications

PgBouncer

Aujourd'hui nous utilisons HAProxy pour rediriger les requêtes SQL vers les PostgreSQL. Nous avons plusieurs applications qui utilisent le mode pooler qui n'est pas compatible avec HAProxy.

Mon Apr  7 23:57:52 2025 : Error: rlm_sql_postgresql: Failed reading input: server closed the connection unexpectedly 	This probably means the server terminated abnormally 	before or while processing the request.

La proposition c'est d'utiliser confd (lit l'état du cluster via etcd) pour écrire la config de PgBouncer. PgBouncer sait gérer le mode pooler et faire le load balencing pour les secondary. On a plusieurs applications qui gèrent le mode pooler.

https://github.com/patroni/patroni/tree/master/extras

Le risque n'est pas énorme car c'est retirer quelques lignes de HAProxy, qu'on peut facilement remettre en cas de soucis. On peut aussi commencer par configurer le flux lecture pour ensuite configurer le flux écriture.

TODO: Terminier le rôle PgBouncer & confd

Configurer Nextcloud pour utiliser les replicas

Depuis la version 29, on peut mettre des réplicas en read only mais on ne peut pas utiliser de port. Or, notre config utilise le port 5433, qui est différent du port pour le serveur primary (5432).

https://docs.nextcloud.com/server/latest/admin_manual/configuration_database/replication.html

Mais on pourrait mettre deux IP sur le keepalive. L'une qui est utiliser pour haproxy et primary, l'autre pour pgsql secondary.

Monitoring

HgO aimerait retravailler les dépendences entre les alertes, pour éviter que lorsque le switch est down on ait trente mille alertes sur les probes http, etc.

Mais Tharyrok est en train de travailler sur la migration vers node-exporter / vector, donc les noms des alertes vont changer.

TODO: Début juin: Retravailler les dépendences entre les alertes → HgO

Hub DC

Visite du datacenter

Le 26 avril, on y va à 10h, et on invite les gens vers 11h30.

HgO et Célo ont des contacts intéressé·es pour visiter le datacenter.

Hub Network

Radius

Received Access-Request Id 126 from 109.69.216.29:57457 to 10.0.11.40:1812 length 356
  Service-Type = Framed-User
  Framed-Protocol = PPP
  NAS-Port = 15746666
  NAS-Port-Type = Ethernet
  User-Name = "p1f9bd1@NEUTRINET"
  Calling-Station-Id = "BC:24:11:D5:FE:0E"
  Called-Station-Id = "HYPERLINE-02MAR0-GPON"
  NAS-Port-Id = "XE02-VL211-02MAR0-P0BIS"
  MS-CHAP-Domain = "NEUTRINET"
  Acct-Session-Id = "81004668"
  ADSL-Agent-Circuit-Id = 0x4630324d415230303030362065746820312f312f31332f31362f35342f312f313a3130
  MS-CHAP-Challenge = 0xc7ef962bc5cec9ca
  MS-CHAP-Response = 0x0101000000000000000000000000000000000000000000000000963ebcae440b90909b865cb5a8a8e14b2180c872521754e4
  NAS-Identifier = "agg01.pxmar.bra.be.verixi.net"
  Mikrotik-Realm = "NEUTRINET"
  NAS-IP-Address = 100.64.57.40
  Message-Authenticator = 0xb12de3f453aabc334f248373f08ec513
  Event-Timestamp = "Apr  8 2025 10:11:32 UTC"
  Proxy-State = 0x3333

Sent Access-Accept Id 126 from 10.0.11.40:1812 to 109.69.216.29:57457 length 176
  Framed-IP-Address = 80.67.191.6
  Framed-IPv6-Prefix = 2001:913:1d00:600::/64
  Delegated-IPv6-Prefix = 2001:913:1d00:600::/60
  Service-Type = Framed-User
  Framed-Protocol = PPP
  Framed-IP-Netmask = 255.255.255.255
  Port-Limit = 1
  Framed-MTU = 1500
  Acct-Interim-Interval = 60
  MS-CHAP-MPPE-Keys = 0x000000000000000033876c785fbf72a57d33ecc557462ef0
  MS-MPPE-Encryption-Policy = Encryption-Required
  MS-MPPE-Encryption-Types = 4
  Proxy-State = 0x3333
  Session-Timeout := 49708

Received Accounting-Request Id 126 from 109.69.216.29:57457 to 10.0.11.40:1813 length 362
  Service-Type = Framed-User
  Framed-Protocol = PPP
  NAS-Port = 15746408
  NAS-Port-Type = Ethernet
  User-Name = "p61b8df@NEUTRINET"
  Calling-Station-Id = "08:55:31:FA:75:4E"
  Called-Station-Id = "HYPERLINE-02GIL0-GPON"
  NAS-Port-Id = "XE02-VL164-02GIL0-P0BIS"
  MS-CHAP-Domain = "NEUTRINET"
  Acct-Session-Id = "81004567"
  ADSL-Agent-Circuit-Id = 0x46303247494c30303030372065746820312f312f30342f31332f33372f312f323a3130
  Framed-IP-Address = 100.126.255.5
  Acct-Authentic = RADIUS
  Event-Timestamp = "Apr  8 2025 10:12:09 UTC"
  Framed-IPv6-Prefix = 2001:913:1000:500::/60
  Acct-Session-Time = 36721
  Idle-Timeout = 0
  Session-Timeout = 86392
  Acct-Input-Octets = 184624542
  Acct-Input-Gigawords = 0
  Acct-Input-Packets = 771960
  Acct-Output-Octets = 766528680
  Acct-Output-Gigawords = 0
  Acct-Output-Packets = 1048178
  Acct-Status-Type = Interim-Update
  NAS-Identifier = "agg01.pxmar.bra.be.verixi.net"
  Acct-Delay-Time = 0
  Mikrotik-Realm = "NEUTRINET"
  NAS-IP-Address = 100.64.57.40
  Proxy-State = 0x3336

Le premier message, c'est quand on lance la session pppoe. A cela, Neutrinet répond une adresse IP, le préfix IPv6…

Acct-Interim-Interval → permet de demander à Verixi toutes les minutes le nombre de paquets envoyés et reçus pour cette connexion.

A minuit UTC, on force une reconnexion, ça permet d'avoir des données sur la journée. Même s'il y a eu trois connexions dans la journée, la dernière va se terminer à minuit et il suffira de faire la somme des deux autres pour avoir le total.

https://grafana.neutrinet.be/d/behzqyw8iwdtsd/ppp-session

Collecte

On estime environ 2mbps par foyer pour la bande passante. On avait estimé beaucoup plus parce qu'on devra aussi gérer la bande passante pour les occupations de sans papiers.

Avec ou sans chiffrement

Il faut trancher cette question. On a eu des retours de la fédé, mais ce n'est pas le même contexte (notamment avec la CCJ). La CCJ peut être sollicitée pour mettre des lignes sur écoute. (En France, il y a un autre dispositif.)

Comme pour le moment, on n'a jamais eu le cas, ni Verixi, il est possible qu'ils ne s'adressent qu'à Proximus - puisqu'on utilise le réseau Proximus, Proximus voit d'emblée passer le traffic. Il est possible que Proximus mette les ligne sur écoute même lorsque ce n'est pas ses IP. Mais ça voudrait dire que le prestataire technique qui a les IP n'est pas au courant. En soi, ça ne modifie pas le réseau, ça ne fait que copier les paquets.

Se prémunir de cela est très couteux en terme de chiffrement. Cela veut aussi dire que si Proximus ne traite pas cela, ça revient vers nous et on doit le gérer.

Il faut se décider en amont si on veut implémenter ou non le chiffrement. Cela demande vraiment beaucoup plus de performences. Ce n'est pas quelque chose qu'on peut facilement changer par la suite car il faudrait changer le dimensionnement de l'infra. Il y a aussi des contraintes sur les équipements.

Donc, il y a plusieurs axes de réponses à cela :

Donc techniquement et politiquement, c'est très intéressant, mais on n'a probablement pas les ressources pour proposer des connexions chiffrées à tout le monde. Mais même si on le fait juste pour 10 personnes, ce n'est pas quelque chose qu'on peut absorber pour le moment. Ou il faudrait racheter des serveurs plus puissants. Il y a aussi des configs réseau à changer (les vrf notamment).

On ne va pas faire le chiffrement des lignes internet pour les raisons évoquées plus haut.

Gestion des stocks CPE

À voir avec le hub admin, mais une proposition serait d'avoir en stock des CPE Mikrotik, comme on le fait actuellement pour les briques internet, à prix coûtant, mais de dire qu'il y a moyen de réutiliser son vieux routeur (fritzbox etc.) voire proposer du matériel de récup.

À voir ce qu'on fera des connexions sans pap, si on leur vend ou fait dons des Mikrotik futurs.

Avec ou sans gestion des CPE

Est-ce que Neutrinet s'occupe de la maintenance logicielle des CPE ? Il y a ce logiciel : https://openwisp.org/

À rediscuter

Generation accounting

Est-ce qu'on mesure la bande passante au niveau des CPE ou de Radius ? Là, il faut voir ce qui est le plus fiable.

Comment lier les numéros des factures entre celles émises par Neutrinet, celles émise par Verixi, etc. Est-ce qu'il faut tenir compte de la bande passange ? Est-ce que le stock doit être géré par Odoo ? → a priori oui est la source de vérité mais Odoo ne gère pas tout. En fonction de ça, ça change ce qui doit être fait au niveau développement pour la collecte.

Si Odoo est la base de vérité comptable, il faut voir quels liens on peut faire avec netbox qui serait la base de vérité technique. Il faut voir comment les outils peuvent se parler, ce qui peut être automatisé (ou fait manuellement).

OpenVPN

Utilisation de Radius pour faire tout ce qui est identification et accounting. Et donc remplacera à terme ISPng.

Mais on discutera de ce point la prochaine fois.

WireGuard

Parce qu'il y a une demande, et techniquement ce sera faisable de le faire, donc à discuter si on voudra le faire.

Idem, on en discutera la prochaine fois.

NFtables Flowtables

Tharyrok a passé du temps à optimiser le réseau de Neutrinet pour absorber le traffic de la collecte.

On reporte.

Monitoring via collectd 100PAP

https://github.com/prometheus/collectd_exporter

On avait trouvé collectd qui était suffisamment léger pour être installé sur les antennes.

Le problème est qu'on n'avait pas moyen d'envoyer l'info vers le serveur (mode push, alors que par défaut c'est pull). On avait exploré l'idée d'un tunnel VPN, mais un peu galère.

L'idée ici est d'envoyer les metrics collectd sur un serveur collectd dans notre infra, et ce serveur collectd converti en format prometheus, tada, youpi, voilà.

Il y avait ce pad pour la doc des antennes (brouillon) : https://doc.neutrinet.be/flash-mikrotik-cap-xl et ce repo pour la doc finale https://gitlab.domainepublic.net/Neutrinet/sans-papiers/-/tree/main/mikrotik

Hub Dev

Hub Chez Mémé

Prochaine réunion

Neutriton sur la question du suivi des différentes versions logicielles: 8/06 à 10h chez Tharyrok (Monolith)

Inventaire des switchs et serveurs: 18/05 au Caldarium vers 10h

Neutriton SSO le retour: 28/06 à 10h chez Tharyrok (Monolith)

Neutriton gestionnaire des mots de passe: On definit une date au prochain réunon infra

Prochaine réunion: 21/05 à 18h30 chez Célo (Crainhem)

Garde-Pad : Tharyrok

Météo de fin

Moment informel durant lequel on exprime en peu de mots comment, à titre personnel, la réunion a été vécue que ce soit positif ou négatif. Si une ou plusieurs tension est née durant la réunion, il est peut-être nécessaire d'envisager l'une ou l'autre réunion pour y remédier.