آخرین ویرایش مهر 1, 1405 حامد کوه فلاح
آموزش کامل SIP Trunk در Issabel؛ تنظیم و اتصال خط SIP به ایزابل
SIP Trunk یکی از اصلیترین بخشهای یک سیستم تلفنی VoIP است که امکان برقراری تماسهای ورودی و خروجی از طریق بستر اینترنت را فراهم میکند.
در این آموزش نحوه ساخت و تنظیم SIP Trunk در Issabel را بررسی میکنیم و با مهمترین گزینههای تنظیمات آن آشنا میشویم.
همچنین در ادامه درباره موارد مهمی مانند Registration، Codec، NAT، تنظیمات Incoming و Outgoing و عیبیابی SIP Trunk صحبت خواهیم کرد.
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 کافی نیست و معمولاً باید موارد زیر نیز تنظیم شوند:
- SIP Trunk
- Outbound Route
- Inbound Route
- تنظیمات Provider
- Codec
- NAT و Firewall در صورت وجود
- تنظیمات 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 میتوانید مقاله زیر را مطالعه کنید:
جمعبندی
برای راهاندازی صحیح 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 در ویپ ایران
- حل مشکل NAT و صدای یک طرفه در Issabel و Asterisk
- راهاندازی DNS روی MikroTik برای دسترسی به Issabel با Domain
- راهنمای Fail2Ban در Issabel
آموزش تخصصی 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













