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