L'IPv6 est arrivée !

Monday, 17 April 2023
|
Écrit par
Grégory Soutadé

Il y a quelques jours, j'ai eu une coupure d'Internet d'environ 5h... De quoi râler auprès de son opérateur ! Perturbation générale de tous les clients. Il vaut mieux que soit ainsi plutôt qu'un incident isolé, potentiellement long à résoudre. Une fois Internet reconnecté, quel plaisir de voir dans l'interface de la box une adresse IPv6 ! Après quelques soucis de configuration réseau, tous les services sont désormais joignables via cet adressage !

Qu'est-ce qu'IPv6 ?

C'est une bonne question, car en général on veut simplement que notre connexion internet fonctionne sans avoir à tripatouiller les tréfonds de la configuration réseau. IPv6 est le "successeur" d'IPv4. Il a été spécifié en 1998 et normalisé en 2017. L'objectif est de dépasser les limitations actuelles des fameuses adresses "IP" (Internet Protocol). Cette adresse est attribuée de façon statique (toujours la même) ou dynamique aux appareils qui se connectent à un réseau ethernet (dont Internet). Elle permet le routage du trafic réseau. Au quotidien, nous ne manipulons pas directement ces adresses, mais plutôt des identifiants textuels (l'adresse d'un site web) pour naviguer. Ces identifiants sont traduits automatiquement en adresses IP par les serveurs DNS (Domain Name Server). La gestion mondiale des adresses est confiée à la société américaine (à but non lucratif) IANA qui dépend de l'ICANN (américaine également). Elle est chargée d'attribuer des blocs d'adresses IP à différents registres régionaux (1 par continent), qui attribuent eux même des sous-ensembles aux registres locaux (la plupart du temps des opérateurs télécom), attribuant individuellement (à leurs clients) une ou plusieurs adresses.

Les adresses IPv4 sont constituées de 4 octets (32 bits), chaque octet ayant une valeur comprise entre 0 et 255 (exemple : 205.196.32.55). Le nombre d'adresses total est donc de ~4 milliards. Cela peut paraître énorme, mais aujourd'hui où tout le monde a un ou plusieurs appareils connectés en même temps, on arrive vite à saturation. Surtout qu'il faut également compter les adresses nécessaires pour les serveurs (web) et les objets connectés. Les adresses IPv6 sont elles composées de 8 octets (128 bits), amenant ainsi le nombre total à plus de 340 sextillions (ou 34 * 10^37). Elles ont une notation différente, utilisant l'hexadécimal en séparant les blocs de deux octets par ":" (exemple : 2003:e8:2705:ac00:15a5:4e85:fe11:47a3). Pour améliorer la lisibilité, on utilise une forme compressée où les 0 en tête sont supprimés (au niveau du second bloc e8 par exemple). On peut également fusionner tous les blocs avec des 0 consécutifs, comme sur cet exemple : 2a02:4780:12::28 qui correspond en réalité à 2a02:4780:0012:000:0000:0000:0000:0028. Malgré cette version condensée, elles restent pourtant beaucoup moins lisibles.

Alors pourquoi ne pas avoir basculé plus tôt ? Le matériel est compatible depuis de nombreuses années, néanmoins IPv6 n'est pas qu'une simple augmentation de la taille des adresses. La norme apporte également des fonctionnalités complexes à implémenter (cf la coupure réseau !). D'autant plus qu'il faut faire cohabiter les deux piles réseau sur un même système durant la phase de transition. Mais, face à la pénurie mondiale d'IPv4 et la pression des institutions, les opérateurs n'ont d'autres choix que de migrer (progressivement). D'après mes premières statistiques (1/2 mois), il y a environ 20% de connexions utilisant IPv6.

IPv6 sur une box Bouygues Telecom (sagem F@st5330b)

