0
Your Cart
empty cart سبد خریدتان در حال حاضر خالی است! بازگشت به فروشگاه

آموزش کامل SIP Trunk در Issabel؛ تنظیم، عیب‌یابی و اتصال به Asterisk

فهرست مطالب

عنوان مطالبی که می خوانید

زمان مطالعه: 8 دقیقه

آخرین ویرایش مهر 1, 1405 حامد کوه فلاح

آموزش کامل SIP Trunk در Issabel؛ تنظیم و اتصال خط SIP به ایزابل

SIP Trunk یکی از اصلی‌ترین بخش‌های یک سیستم تلفنی VoIP است که امکان برقراری تماس‌های ورودی و خروجی از طریق بستر اینترنت را فراهم می‌کند.

در این آموزش نحوه ساخت و تنظیم SIP Trunk در Issabel را بررسی می‌کنیم و با مهم‌ترین گزینه‌های تنظیمات آن آشنا می‌شویم.

همچنین در ادامه درباره موارد مهمی مانند Registration، Codec، NAT، تنظیمات Incoming و Outgoing و عیب‌یابی SIP Trunk صحبت خواهیم کرد.

نکته مهم: بسیاری از آموزش‌های قدیمی SIP Trunk در Issabel بر اساس chan_sip نوشته شده‌اند. در نسخه‌های جدید Asterisk، PJSIP روش استاندارد SIP است و ChanSIP از Asterisk 17 به بعد Deprecated شده و در Asterisk 21 حذف شده است.

SIP Trunk چیست؟

SIP Trunk روشی برای اتصال سیستم تلفنی VoIP به سرویس‌دهنده تلفنی است.

در سیستم‌های سنتی برای اتصال مرکز تلفن به مخابرات یا اپراتور، معمولاً از خطوط و تجهیزات فیزیکی استفاده می‌شود؛ اما در SIP Trunk، ارتباط تلفنی از طریق پروتکل SIP و شبکه IP انجام می‌شود.

به عنوان مثال، بعد از راه‌اندازی SIP Trunk می‌توان موارد زیر را مدیریت کرد:

  • برقراری تماس خروجی از داخلی‌های Issabel
  • دریافت تماس‌های ورودی
  • دریافت شماره تماس‌گیرنده
  • استفاده از چندین کانال تماس
  • تعریف Outbound Route
  • تعریف Inbound Route
  • اتصال مرکز تماس به سرویس‌دهنده VoIP

SIP Trunk در Issabel چگونه کار می‌کند؟

به صورت ساده مسیر تماس خروجی به شکل زیر است:

داخلی تلفن → Issabel → SIP Trunk → Provider

و برای تماس ورودی:

Provider → SIP Trunk → Issabel → Inbound Route → داخلی / Queue / IVR

بنابراین برای اینکه یک SIP Trunk به درستی کار کند، فقط ساخت Trunk کافی نیست و معمولاً باید موارد زیر نیز تنظیم شوند:

  1. SIP Trunk
  2. Outbound Route
  3. Inbound Route
  4. تنظیمات Provider
  5. Codec
  6. NAT و Firewall در صورت وجود
  7. تنظیمات Registration در صورت نیاز

اطلاعات مورد نیاز برای ساخت SIP Trunk

قبل از شروع تنظیمات، بهتر است اطلاعات زیر را از شرکت ارائه‌دهنده سرویس دریافت کنید:

  • SIP Server یا IP Provider
  • Username
  • Password
  • شماره تلفن یا DID
  • Port
  • نوع Transport مانند UDP، TCP یا TLS
  • نیاز یا عدم نیاز به Registration
  • Codecهای قابل استفاده
  • اطلاعات مربوط به Caller ID
  • IPهای مجاز Provider در صورت استفاده از IP Authentication

توجه داشته باشید که تنظیمات SIP Trunk در شرکت‌های مختلف ممکن است متفاوت باشد و نباید یک تنظیم مشخص را برای تمام Providerها به صورت عمومی استفاده کرد.

ساخت SIP Trunk در Issabel

برای ساخت Trunk در Issabel معمولاً از مسیر زیر وارد شوید:

PBX → PBX Configuration → Trunks

