﻿﻿{"id":2291,"date":"2026-02-07T08:38:01","date_gmt":"2026-02-07T07:38:01","guid":{"rendered":"https:\/\/elearningsamba.com\/index.php\/dns-collector-pour-comprendre-enfin-ce-qui-se-passe-sur-votre-reseau\/"},"modified":"2026-02-07T08:38:01","modified_gmt":"2026-02-07T07:38:01","slug":"dns-collector-pour-comprendre-enfin-ce-qui-se-passe-sur-votre-reseau","status":"publish","type":"page","link":"https:\/\/elearningsamba.com\/index.php\/dns-collector-pour-comprendre-enfin-ce-qui-se-passe-sur-votre-reseau\/","title":{"rendered":"DNS-collector &#8211; Pour comprendre enfin ce qui se passe sur votre r\u00e9seau"},"content":{"rendered":"<p>Le DNS, c&#8217;est un peu la tuyauterie planqu\u00e9e d&#8217;Internet. Tout le monde l&#8217;utilise, mais personne ne regarde vraiment ce qui se passe dans les tuyaux&#8230; jusqu&#8217;\u00e0 ce que \u00e7a p\u00e8te ou qu&#8217;un petit con s&#8217;en serve pour exfiltrer des donn\u00e9es. Et l\u00e0, bon courage pour fouiller dans les logs en mode brutasse pour comprendre qui a fait quoi sur votre r\u00e9seau.<\/p>\n<p>En fait, pour ceux qui se demandent encore qu&#8217;est-ce que le DNS (Domain Name System), c&#8217;est simplement l&#8217;annuaire qui traduit les noms de domaine comme korben.info en adresses IP. Sans lui, on serait tous en train de m\u00e9moriser des suites de chiffres \u00e0 la con.<\/p>\n<p>Et il y a quelques jours, j&#8217;ai re\u00e7u un mail de Denis, un fid\u00e8le lecteur (qui tra\u00eene sur le blog depuis 2005, \u00e7a nous rajeunit pas !) qui m&#8217;a \u00e9crit pour me pr\u00e9senter son projet sur lequel il bosse depuis 5 ans :<br \/>\n<a href=\"https:\/\/github.com\/dmachard\/DNS-collector\">DNS-collector<\/a><br \/>\n.<\/p>\n<p>DNS-collector, c&#8217;est un outil \u00e9crit en Go qui sert de &#8220;cha\u00eenon manquant&#8221; entre vos serveurs DNS et votre pile de donn\u00e9es. En gros, il capture le trafic DNS, le nettoie, l&#8217;enrichit et l&#8217;envoie l\u00e0 o\u00f9 vous en avez besoin. C&#8217;est l&#8217;outil parfait pour ceux qui ont la flemme de se palucher des fichiers PCAP de 4 Go \u00e0 la main ou de debugger des flux DNStap illisibles.<\/p>\n<p>Le point fort de DNS Collector, c&#8217;est sa flexibilit\u00e9. C\u00f4t\u00e9 entr\u00e9es, \u00e7a avale tout : du DNStap via socket Unix ou TCP (le protocole standard utilis\u00e9 par BIND, Unbound ou PowerDNS), du sniffing r\u00e9seau classique avec AF_PACKET ou m\u00eame XDP pour la tr\u00e8s haute performance. Attention quand m\u00eame, pour XDP, apparemment le kernel Linux doit \u00eatre r\u00e9cent (version 5.x minimum) et les drivers r\u00e9seau doivent suivre, sinon \u00e7a va faire pshitt. Ensuite, par d\u00e9faut, le bousin \u00e9coute p\u00e9pouze sur le port UDP\/6000 en attendant ses flux.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/korben.info\/dns-collector\/dns-collector-1.gif\" alt=\"\" loading=\"lazy\"><\/p>\n<p>Mais l\u00e0 o\u00f9 \u00e7a devient vraiment balaise, c&#8217;est dans le traitement des donn\u00e9es. DNS-collector embarque des &#8220;Transformers&#8221; (rien \u00e0 voir avec Optimus Prime hein ^^) qui font tout le boulot ingrat \u00e0 votre place dans le pipeline de traitement. Hop, \u00e7a normalise les noms de domaine en minuscules (le fameux qname-lowercase dans le fichier de config), \u00e7a ajoute la g\u00e9olocalisation via GeoIP (genre MaxMind ou IP2Location), et on peut m\u00eame d\u00e9tecter les trucs louches.<\/p>\n<p>Il peut aussi d\u00e9tecter le tunneling DNS ou les domaines g\u00e9n\u00e9r\u00e9s par algorithme (DGA) qui sont souvent les signes d&#8217;une infection sur une machine. Petit b\u00e9mol cependant, pour la g\u00e9olocalisation, pensez \u00e0 t\u00e9l\u00e9charger vos bases GeoIP au pr\u00e9alable (fichiers .mmdb), sinon l&#8217;outil va vous faire une petite grimace au d\u00e9marrage.<\/p>\n<p>Vous pouvez aussi prot\u00e9ger la vie priv\u00e9e de vos utilisateurs en anonymisant les adresses IP via un hachage SHA1 ou du masquage. C&#8217;est propre, \u00e7a respecte le RGPD, et \u00e7a permet de garder des stats utiles (genre le top des ASN consult\u00e9s) sans fliquer tout le monde. Les donn\u00e9es sortent proprement en JSON ou en Protobuf, pr\u00eates \u00e0 \u00eatre ing\u00e9r\u00e9es.<\/p>\n<p>\n<img decoding=\"async\" src=\"https:\/\/korben.info\/cdn-cgi\/image\/width=1200,fit=scale-down,quality=90,f=avif\/dns-collector\/dns-collector-2.png\" alt=\"\" loading=\"lazy\">\n<\/p>\n<p>Une fois que vos donn\u00e9es sont propres, vous les envoyez o\u00f9 vous voulez. J&#8217;ai choisi de vous citer ClickHouse ou InfluxDB car c&#8217;est parfait pour stocker des millions de requ\u00eates sans mettre votre serveur \u00e0 genoux, mais la liste est longue : Prometheus pour les m\u00e9triques, ElasticSearch, Kafka, Redis, ou m\u00eame Slack via des webhooks pour \u00eatre alert\u00e9 en temps r\u00e9el quand un domaine louche pointe le bout de son nez.<\/p>\n<p>Alors si \u00e7a vous chauffe, comment r\u00e9cup\u00e9rer cet outil et le mettre en place ?<\/p>\n<p>H\u00e9 bien c&#8217;est hyper fastoche comme d&#8217;hab puisque le projet est dispo en binaire ou via Docker. Ensuite, vous lancez la commande <code>.\/dnscollector -config config.yml<\/code>, vous branchez vos sources, et roule ma poule. Taaadaaaa ! DNS-collector s&#8217;occupera du reste sans vous bouffer toute votre RAM (contrairement \u00e0 certaines usines \u00e0 gaz Java qui demandent un sacr\u00e9 paquet de m\u00e9moire vive ^^).<\/p>\n<p>Voil\u00e0, perso, je trouve l&#8217;approche tr\u00e8s saine. C&#8217;est l\u00e9ger, modulaire et \u00e7a r\u00e9pond \u00e0 un vrai besoin pour les admins sys qui veulent enfin &#8220;voir&#8221; ce qui transite par leurs serveurs. Le bousin encaisse des milliers de requ\u00eates par seconde sans broncher&#8230; enfin sauf si votre serveur est une patate de 2012, l\u00e0 je garantis rien.<\/p>\n<p>Mortecouille, c&#8217;est quand m\u00eame mieux d&#8217;avoir des logs lisibles avec un simple <code>tail -f \/var\/log\/syslog<\/code>, non ? Et d&#8217;ailleurs, le projet est d\u00e9j\u00e0 adopt\u00e9 par pas mal d&#8217;acteurs de la s\u00e9cu, donc vous pouvez y aller sereinement.<\/p>\n<p>Merci Denis !<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Le DNS, c&#8217;est un peu la tuyauterie planqu\u00e9e d&#8217;Internet. Tout le monde l&#8217;utilise, mais personne ne regarde vraiment ce qui se passe dans les tuyaux&#8230; jusqu&#8217;\u00e0 ce que \u00e7a p\u00e8te ou qu&#8217;un petit con s&#8217;en serve pour exfiltrer des donn\u00e9es. Et l\u00e0, bon courage pour fouiller dans les logs en mode brutasse pour comprendre qui a fait quoi sur votre r\u00e9seau. En fait, pour ceux qui se demandent encore qu&#8217;est-ce que le DNS (Domain Name System), c&#8217;est simplement l&#8217;annuaire qui traduit les noms de domaine comme korben.info en adresses IP. Sans lui, on serait tous en train de m\u00e9moriser des suites de chiffres \u00e0 la con. Et il y a quelques jours, j&#8217;ai re\u00e7u un mail de Denis, un fid\u00e8le lecteur (qui tra\u00eene sur le blog depuis 2005, \u00e7a nous rajeunit pas !) qui m&#8217;a \u00e9crit pour me pr\u00e9senter son projet sur lequel il bosse depuis 5 ans : DNS-collector . DNS-collector, c&#8217;est un outil \u00e9crit en Go qui sert de &#8220;cha\u00eenon manquant&#8221; entre vos serveurs DNS et votre pile de donn\u00e9es. En gros, il capture le trafic DNS, le nettoie, l&#8217;enrichit et l&#8217;envoie l\u00e0 o\u00f9 vous en avez besoin. C&#8217;est l&#8217;outil parfait pour ceux qui ont la flemme de se palucher des fichiers PCAP de 4 Go \u00e0 la main ou de debugger des flux DNStap illisibles. Le point fort de DNS Collector, c&#8217;est sa flexibilit\u00e9. C\u00f4t\u00e9 entr\u00e9es, \u00e7a avale tout : du DNStap via socket Unix ou TCP (le protocole standard utilis\u00e9 par BIND, Unbound ou PowerDNS), du sniffing r\u00e9seau classique avec AF_PACKET ou m\u00eame XDP pour la tr\u00e8s haute performance. Attention quand m\u00eame, pour XDP, apparemment le kernel Linux doit \u00eatre r\u00e9cent (version 5.x minimum) et les drivers r\u00e9seau doivent suivre, sinon \u00e7a va faire pshitt. Ensuite, par d\u00e9faut, le bousin \u00e9coute p\u00e9pouze sur le port UDP\/6000 en attendant ses flux. Mais l\u00e0 o\u00f9 \u00e7a devient vraiment balaise, c&#8217;est dans le traitement des donn\u00e9es. DNS-collector embarque des &#8220;Transformers&#8221; (rien \u00e0 voir avec Optimus Prime hein ^^) qui font tout le boulot ingrat \u00e0 votre place dans le pipeline de traitement. Hop, \u00e7a normalise les noms de domaine en minuscules (le fameux qname-lowercase dans le fichier de config), \u00e7a ajoute la g\u00e9olocalisation via GeoIP (genre MaxMind ou IP2Location), et on peut m\u00eame d\u00e9tecter les trucs louches. Il peut aussi d\u00e9tecter le tunneling DNS ou les domaines g\u00e9n\u00e9r\u00e9s par algorithme (DGA) qui sont souvent les signes d&#8217;une infection sur une machine. Petit b\u00e9mol cependant, pour la g\u00e9olocalisation, pensez \u00e0 t\u00e9l\u00e9charger vos bases GeoIP au pr\u00e9alable (fichiers .mmdb), sinon l&#8217;outil va vous faire une petite grimace au d\u00e9marrage. Vous pouvez aussi prot\u00e9ger la vie priv\u00e9e de vos utilisateurs en anonymisant les adresses IP via un hachage SHA1 ou du masquage. C&#8217;est propre, \u00e7a respecte le RGPD, et \u00e7a permet de garder des stats utiles (genre le top des ASN consult\u00e9s) sans fliquer tout le monde. Les donn\u00e9es sortent proprement en JSON ou en Protobuf, pr\u00eates \u00e0 \u00eatre ing\u00e9r\u00e9es. Une fois que vos donn\u00e9es sont propres, vous les envoyez o\u00f9 vous voulez. J&#8217;ai choisi de vous citer ClickHouse ou InfluxDB car c&#8217;est parfait pour stocker des millions de requ\u00eates sans mettre votre serveur \u00e0 genoux, mais la liste est longue : Prometheus pour les m\u00e9triques, ElasticSearch, Kafka, Redis, ou m\u00eame Slack via des webhooks pour \u00eatre alert\u00e9 en temps r\u00e9el quand un domaine louche pointe le bout de son nez. Alors si \u00e7a vous chauffe, comment r\u00e9cup\u00e9rer cet outil et le mettre en place ? H\u00e9 bien c&#8217;est hyper fastoche comme d&#8217;hab puisque le projet est dispo en binaire ou via Docker. Ensuite, vous lancez la commande .\/dnscollector -config config.yml, vous branchez vos sources, et roule ma poule. Taaadaaaa ! DNS-collector s&#8217;occupera du reste sans vous bouffer toute votre RAM (contrairement \u00e0 certaines usines \u00e0 gaz Java qui demandent un sacr\u00e9 paquet de m\u00e9moire vive ^^). Voil\u00e0, perso, je trouve l&#8217;approche tr\u00e8s saine. C&#8217;est l\u00e9ger, modulaire et \u00e7a r\u00e9pond \u00e0 un vrai besoin pour les admins sys qui veulent enfin &#8220;voir&#8221; ce qui transite par leurs serveurs. Le bousin encaisse des milliers de requ\u00eates par seconde sans broncher&#8230; enfin sauf si votre serveur est une patate de 2012, l\u00e0 je garantis rien. Mortecouille, c&#8217;est quand m\u00eame mieux d&#8217;avoir des logs lisibles avec un simple tail -f \/var\/log\/syslog, non ? Et d&#8217;ailleurs, le projet est d\u00e9j\u00e0 adopt\u00e9 par pas mal d&#8217;acteurs de la s\u00e9cu, donc vous pouvez y aller sereinement. Merci Denis !<\/p>\n","protected":false},"author":1,"featured_media":2292,"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-2291","page","type-page","status-publish","has-post-thumbnail","hentry"],"campaignId":"","_links":{"self":[{"href":"https:\/\/elearningsamba.com\/index.php\/wp-json\/wp\/v2\/pages\/2291","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=2291"}],"version-history":[{"count":0,"href":"https:\/\/elearningsamba.com\/index.php\/wp-json\/wp\/v2\/pages\/2291\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/elearningsamba.com\/index.php\/wp-json\/wp\/v2\/media\/2292"}],"wp:attachment":[{"href":"https:\/\/elearningsamba.com\/index.php\/wp-json\/wp\/v2\/media?parent=2291"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}