Aller au contenu principal

Les outils réseau qu'Apple a retirés, sur tous vos appareils Apple

Ping, traceroute, DNS, whois, MX et DNSBL, gratuits sur Mac, iPhone et iPad, en vrai ICMP, dans l'app d'où vous ouvrez déjà vos sessions SSH.

Par Lucas Russo, développeur de SSHive · Mis à jour le

Vous ouvrez Spotlight, tapez « Utilitaire de réseau », et rien ne vient. Ce n'est pas une installation abîmée : l'application a disparu. L'Utilitaire de réseau était livré avec tous les Mac jusqu'à macOS Catalina 10.15, a été déprécié dans Big Sur 11 en juin 2020 (le bundle était encore dans /System/Library/CoreServices/Applications/ mais ses onglets ne faisaient plus rien) et il a été purement et simplement retiré du système à partir de Ventura 13. Sur un Mac actuel (vérifié ici sur macOS 27.0, build 26A5388g), il n'est ni dans /System/Library/CoreServices/Applications/ ni dans /System/Applications/Utilities/. Les pages d'assistance d'Apple le décrivent encore au présent, faute d'avoir été mises à jour depuis l'URL macOS 10.15. Les tâches quotidiennes qu'il couvrait (cet hôte répond-il, où le chemin casse-t-il, vers quoi ce nom résout-il, à qui appartient ce domaine) passent donc désormais par le Terminal. Ou par rien du tout, si ce que vous avez en main est un iPhone. SSHive les remet à disposition, sur macOS, iPhone et iPad, dans le client SSH d'où vous ouvrez déjà vos sessions : ping, traceroute, résolution DNS, whois, MX et vérification des listes noires DNSBL, plus une vue de vos interfaces réseau locales. Tout est gratuit. Pas de publicité, pas d'abonnement, pas de compte, et aucun verrou Pro sur aucun de ces outils, sur aucune plateforme. Le ping et le traceroute sont du vrai ICMP partout : version Mac App Store, iPhone et iPad. C'est assez inhabituel pour mériter une phrase : on tient généralement pour acquis que le bac à sable d'Apple l'interdit, et c'est faux. Un socket ICMP datagramme n'exige pas les privilèges root et il est autorisé ; seul le socket brut est refusé. Le mécanisme complet est expliqué sur la page traceroute. Une chose que ce n'est pas : ni un scanner de ports, ni netstat. Les onglets Port Scan et Netstat de l'Utilitaire de réseau n'ont pas d'équivalent ici, et il faut garder nmap et lsof -i pour cela. Ce qu'aucun clone de l'Utilitaire de réseau n'embarque, en revanche : les outils côté messagerie. Et quand le diagnostic désigne un hôte précis, la session SSH est à un onglet, pas à une application.

Ce que fait SSHive

Ping : ça répond, et à quel prix

Dix sondes sur Mac, vingt sur iPhone et iPad, avec le RTT de chaque sonde, son TTL, un taux de perte et une moyenne. De véritables requêtes echo ICMP sur toutes les versions Apple (Mac App Store, iPhone et iPad) émises depuis un socket datagramme non privilégié plutôt qu'en déléguant à un binaire. Une sonde TCP vers un port de votre choix est également proposée, signalée comme telle, pour les hôtes qui filtrent l'ICMP.

Traceroute : où le chemin casse vraiment

Trente sauts, trois sondes ICMP par palier, diffusées à mesure que chaque routeur répond, avec un bouton Arrêter. Le comportement est identique dans la version Mac App Store, sur iPhone et sur iPad, car SSHive fabrique lui-même les sondes depuis un socket ICMP datagramme au lieu de piloter le binaire système setuid. Un palier resté muet s'affiche en astérisques ; un système qui refuse l'ICMP est signalé comme tel, jamais par un chemin inventé.

Résolution DNS : six types d'un coup

A, AAAA, MX, CNAME, NS et TXT interrogés en parallèle via le résolveur système, chaque requête protégée séparément : un domaine sans MX affiche quand même son enregistrement A. L'iPhone et l'iPad ajoutent SOA, et la durée de vie de chaque réponse.

