آموزش نرم افزار sngrep

نرم افزارsngrep یک ابزار خط فرمان برای مشاهده و دیباگ کردن ترافیک SIP در VoIP است. این ابزار به شما امکان می‌دهد بسته‌های SIP را رصد کنید، لاگ‌ها را بررسی کنید، و مشکلات شبکه‌ای را تشخیص دهید.


:one: نصب sngrep


برای اجرای ابزار کافیست دستور زیر را اجرا کنید:

sngrep

:two: خواندن دقیق یک درخواست SIP در sngrep

هنگامی که sngrep را اجرا کنید، یک لیست از تماس‌ها (Sessions) می‌بینید. برای تحلیل یک تماس:

  1. با کلیدهای جهتی (↑ ↓) روی تماس موردنظر بروید.
  2. کلید Enter را بزنید تا تمام پیام‌های SIP بین دو طرف نمایش داده شود.
  3. در این صفحه، یک نمایش گرافیکی از ارتباط SIP (SIP Flow) را مشاهده می‌کنید.
    :white_check_mark: برای بررسی دقیق یک پیام SIP:
    :small_blue_diamond: روی پیام موردنظر بروید و دوباره Enter بزنید.
    :small_blue_diamond: در اینجا می‌توانید هدرها، پارامترها و محتوای SIP را مشاهده کنید.

:three: بررسی پارامترهای موجود در درخواست SIP

هر پیام SIP شامل چند بخش مهم است:

:small_blue_diamond: خط اول (Request Line یا Status Line)

:small_blue_diamond: فرمت درخواست‌های SIP:

INVITE sip:1001@192.168.1.10 SIP/2.0

:small_blue_diamond: فرمت پاسخ‌های SIP:

SIP/2.0 200 OK

در اینجا:

  • INVITE نوع درخواست است.
  • sip:1001@192.168.1.10 آدرس مقصد تماس است.
  • SIP/2.0 نسخه پروتکل SIP را مشخص می‌کند.

:small_blue_diamond: هدرهای مهم در پیام‌های SIP

هدر توضیح
Via مشخص می‌کند پیام از کجا آمده و چگونه باید پاسخ داده شود.
From نشان می‌دهد چه کسی تماس را برقرار کرده است.
To نشان می‌دهد تماس به چه کسی ارسال شده است.
Call-ID یک شناسه‌ی منحصربه‌فرد برای هر تماس SIP
CSeq شماره ترتیبی درخواست (برای جلوگیری از حملات تکرار)
Contact آدرس شبکه‌ای که برای پاسخ‌ها استفاده می‌شود.
User-Agent نشان می‌دهد که کلاینت SIP چه نوع نرم‌افزاری است.
Content-Length مقدار داده‌ای که در بخش Body پیام وجود دارد.

:white_check_mark: نمونه یک پیام SIP در sngrep

INVITE sip:1001@192.168.1.10 SIP/2.0
Via: SIP/2.0/UDP 192.168.1.5:5060;branch=z9hG4bK7f8e
Max-Forwards: 70
From: "User A" <sip:1000@192.168.1.5>;tag=123456
To: <sip:1001@192.168.1.10>
Call-ID: 8sdj23sd9sdf@example.com
CSeq: 102 INVITE
Contact: <sip:1000@192.168.1.5:5060>
User-Agent: Asterisk PBX
Content-Type: application/sdp
Content-Length: 129

:four: مهم‌ترین سوییچ‌ها و کاربردهای پیشرفته در sngrep

:pushpin:نمایش راهنما و گزینه‌های sngrep :

 root@myboy:~# sngrep -h or --history

:pushpin: نمایش نسخه sngrep :

root@myboy:~# sngrep -v or version

:pushpin: شنود روی اینترفیس خاص (مثلاً eth0) :

root@myboy:~# sngrep -d eth0 or --device

:pushpin: خواندن لاگ‌های SIP از فایل PCAP :

root@myboy:~# sngrep -I calls.pcap or --output calls.pcap

:pushpin: ذخیره پیام‌های SIP در فایل PCAP :

root@myboy:~# sngrep -O log.pcap or --input calls.pcap