Par défaut, le trafic IPv6 entrant est bloqué par le routeur et ce, même si le pare-feu est désactivé. C'est une bonne mesure de protection, mais qui pourra poser problème quand on souhaite exposer des services sur le web. Voici la procédure complète pour ouvrir les ports pour un serveur GNU/Linux (on pourra également passer en politique "faible" pour tout exposer sur toutes les machines, mais cela reste dangereux) :

  1. Désactiver la délégation de préfixe sur la box
  2. Activer le DHCPv6 sur son interface réseau (ici eth0), il faut ajouter une ligne au fichier /etc/network/interfaces :

    iface eth0 inet6 dhcp

  3. Redémarrer le serveur ou uniquement la partie réseau

    sudo service networking restart

  4. Attribuer une IP statique au serveur (n'est actuellement pas pris en compte)

  5. Récupérer la nouvelle adresse

    sudo dhclient -6 eth0

  6. Vérifier que l'IPv6 du serveur correspond à celle de la configuration de la box

    sudo ip a

  7. Ajouter des règles de pare-feu pour tous les services à exposer (utiliser la fonctionnalité "dupliquer" pour aller plus vite)

  8. Configurer le serveur DNS en ajoutant une règle AAAA
  9. (Optionnel) Tester les règles via ce site

Mise à jour automatique du DNS Gandi

C'est un script que j'utilise depuis 5 ans. Le voici mis à jour pour supporter IPv6. Il est disponible ici

#!/usr/bin/env python3
#-*- encoding: utf-8 -*-
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.

import requests
import json
import re
import socket

# Config
domain="soutade.fr"
API_KEY = "YOUR-KEY"
livedns_api = "https://dns.api.gandi.net/api/v5/"
dyndns_url = 'http://checkip.dyndns.com/'
headers = {
    'X-Api-Key': API_KEY,
}

A_RECORD_NAME="@" # Record of A type

def get_ipv6():
    s = socket.socket(socket.AF_INET6, socket.SOCK_DGRAM)
    # DNS Google
    s.connect(('2001:4860:4860::8888', 1))
    return s.getsockname()[0]

def get_ipv4():
    response = requests.get(dyndns_url)
    if response.ok:
        pattern = re.compile('[^:]*(\d+\.\d+\.\d+\.\d+)')
        result = pattern.search(response.text, 0)
        if result == None:
            print("No IP found")
            exit(1) 
        else:
            return result.group(0).strip()
    # Bad gateway
    elif response.status_code in (502,504):
        exit(0)
    else:
        print("Connexion error")
        response.raise_for_status()
        exit(1)

def update_gandi_record(domain_records_href, target, current_ip):
    # Get recorded IP
    response = requests.get(f'{domain_records_href}/{A_RECORD_NAME}/{target}', headers=headers)

    if (response.ok):
        record = response.json()
    else:
        print("Failed to look for recorded IP")
        if response.status_code != 502: # Bad gateway
            response.raise_for_status()
        exit(1)

    print('Old IP : %s' % (record['rrset_values'][0]))

    if current_ip != record['rrset_values'][0]:
        record['rrset_values'][0] = current_ip

        # PUT new IP
        response = requests.put(f'{domain_records_href}/{A_RECORD_NAME}/{target}',
                                headers=headers, json=record)

        if (response.ok):
            print("IP updated")
        else:
            print("something went wrong")
            if response.status_code != 502: # Bad gateway
                response.raise_for_status()
            exit(1)

        return 34 # IP updated return !!
    return 0


# Get current IP
current_ip = get_ipv4()
print(f'Your Current IP is {current_ip}')

# Retrieve domains address
response = requests.get(livedns_api + "domains", headers=headers)
if (response.ok):
    domains = response.json()
else:
    if response.status_code != 502: # Bad gateway
        response.raise_for_status()
    exit(1)

domain_index = next((index for (index, d) in enumerate(domains) if d["fqdn"] == domain), None)

if domain_index == None:
    # domain not found
    print("The requested domain {domain} was not found in this gandi account")
    exit(1)

domain_records_href = domains[domain_index]["domain_records_href"]
ret = update_gandi_record(domain_records_href, 'A', current_ip)

current_ip = get_ipv6()
print(f'Your Current IP is {current_ip}')
domain_records_href = domains[domain_index]["domain_records_href"]
ret |= update_gandi_record(domain_records_href, 'AAAA', current_ip)

exit(ret)

Athlé Expliqué

Thursday, 06 April 2023
|
Écrit par
Grégory Soutadé

Il y a quelques jours, Nicolas Dayez m'a contacté pour écrire un article invité sur son site Athlé Expliqué. Il est, comme qui dirait, un mordu de course à pied depuis maintenant 10 ans. La performance appelle la performance et elle est devenue son objectif principal. Ainsi, on ne peut être qu'admiratif devant ses records personnels (toutes épreuves confondues), surtout quand on sait tout le travail qu'il faut abattre pour en arriver là :

  • 3'27 (34'30) sur 10km
  • 3'39 (1h14) sur semi-marathon
  • 3'48 (2h40) sur marathon