Whois en direct sur le port TCP 43

Un vrai client WHOIS, pas un habillage d'API web tierce. SSHive ouvre lui-même le port 43 et suit les renvois de registre : sur Mac, jusqu'à trois sauts (deux renvois), en partant d'une table interne de dix-huit serveurs de TLD ; sur iPhone et iPad, en partant de l'IANA. Sur Mac, il extrait registrar, dates, serveurs de noms, statuts, DNSSEC et contact abuse, et signale une expiration à moins de 60 jours.

MX et DNSBL, le duo qu'Apple n'a jamais livré

La recherche MX trie les serveurs par priorité. Sur Mac, elle résout aussi chacun en IPv4, fait le DNS inverse de l'adresse et la passe au moteur de listes noires : routage et réputation du courrier tiennent dans un seul tableau. La vérification DNSBL autonome rend trois verdicts sur iPhone et iPad (listée, propre ou sans réponse), si bien qu'une zone muette n'y est jamais comptée comme propre ; le Mac en rend deux, et lit une zone qui ne répond pas comme propre. IPv4 uniquement.

Gratuit partout, et franc sur les manques

Chaque outil présenté ici est gratuit sur Mac, iPhone et iPad. Aucun ne passe par la vérification de licence : pas d'invitation à passer Pro, pas de publicité, pas de compte. Ce qui manque est assumé : pas de scanner de ports, pas de netstat, pas de finger. SSHive Pro s'achète à part, une seule fois (environ 14,99 €, achat universel pour Mac, iPhone et iPad, sans abonnement) : il lève les limites de la version gratuite et ajoute RDP et VNC, sans jamais toucher au diagnostic.

Comment faire, étape par étape

  1. 1

    Ouvrez l'onglet outils sur votre Mac

    Cliquez sur l'icône réseau dans la barre latérale (son infobulle indique Outils réseau), ou sur la pastille Outils réseau de l'écran d'accueil. Les deux ouvrent un onglet d'outils dédié à côté de vos sessions : lancer un diagnostic ne vous coûte jamais une connexion SSH ouverte.

  2. 2

    Choisissez une carte : tout tient sur un écran

    Le panneau est découpé en trois sections : Cette machine (vos interfaces réseau), Résolution et réputation (Recherche DNS, Vérification DNSBL, Recherche MX et Whois) et Joignabilité (Ping, Test de port et Traceroute). Rien n'est enterré dans un menu : chaque outil a son champ de saisie et son bouton, et vous pouvez déplacer ou masquer les cartes au sein d'une section.

  3. 3

    Sur iPhone, passez par l'onglet Outils

    Touchez Outils dans la barre d'onglets du bas (l'icône réseau). La liste est coupée en trois sections : Diagnostic (Ping, DNS Lookup, Traceroute et Whois), Email & IP (MX Lookup et Blacklist Check) et Informations, qui contient les interfaces réseau. Sur iPad, la même liste se trouve dans la barre latérale, sous Outils réseau.

  4. 4

    Saisissez une cible et lancez

    Chaque outil accepte un nom d'hôte ou une IP : example.com pour ping, traceroute, DNS, whois et MX ; une IPv4 en quatre octets pour la vérification de listes noires, qui accepte aussi un domaine et le résout d'abord. Les exécutions en flux (ping, traceroute) s'affichent au fil de l'eau et s'arrêtent en cours de route avec Arrêter ou Annuler.

  5. 5

    Passez du diagnostic au correctif sans changer d'app

    Quand la sortie désigne une machine, ouvrez un onglet de session dessus et connectez-vous. Le ping montre la perte, le DNS confirme que l'enregistrement est bon, vous ouvrez un SSH et relancez le service. Même fenêtre sur Mac, même app à 3 h du matin sur un téléphone. C'est l'étape qu'aucune app de diagnostic seule ne peut faire.

Comment lire ce que ces outils vous disent