سپس گزینه Add SIP Trunk را انتخاب کنید.

در نسخه‌های مختلف Issabel ممکن است ظاهر رابط کاربری کمی متفاوت باشد، اما مفهوم تنظیمات تقریباً مشابه است.

 

تنظیمات مهم SIP Trunk در ChanSIP

اگر در سیستم شما از ChanSIP استفاده می‌شود، گزینه‌های مهم Trunk معمولاً شامل موارد زیر هستند.

توجه: این بخش برای سیستم‌های قدیمی‌تر و نصب‌هایی که هنوز از ChanSIP استفاده می‌کنند بسیار کاربردی است.

1. Host

در قسمت host آدرس SIP Server شرکت ارائه‌دهنده قرار می‌گیرد.

host=sip.provider.com

یا:

host=1.2.3.4

اگر Provider یک IP یا Domain مشخص برای SIP Server اعلام کرده است، همان مقدار را استفاده کنید.

2. Username

نام کاربری SIP Trunk است.

username=12345678

این مقدار توسط Provider ارائه می‌شود.

3. Secret

رمز عبور SIP Trunk است.

secret=YourPassword

نکته امنیتی: رمز SIP را در اختیار افراد غیرمجاز قرار ندهید و از قرار دادن اطلاعات واقعی Trunk در مقالات، GitHub یا اسکرین‌شات‌های عمومی خودداری کنید.

4. Type

در ChanSIP معمولاً مقادیری مانند موارد زیر دیده می‌شود:

type=peer

یا:

type=friend

این گزینه مربوط به ساختار قدیمی chan_sip است و در PJSIP به این شکل استفاده نمی‌شود.

در تنظیمات جدید PJSIP ساختار Endpoint، AOR، Authentication و Identify استفاده می‌شود.

5. Qualify

گزینه Qualify برای بررسی در دسترس بودن SIP Peer استفاده می‌شود.

یک نمونه رایج:

qualify=yes

یا در برخی تنظیمات قدیمی:

qualify=2000

مقدار دقیق و رفتار آن به نسخه Asterisk و نوع تنظیمات بستگی دارد؛ بنابراین بهتر است مقدار پیشنهادی Provider یا مستندات همان نسخه استفاده شود.

6. Port

پورت SIP را مشخص می‌کند.

پورت رایج برای SIP، 5060 است، اما این مقدار همیشه ثابت نیست و ممکن است Provider از پورت دیگری یا Transport دیگری مانند TCP یا TLS استفاده کند.

بنابراین همیشه پورت اعلام‌شده توسط Provider را بررسی کنید.

7. Codec

Codec مشخص می‌کند صدا با چه Codecهایی بین دو طرف تماس منتقل شود.

در تنظیمات قدیمی ممکن است مواردی مانند زیر استفاده شود:

disallow=all
allow=alaw

یا:

disallow=all
allow=alaw
allow=ulaw

برای خطوط داخل ایران Codecهای خانواده G.711 مانند A-law بسیار رایج هستند، اما Codec مناسب باید بر اساس پشتیبانی Provider انتخاب شود.

پیشنهاد: Codecهای غیرضروری را فعال نکنید و فقط Codecهایی را فعال کنید که واقعاً Provider و سیستم شما به آن‌ها نیاز دارند.

8. Fromuser

در برخی سرویس‌ها Provider انتظار دارد Username مشخصی در SIP Header ارسال شود.

fromuser=username

مقدار دقیق آن باید مطابق تنظیمات Provider باشد.

9. Insecure

در تنظیمات قدیمی ChanSIP ممکن است گزینه‌هایی مانند زیر دیده شوند:

insecure=invite,port

این گزینه در بسیاری از تنظیمات قدیمی SIP Trunk دیده می‌شود، اما نباید آن را به عنوان یک تنظیم عمومی و همیشگی در نظر گرفت.

مقدار مناسب به روش Authentication و نحوه شناسایی تماس‌های Provider بستگی دارد.

بدون نیاز واقعی، تنظیمات امنیتی Trunk را باز نکنید.

10. NAT

