Traduction automatique du turc (Cloudflare Workers AI), non relue par l'auteur. Lire l'original en turc

← Articles

NetRadar pour Omarchy Linux : scanner réseau local rapide et non privilégié et radar d'appareils

Note —

Sortie de l'extension NetRadar, avec un cœur Quickshell et Rust, qui cartographie le réseau local en quelques secondes sans nécessiter de privilèges root, grâce aux interfaces non privilégiées du noyau Linux et à POSIX getnameinfo.

· 5 min de lecture
Sommaire

Résumé : NetRadar est une extension Omarchy qui détecte les appareils du réseau local sans demander de privilèges root. L'article explique comment la découverte s'effectue via la table de voisinage du noyau, le déclenchement mDNS et getnameinfo, la détection du fabricant à partir du préfixe MAC, le ping et le sondage de services, les mesures de sécurité, ainsi que son utilisation à la fois comme widget de barre supérieure et comme application de bureau.

Dans les réseaux domestiques et de bureau modernes, des dizaines d'appareils intelligents, téléphones, tablettes, téléviseurs, ordinateurs monocarte et équipements IoT fonctionnent connectés simultanément. Pourtant, pour la plupart des utilisateurs Linux, trouver une réponse à la question « Quels appareils se trouvent actuellement sur mon réseau local, où est ma passerelle et à quels fabricants de matériel appartiennent ces appareils ? » est généralement un processus laborieux.

Traditionnellement, on recourt pour ce besoin à des outils CLI lourds qui ouvrent un terminal et exécutent sudo nmap -sn 192.168.1.0/24 ou des commandes similaires créant des paquets bruts (raw socket), nécessitant CAP_NET_RAW et forçant les privilèges système. Dans l'environnement de bureau, une solution légère, sûre et élégante manquait : offrir depuis le panneau supérieur (bar widget), en un clic, l'état du réseau, le nombre d'appareils connectés, les correspondances IP/MAC et les fabricants de matériel.

Pour répondre à ce besoin, je suis heureux d'annoncer le projet NetRadar, conçu pour l'écosystème de bureau Omarchy Linux.

NetRadar est un radar de bureau moderne qui rend votre réseau local visible en un clic, grâce à l'interface Wayland fluide de Quickshell 4.0, à son moteur hautes performances à cœur Rust (netradar-engine), à son principe de fonctionnement sans root/non privilégié et à sa base de données intégrée de détection des fabricants de matériel IEEE OUI.

1. Architecture de découverte non privilégiée (sans root)

Pour qu'un scanner réseau puisse fonctionner en toute sécurité dans un environnement de bureau, la règle fondamentale est qu'il ne doit nécessiter aucune élévation de privilèges (sudo, pkexec, setuid ou CAP_NET_RAW).

NetRadar tire le maximum parti des interfaces du noyau accessibles à l'espace utilisateur non privilégié :

  • Table de voisinage du noyau (ip -j neigh & /proc/net/arp) : les entrées ARP et de voisinage résolues par le noyau Linux sur les interfaces réseau sont analysées au format JSON.
  • Déclenchement mDNS / UDP inoffensif : afin que les appareils du réseau restent à jour dans la table de voisinage, des paquets UDP non privilégiés sont envoyés vers les ports de multidiffusion locale standard (5353 mDNS / 137 NetBIOS), ce qui déclenche la résolution ARP du noyau.
  • DNS inverse sécurisé avec POSIX getnameinfo : les noms de domaine (hostname) des appareils sont résolus en quelques secondes en interrogeant getnameinfo au niveau de la libc et le cache local /etc/hosts.

2. Détection intégrée des fabricants IEEE OUI

Lister les appareils du réseau uniquement par leurs adresses IP (192.168.1.42) ou MAC (AC:71:2E:...) complexes est insuffisant en termes d'expérience utilisateur.

NetRadar embarque dans son moteur une table de préfixes OUI (Organizationally Unique Identifier) à haute vitesse :

  • En faisant correspondre instantanément les 3 premiers octets de l'adresse MAC, il identifie le fabricant de l'appareil (Apple, Samsung, Intel, Google, Xiaomi, Huawei, Amazon, Raspberry Pi, Espressif IoT, TP-Link, MikroTik, Cisco, VMware, etc.).
  • Il catégorise automatiquement le type de matériel : Routeur (Router), Ordinateur (PC), Smartphone (Phone), Internet des objets (IoT) ou Téléviseur intelligent (TV).
  • Il attribue dans l'interface des icônes visuelles et des mises en évidence colorées propres à chaque catégorie.

3. Sondage de services en white hat et accès rapide