Travaillez dans cet ordre : le nom, puis la joignabilité, puis le chemin, puis la réputation. La plupart des incidents s'arrêtent à la première étape. La perte de paquets. Une perte au ping ne compte que si elle est constante et si la destination traite réellement l'ICMP. Un routeur qui jette 3 % des echo requests tout en acheminant votre trafic TCP à pleine vitesse fait son travail : l'ICMP relève du plan de contrôle, et c'est la première chose limitée en charge. Ce qui compte, c'est la perte qui suit votre symptôme réel, et la gigue : des sondes à 40, 41, 39, 210, 42 ms sont plus inquiétantes que dix sondes stables à 180 ms. Gardez aussi en tête le moteur utilisé. L'ICMP est le moteur par défaut et mesure le chemin lui-même. Si vous êtes passé au moteur TCP parce que l'hôte filtre l'ICMP, une perte totale signifie que la sonde a été jetée en silence : un pare-feu qui écarte le trafic vers le port choisi affiche 100 % de perte sur une machine en parfaite santé. Un hôte sans service mais sans filtrage renvoie un RST, que SSHive compte à juste titre comme joignable, avec la mention « port fermé ». Les trois astérisques d'un traceroute. Un saut étoilé au milieu d'un tracé par ailleurs complet n'est presque jamais le coupable : ce routeur a simplement choisi de ne pas envoyer son message ICMP time exceeded, ou l'a limité en débit. Une vraie coupure se présente autrement : tous les sauts à partir de N sont étoilés et la destination ne répond jamais. Même logique pour la latence : un saut à 180 ms suivi d'un saut à 30 ms n'est pas un saut lent, c'est un routeur qui fait passer votre sonde après le reste. Seule une latence qui monte et reste haute jusqu'au dernier saut signale un problème de chemin. Les statuts WHOIS. clientTransferProhibited est bon signe : votre registrar a verrouillé le domaine contre un transfert non autorisé. serverHold est l'urgence : le registre a retiré le domaine de la zone, il ne résout plus du tout. redemptionPeriod et pendingDelete signifient qu'il a déjà expiré. La priorité MX est une préférence, pas une note de qualité : le plus petit nombre est essayé en premier, les valeurs égales se partagent la charge. Les hits DNSBL ne se valent pas. Lisez le code de retour (le Mac affiche aussi la raison TXT, l'iPhone et l'iPad le code seul). Une entrée Spamhaus PBL dit seulement que « cette IP appartient à une plage dynamique qui ne devrait pas envoyer de courrier en direct », ce qui est normal sur une ligne résidentielle. UCEPROTECT niveau 2, interrogé uniquement sur iPhone et iPad, liste toute une allocation parce qu'un voisin a spammé, et la plupart des destinataires l'ignorent : un hit niveau 2 isolé au milieu de lignes propres est généralement du bruit. C'est Barracuda, ou Spamhaus SBL/XBL, qui fait réellement rebondir votre courrier. Et méfiez-vous de tout résultat obtenu via un résolveur public : plusieurs zones refusent ces requêtes par un code 127.255.255.x. Le Mac affiche ce code en « Listé » alors que rien n'est listé, et lit une erreur DNS comme « non listé » ; l'iPhone et l'iPad classent l'un et l'autre à part, comme une absence de réponse. Vérifiez le code de retour et refaites le test depuis un réseau doté de son propre résolveur récursif.

Questions fréquentes

