Автор Тема: Asterisk - лабораторные работы  (Прочитано 8995 раз)

Оффлайн Salomatin

  • Модератор
  • *****
  • Сообщений: 981
    • Пошаговые инструкции
    • Email
Оглавление:

1. Установка Asterisk. Первый запуск Asterisk`а в режиме SIP - сервера.

2. Подключение и регистрация  SIP клиентов.

3. Диалплан. Тестовые звонки.

4. Подключаем Asterisk к SIP - серверу (соединяем два Asterisk`а по SIP протоколу)

5. Подключаем к Asterisk  офисную телефонную станцию (АТС) по  SIP протоколу.

6. Подключаем Asterisk к провайдеру

7. Соединяем два Asterisk`a по протоколу IAX2

8. Заменяем гудок на фоновую музыку.

9. Интерактивное (голосовое) меню для входящих звонков.

Технологическая связь  между небольшими подразделениями фирмы даже по городским телефонам становится накладной в списке расходов. Лабораторные работы показывают как можно организовать  связь по безлимитному интернету. 

Для выполнения лабораторных работ устанавливаем ALT Linux 7.0 Centaurus, altlinux-7.0.4-centaurus-i586-ru-install-dvd5.iso, который можно скачать http://ftp.altlinux.org/pub/distributions/ALTLinux/p7/images/centaurus
Ставим с изначально рекомендуемыми опциями. Пример есть в http://forum.altlinux.org/index.php/topic,29113.msg203884.html#msg203884 или ролик http://salomatin.ru/nat3.ogv

Устанавливаем на реальном железе любого старенького компьютера или виртуально.  Для подключения клиентов сервер должен быть виден по IP адресу локалки.
« Последнее редактирование: 23.04.2015 22:11:44 от Salomatin »
Хочешь понять сам, объясни другому.
"Если уже все испробовал и ничего не помогает - почитай инструкцию"

Оффлайн Salomatin

  • Модератор
  • *****
  • Сообщений: 981
    • Пошаговые инструкции
    • Email
Re: Asterisk - лабораторные работы
« Ответ #1 : 21.04.2015 19:00:40 »
Лабораторная работа № 1:

Видеоролик можно скачать по адресу:
http://salomatin.ru/asterisk-L1.ogv
https://youtu.be/LHQark8-3BE


Установка Asterisk

После первого запуска сервера ALT Linux заходим на сам сервер, либо удаленно по ssh  (Pyttu)
и устанавливаем ( подробнее http://forum.altlinux.org/index.php/topic,29113.msg203888.html#msg203888) пакеты:

[vova@do ~]$ ssh 172.16.5.46
ssh: connect to host 172.16.5.46 port 22: No route to host
[vova@do ~]$ ssh 172.16.5.46
vova@172.16.5.46's password:
Last login: Mon Apr 20 18:33:13 2015 from 172.16.5.33
[vova@host46 ~]$ su -l
Password:
[root@host46 ~]# apt-get update
[root@host46 ~]# apt-get install alterator-asterisk-gateway asterisk11-chan_sip
после этого заходим по ЦУС ( подробнее http://forum.altlinux.org/index.php/topic,29113.msg203885.html#msg203885)
Находим в режиме эксперта  "Шлюз PSTN<->SIP" , нажимаем пустую "Обновить параметры".

Подготовка Asterisk к подключению клиентов
Переименовываем и создаем пустые  файлы
[root@host46 ~]# mv /etc/asterisk/sip.conf /etc/asterisk/sip.conf.old;mv /etc/asterisk/extensions.conf /etc/asterisk/extensions.conf.old
[root@host46 ~]# touch /etc/asterisk/sip.conf;touch /etc/asterisk/extensions.conf

открываем
[root@host46 ~]# mcedit /etc/asterisk/sip.confвставляем следующий текст:
[general]

language=ru
callgroup=1
pickupgroup=1
qualify=yes
canreinvite=no


[LOCAL-USERS](!)
type=friend
host=dynamic
insecure=invite
context=mysip
disallow=all
allow=alaw,ulaw
nat=force_report,comedia
directmedia=nonat

[3001](LOCAL-USERS)
username = 3001
secret=333
[3002](LOCAL-USERS)
username = 3002
secret=333
[3003](LOCAL-USERS)
username = 3003
secret=333
[3004](LOCAL-USERS)
username = 3004
secret=333
[3005](LOCAL-USERS)
username = 3005
secret=333
[3006](LOCAL-USERS)
username = 3006
secret=333
[3098](LOCAL-USERS)
username = 3098
secret=333
[3099](LOCAL-USERS)
username = 3099
secret=333
Перезапускаем сервер
[root@host46 ~]#service asterisk restartзаходим в консоль Asteriskа
[root@host46 ~]#asterisk -rи уже там
host46*CLI> sip show peersвидим, что  Asterisk готов принимать клиентов

Name/username             Host                                    Dyn Forcerport Comedia    ACL Port     Status      Description                     
3001/3001                 (Unspecified)                            D  No         Yes            0        UNKNOWN                                     
3002/3002                 (Unspecified)                            D  No         Yes            0        UNKNOWN                                     
3003/3003                 (Unspecified)                            D  No         Yes            0        UNKNOWN                                     
3004/3004                 (Unspecified)                            D  No         Yes            0        UNKNOWN                                     
3005/3005                 (Unspecified)                            D  No         Yes            0        UNKNOWN                                 
3006/3006                 (Unspecified)                            D  No         Yes            0        UNKNOWN                                     
3098/3098                 (Unspecified)                            D  No         Yes            0        UNKNOWN                                     
3099/3099                 (Unspecified)                            D  No         Yes            0        UNKNOWN                                     
8 sip peers [Monitored: 0 online, 8 offline Unmonitored: 0 online, 0 offline]
« Последнее редактирование: 19.02.2016 09:58:17 от Salomatin »
Хочешь понять сам, объясни другому.
"Если уже все испробовал и ничего не помогает - почитай инструкцию"

Оффлайн Salomatin

  • Модератор
  • *****
  • Сообщений: 981
    • Пошаговые инструкции
    • Email
Re: Asterisk - лабораторные работы
« Ответ #2 : 21.04.2015 19:46:04 »
Лабораторная работа № 2:

Видеоролик можно скачать по адресу:
http://salomatin.ru/asterisk-L2.ogv
https://youtu.be/ypDMKA2p5ZE


Подключение клиентов
 
Для подключения клиента используем следующие данные:
Хост:      172.16.5.46
логин:    3001  ( в примере 8 имен: 3002 3003 3004 3005 3006 3098 3099)
пароль:  333 
Берем клиента,  IP телефон, которые имеют по нескольку линий, либо любой сотовый, на который скачиваем приложение по поисковому слову SIP client. Заполняем три поля и добиваемся того, чтобы клиент вывел сообщение "Зарегистрирован"

В ролике показывается как настроить IP телефон по встроенному Web, а также ( вне ролика) подключается сотовый телефон, приложение AdoreSoftphone

заходим в консоль Asteriskа
[root@host46 ~]#asterisk -rи уже там
host46*CLI> sip show peers
Name/username             Host                                    Dyn Forcerport Comedia    ACL Port     Status      Description                     
3001/3001                 (Unspecified)                            D  No         Yes            0        UNKNOWN                                     
3002/3002                 (Unspecified)                            D  No         Yes            0        UNKNOWN                                     
3003/3003                 172.16.5.39                              D  No         Yes            64866    OK (4 ms)                                   
3004/3004                 (Unspecified)                            D  No         Yes            0        UNKNOWN                                     
3005/3005                 172.16.5.35                              D  No         Yes            5060     OK (96 ms)                                   
3006/3006                 (Unspecified)                            D  No         Yes            0        UNKNOWN                                     
3098/3098                 (Unspecified)                            D  No         Yes            0        UNKNOWN                                     
3099/3099                 (Unspecified)                            D  No         Yes            0        UNKNOWN                                     
8 sip peers [Monitored: 2 online, 6 offline Unmonitored: 0 online, 0 offline]
Видим, что Asterisk зарегистрировал IP телефон за адресом 172.16.5.35 и сотовый телефон 172.16.5.39 
« Последнее редактирование: 19.02.2016 10:03:27 от Salomatin »
Хочешь понять сам, объясни другому.
"Если уже все испробовал и ничего не помогает - почитай инструкцию"

Оффлайн Salomatin

  • Модератор
  • *****
  • Сообщений: 981
    • Пошаговые инструкции
    • Email
Re: Asterisk - лабораторные работы
« Ответ #3 : 21.04.2015 20:48:59 »
Лабораторная работа № 3:

Видеоролик можно скачать по адресу:
http://salomatin.ru/asterisk-L3.ogv
https://youtu.be/KtksV7SJt5s

Диалплан
В качестве первого Диалплана используем такую конструкцию:

exten =>_XXXX,1,Answer()                                             ; снять трубку
exten =>_XXXX,n,MP3Player(/var/lib/asterisk/test.mp3)   ; проиграть звуковой файл
exten =>_XXXX,n,Hangup()                                            ; отключиться
( это нам пригодится для тестирование серверов  Asterisk, при их соединении)

для этого вначале подгрузим
[root@host46 ~]# apt-get install mpg123 mpg321 vlc;apt-get install alsa-utils alsamixer-qt4 amixer 
закачаем на сервер тестовый файл
[vova@do 34]$ scp test.mp3 172.16.5.46:/home/vovaкопируем
[root@host46 ~]#cp /home/vova/test.mp3 /var/lib/asterisk/test.mp3

Переходим к самому Диалплану

[root@host46 ~]# mcedit /etc/asterisk/extensions.conf

вставляем
[mysip]

exten =>_XXXX,1,Answer()
exten =>_XXXX,n,MP3Player(/var/lib/asterisk/test.mp3)
exten =>_XXXX,n,Hangup()

Ключевое слово здесь mysip - этот придуманное для лабораторки  слово,  контекст который мы указали для клиентов в файле /etc/asterisk/sip.conf
context=mysipДля этих клиентов и предназначена.
 _XXXX означает, что если набрать любой номер из 4 цифр, будет выполнена команда

Перезапускаем сервер
[root@host46 ~]#service asterisk restart
Звоним по любому 4-х значному номеру и слышим воспроизведение нашего тестового файла. После окончания происходит отбой. Поэтому для теста не используйте длинный проигрыш.

Убираем все после [mysip] добавляем и получаем

[mysip]

exten => _XXXX,1,Dial(SIP/${EXTEN},,m)
m - это для лабораторной работы № 7
Перезапускаем сервер
[root@host46 ~]#service asterisk restart
Тестируем, звоним, регистрируем сотики знакомых и звоним друг другу.
« Последнее редактирование: 19.02.2016 10:05:55 от Salomatin »
Хочешь понять сам, объясни другому.
"Если уже все испробовал и ничего не помогает - почитай инструкцию"

Оффлайн Rider

  • /usr/sbin/control
  • *******
  • Сообщений: 1 136
Re: Asterisk - лабораторные работы
« Ответ #4 : 21.04.2015 21:53:16 »
может быть, сразу на wiki -  www.altlinux.org будете оформлять ?

Оффлайн Salomatin

  • Модератор
  • *****
  • Сообщений: 981
    • Пошаговые инструкции
    • Email
Re: Asterisk - лабораторные работы
« Ответ #5 : 22.04.2015 06:27:54 »
Лабораторная работа № 4:

Видеоролик можно скачать по адресу:
http://salomatin.ru/asterisk-L4.ogv
https://youtu.be/aIxuffY45l0


Подключаем Asterisk к SIP - серверу (соединяем два Asterisk`а по SIP протоколу)

