# آموزش جامع نصب و راه‌اندازی ایزابل (Issabel PBX) روی سرور؛ از نصب تا راه‌اندازی مرکز تلفن سازمانی

آموزش نصب و راه‌اندازی ایزابل روی VMware؛ داخلی‌ها، SIP Trunk، IVR، امنیت، QoS، بکاپ و عیب‌یابی با بررسی Issabel 5 و Asterisk 20.

## ۱. مقدمه و تصمیم درباره نسخه

موفقیت پروژه مرکز تلفن یعنی پذیرش بتواند تماس را پاسخ دهد، به تیم درست منتقل کند و بعد از خرابی سرور هم مسیر بازیابی مشخص باشد. ایزابل پنل مدیریتی پیرامون Asterisk است؛ اجرای Dialplan و اتصال تماس‌ها را Asterisk انجام می‌دهد. تلفن‌ها با SIP ثبت می‌شوند و داخلی‌ها، IVR، صف، صندوق صوتی و ترانک از این ارتباط‌ها یک سرویس تلفنی سازمانی می‌سازند.

سازمان‌ها برای شماره مشترک، ارتباط شعب، پذیرش، صف پشتیبانی، گزارش تماس و دسترسی کنترل‌شده کاربران دورکار از IP PBX استفاده می‌کنند. هسته Issabel Community متن‌باز و قابل توسعه است؛ ظرفیت‌سنجی، وصله امنیتی، سازگاری اپراتور و بازیابی همچنان مسئولیت تیم بهره‌برداری است. محصولات تجاری مرکز تماس و سرویس میزبانی‌شده شرایط جدا دارند.

تاریخ بررسی نسخه: ۱۴ اکتبر ۲۰۲۶. پروژه رسمی SourceForge فایل issabel5-USB-DVD-x86_64-20261001.iso را معرفی می‌کند؛ اعلان نسخه در انجمن ایزابل از Asterisk 20 و بسته‌های به‌روز Rocky Linux و Issabel خبر می‌دهد. مبنای اولیه ایزابل ۵، Rocky Linux 8.8 با Asterisk 16 یا 18 بود. پایان عمر این دو شاخه به‌ترتیب 2023-10-09 و 2025-10-20 است. مبنای مستند مقاله ISO جدید است، اما نسخه واقعی سیستم‌عامل و RPMها باید پس از نصب ثبت شود. نصب برای این مقاله در آزمایشگاه اجرا نشده است.

Asterisk 20 از 2026-10-19 فقط وصله امنیتی می‌گیرد و در 2027-10-19 به پایان عمر می‌رسد. Asterisk 22 LTS تا 2029-10-16 پشتیبانی می‌شود، اما در این بررسی ترکیب بسته‌ای پشتیبانی‌شده Issabel 5 و Asterisk 22 تأیید نشد. جایگزینی موتور با کامپایل دستی، سازگاری پنل، ماژول‌ها و بکاپ را تضمین نمی‌کند. پیش از موعد Asterisk 20 برنامه مهاجرت پشتیبانی‌شده تهیه کنید؛ ISO قدیمی انتخاب مناسبی برای استقرار امن بلندمدت نیست.

پذیرش امنیتی کل Stack را شامل می‌شود: OS، PHP و Framework وب، دیتابیس، Asterisk و ماژول‌ها. اعلان ISO جدید قرارداد پشتیبانی همه اجزا نیست. php -v و منشأ RPM را ثبت، نگهداری امنیتی Downstream را با تأمین‌کننده تأیید کنید و صرف پشتیبانی Asterisk مجوز انتشار اینترنتی ندهید. Index مخزن و متن نصب‌کننده شبکه در این نشست مستقلاً قابل بررسی نبودند؛ Revision دقیق بسته و رفتار Installer باید در محل تأیید شود.

