Дерево сторінок

Ви переглядаєте стару версію сторінки. Переглянути поточну версію.

Порівняти з поточною Дивитись історію сторінки

« Попередня Version 3 Далі »

Приклад конфігурації Asterisk PBX

Увага! Для того, щоб дзвінки не обривались на 30-й секунді, версія Asterisk повинна бути не нижче 1.8.21.0 або 11.3.0.

Створення сертификату сервера

1. Створити папку, где будуть зберігатися ключі безпеки
yourcompany.com -O "YourCompanyName" -d /etc/asterisk/certificate

2. Створити самоподпісанний центр сертифікації (Certificate Authority) та сертифікат самого Asterisk.
Для цього можна використовувати скрипт "ast_tls_cert".
# cd /etc/asterisk/certificate/
# wget https://raw.githubusercontent.com/rillian/asterisk...
# chmod +x ast_tls_cert
# ./ast_tls_cert -C pbx.yourcompany.com -O "YourCompanyName" -d /etc/asterisk/certificate

Ключ "-C" використовується для опису вашого хоста (DNS або IP адреса)
Ключ "-O" використовується для визначення імені вашої організації
Ключ "-d" вказує директорію, где будуть зберігатися створені ключі

3. Ввести пароль для /etc/asterisk/certificate/ca.key

4. Автоматично створюється файл /etc/asterisk/certificate/ca.crt

5. Ввести пароль, який ви вказали в пункті 3, автоматично створюються файли
/etc/asterisk/certificate/asterisk.key /etc/asterisk/certificate/asterisk.crt

6. Ввести пароль ще раз, створюється файл /etc/asterisk/certificate/asterisk.pem как комбинация asterisk.key та asterisk.crt

7. Додати сертифікати lifecell в ca.crt.
cat >> /etc/asterisk/certificate/ca.crt <<EOF