У нас сейчас создан и работает SIP - сервер, который мы назавем Asterisk №1
Создадим Asterisk №2, который  будет клиентом, в точности повторив лабораторку № 1. Но номерация там будет начинаться с цифры 4, вместо 3, т.е.   4001 4002 4003 4004 4005 4006 4098 4099
изменив
[root@host48 ~]# mcedit /etc/asterisk/sip.conf
использовав аналогичную конфигурацию
[general]
language=ru
callgroup=1
pickupgroup=1
qualify=yes
canreinvite=no

[LOCAL-USERS](!)
type=friend
host=dynamic
insecure=invite
context=mysip
disallow=all
allow=alaw,ulaw
nat=force_report,comedia
directmedia=nonat

[4001](LOCAL-USERS)
username = 4001
secret=333
[4002](LOCAL-USERS)
username = 4002
secret=333
[4003](LOCAL-USERS)
username = 4003
secret=333
[4004](LOCAL-USERS)
username = 4004
secret=333
[4005](LOCAL-USERS)
username = 4005
secret=333
[4006](LOCAL-USERS)
username = 4006
secret=333
[4098](LOCAL-USERS)
username = 4098
secret=333
[4099](LOCAL-USERS)
username = 4099
secret=333

Еще в моем примере использую host48 по IP адресу 172.16.5.48, пароли ставим те же 333, но это пока не важно, так как мы с него будем подключаться к серверу.