Apple a-t-il vraiment supprimé l'Utilitaire de réseau de macOS, et quand ?+
Oui. Elle était pleinement fonctionnelle jusqu'à macOS Catalina 10.15. Big Sur 11, en juin 2020, l'a déclarée obsolète : le bundle restait dans /System/Library/CoreServices/Applications/, mais les onglets ne faisaient plus rien. À partir de Monterey 12 elle était donnée pour disparue, avec l'outil en ligne de commande networkQuality en lot de consolation partiel. Sur macOS 27.0 (build 26A5388g), elle est absente de /System/Library/CoreServices/Applications/ comme de /System/Applications/Utilities/. Les pages d'assistance d'Apple qui la décrivent sont toujours en ligne, mais figées sur l'URL macOS 10.15.
Lesquels des six outils fonctionnent vraiment sur iPhone et iPad ?+
Tous : le ping et le traceroute en vrai ICMP, la résolution DNS, le whois, le MX et la vérification DNSBL, plus la vue des interfaces réseau. Les versions iPhone et iPad exécutent le même moteur de sondes que le Mac : une trace ou un ping lancé depuis votre téléphone est donc directement comparable à celui lancé depuis votre bureau, ce qui est précisément ce qu'il faut quand la question est de savoir si le problème suit l'appareil ou le réseau.
Le ping de SSHive est-il un vrai ping ICMP ?+
Oui, sur toutes les versions Apple : Mac App Store, iPhone et iPad. SSHive ouvre un socket ICMP datagramme non privilégié et envoie de véritables requêtes Echo, en rapportant le temps d'aller-retour et le TTL de chaque réponse. La sonde TCP est un mode distinct, clairement signalé, pour les hôtes qui filtrent l'ICMP ; quand vous l'utilisez, rappelez-vous que le RTT mesuré inclut la poignée de main TCP (il est donc légèrement surévalué) et qu'un port filtré fait apparaître injoignable une machine qui répond parfaitement en ICMP.
Le traceroute fonctionne-t-il vraiment dans la version Mac App Store, sous bac à sable ?+
Oui. Un traceroute doit fixer le TTL IP de chaque sonde sortante puis lire les réponses ICMP time exceeded renvoyées par les routeurs, et l'idée répandue veut que cela exige un socket brut refusé par le bac à sable. C'est faux : un socket ICMP datagramme fait les deux, n'exige pas les privilèges root, et il est autorisé. Cela a été vérifié sous sandbox-exec avec les entitlements réels de SSHive avant livraison. La seule vraie exigence est que l'application détienne com.apple.security.network.server en plus de network.client : avec le seul entitlement client, les réponses reviennent en EPERM, ce qui ressemble exactement à un réseau filtrant. SSHive déclare les deux.
Les outils réseau sont-ils gratuits, ou faut-il la version Pro ?+
Les six sont gratuits, sur Mac, iPhone et iPad. Aucun ne passe par la vérification de licence : pas d'invitation à l'achat, pas d'encart publicitaire avant un résultat, pas de compte à créer. Vous installez l'app, vous lancez un whois, vous ne croisez aucun mur payant. SSHive Pro se paie à part, une seule fois (environ 14,99 €, achat universel pour Mac, iPhone et iPad, sans abonnement) : il lève les limites de la version gratuite et ajoute RDP, VNC et les autres fonctions Pro. Il ne verrouille le diagnostic sur aucune plateforme.
SSHive fait-il passer mes requêtes par une API tierce ?+
Non. Les requêtes WHOIS ouvrent une connexion TCP directe vers le port 43 du serveur de registre ou de registrar : le Mac enchaîne jusqu'à trois sauts (deux renvois) pour atteindre le serveur qui fait autorité, l'iPhone et l'iPad partent de l'IANA et suivent les renvois à partir de là. Les résolutions DNS et les vérifications de listes noires passent par les résolveurs configurés sur votre appareil, sans relais intermédiaire. C'est une question d'exactitude autant que de vie privée : beaucoup d'apps whois mobiles passent par un service web, qui glisse un cache et un tiers entre vous et le registre.
Est-ce un remplacement complet de l'Utilitaire de réseau ?+
Pas au pied de la lettre, et autant le dire tout de suite. Ping, Lookup, Traceroute, Whois et la liste d'interfaces de l'onglet Infos ont tous leur équivalent ici. Le balayage de ports et Netstat, non : pour ça, gardez nmap et netstat -an ou lsof -i dans le Terminal. Finger est un protocole mort dont personne n'a besoin. En échange, vous obtenez deux choses que l'Utilitaire de réseau n'a jamais eues et qu'aucun de ses clones n'embarque : la recherche MX et la vérification DNSBL, sur iPhone et iPad autant que sur Mac.

