﻿﻿{"id":2899,"date":"2026-05-02T09:47:41","date_gmt":"2026-05-02T07:47:41","guid":{"rendered":"https:\/\/elearningsamba.com\/index.php\/ip66-dev-une-base-de-geoloc-ip-libre-et-compatible-maxmind\/"},"modified":"2026-05-02T09:47:41","modified_gmt":"2026-05-02T07:47:41","slug":"ip66-dev-une-base-de-geoloc-ip-libre-et-compatible-maxmind","status":"publish","type":"page","link":"https:\/\/elearningsamba.com\/index.php\/ip66-dev-une-base-de-geoloc-ip-libre-et-compatible-maxmind\/","title":{"rendered":"ip66.dev &#8211; Une base de g\u00e9oloc IP libre et compatible MaxMind"},"content":{"rendered":"<p>Hello les amis, voici ma petite trouvaille du jour, id\u00e9ale pour ceux qui jouent en ce moment avec des adresses IP :<br \/>\n<a href=\"https:\/\/ip66.dev\/\">ip66.dev<\/a><br \/>\n. C&#8217;est une base de g\u00e9olocalisation IP et enti\u00e8rement libre, livr\u00e9e au format MMDB (le m\u00eame que celui de MaxMind) qui permet de remplacer direct un fichier GeoLite2 dans vos libs existantes (Python, Go, Node.js), sans toucher au code.<\/p>\n<p>L&#8217;\u00e9quipe de Cloud 66 maintient cette liste \u00e0 jour sous licence CC BY 4.0 et tout est utilisable simplement en r\u00e9cup\u00e9rant le fichier mmdb.<\/p>\n<p>Pour le t\u00e9l\u00e9charger :<\/p>\n<div class=\"highlight\">\n<pre class=\"chroma\"><code class=\"language-gdscript3\" data-lang=\"gdscript3\"><span class=\"line\"><span class=\"cl\"><span class=\"n\">curl<\/span> <span class=\"o\">-<\/span><span class=\"n\">LO<\/span> <span class=\"n\">https<\/span><span class=\"p\">:<\/span><span class=\"o\">\/\/<\/span><span class=\"n\">downloads<\/span><span class=\"o\">.<\/span><span class=\"n\">ip66<\/span><span class=\"o\">.<\/span><span class=\"n\">dev<\/span><span class=\"o\">\/<\/span><span class=\"n\">db<\/span><span class=\"o\">\/<\/span><span class=\"n\">ip66<\/span><span class=\"o\">.<\/span><span class=\"n\">mmdb<\/span>\n<\/span><\/span><\/code><\/pre>\n<p>Ensuite pour interroger une IP, l&#8217;outil<br \/>\n<a href=\"https:\/\/github.com\/maxmind\/mmdbinspect\">mmdbinspect<\/a><br \/>\nde MaxMind fera le job. Si vous l&#8217;avez pas d\u00e9j\u00e0, une ligne suffit :<\/p>\n<div class=\"highlight\">\n<pre class=\"chroma\"><code class=\"language-fallback\" data-lang=\"fallback\"><span class=\"line\"><span class=\"cl\">go install github.com\/maxmind\/mmdbinspect\/cmd\/mmdbinspect@latest\n<\/span><\/span><span class=\"line\"><span class=\"cl\">mmdbinspect -db ip66.mmdb 8.8.8.8\n<\/span><\/span><\/code><\/pre>\n<p>\u00c0 l&#8217;int\u00e9rieur de la r\u00e9ponse, vous trouverez le num\u00e9ro et le nom de l&#8217;ASN, le pays avec son code ISO, le continent, en IPv4 et IPv6 :<\/p>\n<p>\n<img decoding=\"async\" src=\"https:\/\/korben.info\/cdn-cgi\/image\/width=1200,fit=scale-down,quality=90,f=avif\/ip66-geolocalisation-ip-libre\/ip66-geolocalisation-ip-libre-2.png\" alt=\"\" loading=\"lazy\">\n<\/p>\n<p>Au lieu de moudre des heuristiques opaques, ip66 pr\u00e9f\u00e8re tout simplement agr\u00e9ger des sources \u00e0 partir des 5 registres r\u00e9gionaux (AFRINIC, APNIC, ARIN, LACNIC, RIPE NCC) pour les allocations, le BGP via RouteViews et RIPE RIS pour les vues publiques d&#8217;annonces, le RFC 8805 geofeed quand les op\u00e9rateurs d\u00e9clarent eux-m\u00eames leurs localisations, sans oublier GeoNames pour tout ce qui concerne les libell\u00e9s.<\/p>\n<p>Du coup chaque enregistrement dispose de son propre un niveau de confiance (Very High, High, Medium, Low) selon la qualit\u00e9 de la source. Y&#8217;a m\u00eame des marqueurs pour identifier les IPs VPN \/ Tor et compagnie.<\/p>\n<p>Notez par contre, que c&#8217;est du country-level, et pas du city-level comme GeoIP2 City ou IPinfo Core, mais pour enrichir des logs, sortir des stats par pays ou bloquer un continent entier, c&#8217;est largement suffisant !<\/p>\n<p>Et si vous voulez l&#8217;exposer en API plut\u00f4t que la requ\u00eater en local, \u00e7a se branche nickel sur le<br \/>\n<a href=\"https:\/\/github.com\/adulau\/mmdb-server\">mmdb-server<\/a><br \/>\n, un petit serveur Python qui sert les fichiers MMDB en HTTP. Vous lui pointez ip66.mmdb dans son dossier <code>db\/<\/code> et hop, c&#8217;est pli\u00e9 !<\/p>\n<p>Bref, un fichier mmdb \u00e0 DL, et votre serveur sait maintenant que 8.8.8.8 c&#8217;est l&#8217;oncle Google.<\/p>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Hello les amis, voici ma petite trouvaille du jour, id\u00e9ale pour ceux qui jouent en ce moment avec des adresses IP : ip66.dev . C&#8217;est une base de g\u00e9olocalisation IP et enti\u00e8rement libre, livr\u00e9e au format MMDB (le m\u00eame que celui de MaxMind) qui permet de remplacer direct un fichier GeoLite2 dans vos libs existantes (Python, Go, Node.js), sans toucher au code. L&#8217;\u00e9quipe de Cloud 66 maintient cette liste \u00e0 jour sous licence CC BY 4.0 et tout est utilisable simplement en r\u00e9cup\u00e9rant le fichier mmdb. Pour le t\u00e9l\u00e9charger : curl -LO https:\/\/downloads.ip66.dev\/db\/ip66.mmdb Ensuite pour interroger une IP, l&#8217;outil mmdbinspect de MaxMind fera le job. Si vous l&#8217;avez pas d\u00e9j\u00e0, une ligne suffit : go install github.com\/maxmind\/mmdbinspect\/cmd\/mmdbinspect@latest mmdbinspect -db ip66.mmdb 8.8.8.8 \u00c0 l&#8217;int\u00e9rieur de la r\u00e9ponse, vous trouverez le num\u00e9ro et le nom de l&#8217;ASN, le pays avec son code ISO, le continent, en IPv4 et IPv6 : Au lieu de moudre des heuristiques opaques, ip66 pr\u00e9f\u00e8re tout simplement agr\u00e9ger des sources \u00e0 partir des 5 registres r\u00e9gionaux (AFRINIC, APNIC, ARIN, LACNIC, RIPE NCC) pour les allocations, le BGP via RouteViews et RIPE RIS pour les vues publiques d&#8217;annonces, le RFC 8805 geofeed quand les op\u00e9rateurs d\u00e9clarent eux-m\u00eames leurs localisations, sans oublier GeoNames pour tout ce qui concerne les libell\u00e9s. Du coup chaque enregistrement dispose de son propre un niveau de confiance (Very High, High, Medium, Low) selon la qualit\u00e9 de la source. Y&#8217;a m\u00eame des marqueurs pour identifier les IPs VPN \/ Tor et compagnie. Notez par contre, que c&#8217;est du country-level, et pas du city-level comme GeoIP2 City ou IPinfo Core, mais pour enrichir des logs, sortir des stats par pays ou bloquer un continent entier, c&#8217;est largement suffisant ! Et si vous voulez l&#8217;exposer en API plut\u00f4t que la requ\u00eater en local, \u00e7a se branche nickel sur le mmdb-server , un petit serveur Python qui sert les fichiers MMDB en HTTP. Vous lui pointez ip66.mmdb dans son dossier db\/ et hop, c&#8217;est pli\u00e9 ! Bref, un fichier mmdb \u00e0 DL, et votre serveur sait maintenant que 8.8.8.8 c&#8217;est l&#8217;oncle Google.<\/p>\n","protected":false},"author":1,"featured_media":2900,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"give_campaign_id":0,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_kadence_starter_templates_imported_post":false,"footnotes":""},"class_list":["post-2899","page","type-page","status-publish","has-post-thumbnail","hentry"],"campaignId":"","_links":{"self":[{"href":"https:\/\/elearningsamba.com\/index.php\/wp-json\/wp\/v2\/pages\/2899","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/elearningsamba.com\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/elearningsamba.com\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/elearningsamba.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/elearningsamba.com\/index.php\/wp-json\/wp\/v2\/comments?post=2899"}],"version-history":[{"count":0,"href":"https:\/\/elearningsamba.com\/index.php\/wp-json\/wp\/v2\/pages\/2899\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/elearningsamba.com\/index.php\/wp-json\/wp\/v2\/media\/2900"}],"wp:attachment":[{"href":"https:\/\/elearningsamba.com\/index.php\/wp-json\/wp\/v2\/media?parent=2899"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}