Aller au contenu principal

DnsTrace

Overview

DnsTrace, c'est l'outil de monitoring DNS qui pense que tu devrais savoir exactement qui fait quoi avec tes résolutions DNS. Utilisant eBPF, il trace les requêtes DNS par processus hôte en temps réel, te donnant une visibilité complète sur qui résout quoi, quand, et pourquoi. Si tu veux débugger des problèmes de résolution ou surveiller l'activité DNS de tes applications, c'est parfait.

DnsTrace s'appuie sur la technologie eBPF pour intercepter les appels système liés au DNS sans impact sur les performances. Dashboard temps réel avec statistiques, mode streaming pour monitoring continu, attribution des requêtes par processus et interface réseau. Zero overhead, maximum visibility.

DnsTrace se distingue par sa technologie eBPF (monitoring kernel-level sans overhead), son attribution par processus (tu sais qui fait quoi), et ses modes d'affichage flexibles (dashboard temps réel ou streaming live).


Informations essentielles

PropriétéValeur
Site officielhttps://github.com/furkanonder/DnsTrace
Repositoryhttps://github.com/furkanonder/DnsTrace
LicenceMIT
DéveloppeurFurkan Önder
LangagePython + C (eBPF)
PrérequisBCC (BPF Compiler Collection), Linux

Fonctionnalités principales

Monitoring eBPF avancé

  • Interception kernel-level : capture des requêtes DNS au niveau système
  • Zero overhead : impact performance négligeable grâce à eBPF
  • Attribution par processus : identification du processus émetteur
  • Interface tracking : suivi par interface réseau
  • Real-time monitoring : visibilité temps réel

Modes d'affichage

  • Table mode : dashboard statistiques en temps réel
  • Tail mode : streaming live des requêtes DNS
  • Query type distribution : répartition des types de requêtes
  • Process attribution : attribution détaillée par processus
  • Domain display : affichage optionnel des domaines

Statistiques détaillées

  • Query types : A, AAAA, MX, TXT, etc.
  • Process details : PID, nom du processus, interface
  • Response times : temps de résolution (si disponible)
  • Error tracking : suivi des échecs de résolution
  • Volume metrics : nombre de requêtes par processus

Configuration flexible

  • Filtrage par processus : focus sur des applications spécifiques
  • Filtrage par domaine : surveillance de domaines particuliers
  • Output formats : différents formats d'affichage
  • Logging : export vers fichiers de logs
  • Real-time updates : rafraîchissement configurable

Cas d'usage

  • Debug DNS : Identifier qui génère des requêtes DNS inattendues
  • Security monitoring : Détecter des communications suspectes
  • Performance analysis : Analyser les patterns de résolution DNS
  • Application troubleshooting : Débugger les problèmes de connectivité
  • Network forensics : Investigation des activités réseau

Installation

Prérequis BCC

# Ubuntu/Debian
sudo apt update
sudo apt install bpfcc-tools python3-bpfcc libbcc-examples

# CentOS/RHEL
sudo yum install bcc-tools python3-bcc

# Fedora
sudo dnf install bcc-tools python3-bcc

Installation DnsTrace

# Via pipx (recommandé)
pipx install dnstrace

# Via pip
pip install dnstrace

# Depuis les sources
git clone https://github.com/furkanonder/DnsTrace
cd DnsTrace
pip install -e .

Utilisation basique

Monitoring basique

# Dashboard temps réel (nécessite sudo)
sudo dnstrace

# Mode streaming live
sudo dnstrace --tail

# Streaming avec affichage des domaines
sudo dnstrace --tail --domain

Options avancées

# Avec filtrage par processus (si supporté)
sudo dnstrace --process firefox

# Mode verbose
sudo dnstrace --tail --domain --verbose

# Output vers fichier
sudo dnstrace --tail --domain > dns-activity.log

Dashboard interactif

# Mode table avec statistiques
sudo dnstrace
# - Affiche les statistiques par processus
# - Graphiques de distribution des types de requêtes
# - Attribution par interface réseau
# - Mise à jour temps réel

Mode streaming

# Stream live des requêtes
sudo dnstrace --tail
# Affichage :
# 2024-01-23 10:30:45 | PID: 1234 | firefox | eth0 | A | example.com

# Avec domaines détaillés
sudo dnstrace --tail --domain
# Affichage enrichi avec informations complètes

Avantages

  • Technologie eBPF : monitoring kernel sans overhead, performance native
  • Attribution précise : identification exacte du processus émetteur, pas de guess
  • Temps réel : visibilité instantanée sur l'activité DNS, debugging efficace
  • Modes flexibles : dashboard ou streaming selon tes besoins, très adaptable
  • Installation simple : via pipx, intégration facile dans les workflows

Limitations

  • Nécessite privilèges root : requis pour eBPF (comme tous les outils de ce type)
  • Linux uniquement : eBPF est spécifique à Linux (pas Windows/macOS)
  • Dépendance BCC : installation parfois complexe selon la distribution

Alternatives

  • tcpdump/wireshark : Capture réseau généraliste mais plus complexe à filtrer
  • dig/nslookup : Tests ponctuels mais pas de monitoring continu
  • systemd-resolved logs : Logs système mais moins de détails
  • dnsmasq logs : Si utilisation de dnsmasq comme resolver local

Ressources