<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Debian &#8211; Garbell.NET</title>
	<atom:link href="https://www.garbell.net/tag/debian/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.garbell.net</link>
	<description>Notes techniques : Linux, réseau et télécoms, depuis 2003</description>
	<lastBuildDate>Thu, 01 Oct 2026 19:17:45 +0000</lastBuildDate>
	<language>fr-FR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	
<site xmlns="com-wordpress:feed-additions:1">65339430</site>	<item>
		<title>Analyser les appels SIP en ligne de commande avec sngrep</title>
		<link>https://www.garbell.net/2026/10/01/analyser-appels-sip-sngrep/</link>
					<comments>https://www.garbell.net/2026/10/01/analyser-appels-sip-sngrep/#respond</comments>
		
		<dc:creator><![CDATA[AMGV]]></dc:creator>
		<pubDate>Thu, 01 Oct 2026 19:17:45 +0000</pubDate>
				<category><![CDATA[Command-Line]]></category>
		<category><![CDATA[Télécom]]></category>
		<category><![CDATA[command-line]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[network]]></category>
		<category><![CDATA[pcap]]></category>
		<category><![CDATA[SIP]]></category>
		<category><![CDATA[sngrep]]></category>
		<category><![CDATA[VoIP]]></category>
		<guid isPermaLink="false">https://www.garbell.net/2026/10/01/analyser-appels-sip-sngrep/</guid>

					<description><![CDATA[Un appel qui sonne dans le vide, un poste qui ne s&#8217;enregistre plus, un « 486 Busy Here » inexpliqué : pour comprendre ce qui se passe en SIP, il faut voir les messages échangés. Wireshark le fait très bien, mais demande une interface graphique et un transfert de fichier. sngrep affiche les dialogues SIP [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Un appel qui sonne dans le vide, un poste qui ne s&rsquo;enregistre plus, un « 486 Busy Here » inexpliqué : pour comprendre ce qui se passe en SIP, il faut voir les messages échangés. Wireshark le fait très bien, mais demande une interface graphique et un transfert de fichier. <strong>sngrep</strong> affiche les dialogues SIP et leur diagramme de séquence directement dans le terminal, sur le serveur lui-même : IPBX, SBC ou passerelle.</p>
<p>Les commandes et les écrans ci-dessous ont été vérifiés sur Debian 13 (Trixie) avec sngrep 1.8.2.</p>
<h2>Installation</h2>
<pre>apt install sngrep</pre>
<p>La capture réseau demande les droits root : lancé par un utilisateur normal, sngrep s&rsquo;arrête avec <code>Couldn't activate capture: socket: Operation not permitted</code>. Utilisez <code>sudo</code> pour la capture en direct. La lecture d&rsquo;un fichier pcap, elle, ne demande aucun droit particulier.</p>
<h2>Capture en direct</h2>
<pre>sudo sngrep</pre>
<p>Par défaut, sngrep écoute sur toutes les interfaces (<code>any</code>) et affiche tous les paquets SIP qu&rsquo;il reconnaît. Pour restreindre :</p>
<pre>sudo sngrep -d eth0                      # une seule interface
sudo sngrep -d eth0 port 5060            # filtre BPF, même syntaxe que tcpdump
sudo sngrep -d eth0 host 192.168.1.1 and udp
sudo sngrep -c                           # uniquement les dialogues qui commencent par un INVITE</pre>
<p>L&rsquo;option <code>-c</code> est la plus utile sur un serveur chargé : elle masque les REGISTER, OPTIONS et autres messages qui noient les appels.</p>
<h2>La liste des dialogues</h2>
<p>L&rsquo;écran principal liste un dialogue SIP par ligne : méthode, appelant, appelé, nombre de messages, source et destination.</p>
<pre>                         sngrep - SIP messages flow viewer
  Current Mode: Offline          Dialogs: 2          Filename: test.pcap
  Match Expression:              BPF Filter:
  Display Filter:
      ^Idx Method     SIP From            SIP To                  Msgs  Source              Destination
  [ ] 1    INVITE     101@192.168.1.1     102@192.168.1.1         7     192.168.1.20:5060   192.168.1.1:5060
  [ ] 2    INVITE     101@192.168.1.1     0600000000@192.168.1.1  5     192.168.1.20:5060   192.168.1.1:5060

Esc Quit   Enter Show   Space Select   F1 Help   F2 Save   F3 Search   F4 Extended   F5 Clear   F7 Filter</pre>
<p>Touches principales sur cet écran :</p>
<pre>Entrée    afficher le diagramme du dialogue sélectionné
Espace    sélectionner plusieurs dialogues (Entrée les affiche ensemble)
F3 ou /   filtre d'affichage : ne garder que les lignes contenant un texte
F4 ou x   diagramme étendu (le dialogue et ceux qui lui sont liés)
F6 ou R   messages bruts du dialogue sélectionné
F7 ou F   filtres : SIP From, SIP To, source, destination, contenu, méthodes
F2 ou S   enregistrer la capture
F5        vider la liste (irréversible)
p         suspendre ou reprendre la capture
F1 ou h   aide
Échap, q  revenir à l'écran précédent ou quitter</pre>
<p>Le filtre <code>F7</code> permet notamment de décocher REGISTER, OPTIONS ou NOTIFY pour ne garder que les appels.</p>
<h2>Le diagramme d&rsquo;un appel</h2>
<p>Entrée sur un dialogue affiche son diagramme de séquence, avec l&rsquo;horodatage et le délai entre chaque message. Le message sélectionné est affiché en entier sur la droite.</p>
<pre>                   Call flow for c1@192.168.1.20 (Color by Request/Response)
                                                        │INVITE sip:102@192.168.1.1 SIP/2.0
            192.168.1.20:5060      192.168.1.1:5060     │Via: SIP/2.0/UDP 192.168.1.20:5060;branch=...
          ──────────┬─────────  ──────────┬─────────    │From: &lt;sip:101@192.168.1.1&gt;;tag=ac1
  00:16:40.000000   │        INVITE       │             │To: &lt;sip:102@192.168.1.1&gt;
        +0.010000   │ ──────────────────&gt; │             │Call-ID: c1@192.168.1.20
  00:16:40.010000   │      100 Trying     │             │CSeq: 1 INVITE
        +0.490000   │ &lt;────────────────── │             │Content-Length: 0
  00:16:40.500000   │     180 Ringing     │
        +2.500000   │ &lt;────────────────── │
  00:16:43.000000   │        200 OK       │
        +0.050000   │ &lt;────────────────── │
  00:16:43.050000   │         ACK         │
       +16.950000   │ ──────────────────&gt; │
  00:17:00.000000   │         BYE         │
        +0.020000   │ ──────────────────&gt; │
  00:17:00.020000   │        200 OK       │
                    │ &lt;────────────────── │</pre>
<p>Touches sur cet écran :</p>
<pre>↑ ↓       passer d'un message à l'autre
Entrée    afficher le message sélectionné en brut
Espace    sélectionner deux messages pour les comparer
F2 ou d   afficher le détail SDP (codecs, adresses et ports média)
F3 ou m   afficher ou masquer les flux RTP (avec la capture RTP activée)
s         diagramme compressé
c         changer le mode de couleur
Échap     revenir à la liste</pre>
<p>Ce que l&rsquo;on lit dans le diagramme :</p>
<ul>
<li><strong>Un INVITE répété sans réponse</strong> : les retransmissions indiquent que le message n&rsquo;arrive pas ou que la réponse ne revient pas. On regarde alors le pare-feu ou le routage.</li>
<li><strong>Un 200 OK répété après le décroché</strong> : l&rsquo;ACK n&rsquo;arrive pas au destinataire. Classique avec un NAT mal géré, l&rsquo;appel est souvent coupé au bout d&rsquo;une trentaine de secondes.</li>
<li><strong>Une réponse 4xx, 5xx ou 6xx</strong> : le code donne la cause du refus (401/407 authentification, 404 numéro inconnu, 486 occupé, 488 codecs incompatibles, 503 service indisponible…).</li>
<li><strong>Un appel établi sans son</strong> : comparez les adresses IP du SDP (touche <code>F2</code>) dans l&rsquo;INVITE et dans le 200 OK. Une adresse privée qui part vers l&rsquo;extérieur trahit un problème de NAT.</li>
</ul>
<h2>Expression de recherche : ne capturer que certains appels</h2>
<p>Un texte donné en argument filtre les dialogues dès la capture : si la requête qui ouvre le dialogue contient ce texte, tout le dialogue est conservé, réponses comprises.</p>
<pre>sudo sngrep -c 0600000000</pre>
<p>Seuls les appels contenant ce numéro sont affichés. Attention, la recherche porte sur la requête initiale (l&rsquo;INVITE) : <code>sngrep 486</code> ne trouvera pas les appels rejetés en « 486 Busy Here », car ce code n&rsquo;apparaît que dans la réponse. Pour cela, utilisez le filtre d&rsquo;affichage <code>F3</code> une fois la capture lancée.</p>
<p>Autres options :</p>
<pre>-i        rendre la recherche insensible à la casse
-v        inverser la recherche (exclure les dialogues qui correspondent)</pre>
<h2>Enregistrer et relire une capture</h2>
<p>Enregistrer tout ce qui est capturé dans un fichier pcap, tout en gardant l&rsquo;interface :</p>
<pre>sudo sngrep -d eth0 -O /tmp/sip-$(date +%F-%H%M).pcap port 5060</pre>
<p>Capturer sans interface, par exemple pendant qu&rsquo;on reproduit un problème depuis un poste :</p>
<pre>sudo sngrep -N -c -O /tmp/appels.pcap</pre>
<p>sngrep affiche seulement le nombre de dialogues capturés ; on arrête avec <code>Ctrl+C</code>. Avec une expression de recherche, seuls les dialogues correspondants sont écrits dans le fichier :</p>
<pre>sudo sngrep -N -O /tmp/appel-client.pcap 0600000000</pre>
<p>Relire ensuite le fichier, sur le serveur ou sur un autre poste, sans droits root :</p>
<pre>sngrep -I /tmp/appels.pcap</pre>
<p>Le fichier est au format pcap standard : il s&rsquo;ouvre aussi dans Wireshark ou avec <code>tcpdump -r</code>. Les filtres BPF fonctionnent aussi en lecture : <code>sngrep -I capture.pcap host 192.168.1.1</code>.</p>
<p>Depuis l&rsquo;interface, <code>F2</code> ouvre la fenêtre d&rsquo;enregistrement. On y choisit les dialogues à garder (tous, sélectionnés avec <code>Espace</code>, ou filtrés) et le format : pcap avec le SIP seul, pcap avec SIP et RTP, ou texte.</p>
<pre>  ┌─ Dialogs ───────────────────┐ ┌─ Format ────────────────────┐
  │(*) all dialogs              │ │(*) .pcap (SIP)              │
  │( ) selected dialogs [0]     │ │(-) .pcap (SIP + RTP)        │
  │( ) filtered dialogs [2]     │ │( ) .txt                     │
  └─────────────────────────────┘ └─────────────────────────────┘</pre>
<p>Le format « SIP + RTP » n&rsquo;est disponible que si la capture a été lancée avec <code>-r</code>, qui conserve le contenu des paquets RTP en mémoire :</p>
<pre>sudo sngrep -c -r -O /tmp/appel-avec-son.pcap</pre>
<p>Le son peut ensuite être écouté dans Wireshark (menu Telephony &gt; VoIP Calls). Attention à la mémoire : avec <code>-r</code>, chaque appel occupe nettement plus de place.</p>
<h2>Longues captures</h2>
<p>sngrep garde les dialogues en mémoire, avec une limite par défaut de 20 000 dialogues. Pour le laisser tourner longtemps sur un serveur chargé :</p>
<pre>sudo sngrep -c -l 5000 -R</pre>
<p><code>-l</code> fixe la limite et <code>-R</code> supprime les dialogues les plus anciens quand elle est atteinte, au lieu d&rsquo;arrêter la capture.</p>
<h2>Configuration</h2>
<p>Les réglages par défaut se placent dans <code>/etc/sngreprc</code> (pour tout le système) ou <code>~/.sngreprc</code> (pour un utilisateur). Le fichier livré par Debian contient tous les réglages possibles, en commentaire. Exemple :</p>
<pre>vi ~/.sngreprc</pre>
<pre># Interface et filtre par défaut
set capture.device eth0
set filter.methods INVITE
# Dossier proposé à l'enregistrement (F2)
set sngrep.savepath /tmp/sngrep-captures
# Ne pas demander de confirmation en quittant
set cl.noexitprompt on</pre>
<p>Pour afficher la configuration active : <code>sngrep -D</code>.</p>
<h2>Pour aller plus loin</h2>
<ul>
<li><strong>SIP sur TLS</strong> : l&rsquo;option <code>-k</code> accepte la clé privée RSA du serveur pour déchiffrer les paquets capturés.</li>
<li><strong>HEP/EEP</strong> : sngrep peut recevoir des paquets encapsulés envoyés par un IPBX ou un SBC (<code>-L udp:0.0.0.0:9060</code>) ou en envoyer vers un serveur Homer (<code>-H udp:192.168.1.50:9060</code>). Pratique pour observer un équipement sur lequel on ne peut pas installer sngrep.</li>
</ul>
<h2>En résumé</h2>
<pre>sudo sngrep -c                               # voir les appels en direct
sudo sngrep -c 0600000000                    # suivre un numéro
sudo sngrep -N -c -O /tmp/appels.pcap        # capturer sans interface
sngrep -I /tmp/appels.pcap                   # relire une capture</pre>
<h2>Sources</h2>
<ul>
<li><a href="https://github.com/irontec/sngrep">sngrep sur GitHub (Irontec)</a></li>
<li><a href="https://manpages.debian.org/trixie/sngrep/sngrep.8.en.html">sngrep(8), Debian Trixie</a></li>
<li><a href="https://packages.debian.org/trixie/sngrep">Paquet sngrep, Debian Trixie</a></li>
<li><a href="https://www.rfc-editor.org/rfc/rfc3261">RFC 3261 : SIP</a></li>
</ul>
]]></content:encoded>
					
					<wfw:commentRss>https://www.garbell.net/2026/10/01/analyser-appels-sip-sngrep/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1631</post-id>	</item>
		<item>
		<title>Pinger plusieurs adresses IP en même temps : gping, noping et fping</title>
		<link>https://www.garbell.net/2026/10/01/pinger-plusieurs-adresses-ip-gping-noping-fping/</link>
					<comments>https://www.garbell.net/2026/10/01/pinger-plusieurs-adresses-ip-gping-noping-fping/#respond</comments>
		
		<dc:creator><![CDATA[AMGV]]></dc:creator>
		<pubDate>Thu, 01 Oct 2026 19:06:57 +0000</pubDate>
				<category><![CDATA[Command-Line]]></category>
		<category><![CDATA[Network]]></category>
		<category><![CDATA[command-line]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[fping]]></category>
		<category><![CDATA[gping]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[network]]></category>
		<category><![CDATA[noping]]></category>
		<category><![CDATA[ping]]></category>
		<guid isPermaLink="false">https://www.garbell.net/2026/10/01/pinger-plusieurs-adresses-ip-gping-noping-fping/</guid>

					<description><![CDATA[La commande ping ne surveille qu&#8217;une seule adresse à la fois. Pour suivre en parallèle la passerelle, un serveur et un DNS public, ou pour repérer quelles machines répondent sur un sous-réseau, trois outils des dépôts Debian font le travail directement dans le terminal : gping, noping et fping. Les commandes ci-dessous ont été vérifiées [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>La commande <code>ping</code> ne surveille qu&rsquo;une seule adresse à la fois. Pour suivre en parallèle la passerelle, un serveur et un DNS public, ou pour repérer quelles machines répondent sur un sous-réseau, trois outils des dépôts Debian font le travail directement dans le terminal : <strong>gping</strong>, <strong>noping</strong> et <strong>fping</strong>.</p>
<p>Les commandes ci-dessous ont été vérifiées sur Debian 13 (Trixie) avec gping 1.19.0, oping 1.10.0 et fping 5.1.</p>
<h2>Lequel choisir ?</h2>
<ul>
<li><strong>gping</strong> : un graphique de latence en temps réel, une courbe colorée par hôte. Idéal pour comparer 2 à 6 cibles.</li>
<li><strong>noping</strong> : un tableau de bord ncurses, un cadre de statistiques par hôte. Reste lisible avec une dizaine de cibles ou plus.</li>
<li><strong>fping</strong> : pas d&rsquo;interface, une sortie texte. Parfait pour balayer une plage d&rsquo;adresses ou pour un script.</li>
</ul>
<h2>gping : le graphique de latence</h2>
<p>gping trace le temps de réponse de chaque hôte sous forme de courbe dans le terminal. Il s&rsquo;appuie sur la commande <code>ping</code> du système, il ne demande donc aucun droit particulier.</p>
<pre>apt install gping</pre>
<pre>gping 192.168.1.254 192.168.1.10 1.1.1.1</pre>
<p>Chaque hôte reçoit sa propre couleur. On quitte avec <code>Ctrl+C</code>.</p>
<p>Options utiles :</p>
<pre>-n 1          intervalle entre deux pings, en secondes (0.2 par défaut)
-b 120        durée affichée dans le graphique, en secondes (30 par défaut)
-4 / -6       forcer IPv4 ou IPv6
-i eth0       choisir l'interface de sortie
-s            graphisme simple, pour les terminaux sans caractères braille Unicode
-c red,blue   imposer les couleurs, dans l'ordre des hôtes
--clear       effacer le graphique en quittant</pre>
<p>Exemple : surveiller une coupure pendant deux minutes, un ping par seconde :</p>
<pre>gping -n 1 -b 120 192.168.1.254 1.1.1.1</pre>
<p>gping sait aussi mesurer la durée d&rsquo;exécution d&rsquo;une commande plutôt qu&rsquo;un ping, avec <code>--cmd</code> :</p>
<pre>gping --cmd "curl -so /dev/null https://www.debian.org"</pre>
<p>Au-delà de cinq ou six courbes, le graphique devient difficile à lire : passez alors à noping.</p>
<h2>noping : le tableau de bord ncurses</h2>
<p>noping est fourni par le paquet <code>oping</code>, avec <code>oping</code>, son équivalent en sortie texte. Il envoie les requêtes ICMP en parallèle, en IPv4 et IPv6, et affiche un cadre par hôte : paquets envoyés et reçus, pourcentage de perte, latence, et un graphique.</p>
<pre>apt install oping</pre>
<pre>noping 192.168.1.254 192.168.1.10 192.168.1.20 1.1.1.1</pre>
<p>Pas besoin de <code>sudo</code> : à l&rsquo;installation, le paquet Debian donne la capacité <code>cap_net_raw</code> aux binaires (ou le bit setuid si <code>setcap</code> n&rsquo;est pas disponible). Vérification :</p>
<pre>getcap /usr/bin/noping
# /usr/bin/noping cap_net_raw=ep</pre>
<p>Les temps de réponse sont colorés : vert pour les valeurs habituelles, jaune pour les valeurs inhabituelles, rouge pour les valeurs aberrantes. Un paquet perdu s&rsquo;affiche sous forme de point d&rsquo;exclamation rouge.</p>
<p>Touches pendant l&rsquo;exécution :</p>
<pre>g     changer le type de graphique
+ -   agrandir ou réduire les cadres
a     ajouter un hôte à la volée</pre>
<p>On quitte avec <code>Ctrl+C</code>.</p>
<p>Pour une liste d&rsquo;équipements à surveiller régulièrement, mettez-les dans un fichier, une adresse par ligne :</p>
<pre>vi ~/hotes.txt</pre>
<pre>192.168.1.254
192.168.1.10
192.168.1.20
192.168.1.30</pre>
<pre>noping -f ~/hotes.txt</pre>
<p>Options utiles :</p>
<pre>-i 0.5        intervalle entre deux pings, en secondes
-g histogram  type de graphique : prettyping (défaut), histogram, boxplot ou none
-H 3          hauteur des cadres, de 1 à 5 lignes (réduire pour voir plus d'hôtes)
-O ping.csv   enregistrer chaque mesure dans un fichier CSV (horodatage, hôte, latence)
-b            bip à chaque réponse, pratique pour suivre le redémarrage d'une machine</pre>
<p>Exemple : cadres compacts pour faire tenir plus d&rsquo;hôtes à l&rsquo;écran, avec enregistrement des mesures :</p>
<pre>noping -H 2 -O ~/ping-$(date +%F).csv -f ~/hotes.txt</pre>
<h2>fping : balayer une plage et scripter</h2>
<p>fping n&rsquo;a pas d&rsquo;interface graphique, mais il est imbattable pour savoir rapidement qui répond sur un réseau.</p>
<pre>apt install fping</pre>
<p>Lister les machines actives d&rsquo;un sous-réseau, avec leur temps de réponse :</p>
<pre>fping -a -e -g 192.168.1.0/24 2>/dev/null</pre>
<pre>192.168.1.10 (0.164 ms)
192.168.1.20 (0.059 ms)
192.168.1.254 (0.201 ms)</pre>
<p>La plage peut aussi s&rsquo;écrire avec une adresse de début et de fin : <code>fping -a -g 192.168.1.1 192.168.1.50</code>. L&rsquo;option <code>-u</code> fait l&rsquo;inverse et liste les cibles qui ne répondent pas.</p>
<p>Envoyer 3 pings à chaque hôte et n&rsquo;afficher que le bilan :</p>
<pre>fping -c 3 -q 192.168.1.254 192.168.1.10 192.168.1.20</pre>
<pre>192.168.1.254 : xmt/rcv/%loss = 3/3/0%, min/avg/max = 0.201/0.253/0.303
192.168.1.10  : xmt/rcv/%loss = 3/3/0%, min/avg/max = 0.118/0.139/0.153
192.168.1.20  : xmt/rcv/%loss = 3/3/0%, min/avg/max = 0.043/0.048/0.053</pre>
<p>Surveiller en continu avec un bilan toutes les 10 secondes :</p>
<pre>fping -l -Q 10 -f ~/hotes.txt</pre>
<p>Le même fichier d&rsquo;hôtes que pour noping fonctionne avec <code>-f</code>.</p>
<h2>En résumé</h2>
<pre>gping 192.168.1.254 1.1.1.1                # comparer quelques hôtes sur un graphique
noping -f ~/hotes.txt                       # tableau de bord pour une liste d'équipements
fping -a -e -g 192.168.1.0/24 2>/dev/null   # qui répond sur le réseau ?</pre>
<h2>Sources</h2>
<ul>
<li><a href="https://github.com/orf/gping">gping sur GitHub</a></li>
<li><a href="https://manpages.debian.org/trixie/oping/noping.8.en.html">noping(8), Debian Trixie</a></li>
<li><a href="https://github.com/octo/liboping">liboping (oping et noping) sur GitHub</a></li>
<li><a href="https://fping.org/">fping.org</a></li>
</ul>
]]></content:encoded>
					
					<wfw:commentRss>https://www.garbell.net/2026/10/01/pinger-plusieurs-adresses-ip-gping-noping-fping/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1630</post-id>	</item>
	</channel>
</rss>