-----BEGIN CERTIFICATE----- MIIDrzCCApegAwIBAgIQCDvgVpBCRrGhdWrJWZHHSjANBgkqhkiG9w0BAQUFADBh MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBD QTAeFw0wNjExMTAwMDAwMDBaFw0zMTExMTAwMDAwMDBaMGExCzAJBgNVBAYTAlVT MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5j b20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IENBMIIBIjANBgkqhkiG 9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4jvhEXLeqKTTo1eqUKKPC3eQyaKl7hLOllsB CSDMAZOnTjC3U/dDxGkAV53ijSLdhwZAAIEJzs4bg7/fzTtxRuLWZscFs3YnFo97 nh6Vfe63SKMI2tavegw5BmV/Sl0fvBf4q77uKNd0f3p4mVmFaG5cIzJLv07A6Fpt 43C/dxC//AH2hdmoRBBYMql1GNXRor5H4idq9Joz+EkIYIvUX7Q6hL+hqkpMfT7P T19sdl6gSzeRntwi5m3OFBqOasv+zbMUZBfHWymeMr/y7vrTC0LUq7dBMtoM1O/4 gdW7jVg/tRvoSSiicNoxBN33shbyTApOB6jtSj1etX+jkMOvJwIDAQABo2MwYTAO BgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUA95QNVbR TLtm8KPiGxvDl7I90VUwHwYDVR0jBBgwFoAUA95QNVbRTLtm8KPiGxvDl7I90VUw DQYJKoZIhvcNAQEFBQADggEBAMucN6pIExIK+t1EnE9SsPTfrgT1eXkIoyQY/Esr hMAtudXH/vTBH1jLuG2cenTnmCmrEbXjcKChzUyImZOMkXDiqw8cvpOp/2PV5Adg
06O/nVsJ8dWO41P0jmP6P6fbtGbfYmbW0W5BjfIttep3Sp+dWOIrWcBAI+0tKIJF PnlUkiaY4IBIqDfv8NZ5YBberOgOzW6sRBc4L0na4UU+Krk2U886UAb3LujEV0ls YSEY1QSteDwsOoBrp+uvFRTp2InBuThs4pFsiv9kuXclVzDAGySj4dzp30d8tbQk CAUw7C29C79Fv1C5qfPrmAESrciIxpg0X40KPMbp1ZWVbd4= -----END CERTIFICATE-----
-----BEGIN CERTIFICATE----- MIIEiTCCA3GgAwIBAgIQAlqK7xlvfg1sIQSyGuZwKzANBgkqhkiG9w0BAQsFADBh MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBD QTAeFw0xNzExMDYxMjIzNTJaFw0yNzExMDYxMjIzNTJaMFwxCzAJBgNVBAYTAlVT MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5j b20xGzAZBgNVBAMTElRoYXd0ZSBSU0EgQ0EgMjAxODCCASIwDQYJKoZIhvcNAQEB BQADggEPADCCAQoCggEBAMoIXuVTipccHkMvtoqnVumLhEOorJ16VYJ6FEuGty+P Up8cyrEgW2+6It2mnC142ukGCE6+E6bry7s+uQUMPkrh8DIfE071BsVHc4k+gKOL 8QEkm6OZZpJraK0NLbTNcqL0+ThaZaa0jFPBCBqE+P0u8xF1btxqMSmsDYfMk2B4 3yW6JlmRxoNSNabKnLgoGs7XHO4Uv3ZcZas4HnnpfMxJIyaiUlBm0Flh/6D+mkwM n/nojt4Ji7gVwaQITCacewbb/Yp0W1h+zWOkkS9F8Ho8lAuKfLIFqWeTn2jllWNg 2FiVX+BV75OnETt85pLYZkTgq72nj82khXhBJFTn2AMCAwEAAaOCAUAwggE8MB0G A1UdDgQWBBSjyF5lVOUweMEF6gcKalnMuf7eWjAfBgNVHSMEGDAWgBQD3lA1VtFM u2bwo+IbG8OXsj3RVTAOBgNVHQ8BAf8EBAMCAYYwHQYDVR0lBBYwFAYIKwYBBQUH AwEGCCsGAQUFBwMCMBIGA1UdEwEB/wQIMAYBAf8CAQAwNAYIKwYBBQUHAQEEKDAm MCQGCCsGAQUFBzABhhhodHRwOi8vb2NzcC5kaWdpY2VydC5jb20wQgYDVR0fBDsw OTA3oDWgM4YxaHR0cDovL2NybDMuZGlnaWNlcnQuY29tL0RpZ2lDZXJ0R2xvYmFs Um9vdENBLmNybDA9BgNVHSAENjA0MDIGBFUdIAAwKjAoBggrBgEFBQcCARYcaHR0 cHM6Ly93d3cuZGlnaWNlcnQuY29tL0NQUzANBgkqhkiG9w0BAQsFAAOCAQEARE2F 5d0cgozhZNWokCLfdhhl6mXSOyU3SoPamYcWfLH1CzMwD8a1+pFvwHIQfvlwXFH8 MrjB3C+jVobNbVWRrgqS3Jsa0ltRH/Ffs6ZTgP4WJYm1SNpUbgR7LWUD2F+PTvKB M/gf9eSyqP4OiJslYaa38NU1aVAxZI15o+4xX4RZMqKXIIBTG2V+oPBjQ1oPmHGA C/yWt2eThvb8/re7OpSpUdJyfGf97XeM4PiJAl6+4HQXhjwN7ZPZKrQv9Ay33Mgm YLVQA+x9HONZXx9vvy8pl9bu+NVYWKGxzGxBK0CBozmVUCeXQPJKPTZleYuNM18p U1P8Xh1CDguM+ZEoew== -----END CERTIFICATE-----
EOF