Раз так, то значит для подключения к этому SIP серверу можем использовать: Хост: 172.16.5.46 логин: 3098 пароль: 333

Добавляем  в Asteriskе №2 в файле /etc/asterisk/sip.conf
одну строчку
register => 3098:333@172.16.5.46 получаем
[root@host48 ~]# mcedit /etc/asterisk/sip.conf[general]
register => 3098:333@172.16.5.46

language=ru
callgroup=1
pickupgroup=1
qualify=yes
canreinvite=no

[LOCAL-USERS](!)
type=friend
host=dynamic
insecure=invite
context=mysip
disallow=all
allow=alaw,ulaw
nat=force_report,comedia
directmedia=nonat

[4001](LOCAL-USERS)
username = 4001
secret=333
[4002](LOCAL-USERS)
username = 4002
secret=333
[4003](LOCAL-USERS)
username = 4003
secret=333
[4004](LOCAL-USERS)
username = 4004
secret=333
[4005](LOCAL-USERS)
username = 4005
secret=333
[4006](LOCAL-USERS)
username = 4006
secret=333
[4098](LOCAL-USERS)
username = 4098
secret=333
[4099](LOCAL-USERS)
username = 4099
secret=333
Перезапускаем сервер
[root@host48 ~]#service asterisk restart заходим в консоль Asteriskа №2
[root@host48 ~]#asterisk -r и уже там
host48*CLI> sip show registry видим, что мы удачно зарегистрировались
Host                                    dnsmgr Username       Refresh State                Reg.Time                 
172.16.5.46:5060                        N      3098               105 Registered           Wed, 22 Apr 2015 09:52:40
1 SIP registrations.
На SIP сервере Asterisk №1 host46, при выполнении в консоли Asteriska
host46*CLI> sip show peers увидим строчку
3098/3098 172.16.5.48 D No Yes 5060 OK (96 ms)