:pushpin: نمایش فقط پیام‌های خاص (مثلاً INVITE) :

root@myboy:~# sngrep -t INVITE

:pushpin: ضبط بسته‌های RTP همراه با SIP :

root@myboy:~# sngrep -r or --rtp

:pushpin: اجرای sngrep بدون نمایش خروجی در کنسول (در پس‌زمینه) :

root@myboy:~# sngrep -q capture.pcap

:pushpin: نمایش تعداد پیام‌های ضبط شده :

root@myboy:~# sngrep -c or --calls

:pushpin: جستجوی حساسیت‌ناپذیر به حروف بزرگ و کوچک :

root@myboy:~# sngrep -i "User-Agent"

:pushpin:نمایش تمام پیام‌های SIP به‌صورت تک‌خطی :

root@myboy:~# sngrep -A

:pushpin: پاک کردن دیالوگ‌های قدیمی هنگام رسیدن به محدودیت :

root@myboy:~# sngrep -l 500 -R or --rotate

:pushpin: ارسال داده‌های ضبط‌شده به سرور HOMER SIPCAPTURE :

root@myboy:~# sngrep -H udp:192.168.1.100:9060 or --eep-send

:pushpin: گوش دادن به ترافیک SIP از یک منبع HOMER :

root@myboy:~# sngrep -L udp:0.0.0.0:9060

:five: تحلیل خطاهای رایج در SIP با sngrep

کد SIP توضیح خطا راه حل
403 Forbidden سرور درخواست شما را رد کرده است. بررسی مجوزها و ACL
404 Not Found شماره‌ای که تماس گرفته‌اید وجود ندارد. بررسی تنظیمات SIP و دایرکتوری شماره‌ها
486 Busy Here کاربر مشغول است. بررسی اشغالی کاربر یا تماس‌های همزمان
487 Request Terminated درخواست کنسل شده است. ممکن است کاربر تماس را قطع کرده باشد.
500 Server Internal Error خطای داخلی سرور SIP بررسی لاگ‌های Asterisk یا FreeSWITCH

:pushpin: مشاهده پیام‌های حاوی خطاهای SIP (مثلاً 403, 404, 500, 486) :

root@myboy:~#sngrep -t 4XX,5XX

:pushpin: بررسی REGISTER کاربران (REGISTER Messages) :

 root@myboy:~#sngrep -t REGISTER 

:pushpin: بررسی پایان مکالمات (BYE Messages) :

root@myboy:~#sngrep -t BYE

:six: بررسی گزینه‌های مربوط به تنظیمات sngrep

:small_blue_diamond: نرم افزار sngrep از فایل‌های تنظیمات برای ذخیره پیکربندی پیش‌فرض خود استفاده می‌کند.
:small_blue_diamond: این گزینه‌ها برای بررسی، تغییر، یا بی‌اثر کردن تنظیمات پیش‌فرض استفاده می‌شوند.

:pushpin: چاپ تنظیمات فعال sngrep و خروج از برنامه :

root@myboy:~# sngrep -D or --dump-config

این اطلاعات نشان می‌دهند که چه تنظیماتی فعال هستند و sngrep چطور اجرا خواهد شد.

:pushpin: اجرای sngrep با استفاده از فایل تنظیمات سفارشی :

root@myboy:~# sngrep -f /etc/sngrep_custom.conf or --config

این دستور sngrep را با تنظیمات فایل sngrep_custom.conf اجرا می‌کند.
:pushpin: اگر بخواهید مثلا رنگ‌ها، فیلترهای خاص، یا اینترفیس‌های پیش‌فرض را تغییر دهید، این روش مناسب است.
ما اینجا دیگه وارد بحث ساخت فایل و تنظیمات نمیشیم.

:pushpin: اجرای sngrep بدون تنظیمات پیش‌فرض :

root@myboy:~#sngrep -F

:small_blue_diamond: این دستور sngrep را بدون تنظیمات /etc/sngrep_custom.conf اجرا می‌کند، یعنی همه مقادیر به حالت پیش‌فرض برنامه بازمی‌گردند.