Показаны сообщения с ярлыком asterisk. Показать все сообщения
Показаны сообщения с ярлыком asterisk. Показать все сообщения

2 декабря 2016 г.

Yeastar TA410 и Asterisk 1.8

Для подключения внешних аналоговых линий к серверу IP телефонии используются специальные шлюзы, одним из которых и является Yeastar TA410. Это шлюз на 4 порта FXO (FXS служат наоборот для подключения аналоговых телефонов абонентов) Есть еще его старший брат Yeastar TA810 в котором уже 8 портов.

Данный шлюз представляет из себя такой же Asterisk сервер с версией 1.6 и веб админка. Подробнее его характеристики есть на сайте ipmatika.ru там же лежит новая прошивка и инструкция на английском.

Производитель рекомендует регистрировать не шлюз на сервере, как например Cisco SPA 3110, а наоборот - сервер регистрируется на шлюзе.

Мне пришлось настраивать связку сервер и шлюз в среде, когда и шлюз и сервер находятся за разными NAT и оба имеют белые IP адреса.

Поддержка ipmatika посоветовала воспользоваться инструкцией на сайте Подключение GSM/CDMA/UMTS шлюзов Yeastar TG100/200/400/800/1600 к Asterisk

Чтобы связать сервер и шлюз необходимо зайти в веб-админку в раздел Шлюз.
Далее необходимо создать VoIP линии. Их может быть три типа:
  • SIP-аккаунт (сервер подключается к шлюзу)
  • VoIP-линия (шлюз подключается к серверу)
  • VoIP-канал
Логично предположить что мы создаем VoIP линию по протоколу SIP на шлюзе и заводим новый аккаунт в sip.conf на сервере, таким образом подключаем шлюз к серверу.  Но такая связка у меня не заработала. Я смог зарегистрироваться со шлюза на своем сервере и принимать входящие звонки, а при исходящих - шлюз упорно искал набираемый номер во внутренних номерах и не хотел набирать его на внешней линии.

