Sledování SIP komunikace v Linuxu

Je libo vlastní pobočkovou ústřednu ?

Sledování SIP komunikace v Linuxu

Příspěvekod xsouku04 » ned 22. lis 2015 19:11:42

Pokud chcete uvnitř asterisku vypsat SIP komunikaci, lze to pomocí příkazu

Kód: Vybrat vše
sip set debug ip 81.31.45.51


Pokud chcete ale sledovat hovor někde po cestě, v Asterisku toho lítá prostě už příliš nebo prostě Asterisk nepoužíváte, je lepší použít příkaz ngrep.
Sledovat je možné i na vašem linuxovém routeru.

Kód: Vybrat vše
ngrep -W byline host 81.31.45.51 and port 5060

Příkaz výše vypíše do konzole veškerou SIP komunikaci s IP adresou 81.31.45.51


Pokud chceme navíc vše uložit do souboru pcap, který můžeme otevřít v grafickém programu Wireshark, můžeme použít variantu:

Kód: Vybrat vše
ngrep -W byline  -O ngrep.pcap host 81.31.45.51


Pakety umí samozřejmě odchytávat i samotný program Wireshark, pokud jsou v dosahu počítače na kterém běží.

Wireshark umí nakreslit přehlednější posloupnost sip paketů a umí též analyzovat RTP - zvuková data. Je možné tedy pomocí Wiresharku poznat, jak moc jsou příchozí zvuková RTP data poškozena nekvalitním připojením na internet. Výhoda je, že v souboru pcap je uloženo vše potřebné pro analýzu problému, kterou ale může provést i někdo úplně jiný.
Hodit se to také může při potížích s NATem nebo firewalem. Pokud není slyšet a Váš Asterisk nemá nastaveno directmedia=no, je možné, že přímý tok RTP blokuje něčí firewall ...
Pokud používáte kodek ALAW, můžete si ve Wiresharku hovor nechat přehrát a to při simulaci různých jitter bufferů.

Kód: Vybrat vše
ngrep -W byline  REGISTER udp


Varianta vypíše jen pakety, které obsahuje řetězec REGISTER.


Pokud chci zkoumat veškerou UDP komunikaci (VoIP typicky pracuje jen s UDP) na serveru s Asteriskem, mohu to docílit příkazem.


Kód: Vybrat vše
 ngrep -W byline  -O ngrep.pcap  "" udp


K čemu je to "" ? Tedy prázdný řetězec v uvozovkách? Totiž ngrep umí vyhledávat i různé řetězce a regulární výrazy uvnitř paketů podobně jako příkaz grep. Zjevně tedy netuší, jestli je argumentem řetězec, který má hledat, nebo nějaký síťový filtr. A vypadá to, že se to nějakým nikde nepopsaným způsobem snaží odhadnout, ale někdy se splete.
Tedy pokud bych zadal jen ngrep -W byline udp, bude hledat řetězec "udp" uvnitř všech paketů. Okomentuje to pomocí "match: udp" a v tom případě je potřeba si pomoci uvozovkami.


Stejný výsledek - tedy pcap soubor, ale bez výpisu na obrazovku lze docílit i příkazem:

Kód: Vybrat vše
tcpdump -w tcpdump.pcap udp
tcpdump -w tcpdump.pcap udp and host 81.31.45.51


Snímání přerušíme ve všech případech výše zmáčknutím CTRL+C.

Nyní když máte SIP paket před sebou, můžete zkontrolovat jeho obsah a zjistit tak v čem je problém.

Pro zkoumání SIP signalizace Wireshark není dvakrát přehledný. Asi je lepší zkoumat ji rovnou v konzoli v textovém gui. Domovská stránka sngrep projektu.

Kód: Vybrat vše
sngrep host 81.31.45.51
Uživatelský avatar
xsouku04
Administrátor
 
Příspěvky: 6649
Registrován: pát 15. říj 2010 11:11:44
Bydliště: Brno

Zpět na Asterisk a SIP trunk

Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 1 návštěvník