Значит на сервере мы зарегистрировали нового клиента и можем транслировать звонки.
Аналогично надо добавить в  Asteriskе №1 в файле /etc/asterisk/sip.conf
register => 4098:333@172.16.5.48получаем
[root@host46 ~]# mcedit /etc/asterisk/sip.confтакое
[general]

register => 4098:333@172.16.5.48

language=ru
callgroup=1
pickupgroup=1
qualify=yes
canreinvite=no

[LOCAL-USERS](!)
type=friend
host=dynamic
insecure=invite
context=mysip
disallow=all
allow=alaw,ulaw
nat=force_report,comedia
directmedia=nonat

[3001](LOCAL-USERS)
username = 3001
secret=333
[3002](LOCAL-USERS)
username = 3002
secret=333
[3003](LOCAL-USERS)
username = 3003
secret=333
[3004](LOCAL-USERS)
username = 3004
secret=333
[3005](LOCAL-USERS)
username = 3005
secret=333
[3006](LOCAL-USERS)
username = 3006
secret=333
[3098](LOCAL-USERS)
username = 3098
secret=333
[3099](LOCAL-USERS)
username = 3099
secret=333
Карусель в голове получается, можно запутаться.
Но в жизни, когда уже стоят и работают два Asteriskа все сводится к получению регистрационных данных и дописанию одной строчки в sip.conf


