ایزابل یک پلتفرم ارتباطی متنباز است که روی Asterisk ساخته شده. این توزیع، سیستمعامل، موتور Asterisk و یک رابط مدیریت تحت وب را در قالب یک فایل نصبی واحد ارائه میدهد. به این ترتیب، بدون کامپایل کردن دستی هیچ بستهای، یک مرکز تلفن آمادهٔ کار در اختیار دارید.
این راهنما مسیر کامل را از یک سرور خالی تا یک خط تلفن فعال پوشش میدهد: نصب ایزابل، ساخت داخلی، اتصال سرویسدهندهٔ VoIP از طریق SIP Trunk، مسیریابی تماسها در هر دو جهت، و در پایان ایمنسازی سرور.
همهٔ شمارهها، آدرسهای IP، اطلاعات ورود و دامنههایی که در این راهنما میبینید نمونه هستند. آنها را با مقادیر واقعی سرویسدهندهٔ خودتان جایگزین کنید.
پیش از شروع
چه چیزهایی لازم دارید
- یک سرور یا ماشین مجازی. دو هستهٔ پردازنده، ۴ گیگابایت رم و ۴۰ گیگابایت فضای دیسک برای یک دفتر کوچک کافی است. ایزابل کل دیسک را در اختیار میگیرد، پس این ماشین باید اختصاصی باشد.
- یک IP عمومی ثابت. بیشتر سرویسدهندههای VoIP امکان محدود کردن حساب به یک IP را میدهند و این محافظت فقط وقتی کار میکند که آدرس ثابت باشد.
- دسترسی به کنسول. اگر سرور مجازی دارید، پیش از شروع مطمئن شوید به کنسول سرویسدهنده دسترسی دارید. یک اشتباه در تنظیمات فایروال میتواند دسترسی SSH شما را قطع کند و کنسول تنها راه بازگشت است.
- یک حساب SIP از سرویسدهندهٔ VoIP. به یک SIP login، یک رمز و آدرس سرور SIP نیاز دارید. این مرحله را میتوانید پس از نصب هم انجام دهید، اما آماده داشتن آن یک رفتوبرگشت را حذف میکند.
نکتهای دربارهٔ کشور شماره
اگر قصد خرید شماره در کشور خاصی را دارید، پیش از اقدام مقررات آن کشور را بررسی کنید. برخی نهادهای تنظیمگر، تماس خروجی روی شمارههای جغرافیایی را محدود میکنند. برای نمونه در بریتانیا، قوانین ضدکلاهبرداری Ofcom تماس با شمارههای بریتانیا از یک شمارهٔ بریتانیایی را مسدود میکند، مگر اینکه مشترک بهصورت فیزیکی در بریتانیا باشد. پشتیبانی سرویسدهندهٔ شما میتواند بگوید چه محدودیتی روی شمارهٔ موردنظرتان اعمال میشود.
بخش ۱: نصب ایزابل
مرحلهٔ ۱ — دانلود فایل ISO
به وبسایت ایزابل بروید و آخرین نسخهٔ پایدار ISO را دانلود کنید. حجم فایل حدود یک گیگابایت است.
اگر روی یک دستگاه فیزیکی نصب میکنید، فایل ISO را با ابزاری مانند Rufus یا BalenaEtcher روی یک فلش درایو بنویسید. اگر روی ماشین مجازی نصب میکنید، فایل را در مخزن تصاویر هایپروایزر بارگذاری و به درایو مجازی ماشین متصل کنید.
مرحلهٔ ۲ — بوت از نصبکننده
دستگاه را از روی فایل ISO بوت کنید. در صفحهٔ اول چند گزینه نمایش داده میشود. گزینهٔ نصب استاندارد را انتخاب و Enter را بزنید.
سپس نصبکننده زبان و چیدمان صفحهکلید را میپرسد. این تنظیمات فقط روی کنسول سرور اثر دارند و رابط وب را تغییر نمیدهند، پس مقادیر پیشفرض مناسب است.
مرحلهٔ ۳ — تنظیم منطقهٔ زمانی
منطقهٔ زمانی محل فعالیت کسبوکارتان را انتخاب کنید، نه منطقهٔ زمانی مرکز داده.
این تنظیم از آنچه به نظر میرسد مهمتر است. منطقهٔ زمانی، زمان ثبتشده در گزارش تماسها را تعیین میکند و از آن مهمتر، مبنای Time Conditionها است. Time Conditionها قوانینی هستند که سرنوشت تماس را در ساعات کاری و غیرکاری مشخص میکنند. اشتباه در این مرحله یعنی همهٔ قوانین زمانی که بعداً میسازید در ساعت اشتباه اجرا میشوند.
مرحلهٔ ۴ — پیکربندی دیسک
اگر نیاز خاصی ندارید، طرح پیشفرض پارتیشنبندی را بپذیرید.
ایزابل کل دیسک را پاک میکند. نصبکننده پیش از این کار هشدار میدهد، اما تکرارش بیفایده نیست: هر چه روی آن دیسک باشد از بین میرود.
مرحلهٔ ۵ — تعیین رمز root
برای حساب root یک رمز قوی انتخاب کنید. این همان حسابی است که برای SSH و دسترسی کنسول استفاده میکنید، پس آن را جای امنی نگه دارید.
نصبکننده اکنون بستهها را روی دیسک کپی میکند. بسته به سختافزار، این مرحله بین ۱۰ تا ۳۰ دقیقه طول میکشد. پس از پایان، دستگاه راهاندازی مجدد میشود.
مرحلهٔ ۶ — تکمیل اولین بوت
در اولین بوت، ایزابل دو رمز دیگر میخواهد:
۱. رمز root پایگاه دادهٔ MySQL که پایگاه دادهٔ نگهدارندهٔ تنظیمات از آن استفاده میکند. ۲. رمز مدیر ایزابل که برای ورود به رابط وب به کار میرود.
برای این دو و حساب root سیستم، رمزهای متفاوت انتخاب کنید.
سپس کنسول آدرس رابط وب شما را نمایش میدهد، چیزی شبیه این:
https://203.0.113.45مرحلهٔ ۷ — ورود به رابط وب
این آدرس را در مرورگر باز کنید. مرورگر دربارهٔ گواهی امنیتی هشدار میدهد، چون ایزابل هنگام نصب یک گواهی خودامضا میسازد. هشدار را بپذیرید و ادامه دهید.
با نام کاربری admin و رمز مدیری که در اولین بوت تعیین کردید وارد شوید.
اکنون یک مرکز تلفن آمادهٔ کار دارید. فقط هنوز نه تلفنی به آن وصل است و نه خط بیرونی دارد.
بخش ۲: ساخت داخلی
داخلی یک خط درونسازمانی است. هر تلفن رومیزی، نرمافزار تلفن یا اپلیکیشن موبایل روی یکی از آنها ثبت میشود.
۱. به PBX ← PBX Configuration ← Extensions بروید. ۲. گزینهٔ Generic SIP Device را انتخاب و Submit را بزنید. ۳. سه فیلد اصلی را پر کنید:
| فیلد | مقدار نمونه | کارکرد |
|---|---|---|
| User Extension | 1001 | شمارهای که همکاران برای تماس داخلی میگیرند |
| Display Name | Reception | نامی که در تماسهای داخلی نمایش داده میشود |
| secret | یک رمز قوی | رمزی که تلفن با آن ثبتنام میکند |
۴. دکمهٔ Submit و سپس دکمهٔ قرمز Apply Config را در بالای صفحه بزنید.
هیچ تغییری در ایزابل تا زمانی که Apply Config را نزنید اعمال نمیشود. اگر تغییری به نظر کار نکرد، اولین چیزی که باید بررسی کنید همین است.
حالا یک نرمافزار تلفن مانند Zoiper، Linphone یا MicroSIP را با این تنظیمات پیکربندی کنید:
- دامنه یا سرور: IP سرور شما، برای نمونه
203.0.113.45 - نام کاربری:
1001 - رمز: همان secret که تعیین کردید
وقتی نرمافزار تلفن وضعیت ثبتشده را نشان داد، از کنسول سرور هم آن را تأیید کنید:
asterisk -rx "sip show peers"اگر خطی مربوط به داخلی 1001 با وضعیت OK و یک عدد تأخیر بر حسب میلیثانیه دیدید، تلفن متصل است.
بخش ۳: اتصال شمارهٔ تلفن
شمارهٔ تلفن نزد سرویسدهندهٔ VoIP نگه داشته میشود. SIP Trunk همان اتصالی است که تماسها را میان سرویسدهنده و مرکز تلفن شما جابهجا میکند.
برای احراز هویت Trunk دو روش وجود دارد:
- ثبتنام (Registration): مرکز تلفن شما با نام کاربری و رمز وارد میشود. این روش پشت NAT هم کار میکند و سادهتر است.
- احراز هویت با IP: سرویسدهنده فقط تماسهایی را میپذیرد که از IP سرور شما برسند و نیازی به ورود نیست. این روش به IP ثابت نیاز دارد و معمولاً برای مصارف پرحجم استفاده میشود.
در این راهنما از روش ثبتنام استفاده میکنیم.
مرحلهٔ ۱ — دریافت اطلاعات از سرویسدهنده
از پنل سرویسدهنده، اطلاعات حساب SIP را پیدا کنید. به سه چیز نیاز دارید:
| مورد | مقدار نمونه |
|---|---|
| سرور SIP | sip.example-voip.net |
| SIP login | 512345 |
| رمز SIP | (از پنل سرویسدهنده) |
تا در پنل هستید، دو کار دیگر هم انجام دهید:
۱. شماره را به حساب SIP متصل کنید. سرویسدهندهها معمولاً نام این گزینه را «connect number to SIP» یا «call routing» میگذارند. بدون این کار، تماسهای ورودی هرگز به مرکز تلفن شما نمیرسند.
۲. حساب را به IP سرور محدود کنید. دنبال تنظیمی با نام «IP restriction» یا «allowed IP» بگردید و آدرس سرور خود را وارد کنید، برای نمونه 203.0.113.45. اگر روزی رمز SIP شما لو برود، همین یک تنظیم جلوی تماسهای بینالمللی پرهزینه از سوی یک غریبه را میگیرد.
مرحلهٔ ۲ — ساخت Trunk در ایزابل
به PBX ← PBX Configuration ← Trunks بروید و Add SIP Trunk را بزنید.
بخش General Settings:
| فیلد | مقدار |
|---|---|
| Trunk Name | Provider-UK |
| Outbound CallerID | 442079460958 |
| Maximum Channels | 3 |
مقدار Maximum Channels را برابر تعداد تماس خروجی همزمانی بگذارید که سرویسدهنده مجاز کرده است. این عدد در صورت نفوذ به Trunk، میزان خسارت را محدود میکند.
بخش Dialed Number Manipulation Rules را خالی بگذارید. تغییر قالب شماره در مسیر خروجی انجام میشود و اگر در هر دو جا تعریف شود، شماره دو بار تغییر میکند.
بخش Outgoing Settings:
فیلد Trunk Name داخلی را provider بگذارید، سپس کادر PEER Details را کامل پاک کنید و این متن را جایگزین کنید:
host=sip.example-voip.net
type=friend
insecure=invite,port
fromdomain=sip.example-voip.net
defaultuser=512345
fromuser=512345
secret=YOUR_SIP_PASSWORD
disallow=all
allow=alaw&ulaw
dtmfmode=auto
qualify=400
directmedia=no
nat=force_rport,comedia
context=from-trunkعبارت YOUR_SIP_PASSWORD را با رمز واقعی خود، و مقادیر host و user و domain را با اطلاعات سرویسدهندهٔ خودتان جایگزین کنید.
دو خط توضیح لازم دارند. خط nat=force_rport,comedia به Asterisk میگوید صدا را به همان آدرسی برگرداند که بستهها از آن رسیدهاند و همین خط است که عبور صدا از NAT را ممکن میکند. خط directmedia=no جریان صدا را بهجای ارتباط مستقیم میان دو طرف، از داخل مرکز تلفن عبور میدهد، که تقریباً همیشه گزینهٔ درست برای یک Trunk است.
بخش Incoming Settings:
فیلد USER Context را خالی بگذارید و کادر USER Details را کامل پاک کنید تا خالی شود. در روش احراز هویت با ثبتنام، همان تعریف peer بالا هر دو جهت را پوشش میدهد.
بخش Registration:
در فیلد Register String این خط را وارد کنید:
512345:YOUR_SIP_PASSWORD@sip.example-voip.net/512345مقداری که پس از آخرین اسلش میآید، همان چیزی است که سرویسدهنده در تماسهای ورودی بهعنوان شمارهٔ مقصد ارسال میکند. کمی بعد دوباره به آن نیاز پیدا میکنید.
دکمهٔ Submit Changes و سپس Apply Config را بزنید.
مرحلهٔ ۳ — بررسی ثبتنام
در کنسول سرور این دستور را اجرا کنید:
asterisk -rx "sip show registry"باید سرور سرویسدهنده را با وضعیت Registered ببینید:
Host Username Refresh State
sip.example-voip.net:5060 512345 105 Registeredاگر Trunk اصلاً در فهرست نبود، یعنی تنظیمات به Asterisk نرسیده است. یک بار بارگذاری مجدد کنید و دوباره بررسی کنید:
asterisk -rx "sip reload"
asterisk -rx "sip show registry"اگر باز هم دیده نشد، به تنظیمات Trunk در رابط وب برگردید، بررسی کنید فیلد Register String ذخیره شده باشد و دوباره Apply Config را بزنید.