Il est clair que Nicolas est drogué à la course ! Avec des temps pareil, il est facile de prendre la grosse tête, d'être imbu de sa personne, pourtant il n'en est rien. Au contraire, Nicolas a mis en place son site/blog pour partager sa camepassion, quel que soit son niveau. Il décortique sous forme de fiche tous les aspects qui touchent de près ou de loin à son sport favori. Son expérience lui permet également de proposer des services de coaching (payant) pour booster ses performances (le coaching n'est qu'une activité secondaire).

Après avoir parcouru son blog, je me suis rendu compte que nous avions la même philosophie (mais pas les mêmes jambes !) de partage. J'ai donc tout naturellement accepté de rédiger un article sur le thème des courses solidaires, qui est désormais en ligne.

Courses de printemps 2023

Sunday, 02 April 2023
|
Écrit par
Grégory Soutadé

Toutes les bonnes choses ont une fin. Malheureusement, ce fut le cas pour La foulée des Baous, une course que j’appréciais particulièrement pour sa cause, sa bonne ambiance, la mobilisation de tout une village et son accessibilité au plus grand nombre. Il faut dire que mener un combat sur un temps long est difficile, d'autant plus quand le COVID passe par là. L'association Longo Trail qui avait repris le flambeau l'année dernière l'a transformée en Trail des Baous. Une épreuve plus difficile avec pas moins de 650m de dénivelé positif sur le parcours de 13km et 2400m sur celui de 42km... Ça fait partie de l'ADN du club, mais ne rentre pas dans mon cadre.

RoureTrail (du camp Romain)

Affiche trail du Rouret

Le dimanche 26 mars 2023 s'est déroulé la première édition du RoureTrail. Les trois formats (9km et 16km + rando 9km) proposent de monter jusqu'au camp Romain situé au dessus du village du Rouret. Les bénéfices serviront à financer du matériel et des sorties scolaires, ce qui n'est pas étonnant quand on sait que la course est organisée par les parents d'élèves du Rouret. J'y suis allé pour découvrir le chemin jusqu'au camp et ce fut clairement une très belle surprise sur tous les points : le circuit offre une multitude de surfaces (goudron, pierres, sentiers), particulièrement sur le 9km qui est moins "caillouteux" et plus boisé. Les bénévoles sont présents tout au long du parcours, qui est de surcroît extrêmement bien balisé. La descente finale, légèrement technique, fut un vrai plaisir et, cerise sur le gâteau, la brasserie locale CraftAzur a offert une bière (Riviera Pale Ale) à tous les participants ! Même en tant que non amateur de bière, je l'ai trouvé très bonne, rafraîchissante, avec un bon goût de céréales et quasiment pas d'amertume. Une belle réussite donc pour cette première qui a attirée 307 coureurs + 200 enfants + les randonneurs + les joëlettes. Vivement l'année prochaine !