اگر سرور Issabel پشت مودم، روتر یا Firewall و دارای Private IP باشد، NAT یکی از مهم‌ترین بخش‌های تنظیم SIP Trunk خواهد بود.

در ChanSIP تنظیمات قدیمی مانند زیر دیده می‌شود:

nat=force_rport,comedia

اما در PJSIP تنظیمات NAT ساختار متفاوتی دارند.

برای مثال گزینه‌هایی مانند:

rtp_symmetric=yes
force_rport=yes
rewrite_contact=yes

در برخی سناریوهای NAT کاربرد دارند.

بنابراین نباید تنظیمات قدیمی nat=yes یا nat=force_rport,comedia را بدون بررسی شرایط شبکه روی تمام سیستم‌ها اعمال کرد.

11. DTMF Mode

DTMF برای ارسال کلیدهای تلفن مانند 1، 2، 3، * و # استفاده می‌شود.

در تنظیمات قدیمی ChanSIP ممکن است گزینه‌هایی مانند زیر دیده شوند:

dtmfmode=rfc2833

یا:

dtmfmode=info

در بسیاری از سناریوهای VoIP، RFC2833/RTPEVENT مورد استفاده قرار می‌گیرد، اما تنظیم نهایی باید با Provider هماهنگ باشد.

این موضوع مخصوصاً برای سیستم‌هایی که دارای IVR، Queue و Call Center هستند اهمیت زیادی دارد.

12. Context

برای تماس‌های ورودی معمولاً Context مشخصی برای ورود تماس به Dialplan استفاده می‌شود.

در تنظیمات رایج Issabel ممکن است مورد زیر را مشاهده کنید:

context=from-trunk

در تنظیمات استاندارد Issabel بهتر است Context مناسب همان سیستم را حفظ کنید و بدون دلیل آن را تغییر ندهید.

13. Fromdomain

در برخی Providerها لازم است Domain مشخصی در SIP Header ارسال شود.

fromdomain=sip.provider.com

استفاده از این گزینه کاملاً به ساختار سرویس‌دهنده بستگی دارد.

اگر Provider مقدار خاصی برای From Domain اعلام نکرده است، نباید صرفاً به صورت تجربی آن را تغییر داد.

14. Register String

اگر SIP Trunk نیاز به Registration داشته باشد، در تنظیمات قدیمی ChanSIP معمولاً چیزی شبیه نمونه زیر مشاهده می‌شود:

username:password@host:port/did

مثلاً:

123456:password@sip.provider.com:5060/02112345678

ساختار دقیق Register String به سرویس‌دهنده بستگی دارد.

اگر Provider اعلام کرده باشد که سرویس بر اساس IP Authentication کار می‌کند، ممکن است اصلاً Registration لازم نباشد.

تنظیم SIP Trunk با PJSIP

در نسخه‌های جدیدتر Asterisk، PJSIP روش استاندارد SIP محسوب می‌شود و برای نصب‌های جدید باید با آن آشنا باشید.

در PJSIP ساختار تنظیمات نسبت به ChanSIP متفاوت است.

به جای اینکه همه چیز را در یک Peer قرار دهیم، معمولاً بخش‌های مختلفی مانند موارد زیر داریم:

  • Transport
  • Registration
  • Authentication
  • AOR
  • Endpoint
  • Identify

برای مثال یک SIP Trunk دارای Registration ممکن است از اجزایی مانند موارد زیر استفاده کند:

type=registration

برای Registration،

type=auth

برای Authentication،

type=aor

برای مقصد SIP و:

type=endpoint

برای تعریف Endpoint استفاده کند.

همچنین برای شناسایی ترافیک ورودی Provider ممکن است از:

type=identify

و IP Provider استفاده شود.

ساختار دقیق PJSIP به تنظیمات Provider و نحوه Authentication آن بستگی دارد.

مستندات رسمی PJSIP در Asterisk

تفاوت ChanSIP و PJSIP در SIP Trunk

ChanSIP PJSIP
ساختار قدیمی‌تر ساختار جدید Asterisk
sip.conf pjsip.conf
type=peer Endpoint / AOR / Auth
host Contact / AOR
secret Auth
nat= تنظیمات NAT مانند rtp_symmetric
canreinvite direct_media
Register String Registration Object