بخش ۴: مسیریابی تماسها
Trunk ثبتشده تماسها را جابهجا میکند، اما ایزابل هنوز نمیداند تماسهای ورودی باید به کجا برسند و کدام تماسها از کدام خط خارج شوند.
مسیر ورودی
۱. به PBX ← PBX Configuration ← Inbound Routes بروید و Add Incoming Route را بزنید. ۲. فیلدها را پر کنید:
| فیلد | مقدار |
|---|---|
| Description | Provider-UK |
| DID Number | 512345 |
| CallerID Number | (خالی) |
مقدار DID Number باید با چیزی که سرویسدهنده واقعاً ارسال میکند یکی باشد. این مقدار معمولاً همان SIP login است، نه شمارهٔ عمومی تلفن. اگر مطمئن نیستید، ابتدا این فیلد را خالی بگذارید تا مسیر همهٔ تماسها را بپذیرد، یک تماس آزمایشی بگیرید و در کنسول ببینید چه مقداری میرسد:
asterisk -rvvvسپس برگردید و فیلد را دقیق تنظیم کنید.
۳. تا بخش Set Destination پایین بروید، گزینهٔ Extensions را انتخاب کنید و داخلی 1001 را برگزینید. ۴. دکمهٔ Submit و سپس Apply Config را بزنید.
مسیر خروجی
مسیر خروجی شمارههای گرفتهشده را با یک الگو مقایسه میکند و آنها را از Trunk انتخابشده خارج میکند.
۱. به PBX ← PBX Configuration ← Outbound Routes بروید و Add Route را بزنید. ۲. فیلدها را پر کنید:
| فیلد | مقدار |
|---|---|
| Route Name | International |
| Route Position | اولین مسیر فهرست |
۳. در بخش Dial Patterns that will use this Route این مقادیر را وارد کنید:
| prepend | prefix | match pattern | CallerID |
|---|---|---|---|
| (خالی) | 9 | 00. | (خالی) |
۴. در بخش Trunk Sequence for Matched Routes، در جایگاه 0 گزینهٔ Provider-UK را انتخاب کنید. ۵. فیلد Dial patterns wizards را روی (pick one) بگذارید. این گزینههای آماده الگوهای شمارهگیری آمریکای شمالی را اضافه میکنند که با الگوی شما تداخل دارد. ۶. دکمهٔ Submit Changes و سپس Apply Config را بزنید.
این الگو به این صورت کار میکند: مقدار prefix پیش از خروج تماس حذف میشود و match pattern همان چیزی است که باقی میماند. نقطهٔ انتهایی یعنی «هر تعداد رقم دیگر». پس کاربر ابتدا 9 را میگیرد تا این خط انتخاب شود، سپس 00 و شمارهٔ بینالمللی را وارد میکند و سرویسدهنده شماره را بدون 9 ابتدایی دریافت میکند.