Ascension du col de Vence

Affiche ascension du col de Vence

Ce ne sera plus une surprise pour l'édition 2023, prévue le dimanche 7 mai : les 10km du col de Vence (12km au total) n'offrent aucun répit ! 6% de pente moyenne, soit 620m de dénivelé positif au total. Il faudra donc être en forme et fort dans la tête pour viser l'arrivée. Mais c'est pour la bonne cause puisque les bénéfices seront reversés à l'association France AVC 06.

Retour : Félicitation aux 255 partants (à peine plus que l'année dernière). D'autant plus que les conditions étaient bonnes : couvert, un peu frais, mais pas de pluie ! Pour ma part, j'ai dû déclarer forfait à cause d'une blessure...

Avec pertes et fracas

Sunday, 26 March 2023
|
Écrit par
Grégory Soutadé

Logo 6 nations

Le tournoi des 6 nations 2023 s'achève. Deux équipes l'ont survolé : l'Irlande et la France qui ont tenu respectivement leur rang de première et seconde nation mondiale (classement IRB). Le niveau est clairement celui que l'on va retrouver dans quelques mois durant la coupe du monde avec les surpuissantes nations du Sud. Les autres participants ? L'Italie, bien qu'en progression (notamment grâce à son intégration dans la ligue Celtes), n'aura fait qu'un seul bon match (comme à son habitude). L’Écosse est montée en puissance, mais reste fébrile. Le rugby Anglais et Gallois se trouve dans la tourmente, tant au niveau national qu'international, notamment avec la défaite historique à Twickenham. Mais ne nous voilons pas la face, La France a beaucoup souffert, avec pas mal de joueurs blessés et un démarrage poussif...

En effet, depuis l'ère Fabien Galthié, le schéma de jeu est clair : une défense de fer, une solidarité exemplaire et des contres attaques fulgurantes. Si, avec un peu de chance, cela a permis de renverser toutes les nations 14 matchs d'affilés, ce n'est plus suffisant. En effet, cette mise en lumière a poussé les autres équipes à bien décortiquer ses forces et faiblesses. Ce qui manque cruellement, et qu'il faudra corriger rapidement, est un plan d'attaque performant, qui ne soit pas basé sur la désorganisation et les exploits individuels. Le fait de balayer latéralement le terrain et de percuter sans cesse l'adversaire, même si exécuté rapidement, ne suffit plus face à des défenses aussi puissantes que celle de l'Irlande par exemple. C'est d'ailleurs un reproche que l'on peut adresser à beaucoup d'équipes du top 10 mondial : il manque clairement de l'intelligence de jeu. Le nombre de lancement préparé, de combinaison au milieu de l'attaque ou même d'une simple croisée se comptent sur les doigts d'une main. On ne pourra que regretter le manque de French Flair des joueurs, qui nous rappelle que le rugby n'est pas qu'un simple match de boxe à 44.

Pourtant, ce qui m'a le plus choqué, dès l'ouverture du tournoi, est le nom des joueurs floqué au dos des maillots. Cela reste très symbolique, mais cette pratique tend à personnifier les acteurs du match au détriment de l'esprit de groupe. Si l'on encense souvent les finisseurs, il ne faut pas oublier qu'il s'agit avant tout d'un travail collectif, tant en attaque qu'en défense. Celui d'un groupe où chacun a des caractéristiques différentes, qui lui permet d'intervenir dans les diverses phases de jeu durant lesquelles il sera plus ou moins à son avantage. Ce sont d'ailleurs surtout les avants qui ferraillent tout au long de la partie, sans forcément être mis en lumière.

D'une manière générale, on peut se réjouir de l'évolution de ce sport depuis la professionnalisation des équipes (95-2000). Les règles tendent à préserver la santé de joueurs et à favoriser le jeu rapide. Il y aura bien sûr toujours des râleurs pour dire que c'était mieux avant. Ceux-là ne sont pas morts à 50 ans d'une maladie neuro dégénératives... Car c'est la face cachée d'un sport qui expose les joueurs à des situations potentiellement dangereuses. Les instances essaient de cacher cette face sombre, notamment en étouffant la parution du livre Ce rugby qui tue (de Jean Chazal, 2019). Mais le terrible accident de Matthias, 17 ans, désormais tétraplégique, n'a pu être masqué par une fédération elle-même dans la tourmente. Si la solidarité, l'humilité et l'abnégation sont souvent mis en avant, c'est avant tout pour répondre à l'agressivité et l'engagement dont il faut faire preuve. Au niveau scolaire, les éducateurs essaient d'éviter ces situations dangereuses en favorisant le mouvement et la prise d'intervalle plutôt que l'affrontement frontal. Toujours est-il que si l'évolution est globalement positive, l'engouement populaire qu'il soulève depuis une dizaine d'années a fait monter les enchères financières à tous les niveaux (du club jusqu'à l'équipe nationale). Ce besoin d'être ultra compétitif requiert des investissements de plus en plus importants, au détriment des valeurs de base qui ont longtemps fait de ce sport un exemple. Le maillot national est désormais entaché d'un sponsor. Les fonds d'investissement prennent des parts dans les équipes nationales. Certains stades sont eux-mêmes sponsorisés. Des joueurs populaires font de la publicité à la télé. Les salaires explosent, autant que le montant des paris sportifs, des droits TV et des cachets de publicité. C'est le revers de la médaille, qui nous rappelle que l'on n'est jamais loin de tomber dans les dérives du ballon rond (celui que l'on tape au pied)...

