Для подключения внешних аналоговых линий к серверу IP телефонии используются специальные шлюзы, одним из которых и является Yeastar TA410. Это шлюз на 4 порта FXO (FXS служат наоборот для подключения аналоговых телефонов абонентов) Есть еще его старший брат Yeastar TA810 в котором уже 8 портов.
Чтобы позвонить через наш транк:
exten => _XXXXXXX,1,Dial(IAX2/voip2fxo:password@xx.xx.xx.xx/${EXTEN})
Данный шлюз представляет из себя такой же 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
- Пробросил порт 4569 udp на сервер и шлюз
- Завел на сервере аккаунт в файле iax.conf
- Изменил протокол с SIP на IAX в уже созданном SIP аккаунте и VoIP линии
- В секцию [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