NetRadar n'est pas seulement un observateur passif ; il offre également des fonctionnalités pratiques qui facilitent la gestion du réseau local :

  • Sondes de latence (ping) en direct : le temps aller-retour (RTT) en millisecondes est mesuré pour chaque appareil et son état d'accessibilité est présenté par des indicateurs vert/orange.
  • Contrôle des services de gestion : les ports de gestion standard des appareils (80 HTTP, 443 HTTPS, 8080 WebUI, 22 SSH, 53 DNS, 445 SMB) sont sondés par des poignées de main TCP non intrusives, avec un court délai d'expiration de 130 millisecondes.
  • Ouverture de l'interface web en un clic : ouvre directement le panneau d'administration web de votre routeur ou modem dans votre navigateur par défaut.
  • Lancement SSH en un clic : démarre directement une session SSH via le terminal foot vers les appareils dont un port ouvert a été détecté, comme un serveur ou un Raspberry Pi.
  • Intégration du presse-papiers Wayland : dès qu'une adresse IP ou MAC est cliquée, elle est copiée dans le presse-papiers avec wl-copy et une notification instantanée s'affiche à l'écran.

4. Conformité aux normes de sécurité et de défense

NetRadar a été développé conformément aux principes de sécurité d'Omarchy Linux :

  1. Isolation des sous-processus : Toutes les commandes système externes sont exécutées dans un groupe de processus indépendant via cmd.process_group(0), avec des variables d'environnement nettoyées (PATH=/usr/bin:/bin, LC_ALL=C) et des lectures de pipe en O_NONBLOCK.
  2. Tampon limité et plafond mémoire : Les lectures du pipe de processus sont limitées par un plafond de 64 KiB (MAX_BUFFER_CAP = 64 * 1024), et les fichiers d'état persistants par un plafond de 1 MiB (MAX_REGISTRY_FILE_SIZE = 1024 * 1024). La consommation de mémoire et les attaques DoS sont empêchées.
  3. Défense contre l'injection d'arguments : Les adresses IP passent par une validation stricte Ipv4Addr. Le terminateur d'arguments --, qui empêche la manipulation des options, est transmis aux commandes ping et ssh.
  4. Délimitation des sous-réseaux privés (CIDR Bounding) : Les opérations de balayage et de sondage de ports sont strictement limitées aux adresses RFC 1918 (10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16), RFC 3927 (link-local) et de bouclage. L'envoi de paquets vers des adresses Internet publiques est empêché.
  5. Stockage atomique en mode 0600 : Les alias d'appareils et la liste des appareils de confiance sont enregistrés de manière atomique via .tmp_*, dans des répertoires aux permissions 0700 et des fichiers aux permissions 0600, où les liens symboliques (symlink) sont strictement refusés.
  6. Protection contre le XSS et le balisage : Tous les textes dynamiques de l'interface Quickshell/QML sont traités avec la déclaration textFormat: Text.PlainText.

5. Utilisation en double mode

NetRadar est optimisé pour deux scénarios d'utilisation différents :

  • Widget de barre supérieure Quickshell (Panel.qml) : Un badge compteur affichant le nombre d'appareils actifs dans la barre supérieure droite du bureau, et un menu radar rapide qui s'ouvre au clic.
  • Application de bureau (netradar-dashboard, shell.qml) : Un large panneau de contrôle doté de puces de filtre par catégorie (Tous, Routeurs, Ordinateurs, Téléphones, IoT), d'une barre de recherche et d'indicateurs de trafic réseau instantané (débits RX/TX).

6. Installation et utilisation

Compilation depuis le code source

# Depoyu klonlayın
git clone https://github.com/ozdil/omarchy-netradar.git
cd omarchy-netradar

# Motoru derleyin
cargo build --release --locked

# İkili dosyaları kurun
install -Dm755 target/release/netradar-engine ~/.local/bin/netradar-engine
install -Dm755 netradar ~/.local/bin/netradar
install -Dm755 netradar-dashboard ~/.local/bin/netradar-dashboard
install -Dm755 netradar-status ~/.local/bin/netradar-status
install -Dm644 netradar.desktop ~/.local/share/applications/netradar.desktop

Utilisation de la CLI

# Tam JSON tarama çıktısı (otomasyon ve betikler için)
netradar-engine --scan

# Tek satır insan okunabilir durum özeti
netradar-status

# Belirli bir cihazın gecikmesini ölçme
netradar-engine --ping 192.168.1.1

# Bir cihaza kalıcı takma ad (alias) atama
netradar-engine --set-alias "AC:71:2E:95:48:56" "Ana Ofis Router"

# Grafiksel kontrol panelini başlatma
netradar

Ma lecture

  • Pas besoin de root pour scanner le réseau : les enregistrements de voisinage déjà tenus par le noyau suffisent à la plupart des besoins.
  • Le scan se limite aux réseaux privés : on ne sort pas de RFC 1918 et du link-local.
  • Les entrées sont transmises aux commandes en toute sécurité : la validation des IP et le terminateur -- empêchent l'injection d'arguments.

Sources