<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="../assets/xml/rss.xsl" media="all"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Enodev.fr / Christophe's log (Posts about IPv6)</title><link>https://www.enodev.fr/</link><description></description><atom:link href="https://www.enodev.fr/categories/ipv6.xml" rel="self" type="application/rss+xml"></atom:link><language>en</language><lastBuildDate>Fri, 27 Dec 2024 22:49:36 GMT</lastBuildDate><generator>Nikola (getnikola.com)</generator><docs>http://blogs.law.harvard.edu/tech/rss</docs><item><title>Statistiques d'accès au site en IPv6</title><link>https://www.enodev.fr/posts/statistiques-acces-au-site-en-ipv6.html</link><dc:creator>Christophe Vu-Brugier</dc:creator><description>&lt;p&gt;Le mois dernier, j'ai observé que bien que mon serveur Web possédât
une adresse &lt;a href="https://fr.wikipedia.org/wiki/IPv6"&gt;IPv6&lt;/a&gt;, aucun
navigateur Web ne s'y connectait via ce protocole. J'avais tout
simplement oublié d'associer un enregistrement &lt;em&gt;IPv6 address record&lt;/em&gt;
au nom de mon domaine dans la zone
&lt;a href="https://fr.wikipedia.org/wiki/Domain_Name_System"&gt;DNS&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Un mois plus tard, la lecture des logs de mon serveur Web confirme
qu'une partie des navigateurs Web s'y connectent en IPv6 et je peux
mesurer dans quelle proportion.&lt;/p&gt;
&lt;h2&gt;Dites AAAA&lt;/h2&gt;
&lt;p&gt;Sur Internet, le service DNS associe les noms de domaine Internet avec
leurs adresses IP.&lt;/p&gt;
&lt;p&gt;La plupart des sites Internet déclarent des adresses IPv4 dans leur
zone DNS à travers des enregistrements DNS A (&lt;em&gt;A&lt;/em&gt; pour &lt;em&gt;Adresse&lt;/em&gt;).&lt;/p&gt;
&lt;p&gt;Conscients de
&lt;a href="https://fr.wikipedia.org/wiki/%C3%89puisement_des_adresses_IPv4"&gt;l'épuisement des adresses IPv4&lt;/a&gt;,
de plus en plus de sites Internet sont aussi accessibles en IPv6. Pour permettre aux
navigateurs Web de résoudre leur nom de domaine en adresses IPv6,
ils ajoutent des enregistrements DNS AAAA dans leur zone DNS.
Les quatre "A" dénotent le fait qu'une adresse IPv6 (128 bits) est
quatre fois plus longue qu'une adresse IPv4 (32 bits).&lt;/p&gt;
&lt;p&gt;Sous Linux, l'outil &lt;a href="https://www.mankier.com/1/dig"&gt;dig&lt;/a&gt; permet
d'effectuer des requêtes DNS en ligne de commande et donc de vérifier
si un site Internet déclare être accessible en IPv4 &lt;em&gt;et&lt;/em&gt; en IPv6.&lt;/p&gt;
&lt;p&gt;Pour afficher l'adresse IPv4 associée à un nom de domaine :&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;&lt;span class="gp"&gt;$ &lt;/span&gt;dig&lt;span class="w"&gt; &lt;/span&gt;+short&lt;span class="w"&gt; &lt;/span&gt;enodev.fr&lt;span class="w"&gt; &lt;/span&gt;A
&lt;span class="go"&gt;159.69.222.76&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Et pour obtenir l'adresse IPv6 éventuellement associée :&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;&lt;span class="gp"&gt;$ &lt;/span&gt;dig&lt;span class="w"&gt; &lt;/span&gt;+short&lt;span class="w"&gt; &lt;/span&gt;enodev.fr&lt;span class="w"&gt; &lt;/span&gt;AAAA
&lt;span class="go"&gt;2a01:4f8:1c1e:b2d0::1&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;h2&gt;Qui AAAAccède ?&lt;/h2&gt;
&lt;p&gt;Le
&lt;a href="https://httpd.apache.org/docs/2.4/fr/logs.html#accesslog"&gt;fichier journal des accès&lt;/a&gt;
du serveur HTTP Apache enregistre les requêtes qu'il a traitées.&lt;/p&gt;
&lt;p&gt;Dans le format par défaut du fichier journal des accès, l'adresse IP
du client figure au début de chaque ligne.&lt;/p&gt;
&lt;p&gt;L'extrait de journal suivant présente une requête HTTP effectuée par
un navigateur Web connecté en IPv4 suivie d'une requête formulée
par un autre navigateur Web connecté en IPv6 :&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;24.35.90.123 - - [01/Oct/2023:00:03:20 +0200] "GET /posts/rusticity-convert-an-integer-to-an-enum.html HTTP/2.0" 200 6966 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36"
2a02:8308:285:e800:9807:3eea:1a93:1234 - - [01/Oct/2023:00:03:30 +0200] "GET /posts/rusticity-convert-an-integer-to-an-enum.html HTTP/2.0" 200 6966 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36 Edg/117.0.2045.43"
&lt;/pre&gt;&lt;/div&gt;