Scandale sanitaire à Paris

Monday, 20 March 2023
|
Écrit par
Grégory Soutadé

Scandale sanitaire à Paris : les rats pullulent sur les montagnes de poubelles qui jonchent la capitale. Ces derniers n'ont jamais vraiment eu bonne presse dans notre société. Ce muridé est considéré comme ravageur des cultures et comme porteur sain de dangereuses maladies (dont la fameuse peste bubonique). On l'associe donc à un environnement malsain, mais c'est oublier qu'il agit également comme nettoyeur ! Et surtout, en tant de disette, comme lors du siège de Paris par les Prussiens en 1870, il était même proposé à la carte des restaurants ! C'est également un des sujets vivants plébiscités par les chercheurs pour leurs expérimentations. En astrologie Chinoise, le rat est le symbole de la mesquinerie/intelligence. Il peut également être associé à l'argent ou au commerce.

Mais revenons à notre actualité. Parmi ces nouvelles, laquelle est (la plus) scandaleuse :

Les deux premières sont éminemment politiques et chacun jugera de leur pertinence. Par contre, la troisième a de quoi faire peur. Surtout si on prend en compte le fait que le ramassage des ordures n'est suspendu que partiellement (au moins dans la moitié des arrondissements). En extrapolant un peu, on peut considérer que dans Paris, l'on génère 2000 tonnes de déchets par jour... Soit environ 1kg/jour/habitant ! Bien sûr, pour être tout à fait précis, il faudrait prendre en compte toutes les personnes travaillant à Paris, ainsi que les touristes. Mais je pense qu'en ordre de grandeur, on n'est pas très loin du compte. Ne portons pas gage uniquement aux Parisiens, tous les foyers contemporains produisent des déchets à un niveau plus ou moins égal. Le non ramassage des ordures est un moyen de pression très fort, ce n'est pas donc pas une surprise d'apprendre que la Camorra (mafia Napolitaine) en a fait une de ses spécialités

Il faut dire que la poubelle a ça de pratique : elle disparaît (ou pas) tous les jours, rendant notre environnement immédiat "propre". Malheureusement, derrière cet objet si pratique, il y a toute la problématique de la gestion des déchets. Déchets que l'on pourrait classer en trois catégories principales :

  • Déchets alimentaires végétaux
  • Déchets alimentaires issus de produits animal
  • Déchets ménagers

