Компактна довідка — що за що відповідає, як взаємодіють файли та де безпечно вносити зміни.
1. Структура конфігурацій — огляд
FreePBX керує Asterisk через файли *_additional.conf (генерує) і поважає файли *_custom.conf (твоя зона). DAHDI конфіги лежать окремо в /etc/dahdi і /etc/asterisk/chan_dahdi*.conf.
2. Файли, які треба знати
| Файл/місце | Керує | Призначення | Порада |
|---|---|---|---|
| /etc/dahdi/system.conf | Ти / dahdi_genconf | Фізичні spans, framing, bchan/dchan | Ключовий для E1/T1; генерувати через dahdi_genconf або правити вручну |
| /etc/asterisk/chan_dahdi.conf | Ти | Опис DAHDI-каналів та груп (group=0 → DAHDI/g0) | Якщо керуєш руками — не створюй DAHDI trunk у GUI |
| /etc/asterisk/chan_dahdi_additional.conf | FreePBX | Автоген для DAHDI, якщо увімкнений модуль DAHDI у GUI | Може конфліктувати з ручним файлом |
| /etc/asterisk/extensions.conf | FreePBX + Ти | Основний include-діалплан | Не редагуй напряму — використовуй extensions_custom.conf |
| /etc/asterisk/extensions_additional.conf | FreePBX | Генерований діалплан: inbound/outbound/IVR/queues | Редагується через GUI |
| /etc/asterisk/extensions_custom.conf | Ти | Твої кастомні контексти (імунітет від перезапису) | Тут додавати обрізання префіксу або custom destinations |
| /etc/asterisk/pjsip.conf (і _additional) | FreePBX | Твій PJSIP trunks/endpoints | Налаштовуй через GUI |
| /var/lib/asterisk/sounds/ | Ти / FreePBX | Звуки/фрази | Класифікуй custom/uk/ etc. |
3. Логіка включення файлів
FreePBX генерує *_additional.conf → Asterisk включає їх через директиви #include. Файли *_custom.conf завантажуються після додаткових і не перезаписуються.
4. Де робити зміни (рекомендації)
- DAHDI низького рівня: /etc/dahdi/system.conf та /etc/asterisk/chan_dahdi.conf — редагуй вручну, якщо потрібен точний контроль.
- Маршрути, extensions, IVR: роби через FreePBX GUI; це генерує
extensions_additional.conf. - Кастомна логіка (обрізання префіксів, нестандартні переходи) — клади в
extensions_custom.confабоextensions_override_freepbx.confякщо треба повністю переписати діалплан. - Захист файлів: щоб уникнути випадкового перезапису, можна використовувати
sudo chattr +i /etc/asterisk/chan_dahdi.conf(але пам'ятай — це блокує редагування до зняття атрибуту).
5. Приклади: як DAHDI група і trunk пов'язані
У chan_dahdi.conf ти задаєш group=0 і channel => 1-15,17-31. Це створює логічний транк DAHDI/g0, який у діалплані використовується як Dial(DAHDI/g0/12345).
6. Набір корисних команд
| Команда | Що показує |
|---|---|
dahdi_scan | Сканування карт і spans |
dahdi_cfg -vvvv | Застосувати/перевірити конфіг DAHDI |
asterisk -rvvv | Живий CLI Asterisk |
asterisk -rx "dahdi show status" | Статус span |
asterisk -rx "pri show spans" | PRI/D-channel статус |
fwconsole reload | Перезавантаження FreePBX конфігів |
7. Типові сценарії і де їх реалізувати
| Завдання | Де це робити |
|---|---|
| Підключити SIP-провайдера (Vega) | FreePBX GUI → Connectivity → Trunks (PJSIP) |
| Приймати дзвінки з E1/PRI | /etc/dahdi/system.conf + /etc/asterisk/chan_dahdi.conf |
| Переслати вхідний DID у DAHDI з обрізанням префікса | extensions_custom.conf (надійно) або inbound→outbound (GUI) якщо EXTEN передається правильно |
| Швидкий тест дзвінка | CLI Asterisk → дивитись Dial() рядки |
8. Приклад безпечного кастомного контексту (обрізання 380)
Додай у /etc/asterisk/extensions_custom.conf:
[from-vega-to-dahdi]
exten => _380.,1,NoOp(Inbound from Vega: original DID=${EXTEN})
same => n,Set(TO_DAHDI=${EXTEN:3})
same => n,NoOp(Sending to DAHDI number ${TO_DAHDI})
same => n,Dial(DAHDI/g0/${TO_DAHDI},60,Tt)
same => n,Hangup()
Потім створити Custom Destination у FreePBX і зв'язати Inbound Route → цей Custom Destination.
9. Рекомендації з версіями
- Будь послідовним: узгоджуй версії DAHDI/libpri/Asterisk/FreePBX. Ти вже використовуєш DAHDI 3.4 та Asterisk 22.5.2 — це гарна комбінація.
- Не дозволяй інсталятору FreePBX перезаписувати DAHDI (уникай
--with-dahdi), якщо ти керуєш драйверами сам.
10. Бекап перед змінами
Завжди роби архів перед змінами: sudo tar czf /root/dahdi_backup_$(date +%F).tgz /etc/dahdi /etc/asterisk/chan_dahdi.conf /lib/modules/$(uname -r)/extra
Комментариев нет:
Отправить комментарий