Архив рубрики ‘Asterisk’

Сен
11

Два дня бился с совершенно непонятной проблемой: рвался разговор на радиотрубках Gigaset A540IP, подключенных к Grandstream UCM6208.

В логи Grandstream падали сообщения вида «SIP lost registration»:

Путем анализа логов выяснилось, что примерно каждые три минуты отваливалась SIP регистрация, а потом через несколько секунд восстанавливалась сама. Если на это время попадал разговор — он прерывался, сотрудник бесился 🙂

Решение нашлось практически случайно: эти аппараты (даже на последних прошивках, и даже при выключенной службе STUN) ломятся на STUN сервера Gigaset, и через какое-то время начинают подвисать, перезапуская какую-то службу.

Стоило заблокировать аппаратам доступ в интернет по портам TCP & UDP 3478, как безобразие прекратилось.

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

В Gigaset FAQ косвенно описывается эта проблема, но указано что на последних прошивках это решено. Судя по всему — не полностью.

Апр
23

У меня не получилось принимать факсы на Asterisk через VoIP оператора UISCOM, пришлось придумывать гнусную хитрость. У этого оператора есть штатная функция приема факсов «centrex\faxes», которая принимает факсы и отправляет их на почту, если после поднятия трубки нажать кнопку «ноль». Я в курсе, что уних есть услуга мини-АТС, но мы ей не пользуемся, у нас всеми звонками управляет Asterisk (голосовое меню, внутренние звонки и т.п.). Я настроил так, чтобы при нажатии кнопки «2» во время приветствия IVR автоматически нажималась кнопка «0» и вызов уходил на прием факса в UISCOM. Все предельно просто, но описано крайне туманно, судя по всему =)

1. Добавляем в extensions_custom.conf и выполняем в консоли «sip reload»:

[uiscom-fax]
exten => s,1,Answer()
exten => s,n,SendDTMF(0)
exten => s,n,Hangup()

2. Идем в Admin\Custom Destinations и создаем новое назначение:

fax1

3. В настройках IVR дописываем (см. последнюю строку):

fax2

Фев
18

Если в логи fail2ban сыпятся такие ошибки

2015-01-05 20:37:07,270 fail2ban.filter : ERROR No 'host' found in '[] SECURITY[11464] res_security_log.c: SecurityEvent="InvalidPassword",EventTV="1420047663-535903",Severity="Error",Service="SIP",EventVersion="2",AccountID="800970597572760",SessionID="0x61d7df5c",LocalAddress="IPV4/UDP/**IP REMOVED**/5060",RemoteAddress="IPV4/UDP/188.138.94.14/5071",Challenge="56e0973f",ReceivedChallenge="56e0973f",ReceivedHash="4c92c1299e17141824a0f8f4e8d85952"

то лезем в /etc/fail2ban/filter.d/asterisk-security.conf

и в 34-37 строках меняем «SIP|AMI» на «(SIP|AMI)»? т.е. добавляем скобки, сохраняем конфиг, после чего перезагружаем fail2ban

fail2ban fix

Ноя
12

Краткая шпаргалка по установке кодека g729 на FreePBX. Писалась для себя и повторяет описанное в сети, ничего нового.

Сайт для загрузки  кодеков: http://asterisk.hosting.lv/

Пара вариантов для x86-систем:
http://asterisk.hosting.lv/bin/codec_g729-ast110-gcc4-glibc-pentium4.so
http://asterisk.hosting.lv/bin/codec_g729-ast110-gcc4-glibc-core2.so

Пара вариантов для x64-систем:
http://asterisk.hosting.lv/bin/codec_g729-ast110-gcc4-glibc-x86_64-core2.so
http://asterisk.hosting.lv/bin/codec_g729-ast110-gcc4-glibc-x86_64-pentium4.so

Команда для просмотра установленных кодеков:
core show translation

Копипаста для установки на x86:
cd /usr/lib/asterisk/modules
wget http://asterisk.hosting.lv/bin/codec_g729-ast110-gcc4-glibc-pentium4.so
mv codec_g729-ast110-gcc4-glibc-pentium4.so codec_g729.so

Копипаста для установки на x64:
cd /usr/lib/asterisk/modules
wget http://asterisk.hosting.lv/bin/codec_g729-ast110-gcc4-glibc-x86_64-pentium4.so
mv codec_g729-ast110-gcc4-glibc-x86_64-pentium4.so codec_g729.so

Команда ручной загрузки модуля (Из консоли Asterisk):

asterisk*CLI>  module load codec_g729.so

Окт
29

Проверяем, запланирован ли переход в зону GMT+3 в 2014 году:
zdump -v Europe/Moscow |grep 2014

Если никакой реакции не произошло, значит нужно обновить базу часовых поясов. Скачиваем:
cd /tmp
wget http://www.iana.org/time-zones/repository/releases/tzdata2014i.tar.gz
tar xvzf tzdata2014i.tar.gz

Компилируем временные зоны для Европы:
zic europe

Создаем ссылку на обновленную временную зону:
ln -sf /usr/share/zoneinfo/Europe/Moscow /etc/localtime

А теперь все вместе для копирования 🙂
cd /tmp
wget http://www.iana.org/time-zones/repository/releases/tzdata2014i.tar.gz
tar xvzf tzdata2014i.tar.gz
zic europe
ln -sf /usr/share/zoneinfo/Europe/Moscow /etc/localtime

Проверяем, что все правильно:
[root@localhost tmp]# zdump -v Europe/Moscow |grep 2014
Europe/Moscow  Sat Oct 25 21:59:59 2014 UTC = Sun Oct 26 01:59:59 2014 MSK isdst=0 gmtoff=14400
Europe/Moscow  Sat Oct 25 22:00:00 2014 UTC = Sun Oct 26 01:00:00 2014 MSK isdst=0 gmtoff=10800

Обратите внимание,  все процессы (и Asterisk в том числе) будут использовать старые часовые пояса до их перезапуска. У меня был случай, когда я всю голову себе сломал, почему не правильно работают переходы по времени, хотя во всех местах показывается правильное время.

Еще вот есть замечательный скрипт для проверки, взят отсюда
tzcheck.sh:
#!/bin/sh
T1=$(LC_ALL=C TZ=Europe/Moscow date -d @1409067890)
if [ "$T1" != 'Tue Aug 26 19:44:50 MSK 2014' ] ; then
echo FAIL! Wrong TZ BEFORE 26 Oct 2014!
exit 1
fi
T2=$(LC_ALL=C TZ=Europe/Moscow date -d @1416667890)
if [ "$T2" != 'Sat Nov 22 17:51:30 MSK 2014' ] ; then
echo FAIL! Wrong TZ AFTER 26 Oct 2014!
exit 2
fi
echo OK



Яндекс.Метрика