برای تمامی مهندسین در حین کار با سیستم ها ممکن است مشکلاتی بوجود آید که نیاز به بررسی دقیق و صرف زمان برای پیدا کردن و رفع مشکل داشته باشد و درصورتی که روش صحیحی برای پیدا کردن راه حل استفاده نشود، این عمل خطایابی یا Debug ساعت ها یا حتی روز ها به طول خواهد انجامید. به همین دلیل انتخاب روشی استاندارد و صحیح برای عیب یابی مشکلات احتمالی امری ضروری است.
نرم افزار تلفنی متن باز استریسک و پوسته ی مدیریتی آن یعنی Free PBX هم از این قائده مستثنی نبوده و نیاز است تا با روش های صحیح debug آن ها آشنا شوید. در ادامه مشکلات رایجی که کاربران ممکن است با آن ها مواجه شوند و روش های عیب یابی آن ها را بررسی می کنیم.
نکته: برای بررسی مسائل ابتدا از پوسته ی FreePBX استفاده شده و سپس برای بررسی دقیق تر با استفاده SSH محیط CLI استریسک را بکار گرفته ایم.
۱- «عدم رجیستر شدن تلفن»
برای اکثر کاربران پیش می آید که پس از تعریف داخلی های مورد نظر با مشکل عدم رجیستر IPPhone مواجه می شوند. برای بررسی دقیق تر مشکل نیاز است ابتدا برخی موارد در Free PBX بررسی شده و سپس برای بررسی دقیق تر به محیط cli استریسک وارد شوید.
توجه: از طریق بخش reports و سپس Asterisk Logfiles نیز می توانید به لاگ های استریسک از طریق محیط وب دسترسی داشته باشید.
اشتباه وارد کردن پورت SIP
در FreePBX از نسخه ۱۳ به بعد PJSIP به عنوان یک پیاده سازی جدید برای پروتکل SIP نیز پشتیبانی می شود و به همین دلیل پورت پیش فرض ۵۰۶۰ که معمولا برای chan_SIP بکار می رفت، برای PJSIP در نظر گرفته شده و پورت ۵۱۶۰ برای chan_SIP مورد استفاده قرار می گیرد. به همین دلیل باید توجه داشت اگر Extension یا داخلی هایی از نوع chan_SIP ساخته می شود، پورت مربوطه در تنظیمات تلفن، ۵۱۶۰ به جای ۵۰۶۰ وارد شود.
توجه: پس از ورود به منوی Dashboard در بخش System Overview می توان اعلان مربوط به پورت های SIP را مشاهده کرد.
نکته: می توان از منوی Settings و بخش Asterisk SIP Settings پورت های پیش فرض برای SIP را تغییر داد.
اشتباه بودن کلمه عبور
برای بررسی این مورد باید به محیط cli وارد شده و با استفاده از دستور asterisk –r وارد محیط استریسک شوید. در محیط استریسک با استفاده از دستور core show verbose 10 ابتدا میزان نمایش لاگ ها را افزایش داده و سپس اقدام به بررسی لاگ هایی که ثبت می شود نمایید. در تصویر زیر ۲ لاگ مربوط به chan_PJSIP و chan_SIP مشاهده می شود که هر دو به مشکل عدم صحیح بودن کلمه عبور و در نتیجه عدم امکان Authenticate برای داخلی مورد نظر اشاره دارند.
فعال سازی SIP Debugging
برای بررسی پیام هایی مربوط به پروتکل SIP که ارسال و دریافت می شوند، باید Debug مربوطه را در محیط CLI Asterisk فعال نمود.
برای فعالسازی chan_SIP Debug به صورت کلی از دستور زیر استفاده می کنیم:
Sip set debug on
برای فعالسازی Sip Debug فقط برای یک IP خاص از دستور زیر استفاده می کنیم (آدرس IP مربوط به داخلی مورد نظر را به جای IP زیر جایگزین کنید):
Sip set debug ip 192.168.1.1
برای فعالسازی Sip Debug فقط برای یک Peer خاص از دستور زیر استفاده می کنیم (در اینجا peer ما دستگاه vega50 می باشد که با همین نام ترانک تعریف شده است):
Sip set debug peer vega50
در نهایت برای غیر فعال کردن SIP Debug از دستور زیر استفاده می کنیم:
Sip set debug off
برای فعالسازی chan_PJSIP Debug نیز به صورت زیر عمل می کنیم:
Pjsip set logger on
برای فعالسازی PJSIP Debug فقط برای یک IP خاص از دستور زیر استفاده می کنیم (آدرس IP مربوط به خود را به جای IP زیر جایگزین کنید):
Pjsip set logger host 192.168.1.1
در نهایت برای غیر فعال کردن PJSIP Debug از دستور زیر استفاده می کنیم:
PJSIP set logger off
۲- «عدم برقراری ارتباط از طریق Trunk»
اشتباه بودن اطلاعات مربوط به authentication
مانند مشکل قبل برای عدم برقراری ارتباط ترانک هم می توان عیب یابی را با بررسی اطلاعاتی مانند username و password شروع کرد که برای این کار مجددا وارد محیط Astrerisk CLI شده و اقدام به بررسی لاگ ها نمایید.
نکته: به دلیل اینکه در محیط Asterisk CLI تمامی لاگ های مربوط به استریسک در حال نمایش دادن می باشند، ممکن است پیدا کردن لاگ های مربوط به مشکل فعلی قدری سخت باشد؛ برای رفع این مشکل می توان Debug را برای IP خاص یا Peer خاصی فعال کرد تا در حد امکان نمایش لاگ های دیگر را به حد اقل رساند. به عنوان مثال اگر یک ترانک (از نوع pjsip) برای ارتباط FreePBX و گیت وی Sangoma Vega50 تعریف کرده ایم و ارتباط ترانک بین این دو برقرار نمی شود، جهت بررسی دقیق تر می توان با دستور pjsip set logger host “Vega IP Address” فقط Debug را برای پیام هایی که از سمت دستگاه گیت وی دریافت می شود فعال کرده و راحت تر اقدام به بررسی لاگ ها کنیم.
اشتباه بودن پورت های پیش فرض SIP
از دلایل دیگری که برای عدم برقراری ارتباط ترانک می توان اشاره کرد، مشکل اشتباه بودن Port است که در قسمت بخش شرح داده شد. در صورتی که ترانک داخل FreePBX از نوع chan_sip باشد باید داخل تنظیمات گیت وی از پورت ۵۱۶۰ استفاده نمایید.
قرار گرفتن آدرس IP در لیست سیاه
از دیگر مشکلات رایجی که برای عدم برقراری ترانک می توان به آن توجه داشت، مشکل Block شدن یا همان Ban شدن آی پی peer توسط IDS یا همان سرویس Fail2ban سیستم تلفنی Free PBX است. برای بررسی این موضوع از محیط گرافیکی FreePBX وارد مسیر زیر شوید:
Admin >System Admin >Intrusion Detection
در این صفحه می توان آدرس های آی پی مربوط به گیت وی یا هر دستگاه دیگری که سعی بر ایجاد برقراری ارتباط با FreePBX را داشته و در حالت Ban قرار گرفته است مشاهده نمایید. توصیه می شود که آدرس peer ترانک را را در Whitelist اضافه کرده تا توسط IDS بلاک نشود.
۳- «debug کارت های تلفنی »
در صورتی که از کارت های سنگوما بر روی FreePBX استفاده می کنید، نباید نگران نصب آن باشید. چرا که بیشترین سازگاری و کمترین پیچیدگی در نظر گرفته شده است. پس از نصب فیزیکی کارت، ابتدا با اجرای دستور lspci در محیط لینوکس، از نصب صحیح کارت و شناسایی آن توسط سرور اطمینان کسب نمایید.
در صورتی که نام کارت مشاهده نشود، باید اتصال فیزیکی بر روی slot مادربورد بررسی شود و یا اسلات دیگری را انتخاب کنید.
با دستور wancfg_dahdi اقدام به نصب کارت نمایید.
پس از اتمام نصب با دستور lsdahdi می توان وضعیت کانال های Dahdi را به همراه Type و Span مشاهده نمود.
در صورتی که پس از دستور lsdahdi هیچ نتیجه ای دریافت نشد بدین معنی است که نصب کارت به صورت صحیح انجام نشده است.
در صورتی که پس از اجرای دستور lsdahdi کانال ها نمایش داده شدند اما عبارت RED در انتهای هر کانال وجود داشت می توان با استفاده از دستورات زیر به ترتیب wanrouter را ریستارت کرده و مجدد نتیجه را بررسی نمایید:
Service asterisk stop
Wanrouter restart
Service asterisk start
در صورتی که مجدد مقدار RED وجود داشت باید سیگنالینگ کانال ها بررسی شود.
توجه: در صورت اتصال به مودم مخابرات، باید کانال های دیجیتال E1 به صورت Normal و CPE کانفیگ شوند. همچنین بررسی CRC4 حین کانفیگ کارت ضروری است، زیرا اگر در سمت مخابرات CRC4 ست شده باشد، نیاز است تا سمت کارت نیز ست شود و اگر سمت مخابرات CRC4 ست نشده باشد (که معمولا به همین شکل می باشد) نیاز است تا CRC4 در سمت کارت در نظر گرفته نـشود.
پس از نصب کارت های دیجیتال، برای تست نهایی PRI می توان به محیط استریسک با استفاده از دستور asterisk –r وارد شده و pri show spans را اجرا نمایید:
در صورتی که وضعیت پورت یا پورت هایی به صورتDown ،Active باشد بدین معنی است که سیگنالینگ خط برقرار نیست که می توان این مورد را از سمت تامین کننده که معمولا مخابرات می باشد، پیگیری کرد.
در صورتی که وضعیت پورت روی In Alarm باشد یعنی یک آلارم برای خط در نظر گرفته شده است و باید جدول آلارم ها بررسی شود.
برای بررسی آلارم ها می توان در محیط لینوکس، از دستور زیر استفاده کرد:
Wanpipemon –I w1g1 –c Ta
توجه داشته باشید برای پورت های دیگر مانند پورت های ۲ و ۳ می توان مقدار عددی w را افزایش داد. مانند w2g1 و w3g1 و…
مانند SIP برای خطوط PRI هم می توان Debugging را فعال کرده تا در مواقعی که در دریافت و ارسال روی این خطوط مشکلی وجود دارد، علت را بتوان دقیق تر یافت.
جهت فعالسازی PRI Debug ابتدا با استفاده از دستور asterisk –r به محیط استریسک وارد شده و سپس دستور زیر را اجرا کنید:
Pri set debug on span 1
توجه داشته باشید برای فعالسازی دیباگ برای spanها یا همان پورت های دیگر روی کارت می توان مقدار ۱ را با مقدار مورد نظر جایگزین کرد.