نرم افزارsngrep
یک ابزار خط فرمان برای مشاهده و دیباگ کردن ترافیک SIP در VoIP است. این ابزار به شما امکان میدهد بستههای SIP را رصد کنید، لاگها را بررسی کنید، و مشکلات شبکهای را تشخیص دهید.
نصب sngrep
برای اجرای ابزار کافیست دستور زیر را اجرا کنید:
sngrep
خواندن دقیق یک درخواست SIP در
sngrep
هنگامی که sngrep
را اجرا کنید، یک لیست از تماسها (Sessions) میبینید. برای تحلیل یک تماس:
- با کلیدهای جهتی (↑ ↓) روی تماس موردنظر بروید.
- کلید
Enter
را بزنید تا تمام پیامهای SIP بین دو طرف نمایش داده شود. - در این صفحه، یک نمایش گرافیکی از ارتباط SIP (SIP Flow) را مشاهده میکنید.
برای بررسی دقیق یک پیام SIP:
روی پیام موردنظر بروید و دوباره
Enter
بزنید.
در اینجا میتوانید هدرها، پارامترها و محتوای SIP را مشاهده کنید.
بررسی پارامترهای موجود در درخواست SIP
هر پیام SIP شامل چند بخش مهم است:
خط اول (Request Line یا Status Line)
فرمت درخواستهای SIP:
INVITE sip:1001@192.168.1.10 SIP/2.0
فرمت پاسخهای SIP:
SIP/2.0 200 OK
در اینجا:
INVITE
نوع درخواست است.sip:1001@192.168.1.10
آدرس مقصد تماس است.SIP/2.0
نسخه پروتکل SIP را مشخص میکند.
هدرهای مهم در پیامهای SIP
هدر | توضیح |
---|---|
Via | مشخص میکند پیام از کجا آمده و چگونه باید پاسخ داده شود. |
From | نشان میدهد چه کسی تماس را برقرار کرده است. |
To | نشان میدهد تماس به چه کسی ارسال شده است. |
Call-ID | یک شناسهی منحصربهفرد برای هر تماس SIP |
CSeq | شماره ترتیبی درخواست (برای جلوگیری از حملات تکرار) |
Contact | آدرس شبکهای که برای پاسخها استفاده میشود. |
User-Agent | نشان میدهد که کلاینت SIP چه نوع نرمافزاری است. |
Content-Length | مقدار دادهای که در بخش Body پیام وجود دارد. |
نمونه یک پیام 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
مهمترین سوییچها و کاربردهای پیشرفته در
sngrep
نمایش راهنما و گزینههای
sngrep
:
root@myboy:~# sngrep -h or --history
نمایش نسخه
sngrep
:
root@myboy:~# sngrep -v or version
شنود روی اینترفیس خاص (مثلاً eth0) :
root@myboy:~# sngrep -d eth0 or --device
خواندن لاگهای SIP از فایل PCAP :
root@myboy:~# sngrep -I calls.pcap or --output calls.pcap
ذخیره پیامهای SIP در فایل PCAP :
root@myboy:~# sngrep -O log.pcap or --input calls.pcap
نمایش فقط پیامهای خاص (مثلاً INVITE) :
root@myboy:~# sngrep -t INVITE
ضبط بستههای RTP همراه با SIP :
root@myboy:~# sngrep -r or --rtp
اجرای sngrep بدون نمایش خروجی در کنسول (در پسزمینه) :
root@myboy:~# sngrep -q capture.pcap
نمایش تعداد پیامهای ضبط شده :
root@myboy:~# sngrep -c or --calls
جستجوی حساسیتناپذیر به حروف بزرگ و کوچک :
root@myboy:~# sngrep -i "User-Agent"
نمایش تمام پیامهای SIP بهصورت تکخطی :
root@myboy:~# sngrep -A
پاک کردن دیالوگهای قدیمی هنگام رسیدن به محدودیت :
root@myboy:~# sngrep -l 500 -R or --rotate
ارسال دادههای ضبطشده به سرور HOMER SIPCAPTURE :
root@myboy:~# sngrep -H udp:192.168.1.100:9060 or --eep-send
گوش دادن به ترافیک SIP از یک منبع HOMER :
root@myboy:~# sngrep -L udp:0.0.0.0:9060
تحلیل خطاهای رایج در SIP با
sngrep
کد SIP | توضیح خطا | راه حل |
---|---|---|
403 Forbidden |
سرور درخواست شما را رد کرده است. | بررسی مجوزها و ACL |
404 Not Found |
شمارهای که تماس گرفتهاید وجود ندارد. | بررسی تنظیمات SIP و دایرکتوری شمارهها |
486 Busy Here |
کاربر مشغول است. | بررسی اشغالی کاربر یا تماسهای همزمان |
487 Request Terminated |
درخواست کنسل شده است. | ممکن است کاربر تماس را قطع کرده باشد. |
500 Server Internal Error |
خطای داخلی سرور SIP | بررسی لاگهای Asterisk یا FreeSWITCH |
مشاهده پیامهای حاوی خطاهای SIP (مثلاً 403, 404, 500, 486) :
root@myboy:~#sngrep -t 4XX,5XX
بررسی REGISTER کاربران (
REGISTER
Messages) :
root@myboy:~#sngrep -t REGISTER
بررسی پایان مکالمات (
BYE
Messages) :
root@myboy:~#sngrep -t BYE
بررسی گزینههای مربوط به تنظیمات
sngrep
نرم افزار
sngrep
از فایلهای تنظیمات برای ذخیره پیکربندی پیشفرض خود استفاده میکند.
این گزینهها برای بررسی، تغییر، یا بیاثر کردن تنظیمات پیشفرض استفاده میشوند.
چاپ تنظیمات فعال
sngrep
و خروج از برنامه :
root@myboy:~# sngrep -D or --dump-config
این اطلاعات نشان میدهند که چه تنظیماتی فعال هستند و sngrep
چطور اجرا خواهد شد.
اجرای
sngrep
با استفاده از فایل تنظیمات سفارشی :
root@myboy:~# sngrep -f /etc/sngrep_custom.conf or --config
این دستور sngrep
را با تنظیمات فایل sngrep_custom.conf
اجرا میکند.
اگر بخواهید مثلا رنگها، فیلترهای خاص، یا اینترفیسهای پیشفرض را تغییر دهید، این روش مناسب است.
ما اینجا دیگه وارد بحث ساخت فایل و تنظیمات نمیشیم.
اجرای
sngrep
بدون تنظیمات پیشفرض :
root@myboy:~#sngrep -F
این دستور
sngrep
را بدون تنظیمات /etc/sngrep_custom.conf
اجرا میکند، یعنی همه مقادیر به حالت پیشفرض برنامه بازمیگردند.