اگر روی یک سیستم قدیمی Issabel کار می‌کنید، ممکن است هنوز ChanSIP را ببینید؛ اما برای پروژه‌های جدید بهتر است PJSIP را نیز به خوبی یاد بگیرید.

راهنمای رسمی مهاجرت از ChanSIP به PJSIP در Asterisk

تنظیم NAT برای SIP Trunk

یکی از رایج‌ترین مشکلات SIP Trunk، تنظیم نادرست NAT است.

ممکن است در چنین شرایطی تماس برقرار شود اما:

  • صدا یک‌طرفه باشد.
  • هیچ صدایی شنیده نشود.
  • تماس ورودی برقرار نشود.
  • تماس بعد از چند ثانیه قطع شود.
  • Registration ناپایدار باشد.

دلیل این موضوع این است که SIP Signaling و RTP Media هر دو باید مسیر مناسبی بین Issabel و Provider داشته باشند.

اگر Issabel پشت NAT قرار دارد، علاوه بر SIP باید مسیر RTP نیز به درستی تنظیم شود.

در PJSIP گزینه‌هایی مانند:

rtp_symmetric
force_rport
rewrite_contact

در سناریوهای NAT اهمیت دارند.

راهنمای رسمی تنظیم PJSIP برای کار در پشت NAT

همچنین Port Forwarding و Firewall باید مطابق تنظیمات واقعی Asterisk و Provider انجام شوند و نباید صرفاً یک بازه پورت را بدون بررسی تنظیمات سیستم باز کرد.

برای مطالعه بیشتر:

حل مشکل NAT و صدای یک طرفه در Issabel و Asterisk

تنظیم Outbound Route

بعد از ساخت Trunk، برای برقراری تماس خروجی باید یک Outbound Route نیز ایجاد شود.

در این بخش مشخص می‌کنیم چه شماره‌هایی از طریق SIP Trunk ارسال شوند.

برای مثال می‌توان مشخص کرد شماره‌های موبایل یا شهری از طریق یک Trunk مشخص خارج شوند.

در Outbound Route می‌توان بر اساس موارد زیر مسیر تماس را تعیین کرد:

  • پیش‌شماره
  • طول شماره
  • Dial Pattern
  • نوع تماس
  • SIP Trunk مورد استفاده

مشاهده آموزش‌های Issabel در ویپ ایران

تنظیم Inbound Route

برای تماس‌های ورودی نیز باید مشخص کنیم تماس بعد از ورود از SIP Trunk به کجا منتقل شود.

در این بخش می‌توان تماس را به موارد زیر ارسال کرد:

  • داخلی
  • IVR
  • Queue
  • Ring Group
  • Announcement
  • Time Condition

اگر Provider شماره DID را ارسال کند، می‌توان بر اساس DID نیز Inbound Route ایجاد کرد.

تست SIP Trunk

بعد از انجام تنظیمات، بهتر است ابتدا وضعیت Registration را بررسی کنید.

برای ChanSIP:

asterisk -rvvv
sip show peers
sip show registry

برای PJSIP:

asterisk -rvvv
pjsip show endpoints
pjsip show registrations

برای بررسی دقیق‌تر تماس نیز می‌توان از CLI و لاگ‌های Asterisk استفاده کرد.

مشکلات رایج SIP Trunk

SIP Trunk Registered است ولی تماس خروجی برقرار نمی‌شود

در این شرایط موارد زیر را بررسی کنید:

  • Outbound Route
  • Dial Pattern
  • Codec
  • Username
  • Password
  • شماره مقصد
  • تنظیمات Provider
  • وضعیت Trunk در Asterisk CLI

Registered بودن Trunk به این معنی نیست که حتماً تماس خروجی به درستی تنظیم شده است.

تماس ورودی دریافت نمی‌شود

موارد زیر را بررسی کنید:

  • Registration
  • IP Provider
  • Inbound Route
  • DID
  • Context
  • Firewall
  • NAT
  • تنظیمات Identify در PJSIP

اگر Provider تماس را بر اساس IP ارسال می‌کند، باید مطمئن شوید IP مربوط به Provider به درستی شناسایی می‌شود.