Ce que le bac à sable interdit vraiment, et ce qu'il n'interdit pas

Toutes les différences de plateforme de cette section se ramènent à une question : qu'une application en bac à sable a-t-elle réellement le droit d'ouvrir. L'ICMP n'a pas de numéros de port. Pour envoyer une requête echo et lire la réponse, un processus a besoin d'un socket qui parle directement le protocole IP 1, et l'on suppose généralement qu'il s'agit d'un socket brut : réservé à root, et catégoriquement refusé par le bac à sable. C'est cette supposition qui a tenu le ping et le traceroute hors de bien des applications App Store, et elle est fausse. Darwin propose aussi un socket ICMP datagramme, socket(AF_INET, SOCK_DGRAM, IPPROTO_ICMP), que tout processus non privilégié peut ouvrir et que le bac à sable autorise. C'est la raison pour laquelle /sbin/ping a perdu son bit setuid il y a des années, et c'est ce qu'utilise l'exemple SimplePing d'Apple sur iOS. Le ping et le traceroute n'ont donc qu'une seule implémentation, pas plusieurs. SSHive assemble lui-même les requêtes Echo, calcule la somme de contrôle ICMP, positionne IP_TTL quand une trace le demande, et lit ce qui revient : sur macOS via un petit addon natif N-API, sur iPhone et iPad via le type Swift équivalent. Les réponses sont appariées sur l'identifiant, le numéro de séquence, l'adresse source et un cookie aléatoire de huit octets dans la charge utile, car un socket ICMP datagramme reçoit aussi une copie des réponses destinées aux autres processus de la machine. Une exigence a été découverte par la mesure plutôt que par la documentation, et elle mérite d'être répétée car elle échoue en silence. Sous sandbox-exec avec com.apple.security.network.client seul, socket() réussit, sendto() réussit, et recvfrom() renvoie EPERM : la sonde part et rien ne revient jamais, ce qui est indiscernable d'un réseau qui filtre l'ICMP. com.apple.security.network.server est également nécessaire. SSHive déclare les deux, et c'est pourquoi la version App Store, sous bac à sable, mesure de vrais allers-retours au lieu d'expirer en silence. Une sonde TCP reste proposée, mais comme choix délibéré pour les hôtes qui filtrent l'ICMP, non comme substitut : une connexion vers un port que vous désignez, chronométrée de la demande à l'état prêt, signalée par un badge TCP. Une subtilité s'y attache : une connexion refusée compte comme une réussite, car un RST prouve qu'un hôte vivant a répondu. Le port est simplement fermé, et le journal le dit. Le DNS, le whois et le DNSBL n'exigent aucun privilège : aucune plateforme n'a rien à contourner, seule la portée diffère. Sur Mac, le DNS interroge A, AAAA, CNAME, MX, TXT et NS en parallèle ; l'iPhone et l'iPad ajoutent SOA et donnent la durée de vie de chaque réponse. Chaque type est protégé séparément : un domaine sans MX affiche quand même son enregistrement A. Le WHOIS est une simple session TCP sur le port 43 : on envoie la requête, on termine par CRLF, on lit jusqu'à la fermeture par le serveur. Sur Mac, il suit la chaîne de renvois jusqu'à trois sauts, soit deux renvois, avec dix secondes de délai par saut ; l'iPhone et l'iPad partent de l'IANA et suivent les renvois à partir de là. Une vérification DNSBL est une résolution d'enregistrement A sur les octets inversés d'une adresse IPv4 sous chaque zone, lancées en parallèle, et les verdicts dépendent de l'appareil. Le Mac rend « listée » ou « propre », et lit une erreur DNS comme propre. L'iPhone et l'iPad rendent trois verdicts, listée, propre ou sans réponse : une zone restée muette, ou qui renvoie un code de refus plutôt qu'un signalement, n'y est jamais comptée comme propre.