Попробовав создать SIP аккаунт на шлюзе для исходящих звонков, так же потерпел фиаско. Сервер писал что статус ОК, а шлюз - что к аккаунту никто не подключен. Ошибок в консоле сервера и шлюза никаких не было(((

Поскольку шлюз - по большому счету такой же сервер Asterisk, то решил попробовать связать их по родному протоколу для связи серверов - IAX2

  1. Пробросил порт 4569 udp на сервер и шлюз
  2. Завел на сервере аккаунт в файле iax.conf
  3. Изменил протокол с SIP на IAX в уже созданном SIP аккаунте и VoIP линии
  4. В секцию [global] файла iax.conf добавил строчку
register => fxo_out:pass@xx.xx.xx.xx,
где хх.хх.хх.хх белый ip шлюза, fxo_out - логин из SIP аккаунта шлюза, а pass - пароль.

После этого делаем iax2 reload на сервере
И смотрим на шлюзе статус линий в разделе Статус-Статус портов FXO

Диалплан на сервере у меня был уже прописан в файле extensions.conf 
Если вы внесли какие-то изменения в него, то не забывайте сделать dialplan reload 

Прежде чем проверять звонки идем в раздел Шлюз - VoIP порт->порт FXO и добавляем там маршрут для звонка. 
  • Источник IAX SIP аккаунт
  • Назначение: Порт FXO
  • Упрощенный режим: Да

Аналогично создаем маршрут в разделе Порт FXO -> VoIP/Порт FXO
  • Источник IAX SIP аккаунт
  • Назначение: Порт FXO
  • Упрощенный режим: Да
  • Горячая линия: номер сервера, на который будет звонить шлюз при входящем звонке с города.
Тут можно указать либо внутренний номер на который принимать звонки, либо номер, который в дальнейшем обрабатывать в extensions.conf, например так

exten => 2085554,1,Dial(SIP/1059&SIP/1050,30,tT)
exten => 2085554,n,HangUp()

Чтобы позвонить через наш транк:
exten => _XXXXXXX,1,Dial(IAX2/voip2fxo:password@xx.xx.xx.xx/${EXTEN})

П.С. не забывайте сделать настройки безопасности для сервера и шлюза, если они смотрят в интернет. Как минимум запретите регистрацию со всех IP кроме доверенных, для этого на шлюзе активируйте функцию Enable IP Restriction (закладка Дополнительно, в настройках SIP-аккаунта) и укажите там IP с которых можно подключаться/ В моем случае здесь только внешний IP моего сервера с маской сети 255.255.255.255.
Для сервера запрет устанавливается в параметре permit в описании аккаунта в файле iax.conf
Только теперь уже указываем белый IP шлюза.
Дополнительно я отбрасываю все пакеты с порта 4569, которые отправлены не с IP шлюза/сервера. 
Так же настоятельно вам рекомендую настроить fail2ban на сервере и проверить не открыт ли доступ к tcp портам 8022, 80 и udp 5060 для кого попало

Note. для доступа к шлюзу по ssh активируйте сервис SSH в разделе Система - Сервисы и используйте для входа 
  • логин root
  • пароль ys123456


6 марта 2012 г.

Asterisk в Ubuntu - команда Dial

В предыдущем посте я писал как настроить связь между внутренними абонентами и мы для этих целей в диалплане использовали команду Dial следующим образом:

exten => 100,1,Dial(SIP/100)

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

[sip_dial]
exten => 101,1,Dial(SIP/101&SIP/102)

При входящем звонке зазвенят телефоны с номерами 101 и 102. Звонок примет тот, кто раньше поднимет рубку. Если второй номер поднимет трубку после, то он НЕ будет слышать разговор абонента 101.

[sip_dial]
exten => 101,1,Dial(SIP/101,10)
exten => 101,2,Dial(SIP/102,10)

При входящем звонке зазвенит телефон у абонента 101. Если он в течении 10 секунд не возьмет трубку, то звонок уйдет на абонента 102.

2 марта 2012 г.

Asterisk в Ubuntu - внутренняя связь

В предыдущем посте я писал как установить сервер VoIP телефонии на Ubuntu/ В этой статье я расскажу как настроить внутренние номера и звонки между ними.

Нам понадобится:
Установленный сервер Asterisk
Программа X-Lite (программный телефон для VoIP телефонии) - 2 шт.

Запускаем mc с правами администратора:

sudo mc

Если mc у вас не установлен, то установите его командой

sudo apt-get install mc

Asterisk устанавливается по умолчанию в папку /etc/asterisk/. Переходим в эту папку и на всякий случай скопируем файлы sip.conf и extensions.conf куда-нибудь, чтобы можно было откатиться в случаи чего.
Открываем для редактирования файл sip.conf выбрав его и нажав F4.
Найдем вначале файла строчку
;allowguest=no
и снимем с нее комментарий. Это нужно чтобы запретить гостевое подключение к серверу. Если этого не сделать можно круто попасть на $$$, особенно если ваш сервер смотрит во внешний мир.

теперь переходим в самый конец файла и дописываем:

[100]
type=friend
secret=pass100
nat=yes
host=dynamic
username=User100
dtmfmode=rfc2833
disallow=all
allow=ulaw
context=sip_dial
callerid=100

[101]
type=friend
secret=pass101
nat=yes
host=dynamic
username=User101
dtmfmode=rfc2833
disallow=all
allow=ulaw
context=sip_dial
callerid=101

Все. Сохраняемся и закрываем файл.

Переходим в консоль asterisk

sudo asterisk -r

и выполняем там команду

show sip users

Если все сделали правильно, то вы должны увидеть таблицу с нашими двумя абонентами.

таким образом мы создали абонентов с номерами 100 и 101

Данные параметры означают следующее:

[100] - имя клиента. Наличие скобок обязательно

type=friend - описывает тип клиента, в нашем случае friend. Вообще существует три типа user – это когда идентификация клиента осуществляется по полю From SIP заголовка, который исходит от клиента. peer – идентификация происходит по адресу хоста с которого осуществляется регистрация. И тот тип, что мы применили friend – это смесь peer и user, идентифкация происходит любым методом(либо адрес хоста, либо юзернейм).

secret – это пароль пользователя.

nat=yes – обозначает, что клиент может находится за натом и для открытия медиаканала при звонке этого пользователя требуется трансляция заголовков. Если будут клиенты не только из локальной сети, то лучше у всех ставить yes

host=dynamic – привязка к адресу хоста клиента отсутствует. Если необходимо чтобы этот клиент подключался только с определенного IP то указываем разрешенный IP

username=User100 – имя пользователя. Этот логин потом используется в настройках сип клиента.

dtmfmode=rfc2833 – метод передачи dtmf – тонов набора номера. Существует еще метод info, должен совпадать с настройками в SIP клиенте.

disallow=all – запрещаем все кодеки
allow=ulaw – разрешаем кодек ulaw, кодек должен быть такой, который поддерживается клиентом. Возможно указать несколько кодеков через запятую.

context=sip-dial – контекст описывает в какой секции диалплана будут обрабатываться звонки клиента

callerid=100 – Ваш номер, который будет высвечиваться у абонентов при исходящем звонке


Клиентов завели, теперь необходимо научить сервер звонить. Для этого открываем для редактирования файл extensions.conf и в конце файла дописываем:

[sip_dial]
exten => 100,1,Dial(SIP/100)
exten => 101,1,Dial(SIP/101)


Не забываем при редактировании оставлять пустую строку в конце файла. Из-за отсутствия символа перевода строки могут появиться ошибки.

Теперь устанавливаем на компьютеры программные телефоны и настраиваем их. Выбираем в меню softphone->Account settings и заполняем:

Account name: 100
User ID: 100
Domain: ip_сервера_asterisk
password: User100
Register with domain and recive calls: галочка
Proxy: галочка
Address: ip_сервера_asterisk

Остальные значения оставляем по умолчанию. На этом настройка закончена и наши абоненты могут звонить друг другу.

24 февраля 2012 г.

Asterisk в Ubuntu - установка

Есть два способа установить сервер Asterisk на Ubuntu

1. Сборка из исходников
2. Установка из репозитория

Первый способ у меня не получился. При попытки скомпилировать DAHDI драйвер выдавались ошибки. Поэтому я пошел вторым путем.

Обновимся перед установкой:

sudo apt-get update
sudo apt-get upgrade


Базовая установка требует:
* - Установку библиотеки LibPRI, которая добавляет поддержку ISDN
* - Установку библиотеки libSS7, которая реализует работу по протоколу SS7
* - Установку DAHDI, обеспечивает интерфейсный уровень между сервером Asterisk с одной стороны, и драйвером интерфейса Daahdi плюс программные эхоподавителели с другой. Драйвера интерфейсов позволяют использовать аппаратные средства (карты) для соединения Asterisk с традиционными аналоговыми или цифровыми телефонными сетями
* - Сам сервер Asterisk.

Ставим следующие пакеты:

sudo apt-get install libri1.4 libss7-1 libss7-dbg libss7-dev dahdi dahdi-dkms dahdi-linux asterisk asterisk-config asterisk-sounds-main

Проверить установлен ли пакет можно командой dpkg -l|grep имя_пакета, например так:

dpkg -l|grep asterisk

Устанавливать надо в том порядке в котором я написал.

Если пакеты что-то потянут за собой, то ставьте все зависимости.

После установки в системе появится еще один пользователь asterisk под которым и будет запускаться сам сервер, так же он пропишется в автозагрузку при рестарте.

Перезагружаем сервер

sudo reboot

Пробуем зайти в консоль Asterisk

sudo asterisk -r

Запускать необходимо именно от root иначе вы не подключитесь к консоли и будут ошибки.

В следующей статье опишу как настроить два номера и совершать звонки между ними.