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

Приклад конфігурації 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-----
MIIEvjCCA6agAwIBAgIQBtjZBNVYQ0b2ii+nVCJ+xDANBgkqhkiG9w0BAQsFADBh
MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBD
QTAeFw0yMTA0MTQwMDAwMDBaFw0zMTA0MTMyMzU5NTlaME8xCzAJBgNVBAYTAlVT
MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxKTAnBgNVBAMTIERpZ2lDZXJ0IFRMUyBS
U0EgU0hBMjU2IDIwMjAgQ0ExMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
AQEAwUuzZUdwvN1PWNvsnO3DZuUfMRNUrUpmRh8sCuxkB+Uu3Ny5CiDt3+PE0J6a
qXodgojlEVbbHp9YwlHnLDQNLtKS4VbL8Xlfs7uHyiUDe5pSQWYQYE9XE0nw6Ddn
g9/n00tnTCJRpt8OmRDtV1F0JuJ9x8piLhMbfyOIJVNvwTRYAIuE//i+p1hJInuW
raKImxW8oHzf6VGo1bDtN+I2tIJLYrVJmuzHZ9bjPvXj1hJeRPG/cUJ9WIQDgLGB
Afr5yjK7tI4nhyfFK3TUqNaX3sNk+crOU6JWvHgXjkkDKa77SU+kFbnO8lwZV21r
eacroicgE7XQPUDTITAHk+qZ9QIDAQABo4IBgjCCAX4wEgYDVR0TAQH/BAgwBgEB
/wIBADAdBgNVHQ4EFgQUt2ui6qiqhIx56rTaD5iyxZV2ufQwHwYDVR0jBBgwFoAU
A95QNVbRTLtm8KPiGxvDl7I90VUwDgYDVR0PAQH/BAQDAgGGMB0GA1UdJQQWMBQG
CCsGAQUFBwMBBggrBgEFBQcDAjB2BggrBgEFBQcBAQRqMGgwJAYIKwYBBQUHMAGG
GGh0dHA6Ly9vY3NwLmRpZ2ljZXJ0LmNvbTBABggrBgEFBQcwAoY0aHR0cDovL2Nh
Y2VydHMuZGlnaWNlcnQuY29tL0RpZ2lDZXJ0R2xvYmFsUm9vdENBLmNydDBCBgNV
HR8EOzA5MDegNaAzhjFodHRwOi8vY3JsMy5kaWdpY2VydC5jb20vRGlnaUNlcnRH
bG9iYWxSb290Q0EuY3JsMD0GA1UdIAQ2MDQwCwYJYIZIAYb9bAIBMAcGBWeBDAEB
MAgGBmeBDAECATAIBgZngQwBAgIwCAYGZ4EMAQIDMA0GCSqGSIb3DQEBCwUAA4IB
AQCAMs5eC91uWg0Kr+HWhMvAjvqFcO3aXbMM9yt1QP6FCvrzMXi3cEsaiVi6gL3z
ax3pfs8LulicWdSQ0/1s/dCYbbdxglvPbQtaCdB73sRD2Cqk3p5BJl+7j5nL3a7h
qG+fh/50tx8bIKuxT8b1Z11dmzzp/2n3YWzW2fP9NsarA4h20ksudYbj/NhVfSbC
EXffPgK2fPOre3qGNm+499iTcc+G33Mw+nur7SpZyEKEOxEXGlLzyQ4UfaJbcme6
ce1XR2bFuAJKZTRei9AqPCCcUZlM51Ke92sRKw2Sfh3oius2FkOH6ipjv3U/697E
A7sKPPcw7+uvTPyLNhBzPvOk
-----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