برای تماس با شمارهٔ +1 555 0100 در آمریکا، کاربر این را شمارهگیری میکند:
90015550100ترتیب مسیرها
مسیرهای خروجی از بالا به پایین بررسی میشوند و اولین الگوی منطبق برنده است. اگر مسیری با الگوی عمومی . وجود داشته باشد، هر مسیری که باید بر آن اولویت داشته باشد، باید بالاتر از آن قرار بگیرد.
در فهرست Outbound Routes بررسی کنید که مسیر جدید شما بالاتر از مسیرهای عمومیتر باشد. مراکز تلفنی که دو سرویسدهنده دارند هم ترافیک را به همین شکل تقسیم میکنند: الگوهای دقیق در بالا برای خط ارزانتر، و یک الگوی عمومی در پایین برای بقیهٔ مقصدها.

بخش ۵: آزمایش
هر جهت را جداگانه آزمایش کنید تا در صورت بروز مشکل، علت به یک نقطهٔ مشخص محدود شود.
تماس ورودی: با یک موبایل به شمارهٔ خود زنگ بزنید. داخلی 1001 باید زنگ بخورد. تماس را جواب دهید و بررسی کنید صدا از هر دو طرف شنیده میشود.
تماس خروجی: از داخلی 1001 با یک شمارهٔ بیرونی و با پیششمارهٔ خود تماس بگیرید، برای نمونه 90015550100. بررسی کنید تماس برقرار شود، صدا از هر دو طرف بیاید، و طرف مقابل شمارهٔ شما را ببیند. در مثال ما شمارهٔ +44 20 7946 0958 باید نمایش داده شود، نه «ناشناس» یا یک شمارهٔ پیشفرض سرویسدهنده.
اگر تماس برقرار شد اما یک طرف صدایی نشنید، مشکل تقریباً همیشه از NAT یا بسته بودن بازهٔ RTP است. بررسی کنید خط nat=force_rport,comedia در PEER Details وجود داشته باشد و پورتهای UDP از ۱۰۰۰۰ تا ۲۰۰۰۰ در فایروال باز باشند.
برای دیدن جزئیات تماس در لحظه، پیش از شمارهگیری دستور asterisk -rvvv را در کنسول اجرا کنید. برای خروج از این حالت، exit را تایپ کنید.
بخش ۶: ایمنسازی سرور
مرکز تلفنی که از اینترنت در دسترس باشد، هدف حمله است. Trunkهای نفوذشده برای کلاهبرداری بینالمللی استفاده میشوند و صورتحساب آن به شما میرسد. بیست دقیقه برای این چهار مورد وقت بگذارید.
محدود کردن Trunk به IP
این مورد بالاتر گفته شد، اما تکرارش ارزش دارد چون مؤثرترین محافظت است: در پنل سرویسدهنده، محدودیت IP را طوری تنظیم کنید که فقط سرور شما بتواند از حساب SIP استفاده کند.
انتقال SSH از پورت ۲۲
فایل /etc/ssh/sshd_config را ویرایش و پورت را تغییر دهید:
Port 7220سپس سرویس را راهاندازی مجدد کنید:
systemctl restart sshdجلسهٔ فعلی خود را باز نگه دارید و پیش از بستن آن، پورت جدید را از یک ترمینال دیگر آزمایش کنید. اگر پورت جدید کار نکرد، همان جلسهٔ باز تنها راه بازگشت شماست.
محدود کردن رابط وب و SSH به آدرسهای مشخص

