Debug delle chiamate con SNGREP
SNGREP: cos'è e perché usarlo
Sngrep è uno strumento a riga di comando che cattura tutto il traffico SIP VoIP che passa sulle interfacce di rete e lo visualizza raggruppato per conversazione per una migliore leggibilità.
È particolarmente utile per:
- Vedere cosa avviene a livello SIP.
- Comprendere cosa invia e riceve NethVoice.
- Ridurre i tempi necessari per identificare errori di configurazione.
- Salvare catture da inviare direttamente al supporto Nethesis, velocizzando la risoluzione dei problemi.
- Catturare problemi sporadici difficili da riprodurre o monitorare in tempo reale.
Sngrep interpreta solo il traffico SIP in chiaro. Non cattura:
- Traffico da telefoni configurati con TLS
- Traffico tra l'app proxy (Flexysip) e le applicazioni
- Traffico WebRTC CTI (da Janus ai client nel browser)
Per analizzare anche questi casi è necessario abilitare il supporto TLS in Sngrep come descritto di seguito.
Installazione
Se sngrep non è già installato su NethServer, puoi installarlo facilmente. Esegui il seguente comando come root dal cluster:
dnf -y install http://repo.okay.com.mx/centos/9/x86_64/release/sngrep-1.6.0-1.el9.x86_64.rpm
Avviare Sngrep
Il modo più rapido per avviare una cattura live è eseguire (come root):
sngrep
Opzioni utili
| Opzione | Descrizione |
|---|---|
-r | Cattura anche il traffico RTP, utile se vuoi salvare gli stream audio. |
-I [file] | Legge un file di cattura salvato invece di catturare in tempo reale. |
-O [file] | Salva la cattura corrente direttamente su file. |
-c | Cattura solo i messaggi INVITE (chiamate in ingresso/uscita). |
-d [device] | Limita la cattura a una specifica interfaccia di rete (default: any). |
Utilizzo dell'interfaccia
Una volta avviato, Sngrep inizierà a mostrare tutte le dialoghi SIP in tempo reale. In alto puoi vedere il numero di dialoghi catturati (limite predefinito: 20.000).
Controlli principali
- Freccia su/giù: scorrere tra i dialoghi.
- Enter: visualizzare i messaggi SIP del dialogo selezionato.
- Spacebar: selezionare/deselezionare un messaggio o dialogo.
- F2: salvare un file di cattura
.pcap(include audio se avviato con-r). - F3: visualizzare gli stream RTP, i pacchetti e le informazioni sui codec.
- F7: impostare filtri (utile per rimuovere dialoghi irrilevanti come
OPTIONSoSUBSCRIBE). - F10: aggiungere o rimuovere colonne (es. “Time”).
- ESC: uscire da Sngrep.
Abilitare TLS in SNGREP
Per visualizzare il traffico TLS in SNGREP per NethVoice, segui questi passaggi.
1. Abilitare siptrace in Kamailio
runagent -m nethvoice-proxy1 kamcmd siptrace.status on
2. Creare il file di configurazione
Creare /root/.sngrephep2rc con il seguente contenuto:
cat > /root/.sngrephep2rc <<'EOF'
set capture.device lo
set eep.listen on
set eep.listen.version 2
set eep.listen.address 127.0.0.1
set eep.listen.port 5065
EOF
3. Avviare SNGREP
Esegui:
sngrep -f ~/.sngrephep2rc -d any
Nota: Solo un utente alla volta può eseguire Sngrep con questa configurazione. Sessioni simultanee non sono supportate.
4. (Facoltativo) Abilitare il debug di Kamailio
Per abilitare il logging di debug:
runagent -m nethvoice-proxy1 kamcmd pv.shvSet debug int 1
Disabilitalo al termine
runagent -m nethvoice-proxy1 kamcmd pv.shvSet debug int 0
Verificare lo stato corrente del debug
runagent -m nethvoice-proxy1 kamcmd pv.shvGet debug
Esempi di schermate
-
Schermata principale: mostra i dialoghi SIP catturati e i loro stati.

-
Esempio chiamata in ingresso: screenshot di una chiamata in ingresso (INVITE) dal trunk che è stata risposta dall'interno 201. Si vedono le due gambe di chiamata: quella tra il trunk e NethVoice e quella tra NethVoice e l'interno 200.

-
Vista multipla dialoghi: permette di confrontare i messaggi SIP scambiati in parallelo tra le gambe di chiamata.

Riepilogo
Con questa configurazione, SNGREP può catturare e visualizzare sia il traffico SIP che TLS su NethVoice NS8. È uno strumento essenziale per:
- Analisi chiamate
- Troubleshooting rapido della configurazione
- Supporto tecnico avanzato
Ricorda sempre di disabilitare il debug di Kamailio al termine dell'analisi.