Базовая настройка SIP АТС — Asterisk для небольшого офиса.
Рассмотрим как выполнить базовую настройку SIP АТС — Asterisk. В примере будет использоваться Asterisk 13 (как установить его можно ознакомится тут). Так же в примере будут рассмотрены основные моменты в настройке, для понимания принципа как все устроено.
(Статья в процессе написания и будет дополнятся)
Техническое задание
- Настройка внутренних номеров, настройка sip-транков выданных провайдером.
- Настройка маршрутизации звонков, с возможностью совершать внутренние звонки и внешние звонки, а так же принимать входящие извне звонки.
Настройка внутренних номеров (sip.conf)
Прежде чем начать, выполним резервное копирование файла конфигурации /etc/asterisk/sip.conf:
cp /etc/asterisk/sip.conf /etc/asterisk/sip.conf.backup
Выполним настройку файла конфигурации /etc/asterisk/sip.conf. Укажем основные параметры для безопастности АТС, зададим шаблон для внутренних номеров и зададим необходимые внутренние номера:
[general] externaddr=11.111.111.11:5060 ;Внешний IP-адрес language=ru ;Локализация звуков context=default allowguest=no ;Разрешить/Запретить гостевые подключения alwaysauthreject=yes ;Разрешить/Запретить отвечать на INVITE и REGISTER allowoverlap=no ;Разрешить/Запретить набор по одной цифре limitonpeers=yes ;Разрешить/Запретить лимит на кол-во одновременных разговоров srvlookup=yes ;Принимать SIP вызовы на основании доменных имен useragent=Asterisk JAKONDA ;Значение поля useragent в SIP заголовке [authentication] ;Шаблон для ВНУТРЕННИХ НОМЕРОВ [internal_numbers](!) type=friend ;peer(Исходящие) и user(Входящие) в одном context=int-call ;Контекст обработки входящих вызовов host=dynamic ; nat=no ;Политики работы через nat deny=0.0.0.0/0.0.0.0 ;Cети из которых запрещено подключение permit=10.1.1.0/255.255.255.0 ;Cети из которых разрешено подключение qualify=yes ;Переодическая проверка доступности клиента canreinvite=no ;Разрешить/Запретить потоки peer-to-peer в обход сервера insecure=port,invite ;port (не требовать совпадения порта), invite (не требовать аутентификации) callgroup=1 ;Группа вызова pickupgroup=1 ;Группа перехвата вызовов call-limit=2 ;Лимит входящих вызовов dtmfmode=rfc2833 ;Какую спецификацию использовать при передачи DTMF сигналов disallow=all ;Запретить использование всех кодеков, ниже разрешаем нужные allow=alaw allow=g729 [100](internal_numbers) callerid="Number 100" <100> secret=123 [101](internal_numbers) callerid="Number 101" <101> secret=123
После внесенных изменений в файле sip.conf, нужно в консоли Asterisk выполнить команду (sip reload), для того чтобы внесенные изменения приминились.
Список созданных номеров (sip show users):
SRV-ASTERISK-SP*CLI> sip show users Username Secret Accountcode Def.Context ACL Forcerport 100 123 int-call No No 101 123 int-call No No
Настройка внешних линий для выхода на городские, междугородние номера и приема входящих извне звонков
Для того чтобы совершать звонки на внешние номера, а так же иметь возможность принимать и обрабатывать входящие звонки на внешний номер, необходимо в файл конфигурации /etc/asterisk/sip.conf добавить данные SIP-транков выданных провайдером.
На примере рассмотрим провайдеров МАНГО-ТЕЛЕКОМ и ZADARMA.COM.
[general] ;Блок регистраций транков в МАНГО-ТЕЛЕКОМ register=000100:XXXXXXXX@domain.mangosip.ru:60000/000100 register=000101:XXXXXXXX@domain.mangosip.ru:60000/000101 [authentication] ;Шаблон для ВНЕШНИХ ТРАНКОВ (МАНГО-ТЕЛЕКОМ) [external_trunks_mgo](!) type=friend context=ext-call-mgo host=domain.mangosip.ru port=60000 qualify=yes accountcode=Mgo fromdomain=domain.mangosip.ru insecure=invite dtmfmode=inband disallow=all allow=alaw allow=g729 ;Внутренние номера (МАНГО-ТЕЛЕКОМ) [000100](external_trunks_mgo) username=000100 secret=XXXXXXXX fromuser=000100 [000101](external_trunks_mgo) username=000101 secret=XXXXXXXX fromuser=000101 ;Шаблон для ВНЕШНИХ ТРАНКОВ (ZADARMA.COM) [external_trunks_zadarma] host=sip.zadarma.com insecure=invite,port type=friend fromdomain=sip.zadarma.com disallow=all allow=alaw,ulaw dtmfmode=auto secret=Aa1234567 defaultuser=555666 trunkname=555666 fromuser=555666 callbackextension=555666 context=ext-call-zadarma qualify=400 accountcode=Zdr directmedia=no nat=force_rport,comedia
После внесенных изменений в файле sip.conf, нужно в консоли Asterisk выполнить команду (sip reload), для того чтобы внесенные изменения приминились.
Список созданных номеров (sip show users):
SRV-ASTERISK-SP*CLI> sip show users Username Secret Accountcode Def.Context ACL Forcerport 000100 XXXXXXXX Mgo ext-call-mgo No No 000101 XXXXXXXX Mgo ext-call-mgo No No 555666 XXXXXXXX Zdr ext-call-zdr No Yes 100 123 int-call No No 101 123 int-call No No
Список пиров (sip show peers):
SRV-ASTERISK-SP*CLI> sip show peers Name/username Host Dyn Forcerport Comedia ACL Port Status Description 100/100 (Unspecified) D No No 0 UNKNOWN 101/101 (Unspecified) D No No 0 UNKNOWN 000100/000100 88.88.88.88 Auto (No) No 60000 OK (2 ms) 000101/000101 88.88.88.88 Auto (No) No 60000 OK (2 ms) 555666/555666 88.88.88.88 Yes Yes 5060 OK (3 ms) 5 sip peers [Monitored: 3 online, 2 offline Unmonitored: 0 online, 0 offline]
Мы разобрали как создавать внутренние номера на основе шаблонов, добавлять SIP-транки от провайдеров. Теперь перейдем к настройки маршрутизации звонков.
Настройка маршрутизации звонков (extensions.conf)
Прежде чем начать, выполним резервное копирование файла конфигурации /etc/asterisk/extensions.conf:
cp /etc/asterisk/extensions.conf /etc/asterisk/extensions.conf.backup
Выполним настройку файла конфигурации /etc/asterisk/extensions.conf. Настроим правила маршрутизации внутренних звонков, звонков на внешние номера и прием и обработка входящих извне звонков:
[general] ;Возможность сохранять текущий dialplan в файл (dialplan save) static=yes writeprotect=no [globals] [default] ;Вешаем трубку [handup-sip] exten => _X!,1,HangUp() ;Исходящие звонки [int-call] ;Звонки на внутренние номера exten => _XXX,1,Dial(SIP/${EXTEN}) ;Звонки на внешние номера через МАНГО-ТЕЛЕКОМ exten => _XXX.,1,Dial(SIP/${EXTEN}@000${CALLERID(num)}) ;Звонки на внешние номера через ZADARMA.COM ;exten => _XXX.,1,Dial(SIP/${EXTEN}@555666) include => handup-sip ;Входящие звонки на номера МАНГО-ТЕЛЕКОМ [ext-call-mgo] exten => 000100,1,Dial(SIP/100) ;Входящие звонки на номер ZADARMA.COM [ext-call-zdr] exten => 555666,1,Dial(SIP/101)
После внесенных изменений в файле extensions.conf, нужно в консоли Asterisk выполнить команду (dialplan reload), для того чтобы внесенные изменения приминились.
Выполним тестовые звонки, сперва с номера 100 на 101, затем на внешний номер 99999 (тестовый номер МАНГО-ТЕЛЕКОМ). В файле /var/log/asterisk/cdr-csv/Master.csv можно посмотреть историю совершенных звонков:
"","100","101","int-call","""Number 100"" <100>","SIP/100-00000001","SIP/101-00000002","Dial","SIP/101","2017-10-23 13:30:32","2017-10-23 13:30:39","2017-10-23 13:31:22",50,42,"ANSWERED","DOCUMENTATION","1508765432.1","" "","101","99999","ext-call-mgo","""Number 101"" <101>"" <101>","SIP/101-00000003","SIP/000101-00000004","Dial","SIP/99999@000101","2017-10-24 12:27:53","2017-10-24 12:27:55","2017-10-24 12:27:58",4,3,"ANSWERED","DOCUMENTATION","1508848073.106",""
Таким образом мы настроили простую маршрутизацию звонков, указав отдельными правилами, что 3-х значные номера расценивать как внутренние, а номера более 3-х знаков расценивать как внешние и использовать для звонка на такие номера нужно SIP-транк провайдера (прим. МАНГО-ТЕЛЕКОМ). Так же при входящем звонке на внешний номер 000100 (МАНГО-ТЕЛЕКОМ) переадресовывать звонок на внутренний номер 100, аналогично поступаем с внешним номером 555666 (ZADARMA.COM), только переводим звонок на номер 101.
Продолжение следует…
Hey there! I’m at work surfing around your blog from my new iphone 3gs!
Just wanted to say I love reading through your
blog and look forward to all your posts! Keep up
the great work!