1. В файлі sip.conf (або sip_general_additions.conf, якщо використовується Elastix/FreePBX) необхідно дописати наступне: [general] tlsenable=yes
tlsbindaddr=0.0.0.0
tlscertfile=/etc/asterisk/certificate/asterisk.pem ; локальний сертифікат
tlscafile=/etc/asterisk/certificate/ca.crt ; довірений центр сертифікації
tlscipher=ALL
tlsclientmethod=tlsv1

У цьому блоці вказано, що на сервері є підтримка протокола TLS з наступними параметрами:
* Asterisk слухає усі сереживні карти (порт 5061 для TLS)
* Директорія сертифікату TLS
* Директорія сертифікату Certificate Authority
* Asterisk підтримує усі види шифрування
* SIP клієнти підтримують протокол tlsv1 (якщо SIP клієнти не підтримують tlsv1, цю строку кріще видалити)


2. Якщо у вас в sip.conf не прописано параметр tlsdontverifyserver=yes необхідно додати 2 сертификата, які висилає lifecell, в кінець файлу /etc/asterisk/certificate/ca.crt (див. п.7 попереднього розділу)

У разі вибору параметра "з реєстрацією", кожну номерну лінію необхідно "зареєструвати".
Для SRTP:
register => tls://38044232XXXX:verysecretpass@csbc.lifecell.ua:5061/38044232XXXX; прописується для кожної номерної лінії.
Для RTP:
register => tls://38044232XXXX:verysecretpass@csbc.lifecell.ua:5081/38044232XXXX; прописується для кожної номерної лінії.
У варіанті "без реєстрації" реєструвати лінію не потрібно.

[38044232XXXX] ; peer, SIP-канал в сторону lifecell, прописується для кожної номернії лінії.
host=csbc.lifecell.ua ; DNS ім'я, інакше можливі помилки при валідації TLS сертифіката якщо вказана IP адреса
port=5061 ; (port=5061 для SRTP; port=5081 для RTP; port=5071 для авторизації по IP)
transport=tls
insecure=port,invite
encryption=yes ; (для SRTP або encryption=no для RTP)
type=friend
username=38044232XXXX
fromuser=38044232XXXX
secret=verysecretpass ;тільки для авторизації за паролем
context=incoming
disallow=all
allow=ulaw
allow=alaw
[1001] ; внутрішній номер
type=friend
username=1001
secret=1001
host=dynamic
transport=udp
encryption=no
context=outgoing
disallow=all
allow=ulaw
allow=alaw
Налаштування extensions.conf
[incoming]
exten => 38044232XXXX,1,Dial(Sip/1001)
exten => 38044232XXXX,n,Playback(vm-nobodyavail)
exten => 38044232XXXX,n,Hangup()
[outgoing]
exten => _X.,1,Dial(Sip/38044232XXXX/${EXTEN})
exten => _X.,n,Hangup()
Якщо у вас декілька каналів (наприклад, 38044232XXX1, 38044232XXX2), можливо налаштувати почергове використання для кожному наступного виклику:
exten => _X.,1,Gotoif(${DB_EXISTS(provider/next)}?4)
exten => _X.,2,Set(DB(provider/next)=38044232XXX1)
exten => _X.,3,Goto(1)
exten => _X.,4,GoSub(${DB_RESULT},1)
exten => _X.,5,Dial(SIP/${DB_RESULT}/${EXTEN},30)
exten => _X.,6,Congestion()
exten => _X.,7,Hangup()
exten => 38044232XXX1,1,Set(DB(provider/next)=38044232XXX2)
exten => 38044232XXX1,n,Return
exten => 38044232XXX2,1,Set(DB(provider/next)=38044232XXX1)
exten => 38044232XXX2,n,Return
У результате перший виклик поступає на номер 38044232XXX1, другий - на номер 38044232XXX2, третій - знову на номер 38044232XXX1 і т.д.
Налаштування rtp.conf
[general]
rtpstart=10000
rtpend=20000

Завжди повинен бути Content-Type: application/sdp

  • No labels