[فهرست رسمی ISO و نصب‌کننده شبکه](https://sourceforge.net/projects/issabelpbx/files/Issabel%205/)

[اعلان نسخه اکتبر ۲۰۲۶ ایزابل](https://forum.issabel.org/d/19773/6)

[تاریخ‌های چرخه عمر Asterisk](https://docs.asterisk.org/About-the-Project/Asterisk-Versions/)

## ۲. معماری ایزابل

سناریوی نمونه: PBX با آدرس 192.168.50.10/24، شبکه صوتی VLAN 50، تلفن‌ها در 192.168.50.0/24، دروازه 192.168.50.1 و VLAN مدیریتی جدا، مثلاً 192.168.60.0/24. سوئیچ مرکزی VLANها را حمل می‌کند و ACL بین شبکه‌ها فقط جریان لازم را عبور می‌دهد. مدیریت محدود و مسیریابی‌شده روی همان کارت شبکه PBX ممکن است؛ کارت دوم الزام نیست. دو Default Gateway تعریف نکنید.

SIP نشست را مذاکره می‌کند: تماس‌گیرنده ←→ Asterisk ←→ مقصد یا اپراتور. Asterisk یک B2BUA است؛ هر سمت تماس وضعیت تراکنش جدا دارد. SDP آدرس رسانه و Codec را اعلام می‌کند. صدا با RTP روی پورت‌های UDP جدا عبور می‌کند و داخل SIP نیست. در این مقاله رسانه از PBX عبور می‌کند و Direct Media غیرفعال است تا ضبط و NAT قابل پیش‌بینی باشد. SBC یا دروازه اپراتور اتصال سرویس SIP به PSTN را فراهم می‌کند.

![اپراتور، فایروال، PBX و VLAN 50 همراه مسیر مدیریت محدود](/assets/img/articles/content/issabel-pbx-installation-configuration/issabel-enterprise-architecture.png)

## ۳. نیازمندی‌ها و ظرفیت‌سنجی

جدول زیر برآورد شروع طراحی است، نه ظرفیت تضمین‌شده سازنده یا نتیجه Benchmark. فرض آن CPU جدید x86-64، بیشتر تماس‌ها با G.711 بدون Transcoding و گزارش‌گیری متوسط است. با Codec واقعی، TLS/SRTP، ضبط، کنفرانس و صف در ساعت شلوغ آزمون بار انجام دهید. هزار داخلی ثبت‌شده ممکن است از پنجاه تماس هم‌زمان با تبدیل Codec بار کمتری داشته باشد.

| استقرار | CPU | RAM | دیسک | داخلی تخمینی | تماس تخمینی |
| --- | --- | --- | --- | --- | --- |
| دفتر کوچک | 2 vCPU | 4 GB | 80 GB SSD + فضای ضبط | 10–30 | 5–10 |
| سازمان متوسط | 4 vCPU | 8 GB | 160 GB SSD + Volume ضبط | 30–150 | 10–40 |
| پایلوت سازمان بزرگ | 8 vCPU با آزمون بار | 16 GB | 250 GB SSD + ذخیره‌سازی رسانه جدا | 150–500 | 40–100 |

کارایی هر هسته مهم است؛ افزایش بی‌دلیل vCPU ممکن است تأخیر زمان‌بندی را بیشتر کند. RAM را برای جلوگیری از Swap کافی بگیرید. ضبط به نوشتن پیوسته و تأخیر قابل پیش‌بینی دیسک نیاز دارد؛ ذخیره‌سازی افزونه و UPS لازم است، نه فقط دیسک بزرگ. برای آپدیت، لاگ، دیتابیس و فضای موقت Restore ظرفیت نگه دارید. شبکه گیگابیتی مبنای مناسبی است؛ PoE و Uplink افزونه را متناسب با نیاز در نظر بگیرید. پهنای باند WAN از سرعت اسمی کارت مهم‌تر است.

IP ثابت خارج از محدوده DHCP، DNS داخلی سالم، NTP معتمد و FQDN مثل pbx.example.test اختصاص دهید؛ این نام مستنداتی است و باید با دامنه واقعی جایگزین شود. Virtualization پردازنده و ماتریس سازگاری Guest در ESXi را بررسی کنید. Hyper-V و KVM میزبان لینوکس هستند، اما مقاله گواهی سازگاری ایزابل برای همه Hypervisorها ادعا نمی‌کند. کارت تلفنی فیزیکی به Driver پشتیبانی‌شده و طراحی Passthrough نیاز دارد.

## ۴. دانلود امن ایزابل

از پروژه رسمی وارد پوشه Issabel 5 شوید و ISO با تاریخ 20261001 و معماری x86-64 را انتخاب کنید؛ فایل ALPHA یا 20240430 را مبنا نگیرید. نام فایل، URL، تاریخ و Checksum منتشرشده در اطلاعات فایل، اگر موجود است، ثبت شود. دانلود با HTTPS باشد. Hash محلی فقط نسخه فایل شما را شناسایی می‌کند و اصالت را ثابت نمی‌کند؛ آن را با Digest معتمد ناشر مقایسه کنید. SHA-1 یا MD5 صرفاً برای سلامت انتقال است و تضمین امروزی اصالت نیست.

```text
sha256sum issabel5-USB-DVD-x86_64-20261001.iso
# Windows PowerShell alternative:
Get-FileHash -Algorithm SHA256 .\issabel5-USB-DVD-x86_64-20261001.iso
```

خروجی مورد انتظار Hash با ۶۴ نویسه و نام فایل است؛ در این مقاله Digest ساختگی درج نشده است. اختلاف Hash یعنی توقف و دریافت مجدد فایل. مسیر تکرارپذیر پیشنهادی ISO است: برای سرور فیزیکی روی USB بنویسید که USB انتخابی پاک می‌شود؛ برای VM در Datastore بارگذاری کنید. حالت Boot و دیسک مقصد را پیش از نصب بررسی کنید؛ پارتیشن‌های انتخابی بازنویسی می‌شوند.

همان پوشه رسمی نصب‌کننده شبکه اکتبر ۲۰۲۶ را هم دارد. Script را ابتدا به‌صورت فایل بگیرید، پیش‌نیاز Rocky Linux، URL مخزن، تنظیم GPG و انتخاب بسته‌ها را بازبینی کنید و روی VM تمیز و قابل حذف بیازمایید. محتوای Script ممکن است بعداً عوض شود. دستور انتقال مستقیم curl به Shell یا دستور ارتقای تأییدنشده Asterisk ارائه نمی‌شود. انتقال معتمد همه وابستگی‌ها را بررسی کنید؛ اگر Script به HTTP بدون احراز اصالت وابسته است، ISO یا روش تأییدشده سازنده را ترجیح دهید.

## ۵. نصب ایزابل روی VMware ESXi

۱. روی میزبان ESXi پشتیبانی‌شده VM جدید بسازید و Guest لینوکسی مطابق خانواده Rocky Linux 8 در ISO انتخاب کنید. اگر Rocky Linux 8 موجود نیست، پروفایل سازگار RHEL 8 64-bit پشتیبانی‌شده در همان ESXi را انتخاب کنید. ۲. برای آزمایش با 2 vCPU و 4 GB RAM شروع کنید. ۳. دیسک مجازی 80 GB روی ذخیره‌سازی کم‌تأخیر و SCSI Controller سازگار اضافه کنید. Thin Provisioning فقط با پایش ظرفیت Datastore و فضای آزاد کافی قابل قبول است.

۴. اگر Kernel نصب کارت را تشخیص می‌دهد VMXNET3 انتخاب کنید؛ در غیر این صورت Adapter شبیه‌سازی‌شده سازگار را آزمایش و مهاجرت را برنامه‌ریزی کنید. کارت به Port Group صوتی VLAN 50 متصل و هنگام روشن شدن Connected باشد. وقتی Port Group تگ VLAN را اعمال می‌کند، داخل Guest دوباره VLAN 50 را Tag نکنید. محدودیت شبکه را قبل از Boot اعمال کنید. ۵. ISO تأییدشده را به CD/DVD متصل و Connect at Power On فعال کنید. ۶. با Firmware سازگار تصویر Boot کنید؛ پس از پارتیشن‌بندی Firmware را تغییر ندهید.

۷. زبان نصب، صفحه‌کلید و Time Zone را تعیین کنید. فقط دیسک مجازی موردنظر انتخاب شود. پارتیشن‌بندی خودکار برای آزمایش جداشده کافی است؛ در Production ظرفیت Root و فضای مستقل /var/spool/asterisk، لاگ و آماده‌سازی بکاپ را طراحی کنید. پارتیشن Boot متناسب BIOS/UEFI و فضای Root برای آپدیت کافی باشد. ۸. کارت را فعال و Hostname و IPv4 دستی را تنظیم کنید: 192.168.50.10/24، Gateway با انتهای .1 و DNS داخلی. ۹. رمز Root یکتا بگذارید و نصب سیستم‌عامل را تمام کنید. تنظیمات اولین Boot برای رمز دیتابیس و مدیر وب را طبق خود تصویر انجام دهید؛ رمزها جدا نگهداری شوند.

۱۰. Reboot کنید، ISO را جدا کنید و Boot از دیسک را تأیید کنید. ۱۱. از Console ماشین وارد شوید، نسخه و سرویس‌ها را بررسی کنید و سپس از مسیر مدیریت محدود متصل شوید. عنوان گزینه‌ها و ترتیب اولین Boot ممکن است بین تصاویر فرق کند؛ Screenshot یا نتیجه موفق نصب ادعا نشده است. معیار پذیرش Boot سالم و تماس داخلی و اپراتوری موفق است، نه فقط نمایش Dashboard.

```text
cat /etc/os-release
asterisk -rx "core show version"
rpm -qa | sort | grep -Ei "^(issabel|asterisk|rocky|php)"
sudo dnf info open-vm-tools
# If the official OS repositories provide it:
sudo dnf install open-vm-tools
sudo systemctl enable --now vmtoolsd
vmware-toolbox-cmd -v
```

این دستورها Inventory می‌گیرند و اگر بسته موجود باشد Tools توزیع را نصب می‌کنند. انتظار هویت خانواده Rocky Linux 8، موتور Asterisk 20.x و فهرست نسخه RPMها را دارید؛ موتور متفاوت نیازمند بازبینی تصمیم پشتیبانی است. نبود بسته یا سرویس یعنی مخزن رسمی را بررسی کنید، نه دانلود RPM متفرقه. در Production در ساعت شلوغ CPU Ready و Swap را پایش کنید، از Overcommit پردازنده و RAM دوری کنید و تأخیر پایدار Datastore یا Ballooning را بررسی کنید. chrony مرجع پیوسته زمان باشد؛ همگام‌سازی دوره‌ای و رخدادی VMware را آگاهانه تنظیم کنید تا رقابت ایجاد نشود. Snapshot ابزار موقت Rollback است؛ رشد می‌کند، روی I/O اثر می‌گذارد و بکاپ نیست. Uplink و برق سوئیچ افزونه فراهم کنید.

![تأیید ISO، نصب VM و پذیرش عملی PBX](/assets/img/articles/content/issabel-pbx-installation-configuration/issabel-installation-workflow.png)

## ۶. تنظیمات اولیه سرور

تغییر شبکه را از Console انجام دهید چون فعال‌سازی Connection ممکن است SSH را قطع کند. نام Connection فعال را بخوانید؛ ens192 و PBX-LAN نمونه هستند. DNS و دامنه را با مقادیر واقعی داخلی جایگزین کنید. وقتی PBX به DNS داخلی یا Split Horizon نیاز دارد، Resolver عمومی را بدون بررسی کپی نکنید.

```text
sudo hostnamectl set-hostname pbx.example.test
nmcli -f NAME,DEVICE,TYPE connection show --active
# Replace PBX-LAN with the discovered connection name:
sudo nmcli connection modify "PBX-LAN" ipv4.method manual ipv4.addresses 192.168.50.10/24 ipv4.gateway 192.168.50.1 ipv4.dns "192.168.60.53"
sudo nmcli connection up "PBX-LAN"
sudo timedatectl set-timezone Asia/Tehran
sudo systemctl enable --now chronyd
chronyc tracking
chronyc sources -v
ip -br address
ip route
getent hosts pbx.example.test
ping -c 4 192.168.50.1
```

انتظار: کارت فعال 192.168.50.10/24 دارد، یک Default Route از 192.168.50.1 موجود است، DNS آدرس درست PBX را برمی‌گرداند و chrony وضعیت Leap برابر Normal و منبع منتخب با * نشان می‌دهد. این‌ها خروجی مورد انتظارند، نه خروجی ثبت‌شده آزمایش. خرابی DNS را از Resolver و دسترسی مسیریابی‌شده بررسی کنید. برای زمان هماهنگ‌نشده، UDP 123 و /etc/chrony.conf را ببینید. Gateway ممکن است ICMP را مسدود کند ولی مسیریابی سالم باشد؛ اتصال سرویس واقعی را هم آزمایش کنید.

```text
sudo dnf repolist
sudo dnf check-update
# After a verified backup and maintenance approval:
sudo dnf upgrade
systemctl --failed
systemctl status asterisk httpd mariadb chronyd --no-pager
ss -lntup
asterisk -rx "core show uptime"
asterisk -rx "module show like pjsip"
```

Exit Code برابر 100 در dnf check-update یعنی آپدیت موجود است و خطای Package Manager نیست. GPG Check فعال و مخازن رسمی ثبت شوند. ارتقا در پنجره نگهداری باشد، در صورت نیاز Kernel یا کتابخانه‌ها Reboot کنید و تماس را دوباره بیازمایید. انتظار سرویس‌های Active، افزایش Uptime موتور و ماژول‌های PJSIP را دارید. نام Unit ممکن است فرق کند؛ اگر نبود systemctl list-unit-files را ببینید. آپدیت سیستم‌عامل به‌معنی پشتیبانی دوباره شاخه EOL موتور نیست.

## ۷. ورود به پنل وب

از VLAN مدیریت یا VPN، نام واقعی PBX را با HTTPS باز کنید؛ نمونه https://pbx.example.test است. گواهی معتمد سازمانی با SAN منطبق نام نصب کنید و Chain، انقضا و اعتماد مرورگر را بررسی کنید. برای گواهی Self-signed اولیه، Fingerprint از مسیر مستقل تأیید شود. رد کردن هر هشدار مرورگر را به عادت مدیران تبدیل نکنید. پنل را با Port Forward عمومی منتشر نکنید.

با مدیر وب ساخته‌شده در نصب وارد شوید، اطلاعات ورود اولیه را تغییر دهید و مسئول بازیابی حساب را مشخص کنید. Dashboard سلامت سیستم و سرویس را خلاصه می‌کند؛ PBX → PBX Configuration محل داخلی، ترانک، مسیر، IVR و صف است؛ System تنظیم شبکه و زمان، کاربران و ابزار بکاپ موجود را پوشش می‌دهد؛ Reports دسترسی CDR و ضبط را فراهم می‌کند. عنوان منو با ماژول نصب‌شده فرق دارد. هر شیء را Save و در صورت نمایش Apply Configuration/Apply Changes اجرا کنید؛ وضعیت Runtime را هم بررسی کنید.

## ۸. ساخت داخلی 101 و 102

SIP پروتکل است؛ chan_sip و chan_pjsip دو Driver مختلف Asterisk برای آن هستند. وقتی پنل نصب‌شده گزینه PJSIP را دارد و Driver بارگذاری شده، آن را ترجیح دهید. دو Driver ممکن است روی پورت‌های متفاوت Listen کنند. Transport واقعی PJSIP را پیدا کنید، نه اینکه 5060 را فرض بگیرید؛ تلفن را به پورت Driver دیگر نفرستید. برای ظاهر کردن گزینه غایب پنل، موتور جدید کامپایل نکنید.

در PBX Configuration → Extensions یک داخلی PJSIP اضافه کنید: User Extension برابر 101، Display Name برابر Reception، Secret تصادفی قوی، یک Device/Contact برای آزمایش، Codecهای ulaw/alaw و Direct Media غیرفعال. Save و Apply کنید. برای 102 با نام IT Department و رمز متفاوت تکرار کنید. شماره داخلی رمز آن نباشد. صندوق صوتی را فقط در صورت نیاز فعال و PIN جدا، مقصد ایمیل و محدودیت پیام مناسب تعیین کنید.

برای تلفن VLAN 50 بدون NAT، تعریف Local Network درست مهم‌تر از روشن کردن همه گزینه‌های NAT است. برای Client آزمایش‌شده پشت VPN یا NAT ممکن است rtp_symmetric، force_rport و rewrite_contact لازم باشند: به‌ترتیب رسانه به Source مشاهده‌شده برمی‌گردد، پاسخ به پورت Source ارسال می‌شود و Contact برای دسترسی بازنویسی می‌شود. این گزینه‌ها جای آدرس خارجی درست و فایروال را نمی‌گیرند.

### Softphone و آزمون تماس داخلی

نسخه جاری Client دارای SIP از Linphone را از ناشر رسمی نصب کنید. حساب SIP دستی: Username و Authentication ID برابر 101، Domain/Proxy برابر 192.168.50.10، پورت Transport کشف‌شده، پروتکل UDP/TCP/TLS منطبق و Secret ساخته‌شده. Display Name برابر Reception و Outbound Proxy خالی باشد مگر معماری آن را لازم کند. برای آزمایش G.711 A-law/µ-law را انتخاب، دسترسی میکروفن و دستگاه صدای درست را فعال کنید. روی دستگاه دوم 102 را تنظیم کنید. TLS به نام و گواهی معتمد نیاز دارد؛ URI با IP ممکن است با گواهی منطبق نباشد.

```text
asterisk -rx "pjsip show transports"
asterisk -rx "pjsip show endpoints"
asterisk -rx "pjsip show contacts"
asterisk -rx "pjsip show endpoint 101"
```

بعد از Registration، Contact ثبت‌شده و در صورت فعال بودن Qualify وضعیت قابل دسترس/Available را انتظار دارید؛ ثبت Contact و دسترسی OPTIONS دو بررسی متفاوت هستند. از 101 به 102 زنگ بزنید، پاسخ دهید و دست‌کم یک دقیقه دوطرفه صحبت کنید. تماس برعکس، Hold/Transfer و گذاشتن و شنیدن پیام با Feature Code تنظیم‌شده را بیازمایید. 401 اولیه و سپس REGISTER دارای احراز هویت و 200 OK طبیعی است؛ 401/403 تکراری طبیعی نیست. نام تماس‌گیرنده، Codec و قطع تماس را ثبت کنید.

[دانلود رسمی Linphone](https://www.linphone.org/en/download/)

![تراکنش‌های SIP جدا و RTP عبوری از PBX میان 101 و 102](/assets/img/articles/content/issabel-pbx-installation-configuration/issabel-sip-call-flow.png)

## ۹. تنظیم SIP Trunk

از اپراتور Registrar، Proxy/SBC، Auth ID، روش تحویل رمز، قالب DID و شماره خروجی، Caller ID مجاز، Codec، DTMF، Transport و محدوده IP جدا برای سیگنال و رسانه بگیرید. سرویس Registration-based را از IP-authenticated تفکیک کنید. ترانک مبتنی بر IP معمولاً REGISTER ندارد و وضعیت ثبت‌نشده الزاماً خطا نیست. ملاک قرارداد و راهنمای سازگاری همان اپراتور است، نه Screenshot اپراتور دیگر.

در Trunks نوع PJSIP موجود پنل را اضافه، نام CARRIER-LAB و مقادیر اپراتور را وارد کنید. Context ورودی، Context خارجی ترانک در پنل باشد که معمولاً from-pstn است؛ از from-internal داخلی‌ها استفاده نکنید. در صورت نیاز Outbound Authentication را تنظیم کنید؛ احراز REGISTER و INVITE اشیای جدا هستند. Identify به منابع سیگنال اپراتور محدود شود. اگر اپراتور می‌پذیرد DTMF از نوع RFC4733، که اغلب RFC2833 نامیده می‌شود، انتخاب و رسیدن ارقام به IVR اپراتور تأیید شود.

مثال زیر مرجع مستقل تنظیم PJSIP در Asterisk است و نباید روی فایل تولیدشده پنل ایزابل Paste شود. رابطه اشیا را نشان می‌دهد. همه نام‌ها، رمزها و آدرس‌های 203.0.113.0/24 مستنداتی‌اند. مقادیر را از پنل نگاشت کنید؛ Custom Include فقط پس از بررسی زنجیره Include نصب‌شده و تهیه بکاپ استفاده شود.

```text
; REFERENCE ONLY — NOT A DROP-IN ISSABEL CONFIGURATION
[carrier-auth]
type=auth
auth_type=userpass
username=EXAMPLE_AUTH_ID
password=REPLACE_WITH_PROVIDER_SECRET

[carrier-aor]
type=aor
contact=sip:203.0.113.20:5060
qualify_frequency=60

[carrier-endpoint]
type=endpoint
context=from-pstn
disallow=all
allow=alaw,ulaw
aors=carrier-aor
outbound_auth=carrier-auth
direct_media=no
dtmf_mode=rfc4733

[carrier-identify]
type=identify
endpoint=carrier-endpoint
match=203.0.113.20/32

; Only for a provider requiring registration:
[carrier-registration]
type=registration
outbound_auth=carrier-auth
server_uri=sip:203.0.113.20:5060
client_uri=sip:EXAMPLE_AUTH_ID@203.0.113.20
contact_user=EXAMPLE_DID
retry_interval=60
```

AoR مقصد خروجی است، Identify منبع ورودی را به Endpoint نگاشت می‌کند و Registration یک Contact منتشر می‌کند. حذف Auth یا Registration برای احراز IP فقط طبق دستور اپراتور باشد. همه SBCهای تأییدشده سیگنال را اضافه کنید، نه فقط IP مثال. برای NAT، local_net و external_signaling_address/external_media_address روی Transport فعال و از روش پشتیبانی‌شده تنظیم شوند؛ تغییر Transport ممکن است Restart برنامه‌ریزی‌شده بخواهد. NAT ثابت و مسیر برگشت با SDP هماهنگ باشند. ACL رسانه باید Source واقعی RTP اپراتور را پوشش دهد.

```text
asterisk -rx "pjsip show registrations"
asterisk -rx "pjsip show endpoint carrier-endpoint"
# Use the actual GUI-generated endpoint name, not this reference name.
```

انتظار: برای سرویس Registration-based وضعیت Registered، در صورت پشتیبانی OPTIONS دسترسی Contact اپراتور و سپس تماس موفق دوطرفه. آیکون سبز یا REGISTER، سلامت RTP یا مسیریابی DID را ثابت نمی‌کند. تماس ورودی، خروجی، Hold، DTMF و Caller ID با اپراتور آزمایش شوند.

[اشیای Registration در PJSIP](https://docs.asterisk.org/Configuration/Channel-Drivers/SIP/Configuring-res_pjsip/Configuring-Outbound-Registrations/)

[تنظیم NAT در Transport و Endpoint](https://docs.asterisk.org/Configuration/Channel-Drivers/SIP/Configuring-res_pjsip/Configuring-res_pjsip-to-work-through-NAT/)

![مسیر تلفن تا اپراتور و PSTN با تفکیک سیگنال و رسانه](/assets/img/articles/content/issabel-pbx-installation-configuration/issabel-sip-trunk-topology.png)

## ۱۰. مسیرهای ورودی و خروجی

مسیر ورودی با DID فرضی 982155550100، دقیقاً در قالب ارسالی اپراتور و مقصد Extension 101 بسازید. از تلفن خارجی تماس بگیرید. پیشوند + یا Request-URI متفاوت می‌تواند Match را خراب کند؛ INVITE ورودی و Dialplan حاصل را ببینید. Catch-all فقط Fallback آگاهانه به پذیرش باشد و هرگز امکان شماره‌گیری خروجی به تماس‌گیرنده بدون احراز هویت ندهد.

| مسیر | نمونه Match | نتیجه |
| --- | --- | --- |
| DID ورودی | 982155550100 فرضی | داخلی 101؛ سپس IVR ساعات کاری |
| مسیر آزمایشی ملی | Prefix برابر 9، Match برابر 0XXXXXXXXXX | شماره 9 و سپس 11 رقم با شروع 0؛ حذف 9 |
| اضطراری | شماره دقیق اضطراری تأییدشده محل | بدون پیشوند؛ اپراتور و مکان تأییدشده |
| بین‌الملل | بدون مسیر عمومی X. | مسدود پیش‌فرض؛ استثنای مجاز صریح |

در Outbound Routes ستون‌ها را درست استفاده کنید: Prepend رقم اضافه می‌کند، Prefix حذف می‌شود، Match Pattern باقی شماره را اعتبارسنجی می‌کند و CallerID در صورت پشتیبانی داخلی مبدأ را محدود می‌کند. X یک رقم 0 تا 9، N رقم 2 تا 9 و نقطه یک یا چند نویسه است و ممکن است بیش از نیاز مجوز بدهد. مثال، طرح عمومی همه اپراتورها یا همه شماره‌های ایران نیست؛ Normalization را با اپراتور تأیید کنید. مسیر دقیق اضطراری و مجاز قبل از مسیر عمومی باشد و ترتیب ترانک و Failover روشن باشد.

Caller ID خروجی شماره مجاز اپراتور باشد؛ مقدار جعلی ممکن است رد یا جایگزین شود. مقصد گران را با داخلی/Context یا ابزار Class of Service پشتیبانی‌شده محدود کنید، سقف هزینه و کانال اپراتور بگذارید و برای مقصد غیرعادی و تماس خارج ساعت هشدار بسازید. مخفی کردن مسیر در UI به‌معنی جلوگیری از استفاده نیست. رد شماره ممنوع، موفقیت شماره مجاز و درستی مسیر/مکان اضطراری با روش هماهنگ آزمون اپراتور تأیید شود؛ تماس آزمایشی بی‌برنامه با امداد واقعی نگیرید.

## ۱۱. تنظیم IVR شرکت

پیام نمونه: «به MEET AJ خوش آمدید. برای فروش ۱، پشتیبانی فنی ۲ و پذیرش ۰ را فشار دهید.» فایل Mono واضح و با نرخ نمونه مورد پذیرش ماژول System Recordings تهیه کنید؛ WAV از نوع PCM با 16-bit و 8 kHz منبع متداول Narrowband است. موسیقی Stereo و Clipping مناسب نیست؛ از تلفن واقعی گوش دهید. فایل را در System Recordings با نام MEETAJ-Welcome بارگذاری و پیش از انتخاب در IVR بازشنوی کنید.

در IVR، Company-Main بسازید: Announcement برابر MEETAJ-Welcome، گزینه 1 به Ring Group فروش 201، گزینه 2 به Queue پشتیبانی 600 و گزینه 0 به Extension 101. شماره‌گیری مستقیم داخلی را مگر در صورت نیاز خاموش کنید. Timeout اولیه پنج ثانیه و حداکثر دو Retry برای ورودی نامعتبر یا بی‌پاسخ بگذارید؛ سپس پذیرش یا صندوق دارای مسئول پاسخ‌گویی. حلقه بی‌پایان نسازید. Time Groups برای ساعت کاری و تعطیلات و Time Condition با مسیر Open به IVR و Closed به پیام تعطیلی و صندوق/On-call تعریف کنید. مسیر DID به همین شرط وصل شود.

از تماس‌گیرنده خارجی همه گزینه‌ها، ورودی نامعتبر، بدون ورودی، خارج ساعت و تعطیلات را بیازمایید. تشخیص DTMF با روش مذاکره‌شده تأیید شود. برای مشکل ارقام، چند روش ناسازگار را تصادفی روشن نکنید؛ توافق Codec و سیگنال/رسانه اپراتور را بررسی کنید.

![شاخه‌های IVR ساعات کاری به فروش، پشتیبانی، پذیرش و Fallback](/assets/img/articles/content/issabel-pbx-installation-configuration/issabel-ivr-call-flow.png)

## ۱۲. Ring Group و صف تماس

| شیء | کاربرد | نمونه |
| --- | --- | --- |
| داخلی مستقیم | تماس با یک مقصد | پذیرش 101 |
| گروه زنگ | زنگ به فهرست ثابت بدون منطق انتظار صف | 201 تلفن‌های فروش |
| صف | انتظار، توزیع به Agent و آمار انتظار | 600 پشتیبانی فنی |
| IVR | دریافت انتخاب و مسیریابی | 1 فروش / 2 پشتیبانی / 0 پذیرش |

Ring Group 201 با داخلی‌های واقعی فروش مثل 103 و 104 پس از ساخت آن‌ها، راهبرد ringall، زمان زنگ ۲۰ ثانیه و Failover به 101 بسازید. یک دستگاه را بدون آزمایش در مقصدهای متعارض قرار ندهید. برای Queue 600 ابتدا 102 را Static Agent و بعد Agent آموزش‌دیده اضافه کنید. rrmemory برای گردش توزیع یا ringall برای تیم کوچک پاسخ انتخاب شود. Timeout عامل ۱۵ ثانیه، Retry سه ثانیه، Wrap-up ده ثانیه و حداکثر انتظار تماس‌گیرنده ۱۲۰ ثانیه، سیاست‌های شروع پیشنهادی‌اند.

رفتار Join Empty و Leave Empty، Login/Pause عامل و Agent مشغول را متناسب حضور کارکنان تعیین کنید. برای نبود عامل یا اتمام انتظار، Fallback مثل پذیرش یا صندوق پشتیبانی مشخص شود. پیام انتظار واقع‌بینانه باشد و در صورت وجود، ظرفیت صف محدود شود. queue show 600، وضعیت عامل و تماس دوم در انتظار را بررسی کنید. آمار و ابزار پیشرفته نیروی انسانی به ماژول/مجوز وابسته است.

```text
asterisk -rx "queue show 600"
```

## ۱۳. ضبط تماس و صندوق صوتی

سیاست ضبط را در کنترل ضبط داخلی/مسیر نصب‌شده، متناسب سیاست مصوب، On-demand، Always یا Never تعیین کنید. Forced Recording در یک سطح ممکن است سطح دیگر را Override کند؛ تماس داخلی، ورودی و خروجی را واقعاً تست کنید. فرمت و مسیر واقعی را بررسی کنید؛ مسیرهای متداول Asterisk برابر /var/spool/asterisk/monitor و /var/spool/asterisk/voicemail هستند. CDR اطلاعات تماس است، نه فایل صوت.

مثال محاسبه از فرمت: PCM WAV تک‌کاناله با 8000 نمونه در ثانیه و 16 بیت برابر 128 kbit/s یا 0.96 MB در دقیقه با واحد ده‌دهی است. برای ۱۰۰ ساعت تماس ضبط‌شده روزانه، 5.76 GB در روز و 172.8 GB برای ۳۰ روز لازم است. با ۳۰٪ فضای عملیاتی حدود 225 GB، علاوه بر صندوق، لاگ، نسخه بکاپ و فضای Restore در نظر بگیرید. Stereo یا ضبط دو سمت جدا می‌تواند حجم را دوبرابر کند؛ فرمت فشرده متفاوت است. پیش از خرید رشد واقعی روزانه را اندازه بگیرید.

پخش و Export را به نقش مجاز محدود، مخزن بکاپ را رمزگذاری و دسترسی را Audit کنید. اطلاع‌رسانی، رضایت و دوره نگهداری را با مسئول سیاست سازمان و الزامات محل مشخص کنید؛ مقاله حکم حقوقی نمی‌دهد. انقضای عادی از Legal Hold جدا باشد. برای Cleanup دستور حذف بازگشتی روی Spool اجرا نکنید. صندوق به PIN یکتا، Greeting آزمایش‌شده و محدودیت پیام نیاز دارد؛ اگر ایمیل فعال است، SMTP و افشای فایل پیوست را بررسی کنید.

```text
df -h /var/spool/asterisk
df -i /var/spool/asterisk
sudo du -sh /var/spool/asterisk/monitor /var/spool/asterisk/voicemail
asterisk -rx "voicemail show users"
```

انتظار بلوک و Inode آزاد، حجم واقعی پوشه و صندوق‌های تعریف‌شده را دارید. نبود پوشه ممکن است نشانه مسیر Spool دیگری باشد؛ asterisk.conf و پنل را ببینید. مجوز باید نوشتن سرویس Asterisk و جلوگیری از خواندن کاربران نامرتبط را تأمین کند. پخش فایل ضبط و دریافت پیام آزمایشی را تأیید و بعد از Restore هم تکرار کنید.

## ۱۴. فایروال و امنیت شبکه

ابتدا Socketهای Listen، Transport فعال، تنظیم RTP و مدیر فایروال میزبان را شناسایی کنید. ایزابل ممکن است خودش قواعد Netfilter را مدیریت کند؛ firewalld را بدون طراحی مهاجرت روی مدیر موجود فعال نکنید. دستورهای زیر فقط خواندنی هستند. علاوه بر فایل اصلی، Includeهای تنظیم RTP را هم بررسی کنید؛ مسیر تولید پنل متفاوت است.

```text
sudo ss -lntup
asterisk -rx "pjsip show transports"
asterisk -rx "rtp show settings"
sudo grep -R -E "^[[:space:]]*(rtpstart|rtpend|#include)" /etc/asterisk/rtp*.conf
sudo systemctl is-active firewalld
sudo nft list ruleset
# If legacy iptables is the active manager:
sudo iptables-save
```

| پورت | پروتکل | کاربرد | منبع | توصیه امنیتی |
| --- | --- | --- | --- | --- |
| 22؛ بررسی sshd | TCP | SSH | VLAN مدیریت / VPN | کلید و ACL مبدأ؛ غیرعمومی |
| 443؛ بررسی httpd | TCP | مدیریت وب | VLAN مدیریت / VPN | HTTPS معتمد؛ نقش محدود |
| 5060 فقط مثال | UDP/TCP مطابق Transport | SIP | VLAN صوتی و IP سیگنال اپراتور | پورت کشف‌شده و Allowlist |
| 5061 در صورت تنظیم | TCP | SIP TLS | Peer مجاز | اعتبارسنجی گواهی؛ بدون Fallback متنی |
| 10000–20000 فقط مثال | UDP | RTP / SRTP | شبکه صوت/VPN و IP رسانه اپراتور | جایگزین با rtpstart/rtpend واقعی |
| 123 خروجی | UDP | NTP | PBX به NTP مجاز | NTP Server عمومی نسازید |
| 53 خروجی | UDP/TCP | DNS | PBX به Resolver داخلی | Resolver محدود |
| 161 فقط اگر فعال | UDP | پایش SNMP | فقط سرور مانیتورینگ | SNMPv3؛ غیرفعال در صورت عدم نیاز |
| 5038 / 3306 | TCP | AMI / دیتابیس در صورت Listen | Localhost / برنامه معتمد صریح | هرگز عمومی نشود |

در مرز سازمان Default Deny و سپس قواعد صریح Source/Destination/Transport از Inventory اعمال کنید. جریان تلفن به PBX و PBX به اپراتور، مسیر برگشت و شبکه واقعی رسانه را لازم دارد که ممکن است با Registrar متفاوت باشد. محدوده مثال RTP را کورکورانه باز نکنید. Registration عمومی تلفن را کنار بگذارید و VPN یا SBC پشتیبانی‌شده ترجیح دهید. پس از تغییر، مسدود بودن منبع عمومی، تماس خصوصی مجاز و دوطرفه بودن صدا تأیید شود.

برای SSH ابتدا حساب Sudo نام‌دار و ورود با کلید سالم بسازید، سپس Root/Password Login را ببندید. sshd -t اجرا، Console حفظ و تغییر در پنجره نگهداری اعمال شود. HTTPS و SIP TLS هشدار انقضای گواهی لازم دارند؛ SRTP روی هر سمت پشتیبانی‌شده مذاکره شود و بخش PSTN اپراتور را خودکار رمز نمی‌کند. Client ناسازگار را رد کنید، نه Fallback بی‌خبر. Secret بلند و یکتا، حساب وب با حداقل مجوز و حفاظت AMI/API لازم است؛ سرویس غیرضروری فقط بعد از بررسی وابستگی حذف شود.

```text
sudo sshd -t
sudo systemctl status fail2ban --no-pager
sudo fail2ban-client status
# Then inspect an actual jail name returned above:
sudo fail2ban-client status ACTUAL_JAIL_NAME
```

Fail2ban فقط وقتی مفید است که Jail مناسب خطای واقعی ورود را Parse و Ban را در فایروال فعال اعمال کند. با Source آزمایشی غیرمدیریتی و حفظ دسترسی تأیید کنید؛ وجود Jail با نام asterisk را فرض نگیرید. Rotation لاگ و روش Unban مستند باشد. Fail2ban مکمل ACL و آپدیت است و آسیب‌پذیری را وصله نمی‌کند. مقابله با Toll Fraud به محدودیت مقصد، سقف هزینه، سقف هم‌زمانی و روش قطع سریع سرویس نزد اپراتور هم نیاز دارد.

### SIP Helper و NAT در MikroTik

```text
/ip firewall service-port print
# RouterOS: only if the SIP helper is enabled and conflicts with validated NAT/SDP behavior:
/ip firewall service-port set sip disabled=yes
```

این دستورها در RouterOS اجرا می‌شوند، نه Shell لینوکس. SIP Helper ممکن است سیگنال و Expectation Tracking را بازنویسی کند؛ SIP رمزگذاری‌شده همان رفتار را ندارد. وقتی مقایسه Packet بازنویسی مخرب نشان می‌دهد یا طراحی اپراتور/SBC آن را لازم می‌کند، Helper را خاموش و نشست جدید و NAT State را تست کنید. این درمان عمومی هر مشکل صدای یک‌طرفه نیست. ACL مبدأ و آدرس خارجی پایدار حفظ شود؛ CGNAT ممکن است پشتیبانی اپراتور، VPN/SBC یا سرویس دسترسی دیگر لازم داشته باشد.

[سرویس‌ها و Service Portهای RouterOS](https://help.mikrotik.com/docs/spaces/ROS/pages/103841820/Services)

![مدیریت VPN، Allowlist اپراتور، تفکیک صوت و حفاظت PBX](/assets/img/articles/content/issabel-pbx-installation-configuration/issabel-voip-security.png)

## ۱۵. طراحی شبکه و QoS

تلفن‌ها در VLAN 50 با مسیریابی کنترل‌شده بین VLAN، DHCP Reservation/Option در صورت نیاز و ظرفیت PoE/Uplink مستند باشند. تصویر بخش ۲ همان توپولوژی شبکه است: تلفن به سوئیچ مرکزی و PBX، سپس PBX به فایروال و اپراتور؛ مدیر از VLAN محدود می‌آید. تفکیک، دسترسی را محدود می‌کند و رمزگذاری نیست. PBX حفاظت‌نشده را Bridge دو ناحیه امنیتی نکنید.

مرز اعتماد مشخص باشد: RTP تأییدشده را EF با DSCP 46 و سیگنال را طبق سیاست سازمان، اغلب CS3، طبقه‌بندی کنید. Marking هر Desktop را بی‌قید نپذیرید. اولویت در گلوگاه واقعی WAN اعمال، Shaping زیر ظرفیت قابل استفاده و Priority Class محدود شود تا سرویس دیگر زنده بماند. DSCP به‌تنهایی Queue نمی‌سازد و ISP ممکن است آن را پاک کند. زیر بار رقیب، اشباع Upload و سربار VPN اندازه‌گیری کنید.

هدف طراحی، نه تضمین: تأخیر یک‌طرفه کمتر از حدود 150 ms، Jitter کمتر از 20 تا 30 ms و Loss بسیار کمتر از 1٪؛ Burst حتی با میانگین خوب مهم است. Jitter Buffer با افزایش تأخیر، پخش را نرم‌تر می‌کند. G.711 با Packetization بیست میلی‌ثانیه، 160 بایت Payload و 40 بایت IPv4/UDP/RTP و ۵۰ Packet در ثانیه، 80 kbit/s در هر جهت پیش از لایه ۲ و VPN مصرف دارد. حدود 100 تا 120 kbit/s برای هر تماس در هر جهت و فضای اضافه در نظر بگیرید: ۴۰ تماس در 120 kbit/s برابر 4.8 Mbit/s هر جهت؛ با ۲۵٪ حاشیه، 6 Mbit/s هر جهت. IPv6، SRTP، Tunnel و Packetization واقعی دوباره محاسبه شوند.

[Marking کیفیت سرویس در Asterisk](https://docs.asterisk.org/Configuration/Channel-Drivers/IP-Quality-of-Service/)

[راهنمای مرتبط فایروال MEET AJ](/articles/mikrotik-firewall-hardening-input-forward-chain)

## ۱۶. بکاپ و بازیابی بحران

ماژول Native Backup/Restore واقعاً نصب‌شده را شناسایی کنید. داخلی، ترانک، مسیر، IVR/Time Condition، کاربران و دیتابیس/تنظیمات ارائه‌شده را انتخاب کنید. Manifest آرشیو را بخوانید و وجود صدای سفارشی، صندوق و ضبط را بررسی کنید؛ رسانه حجیم ممکن است اختیاری یا مستثنا باشد. پس از تغییر و هر شب بکاپ تنظیم بگیرید و رمزگذاری‌شده به مخزن جدا منتقل کنید. وضعیت سبز Job، مدرک Restore کامل نیست.

بکاپ سطح OS مکمل است: /etc/asterisk، تنظیمات واقعی ایزابل، صدای سفارشی، /var/spool/asterisk، گواهی‌ها، Dump دیتابیس‌های مربوط، Inventory بسته و تنظیم میزبان/شبکه همراه مالکیت و مجوز حفظ شوند. نام واقعی دیتابیس‌ها را بخوانید؛ وجود فقط asterisk را فرض نگیرید. Tar گرفتن از Data Directory دیتابیس زنده بکاپ سازگار نیست. Dump منطقی پشتیبانی‌شده یا Quiescing آگاه از برنامه لازم است؛ جدول غیرتراکنشی به Lock یا توقف هماهنگ نیاز دارد. Secret داخل آرشیو به رمزگذاری و دسترسی محدود نیاز دارد.

```text
rpm -qa | sort > installed-packages.txt
# Read-only inventory, using your secured administrative DB login:
mysql -u root -p -e "SHOW DATABASES;"
# Example dump ONLY after verifying tables are transactional and selecting actual DB names:
mysqldump -u root -p --single-transaction --routines --events --triggers --databases ACTUAL_DB_NAME > pbx-db.sql
# For non-transactional tables, use a planned consistent locked/application-aware backup instead.
```

Prompt رمز از قرار گرفتن آن در آرگومان Shell جلوگیری می‌کند؛ برای زمان‌بندی حساب سرویس یا فایل Credentials حفاظت‌شده لازم است. Dump بدون خطا تمام، جدول مورد انتظار موجود و در دیتابیس جدا با نسخه منطبق Restore شود. Dump منطقی رسانه، کاربران OS و همه حساب‌های دیتابیس را شامل نمی‌شود. برای قرارداد Restore پشتیبانی‌شده ابزار Native ترجیح دارد؛ فرایند مکمل OS را مستند کنید و Restore تک‌دستور عمومی ادعا نکنید.

سیاست نمونه: RPO تنظیمات ۲۴ ساعت و پس از هر تغییر، RPO رسانه ۴ ساعت و RTO سرویس ۴ ساعت. تا اندازه‌گیری، فقط هدف هستند. در صورت مجاز بودن سیاست حریم خصوصی/ظرفیت، ۷ نسخه روزانه، ۴ هفتگی و ۱۲ ماهانه، Credentials مستقل Offsite و نسخه Immutable/Offline داشته باشید. شکست Job، حجم آرشیو و ظرفیت مخزن پایش شوند. Snapshot VMware وابسته به وضعیت Datastore و ریسک مشترک آن است و به‌تنهایی بکاپ خارجی یا سازگار با برنامه نیست.

### Runbook بازیابی

۱. VM جایگزین را جدا کنید تا هم‌زمان با Production همان ترانک را Register نکند. ۲. ترکیب بسته‌ای منطبق و پشتیبانی‌شده Issabel/OS/Asterisk نصب و آرشیو Native با ماژول رسمی Restore شود. ۳. رسانه، گواهی و Custom Config جداگانه با مجوز اصلی بازیابی؛ دیتابیس فقط با روش مستند و منطبق Restore شود. ۴. کاربر، داخلی، ترانک، IVR، Time Condition، ضبط و صندوق بررسی شوند. ۵. قبل Cutover اپراتور، سیاست امنیت و تماس داخلی تست شود. ۶. IP عمومی/DNS و Registration با اپراتور هماهنگ، تماس خارجی دوطرفه و مسیر اضطراری طبق هماهنگی آزمایش، زمان بازیابی اندازه‌گیری و Rollback مستند شود. آزمون فصلی و بعد ارتقای عمده انجام دهید.

![بکاپ سازگار تنظیم، دیتابیس و رسانه همراه آزمون Restore از Offsite](/assets/img/articles/content/issabel-pbx-installation-configuration/issabel-backup-recovery.png)

[MEET AJ: زنجیره بکاپ و وابستگی بازیابی](/articles/veeam-forward-vs-reverse-incremental)

## ۱۷. مانیتورینگ ایزابل

```text
# Linux shell:
sudo asterisk -rvvv
# Now INSIDE the Asterisk CLI (do not prefix with asterisk -rx):
core show version
core show channels
core show channels count
pjsip show endpoints
pjsip show contacts
pjsip show registrations
queue show 600
exit
# Back in Linux shell:
systemctl is-active asterisk httpd mariadb chronyd
systemctl --failed
df -h
df -i
free -h
uptime
journalctl -u asterisk -n 80 --no-pager
```

Console به Asterisk در حال اجرا وصل می‌شود؛ شکست اتصال ممکن است توقف سرویس، مجوز Socket یا Runtime Path متفاوت باشد. core show channels کانال فعال را می‌بیند؛ هر تماس سرتاسری الزاماً یک کانال نیست، معمولاً دو سمت و گاهی Local Channel اضافه دارد. دستور PJSIP نیازمند Driver است؛ فقط در استقرار واقعی chan_sip از sip show peers و sip show registry استفاده کنید. انتظار Endpoint/Contact درست، Registration لازم ترانک و نبود Unit خراب دارید؛ در حالت Idle، کانال صفر طبیعی است.

Agent پشتیبانی‌شده Zabbix و Check با حداقل مجوز برای CPU، RAM، دیسک/Inode، تأخیر I/O، وضعیت سرویس و انقضای گواهی به‌کار ببرید. Registration/Reachability، شکست تماس، انتظار صف و حجم خروجی غیرعادی را پایش و تماس Synthetic کنترل‌شده برای چیزی بیش از باز بودن پورت اضافه کنید. AMI به Read Permission محدود و ACL شبکه نیاز دارد. SNMP اختیاری است؛ SNMPv3 و Poll فقط از مانیتورینگ یا غیرفعال بماند. آستانه هشدار از Baseline و زمان لازم بازیابی تعیین شود، به‌ویژه برای پرشدن فضای ضبط.

[راهنمای مانیتورینگ و بکاپ Zabbix در MEET AJ](/articles/zabbix-server-linux-windows-agents-backup)

## ۱۸. ماتریس عیب‌یابی

یک تماس خراب را با زمان، جهت، Endpoint و Call-ID ثبت کنید. ابتدا وضعیت خواندنی و سپس Logging هدفمند کوتاه در نشست نگهداری محدود. SIP Log شماره، IP و اطلاعات احراز دارد؛ Packet Capture و RTP Debug ممکن است صدا را افشا و بار ایجاد کنند. خروجی امن نگهداری و Debug پس از تست خاموش شود. Restart PBX اولین قدم تشخیص نباشد.

| مشکل / علامت | علت محتمل | تشخیص و شواهد مورد انتظار | رفع | تأیید |
| --- | --- | --- | --- | --- |
| داخلی Register نمی‌شود | Secret، پورت Driver، ACL یا DNS | pjsip show contacts؛ Logger کوتاه: Challenge سپس 200 OK | تطبیق Auth ID/Transport و مجوز Source | Contact قابل دسترس؛ تماس 101↔102 |
| صدای یک‌طرفه | SDP یا NAT برگشت غلط | rtp set debug on کوتاه: Packet دوطرفه | اصلاح External/Local Network و ACL رسانه | گفت‌وگوی دوطرفه و پس از Hold |
| بدون صدا | Codec، Mute یا انسداد RTP | core show channel ACTUAL_CHANNEL؛ Codec مشترک و RTP | Codec مشترک، اصلاح دستگاه و مسیر واقعی رسانه | تماس ۶۰ ثانیه داخلی سپس خارجی |
| ترانک قطع | Auth، ACL، DNS یا خرابی اپراتور | pjsip show registrations؛ Registered فقط سرویس ثبت‌محور | بررسی حساب/IP و ارجاع Call-ID به اپراتور | ورودی/خروجی، نه فقط آیکون |
| تماس ورودی خراب | قالب DID، Identify یا مقصد | Logger و dialplan show from-pstn؛ Endpoint/Context صحیح | DID مشاهده‌شده و Source مجاز | تماس خارجی به مقصد درست |
| تماس خروجی خراب | Pattern، اولویت، اعتبار یا Auth در INVITE | Trace Dialplan و پاسخ SIP؛ انتخاب ترانک درست | اصلاح Prefix/Normalization و مجوز اپراتور | تماس مجاز موفق، ممنوع رد |
| Caller ID غلط | شماره غیرمجاز یا سیاست Header | تطبیق From/PAI با سیاست اپراتور | CID مجاز و Header پشتیبانی‌شده | گیرنده خارجی شماره مصوب را می‌بیند |
| ناپایداری NAT | CGNAT، بازنویسی Contact/SDP یا Timeout | pjsip show endpoint؛ مقایسه SDP/Contact مرز | اصلاح NAT؛ اعتبارسنجی ALG/VPN/SBC | ثبت دوباره و تست Idle/re-INVITE |
| فایروال RTP را می‌بندد | Range یا Source رسانه غلط | rtp show settings و Counter/Capture؛ UDP دوطرفه | Range واقعی از شبکه رسانه معتمد | صدا سالم؛ Source نامرتبط مسدود |
| خرابی سرویس Asterisk | Config، دیسک/Inode، مالکیت یا ماژول | systemctl status و journalctl -u asterisk؛ اولین خطا | برگشت تغییر، آزادسازی امن، اصلاح مالکیت | Uptime پایدار، ماژول و تماس مجدد |

```text
# Inside Asterisk CLI, for one short controlled test:
pjsip set logger on
rtp set debug on
# Place one failing call and save only the required evidence.
rtp set debug off
pjsip set logger off
# Linux shell: bounded SIP capture, using actual interface and SIP port:
sudo tcpdump -ni ACTUAL_INTERFACE -c 100 'host ACTUAL_PEER_IP and port ACTUAL_SIP_PORT'
sudo journalctl -u asterisk -n 100 --no-pager
# Read /var/log/asterisk/full only if this log is configured.
sudo tail -n 100 /var/log/asterisk/full
```

401/407 برای Challenge احراز ممکن است طبیعی باشد؛ تکرار آن نشانه شکست مذاکره است. 403 ممکن است سیاست مجوز، 404 اختلاف شماره/Context، 488 غالباً SDP غیرقابل پذیرش و 503 ظرفیت یا خرابی بالادست باشد. با کل تراکنش و توضیح اپراتور تفسیر کنید؛ کد پاسخ به‌تنهایی تشخیص کامل نیست. اگر دستور CLI موجود نبود core show help و ماژول/نسخه فعال را بررسی کنید.

[عیب‌یابی PJSIP در Asterisk](https://docs.asterisk.org/Configuration/Channel-Drivers/SIP/Configuring-res_pjsip/Asterisk-PJSIP-Troubleshooting-Guide/)

## ۱۹. مقایسه پلتفرم و روش استقرار

نسخه و قرارداد مشخص را مقایسه کنید. Issabel Community از محصولات تجاری Contact Center/Multitenant جداست. Sangoma مسیر Debian 12/Asterisk 22 را برای FreePBX 17 مستند کرده و ماژول تجاری جدا دارد. 3CX اختصاصی است؛ قیمت تجاری سالانه بر اساس تماس هم‌زمان، Tier قابلیت و پیشنهاد اولیه محدود دارد. قیمت ثابت یا ادعای سازمانی کاملاً رایگان ارائه نمی‌شود.

| معیار | Issabel Community | FreePBX | 3CX |
| --- | --- | --- | --- |
| مجوز | هسته متن‌باز؛ محصول پولی جدا | هسته متن‌باز و ماژول تجاری | اختصاصی؛ شرایط نسخه/اشتراک |
| نصب | ISO ایزابل ۵ / Netinstall بازبینی‌شده | FreePBX 17 روی Debian 12 با ISO/Script | مسیر OS/Hosted مورد تأیید سازنده |
| مدیریت | وب و مهارت Linux/Asterisk | وب و چرخه ماژول | کنسول یکپارچه سازنده |
| SIP | Asterisk؛ سازگاری پنل/Driver | Asterisk؛ مسیر مستند PJSIP | فهرست سازگاری Carrier/Device |
| مرکز تماس | صف/IVR؛ محصول تجاری جدا | صف/IVR؛ ماژول پیشرفته پولی | صف/گزارش وابسته به نسخه |
| امنیت | Hardening تیم؛ برنامه EOL موتور ۲۰ | Hardening و بسته/ماژول پشتیبانی‌شده | آپدیت سازنده؛ Hardening مدیر لازم |
| سفارشی‌سازی | زیاد؛ مراقبت فایل تولیدشده | زیاد؛ رعایت Include پنل | در چارچوب API/قابلیت پشتیبانی‌شده |
| پشتیبانی | انجمن یا قرارداد تجاری مشخص | انجمن / شریک و طرح Sangoma | سازنده / شریک طبق قرارداد |
| کاربرد سازمانی | وابسته به مهارت، افق پشتیبانی و DR | وابسته به ماژول، عملیات و SLA | وابسته به Tier و Integration |

| معیار | سرور فیزیکی | VMware VM | Cloud VM |
| --- | --- | --- | --- |
| هزینه | سخت‌افزار و ظرفیت یدکی | میزبان مشترک و مجوز Hypervisor | Compute/Storage/Egress دوره‌ای |
| نگهداری | Firmware و تعویض قطعه | چرخه Guest و Host و Hypervisor | Guest و هماهنگی Cloud/Provider |
| مقیاس | وابسته سخت‌افزار؛ توسعه برنامه‌دار | Resize با اعتبارسنجی منابع | Resize با محدودیت Instance/Network |
| قابلیت اتکا | افزونگی/UPS باید ساخته شود | HA Restart حفظ بی‌وقفه تماس نیست | خرابی Zone/Provider نیازمند DR |
| شبکه | تأخیر محلی و کارت فیزیکی | طراحی VLAN/vSwitch/Uplink | IP/NAT/Security Group و WAN |
| بکاپ | Native و OS و Offsite | Native و بکاپ VM آگاه از برنامه | Native و بکاپ سازگار Cloud و Offsite |
| پیچیدگی | قطعه یدکی و سخت‌افزار بازیابی | رقابت منابع و مدیریت Datastore | سازگاری Carrier/Cloud و Egress |

[Sangoma: مبنای پشتیبانی FreePBX 17](https://sangomakb.atlassian.net/wiki/spaces/FP/pages/222101505/FreePBX%2B17)

[مجوز و مقایسه نسخه‌های 3CX](https://www.3cx.com/ordering/pricing/)

## ۲۰. چک‌لیست پذیرش Production

- [ ] نسخه OS/موتور، افق پشتیبانی و مسئول مهاجرت ثبت شد
- [ ] IP ثابت، VLAN، Gateway، DNS و NTP بعد Reboot تأیید شد
- [ ] آپدیت رسمی امضاشده و روش نگهداری/Rollback تأیید شد
- [ ] HTTPS/SSH محدود به VLAN مدیریت/VPN و گواهی بررسی شد
- [ ] Secret یکتا، حداقل مجوز و سرویس اضافی بازبینی شد
- [ ] ثبت 101/102، صدا، Hold، Transfer و صندوق تست شد
- [ ] DID ورودی/خروجی، CID و DTMF با اپراتور تأیید شد
- [ ] مسیر/مکان اضطراری و مقصد مجاز/ممنوع تأیید شد
- [ ] IVR، Invalid/Timeout، سرریز صف و خارج ساعت تست شد
- [ ] پخش ضبط، مجوز، نگهداری و ظرفیت تأیید شد
- [ ] قواعد واقعی SIP/RTP، Source ممنوع و رسانه دوطرفه تست شد
- [ ] QoS و منابع مجازی زیر بار ساعت شلوغ اندازه‌گیری شد
- [ ] هشدار مانیتورینگ/بکاپ و مسئول پاسخ تست شد
- [ ] Restore از Offsite کامل؛ RPO/RTO اندازه‌گیری و Runbook مصوب شد
برای هر مورد شواهد و مسئول ثبت کنید؛ Restore آزمایش‌نشده یا موتور بدون پشتیبانی مانع پذیرش است. چک‌لیست الگوست و ادعا نمی‌کند آزمون نصب برای این مقاله اجرا شده است.

## ۲۱. پرسش‌های متداول

### مبنای فعلی کدام ISO است؟

فهرست رسمی بررسی‌شده در ۱۴ اکتبر ۲۰۲۶ ISO ایزابل ۵ با تاریخ 20261001 را معرفی می‌کند و اعلان آن Asterisk 20 را ذکر می‌کند. پیش از استقرار دوباره بررسی و RPM نصب‌شده ثبت شود.

### آیا Asterisk 16 و 18 انتخاب بلندمدت امن هستند؟

هر دو EOL هستند. محدودیت شبکه سطح مواجهه را کم می‌کند، اما پشتیبانی بالادست را برنمی‌گرداند. مهاجرت پشتیبانی‌شده برنامه‌ریزی کنید و ISO قدیمی را جاری ندانید.

### می‌توان Asterisk 22 را روی ایزابل ۵ جایگزین کرد؟

سازگاری را فرض نکنید. ترکیب پشتیبانی‌شده بسته، پنل، ماژول و Restore در این بررسی تأیید نشد. پشتیبانی صریح و آزمون پیش از ارتقا لازم است.

### چرا تلفن ثبت‌شده صدا ندارد؟

REGISTER دسترسی سیگنال را در آن لحظه نشان می‌دهد. رسانه از آدرس SDP، Codec و پورت RTP جدا استفاده می‌کند؛ هر دو جهت رسانه و مجوز صدای دستگاه بررسی شود.

### آیا SIP و RTP باید عمومی شوند؟

دسترسی عمومی فراگیر لازم نیست. VLAN صوتی/VPN و Allowlist اپراتور یا SBC پشتیبانی‌شده به‌کار ببرید و فقط جریان واقعی لازم را مجاز کنید.

### آیا Snapshot VMware بکاپ است؟

ابزار موقت Rollback با محدودیت Datastore و سازگاری است. بکاپ سازگار با برنامه روی مخزن خارجی و Restore مستقل آزمایش‌شده لازم است.

### فضای ضبط چقدر است؟

فرمت واقعی را اندازه بگیرید. PCM تک‌کاناله 8 kHz و 16-bit حدود 0.96 MB در دقیقه است؛ نگهداری، ساعت تماس، ضبط دو سمت و نسخه بکاپ حجم کل را تعیین می‌کنند.

### ثبت‌نشدن ترانک مبتنی بر IP یعنی خرابی؟

الزاماً خیر؛ احراز IP ممکن است REGISTER نداشته باشد. Source مجاز، Identify و تماس موفق را به‌جای نشانگر ثبت بررسی کنید.

### باید SIP Helper همه MikroTikها خاموش شود؟

تصمیم از طراحی اپراتور و شواهد Packet می‌آید. بازنویسی مخرب ALG دلیل خاموشی است و بعد آن نشست جدید و صدای دوطرفه تست شود.

### این مراحل در آزمایشگاه PBX اجرا شده‌اند؟

آزمایشگاه PBX/ESXi/اپراتور در دسترس نبود. نسخه و راهنمای Syntax با منابع اولیه بررسی شدند؛ تولید مقاله و آزمون Renderer محلی جدا گزارش می‌شوند.

## ۲۲. جمع‌بندی عملیاتی

از تصویر جاری تأییدشده نصب کنید، Inventory واقعی را حفظ و سیستم را فقط بعد از تماس واقعی و Restore بپذیرید. مسئول وصله، هشدار تقلب اپراتور و نگهداری ضبط تعیین شود. برای مبنای فعلی Asterisk 20، مهاجرت پیش از اکتبر ۲۰۲۷ برنامه‌ریزی شود. ادعای ظرفیت، رمزگذاری و دسترس‌پذیری باید همراه اندازه‌گیری در گزارش پذیرش باشد.

## ۲۳. منابع رسمی و مرجع

- [فایل‌های رسمی ایزابل](https://sourceforge.net/projects/issabelpbx/files/Issabel%205/)
- [اعلان نسخه جاری ایزابل](https://forum.issabel.org/d/19773/6)
- [مبنای اولیه OS در ایزابل ۵](https://www.issabel.com/en/release-of-issabel-5-innovation-and-advancement-in-unified-communications/)
- [چرخه پشتیبانی Asterisk](https://docs.asterisk.org/About-the-Project/Asterisk-Versions/)
- [شبکه Rocky Linux](https://docs.rockylinux.org/guides/network/basic_network_configuration/)
- [مرجع ثبت PJSIP](https://docs.asterisk.org/Configuration/Channel-Drivers/SIP/Configuring-res_pjsip/Configuring-Outbound-Registrations/)
- [مرجع NAT](https://docs.asterisk.org/Configuration/Channel-Drivers/SIP/Configuring-res_pjsip/Configuring-res_pjsip-to-work-through-NAT/)
- [محیط CLI موتور](https://docs.asterisk.org/Operation/Asterisk-Command-Line-Interface/)
- [مرجع صندوق صوتی](https://docs.asterisk.org/Configuration/Applications/Voicemail/)
- [مرجع QoS](https://docs.asterisk.org/Configuration/Channel-Drivers/IP-Quality-of-Service/)
- [Service Port در RouterOS](https://help.mikrotik.com/docs/spaces/ROS/pages/103841820/Services)
- [سازگاری VMware Tools](https://knowledge.broadcom.com/external/article/313371/vmware-tools-compatibility-with-guest-op.html)
- [مبنای پشتیبانی FreePBX](https://sangomakb.atlassian.net/wiki/spaces/FP/pages/222101505/FreePBX%2B17)
- [مجوز 3CX](https://www.3cx.com/ordering/pricing/)
- [جهت تجاری Cloud؛ نه تعهد پشتیبانی ISO Community](https://www.issabel.com/en/cloud-transition/)
- [شرایط تجاری Multitenant](https://www.issabel.com/en/multitenant-changelog-en/)
- [پیاده‌سازی CLI مربوط به RTP در Asterisk 20](https://raw.githubusercontent.com/asterisk/asterisk/20/res/res_rtp_asterisk.c)
- [کد ماژول بکاپ Issabel PBX](https://github.com/IssabelFoundation/issabelPBX/tree/master/backup)
- [سازگاری و محدودیت Dump در MariaDB](https://mariadb.com/docs/server/clients-and-utilities/backup-restore-and-import-clients/mariadb-dump)
- [مرجع دستور و Tracking در chronyc](https://chrony-project.org/doc/4.8/chronyc.html)
- [مستندات پروژه Fail2ban](https://github.com/fail2ban/fail2ban/wiki)
[دریافت Markdown fa](/downloads/issabel-pbx-installation-configuration/article.fa.md)

[دریافت Markdown en](/downloads/issabel-pbx-installation-configuration/article.en.md)