تماس برقرار می‌شود ولی صدا نداریم

در این شرایط معمولاً باید مسیر RTP، NAT، Firewall، Codec و تنظیمات شبکه بررسی شود.

در چنین شرایطی فقط SIP Signaling را بررسی نکنید؛ مسیر RTP نیز باید بررسی شود.

نکات امنیتی SIP Trunk

SIP Trunk مستقیماً با سیستم تلفنی و تماس‌های خروجی ارتباط دارد؛ بنابراین امنیت آن بسیار مهم است.

  • رمز SIP را قوی انتخاب کنید.
  • SIP را بدون نیاز روی اینترنت عمومی باز نگذارید.
  • در صورت امکان IPهای Provider را محدود کنید.
  • Firewall را به شکل صحیح تنظیم کنید.
  • دسترسی‌های غیرضروری را ببندید.
  • وضعیت تماس‌های خروجی را مانیتور کنید.
  • در برابر SIP Scanning و Brute Force از مکانیزم‌های امنیتی مناسب استفاده کنید.
  • اطلاعات Username و Password واقعی را در اسکرین‌شات یا آموزش عمومی منتشر نکنید.

همچنین برای آشنایی با Fail2Ban در Issabel می‌توانید مقاله زیر را مطالعه کنید:

راهنمای Fail2Ban در Issabel

جمع‌بندی

برای راه‌اندازی صحیح SIP Trunk در Issabel فقط وارد کردن Username و Password کافی نیست.

یک SIP Trunk کامل معمولاً شامل این بخش‌هاست:

SIP Trunk → Registration → Codec → NAT → Inbound Route → Outbound Route → Firewall → Testing

در سیستم‌های قدیمی‌تر ممکن است تنظیمات را بر اساس ChanSIP مشاهده کنید، اما در پروژه‌های جدید باید با PJSIP نیز آشنا باشید.

Asterisk نیز ChanSIP را Deprecated کرده و از Asterisk 21 آن را حذف کرده است.

مستندات رسمی ChanSIP در Asterisk

مقالات مرتبط در ویپ ایران

آموزش تخصصی Issabel و VoIP

اگر قصد دارید تنظیمات Issabel، Asterisk، SIP Trunk، Routing، Call Center و مباحث حرفه‌ای VoIP را به صورت عملی یاد بگیرید، دوره مهندسی Issabel ویپ ایران می‌تواند مسیر مناسبی برای یادگیری پروژه‌محور این مباحث باشد.

مشاهده دوره مهندسی Issabel در ویپ ایران

سوالات متداول

SIP Trunk چیست؟

SIP Trunk یک ارتباط مبتنی بر SIP است که سیستم تلفنی VoIP مانند Issabel را به سرویس‌دهنده تلفنی متصل می‌کند و امکان برقراری تماس‌های ورودی و خروجی را فراهم می‌کند.

آیا برای SIP Trunk حتماً Registration لازم است؟

خیر. بعضی سرویس‌دهندگان از Username و Password و Registration استفاده می‌کنند و بعضی سرویس‌ها بر اساس IP Authentication کار می‌کنند.

تفاوت SIP Trunk در ChanSIP و PJSIP چیست؟

ساختار تنظیمات این دو متفاوت است. ChanSIP از ساختار قدیمی‌تری مانند peer، host و secret استفاده می‌کند، در حالی که PJSIP از Endpoint، AOR، Authentication، Registration و Identify استفاده می‌کند.

چرا SIP Trunk رجیستر است ولی تماس برقرار نمی‌شود؟

Registration فقط یکی از بخش‌های SIP Trunk است. باید Outbound Route، Dial Pattern، Codec، Authentication، تنظیمات Provider و در صورت نیاز NAT و Firewall نیز بررسی شوند.

چرا تماس برقرار می‌شود ولی صدا نداریم؟

در این شرایط معمولاً باید مسیر RTP، NAT، Firewall، Codec و تنظیمات شبکه بررسی شود. SIP Signaling به تنهایی تضمین‌کننده انتقال صدا نیست.


ویپ ایران؛ مرجع تخصصی VoIP، Asterisk و Issabel

voipiran.io

نویسنده

نظرات