Tous sont réunis dans un même container pour être traités "comme on peut" : incinération ou enfouissement... Et quel gâchis en ce qui concerne les déchets végétaux. Ces derniers sont de vraies ressources organiques qui, s'ils étaient triés, permettrait d'alimenter les animaux d'élevage, de produire des engrais naturels ou encore être mis dans des cuves de méthaniseurs. Il y a d'ailleurs une loi publiée en septembre 2022 qui impose que Tous les ménages devront pouvoir trier leurs déchets alimentaires à partir du 1er janvier 2024, soit dans 9 mois... Malheureusement, aujourd'hui RIEN n'est fait pour se mettre en accord avec cette directive. D'autant plus que ce genre de "déchets" produisent de gros volumes et ne sont pas vraiment combustibles. Les ré employer allègerait la charge de beaucoup de monde.

Concernant les produits animal, ce sont les "pires" en terme sanitaire, car les bactéries s'y développent rapidement (surtout en période de chaleur). Ce sont également les plus odorants du fait de la putréfaction des chairs.

Reste les déchets ménagers. On retrouve principalement des produits à base de plastique. Même si nous nous donnons bonne conscience en pratiquant le "recyclage", la réalité est bien moins reluisante. Les matières que l'on recycle réellement sont le verre et l'aluminium. Mais ils nécessitent beaucoup d'énergie afin de les faire fondre et re créer ... les mêmes contenants ! Papier et cartons se recyclent moins bien, car les fibres se détériorent, mais ils peuvent (avec de la chimie) avoir une seconde vie. Malheureusement, le plus gros reste les emballages plastiques présents PARTOUT. Il s'agit d'une bombe à retardement qui contamine petit à petit toute la planète (et notamment les pays pauvres). Même si l'on en traite une petite partie, la plupart finit brûlée (et ce qui n'est pas complètement calciné est disséminé par le vent dans les fumées) ou enfoui (dégradation : plusieurs centaines voir milliers d'années).

La production de déchets est donc un mal tout aussi important que les autres pollutions (air, eau, sols...), mais l'on y est moins sensible du fait qu'elle ne soit pas directement sous nos yeux.

Pourtant, il y a quelques actions simples pour la limiter (liste non exhaustive) :

  • Éviter absolument de consommer "à emporter" (véritable fléau en terme de déchets)
  • Se fournir dans des magasins de vrac en apportant ses propres contenants
  • Réutiliser ses contenants le plus possible (exemple : ré utiliser le sachet du pain, apporter une boîte chez son poissonnier, son boucher, son primeur, sa crémerie)
  • Avoir un sac sur soi pour les imprévus
  • Éviter de consommer des produits transformés (utiliser des produits de base pour cuisiner ses repas)
  • Composter ses déchets alimentaires
  • Consommer moins de produits animal (qui sont en général emballés de manière hermétique)
  • Privilégier les petits producteurs/commerçants qui accepteront plus facilement nos récipients
  • Éviter les commandes en ligne et leur utilisation massive de carton/sur emballage
  • Faire attention même quand on est en dehors de chez soi (entreprise, vacances...)

En prenant un peu de recul, on se rend compte de l'impact causé par l'éloignement (voir de la rupture) entre les producteurs et les consommateurs. Cette séparation crée artificiellement la nécessité des contenants intermédiaires à usage unique, largement manipulés par les distributeurs. L'essor du plastique a ainsi permit à toute l'industrie agroalimentaire de se développer. Si, pour le moment, chacun y trouve son compte (producteurs, intermédiaires, consommateurs), ce n'est pas une solution pérenne sur le long terme. Et encore, je n'ai pas évoqué la situation des autres déchets (électronique en tête). Sans changement des comportements, il faudra bientôt payer l'addition, qui risque d'être très salée (voir même acide).