در Security ← Firewall ← Firewall Rules، برای هر آدرسی که از آن مدیریت میکنید یک قانون ACCEPT بسازید. برای دفتری با آدرس 198.51.100.20، سه قانون با همین آدرس مبدأ بسازید: یکی برای HTTP، یکی برای HTTPS و یکی برای پورت SSH شما.
سپس قوانین عمومی HTTP و HTTPS و SSH را که آدرس مبدأ آنها 0.0.0.0/0 است غیرفعال کنید.
دو نکته در این مرحله اهمیت دارد:
۱. ترتیب. قوانین فایروال از بالا به پایین بررسی میشوند و یک قانون عمومی DROP نزدیک انتهای زنجیره قرار دارد. قوانین ACCEPT شما باید بالاتر از آن باشند، وگرنه هرگز به اجرا نمیرسند.
۲. Loopback. مطمئن شوید قانونی که ترافیک روی رابط Loopback را مجاز میکند نزدیک بالای فهرست قرار دارد. رابط وب ایزابل از طریق یک ارتباط داخلی با Asterisk صحبت میکند و اگر فایروال آن را مسدود کند، دکمهٔ Apply Config با خطای اتصال به Manager شکست میخورد، حتی اگر بقیهٔ چیزها سالم به نظر برسند.
پس از فعالسازی، بلافاصله آزمایش کنید: ابتدا پنل را از یک آدرس مجاز باز کنید، سپس از یک شبکهٔ دیگر مانند اینترنت موبایل. اولی باید باز شود و دومی نباید.
تعیین سقف هزینه
در پنل سرویسدهنده، یک سقف موجودی یا سقف مصرف تعیین کنید و تماس با هر مقصدی را که لازم ندارید ببندید. پرداخت پیشپرداختی هم در این زمینه مفید است، چون حداکثر خسارت به اندازهٔ موجودی حساب خواهد بود.
رفع اشکال
دکمهٔ Apply Config با خطای اتصال به Manager شکست میخورد. ایزابل نمیتواند از طریق ارتباط داخلی به Asterisk وصل شود. بررسی کنید فایروال ترافیک loopback را مجاز کرده باشد و قانون آن بالاتر از قوانین عمومی DROP قرار گرفته باشد.
Trunk اصلاً ثبتنام نمیکند. بررسی کنید Register String درست ذخیره شده باشد، رمز را با پنل سرویسدهنده مقایسه کنید، و مطمئن شوید محدودیت IP در سمت سرویسدهنده با آدرس عمومی واقعی سرور شما یکی است. برای دیدن آن آدرس، دستور curl -s ifconfig.me را اجرا کنید.
تماسهای ورودی نمیرسند. بررسی کنید شماره در پنل سرویسدهنده به حساب SIP متصل باشد و مقدار DID Number در مسیر ورودی با آنچه سرویسدهنده ارسال میکند یکی باشد. یک تماس آزمایشی را با asterisk -rvvv دنبال کنید تا مقدار واقعی را ببینید.
صدا یکطرفه است یا اصلاً شنیده نمیشود. تقریباً همیشه NAT عامل آن است. وجود خط nat=force_rport,comedia را در Trunk بررسی کنید و پورتهای UDP از ۱۰۰۰۰ تا ۲۰۰۰۰ را در فایروال باز کنید.
تماسهای خروجی رد میشوند. بررسی کنید که مقصد در حساب شما مجاز باشد، موجودی کافی باشد، و محدودیت مقرراتی روی آن مقصد اعمال نشده باشد.
پرسشهای پرتکرار
میتوانم ایزابل را کنار نرمافزارهای دیگر روی یک سرور نصب کنم؟
خیر. ایزابل بهصورت یک تصویر کامل سیستمعامل عرضه میشود و کل دیسک را در اختیار میگیرد. از یک دستگاه یا ماشین مجازی اختصاصی استفاده کنید.
آیا IP ثابت لازم است؟
الزامی نیست، اما بهتر است داشته باشید. محدود کردن Trunk بر اساس IP که بهترین محافظت در برابر کلاهبرداری است، فقط با آدرس ثابت کار میکند.
یک شمارهٔ تلفن چند تماس همزمان را پشتیبانی میکند؟
این به سرویسدهنده بستگی دارد، نه به ایزابل. شمارههای اقتصادی معمولاً دو یا سه تماس همزمان را پشتیبانی میکنند و ظرفیت بیشتر با هزینهٔ جداگانه در دسترس است. مقدار Maximum Channels را در Trunk با همین عدد هماهنگ کنید.