&lt;h2&gt;Analyse des accès avec Angle-grinder&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://github.com/rcoh/angle-grinder"&gt;Angle-grinder&lt;/a&gt; est un outil en
ligne de commande qui permet d'interpréter des données en effectuant
des opérations de tri, de sélection, de groupement, ou des
calculs. Angle-grinder est notamment capable d'interpréter directement
un fichier journal des accès d'Apache. Ceci va nous aider à mesurer
dans quelle proportion les navigateurs Web se connectent au site en
IPv6.&lt;/p&gt;
&lt;p&gt;Voici une façon de compter le nombre d'adresse IP différentes qui se
sont connectées au serveur HTTP avec Angle-grinder:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;&lt;span class="gp"&gt;$ &lt;/span&gt;agrind&lt;span class="w"&gt; &lt;/span&gt;-f&lt;span class="w"&gt; &lt;/span&gt;apache.log&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"* | apache | count_distinct(ip) as unique_ipaddrs"&lt;/span&gt;
&lt;span class="go"&gt;unique_ipaddrs&lt;/span&gt;
&lt;span class="go"&gt;----------------------&lt;/span&gt;
&lt;span class="go"&gt;5326&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Les pipelines, séparés par le caractère &lt;code&gt;|&lt;/code&gt;, sont composés ainsi :&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Toutes les entrées du fichier journal sont sélectionnées avec le
   caractère &lt;code&gt;*&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Le parser pour le format du journal d'Apache interprète les champs.&lt;/li&gt;
&lt;li&gt;L'opérateur d'agrégation &lt;code&gt;count_distinct()&lt;/code&gt; est appelé sur le champ
   nommé &lt;code&gt;ip&lt;/code&gt;. La colonne de résultat est nommée &lt;code&gt;unique_ipaddrs&lt;/code&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Pour dénombrer le nombre d'adresse &lt;em&gt;IPv6&lt;/em&gt; différentes, il suffit
d'ajouter un filtre qui sélectionne les adresses IP qui contiennent le
séparateur &lt;code&gt;:&lt;/code&gt;.&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;&lt;span class="gp"&gt;$ &lt;/span&gt;agrind&lt;span class="w"&gt; &lt;/span&gt;-f&lt;span class="w"&gt; &lt;/span&gt;apache.log&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"* | apache | contains(ip, ':') as is_ipv6 | where is_ipv6 | count_distinct(ip) as unique_ipv6addrs"&lt;/span&gt;
&lt;span class="go"&gt;unique_ipv6addrs&lt;/span&gt;
&lt;span class="go"&gt;------------------------&lt;/span&gt;
&lt;span class="go"&gt;500&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;9,4 % des navigateurs Web se connectent donc au site en IPv6. La
part des &lt;em&gt;requêtes&lt;/em&gt; HTTP effectuées en IPv6 est assez proche –
10 % – comme on peut le constater avec la requête suivante :&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;&lt;span class="gp"&gt;$ &lt;/span&gt;agrind&lt;span class="w"&gt; &lt;/span&gt;-f&lt;span class="w"&gt; &lt;/span&gt;apache.log&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"* | apache | contains(ip, ':') as is_ipv6 | if(is_ipv6, 1, 0) as ipv6_req | avg(ipv6_req) as ipv6_req_ratio"&lt;/span&gt;
&lt;span class="go"&gt;ipv6_req_ratio&lt;/span&gt;
&lt;span class="go"&gt;----------------------&lt;/span&gt;
&lt;span class="go"&gt;0.10&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Il sera intéressant de suivre la progression du ratio des accès
réalisés en IPv6 dans le temps.&lt;/p&gt;
&lt;p&gt;Note: en décembre 2024, 14 % des requêtes HTTP sont effectuées en IPv6.&lt;/p&gt;
&lt;div class="caption"&gt;
  &lt;img src="https://www.enodev.fr/images/araignee-toile-ipv6.jpg" class="img-fluid rounded" alt="Une épeire fasciée sur sa toile. Connectée en IPv6 ?"&gt;
  &lt;p&gt;Une &lt;a href="https://fr.wikipedia.org/wiki/Argiope_frelon"&gt;épeire fasciée&lt;/a&gt; sur sa toile. Connectée en IPv6 ?&lt;/p&gt;
&lt;/div&gt;</description><category>Angle-grinder</category><category>Apache</category><category>DNS</category><category>IPv6</category><guid>https://www.enodev.fr/posts/statistiques-acces-au-site-en-ipv6.html</guid><pubDate>Sat, 30 Sep 2023 20:55:42 GMT</pubDate></item></channel></rss>