Какой  Диалплан у клиента на Asterisk №2, нам не важно. Это его проблемы как отправлять нам звонки. Придет звонок, примем согласно нашего контекста mysip
Рассмотрим вариант как нам отправить звонок клиенту.
А точно также как любому другому клиенту. Разница в том, что там нет телефонного аппарата,но может принимать любые номера, раздавая их по своему Диалплану.
Для примера мы будем считать что там номера с четверки, и все звонки на 4 будем отправлять на этот номер.
[root@host46 ~]# mcedit /etc/asterisk/extensions.conf
к такому виду
[mysip]
exten => _3XXX,1,Dial(SIP/${EXTEN},,m)
exten => _4XXX,1,Dial(SIP/3098/${EXTEN},,m)
Если мы не поленимся и выполним по порядку Лабораторную работу №3, в части загрузки тестовой музыки, то позвонив с номера 3005 на любой номер 4XXX, услышим воспроизведение test.mp3

Понятно, что проделав точно такое же со стороны Asterisk №2, мы будем успешно отправлять звонки на Asterisk №2.

Этот вариант тоже не самый правильный, точнее использовать SIP запись type=peer, но это для самостоятельного изучения. Дальше мы лишь рассмотрим еще некоторые варианты.
« Последнее редактирование: 19.02.2016 10:07:53 от Salomatin »
Хочешь понять сам, объясни другому.
"Если уже все испробовал и ничего не помогает - почитай инструкцию"

Оффлайн Salomatin

  • Модератор
  • *****
  • Сообщений: 981
    • Пошаговые инструкции
    • Email
Re: Asterisk - лабораторные работы
« Ответ #6 : 23.04.2015 15:11:30 »
Подключаем к Asterisk  офисную телефонную станцию (АТС) по  SIP протоколу.

Для подключения офисной станции (АТС) Panasonic потребовалось внести всего лишь одно изменение к существующим настройкам.

в файл /etc/asterisk/sip.conf добавляем сточку

exten => _1XXX,1,Dial(SIP/3099/${EXTEN},,m) 

то есть,  АТС подключаем  к Asterisk №1 в качестве SIP клиента по логину 3099 пароль 333, IP адрес 172.16.5.46
(дейстия администратора АТC тут не рассматриваем, считаем что он знает что ему там делать и как настраивать подключение)
Для того чтобы принимать и транслировать звонки с аналоговых телефонов на Asteriskе ничего дополнительно делать не надо.
А вот для того чтобы звонить на аналогывые офисные телефоны мы прописываем строчку в нашем диал плане.
В примере офисная станция подключает абонентов с номерам от 1000 до 1999.
 
[root@host46 ~]# mcedit /etc/asterisk/extensions.confполучился
[mysip]
exten => _3XXX,1,Dial(SIP/${EXTEN},,m)
exten => _4XXX,1,Dial(SIP/3098/${EXTEN},,m)
exten => _1XXX,1,Dial(SIP/3099/${EXTEN},,m)
Хочешь понять сам, объясни другому.
"Если уже все испробовал и ничего не помогает - почитай инструкцию"